@dmgnr/kuber 2.6.1-rc1 → 2.6.1-rc2

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 +2 -2
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -97,7 +97,7 @@ ${t}`,Bv,zv,Dv=(e,t,r)=>{let o=r===""?"":`with ${r.trim()}() `,n=Iv.bind(null,o,
97
97
  `),y=i&&o<n.length-1&&!h.endsWith(`
98
98
  `);if(s+=h,f=SE(h)-1,s+=Pv,y)s+=`
99
99
  `,f++}let d=t+f,m=n.length-1-d;if(m>0)s+=ra(m);if(m<0)s+=No(-m);return s},HR,JR;var Xh=_(()=>{Om();Wm();ba();Pa();Fo();Zo();HR=tn(Yh.stdout),JR=tn(Yh.stderr)});function rn(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 CE(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(!PE.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 Ra(e,t,r={}){let{position:o="end",space:n=!1,preferTruncationOnSpace:i=!1}=r,{truncationCharacter:s="\u2026"}=r;if(CE(e,t,o,s),t<1)return"";let a=K(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 d(m,h){let y=f(m);if(y===m.length)return m+h;return m.slice(0,y)+h+m.slice(y)}function p(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=rn(e,a-t+K(s),!0),y=se(e,h,a).trim();return p(s,y)}if(n)s+=" ";let m=se(e,a-t+K(s),a);return p(s,m)}if(o==="middle"){if(n){if(s=` ${s} `,K(s)>=t)s=s.trim()}let m=K(s),h=Math.min(Math.floor(t/2),Math.max(0,t-m));if(i){let y=rn(e,h),b=rn(e,a-(t-h)+m,!0);return se(e,0,y)+s+se(e,b,a).trim()}return se(e,0,h)+s+se(e,a-(t-h)+m,a)}if(o==="end"){if(i){let h=rn(e,t-K(s)),y=se(e,0,h);return d(y,s)}if(n)s=` ${s}`;let m=se(e,0,t-K(s));return d(m,s)}}var PE;var eg=_(()=>{Pa();Zo();PE=new Set(["start","middle","end"])});import RE,{setMaxListeners as TE}from"events";import{inspect as OE,styleText as IE}from"util";import{format as BE}from"util";import{EOL as Ae}from"os";import{StringDecoder as zE}from"string_decoder";import{Writable as DE}from"stream";import{randomUUID as NE}from"crypto";function ME(e){return!!e&&typeof e==="object"&&typeof e.subscribe==="function"}function FE(e){return!!e&&typeof e==="object"&&e.readable===!0&&typeof e.read==="function"&&typeof e.on==="function"}function ug(){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 hr(e){return String(e).replace(new RegExp(jE,"gmi"),"").trim()}function og(e,t){return e.replace(/^(?!\s*$)/gm," ".repeat(t))}function mr(e,...t){return BE(String(e),...t)}function QE(e){let t=new DE;return t.rows=1/0,t.columns=1/0,t.write=(r)=>(e(r.toString()),!0),t}function GE(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 tS(e){return process.stdout.isTTY===!0||e.nonTTY===!0}function on(e){if(typeof e==="string")return Ta[e]??Ta.default;return typeof e==="function"?e:Ta.default}function rS(e){if(Et(e?.silentRendererCondition))return{renderer:on("silent"),selection:"SILENT"};let t={renderer:on(e.renderer),options:e.rendererOptions,selection:"PRIMARY"};if(!tS(t.renderer)||Et(e?.fallbackRendererCondition))return{renderer:on(e.fallbackRenderer),options:e.fallbackRendererOptions,selection:"SECONDARY"};return t}function Et(e,...t){if(typeof e==="function")return e(...t);else return e}function nS(e){return new Promise((t)=>{setTimeout(t,e)})}var tg,ag,LE,cg=class{emitter=new RE;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()}},VE,rg,UE,jE="(?:\\u001b|\\u009b)\\[[\\=><~/#&.:=?%@~_-]*[0-9]*[\\a-ln-tqyz=><~/#&.:=?%@~_-]+",z,lg,ZE,F,nn,pg,sn=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 qE}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:mr(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(Ae).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(Ae),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()===""?"":" "}},Oa=class{options;buffer=[];decoder=new zE;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=[]}},ng=class{stream;method;buffer;constructor(e){this.stream=e,this.method=e.write,this.buffer=new Oa({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)}},qE=class{options;stream;active;constructor(e,t,r){this.options=r,this.stream={stdout:new ng(e??process.stdout),stderr:new ng(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(tg.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:hr(t.entry)})).filter((t)=>t.entry);if(e.length>0){if(this.options.leaveEmptyLine)this.stdout.write(Ae);e.forEach((t)=>{(t.stream??this.stdout).write(t.entry+Ae)})}this.stream.stdout.write(tg.CURSOR_SHOW),this.active=!1}toStdout(e,t=!0){if(t)e=e+Ae;return this.stream.stdout.write(e)}toStderr(e,t=!0){if(t)e=e+Ae;return this.stream.stderr.write(e)}},WE=class{spinner=!ug()?["-","\\","|","/"]:["\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}},ig,Ia,KE,HE=class{tasks;options;static nonTTY=!0;static rendererOptions;static rendererTaskOptions;constructor(e,t){this.tasks=e,this.options=t}render(){}end(){}},JE,YE=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}},XE,eS,Ta,oS=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}},iS=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$=mr(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$=mr(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 he(r,t,this.task)}report(e,t){if(this.task.options.collectErrors)this.task.listr.errors?.push(new VE(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?mr(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 QE((t)=>{switch(e){case"PROMPT":this.promptOutput=t;break;default:this.output=t}})}run(e){return this.task.run(e,this)}},sS,aS,sg,he=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 oS({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 sg)this.events=this.parentTask.listr.events;else this.events=new sg;if(this.parentTask?.listr.abortController instanceof AbortController)this.abortController=this.parentTask.listr.abortController;else this.abortController=new AbortController,TE(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=rS({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 aS(this,t,this.options,this.rendererClassOptions,r)})}async runTask(e){if(!await e.check(this.ctx))return;let t=new iS(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 St=_(()=>{tg={CURSOR_HIDE:"\x1B[?25l",CURSOR_SHOW:"\x1B[?25h"},ag=function(e){return e.WILL_RETRY="WILL_RETRY",e.WILL_ROLLBACK="WILL_ROLLBACK",e.HAS_FAILED_TO_ROLLBACK="HAS_FAILED_TO_ROLLBACK",e.HAS_FAILED="HAS_FAILED",e.HAS_FAILED_WITHOUT_ERROR="HAS_FAILED_WITHOUT_ERROR",e}({}),LE=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}({}),VE=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}},rg=class extends Error{},UE=class extends Error{};z=Object.fromEntries(Object.keys(OE.colors).map((e)=>[e,(t)=>IE(e,String(t))]));lg={warning:"\u26A0",cross:"\u2716",arrowDown:"\u2193",tick:"\u2714",arrowRight:"\u2192",pointer:"\u276F",checkboxOn:"\u2612",arrowLeft:"\u2190",squareSmallFilled:"\u25FC",pointerSmall:"\u203A",circleSlash:"\u2298"},ZE={...lg,warning:"\u203C",cross:"\xD7",tick:"\u221A",pointer:">",checkboxOn:"[\xD7]",squareSmallFilled:"\u25A0",circleSlash:"\xF8"},F=ug()?lg:ZE;nn={icon:{["STARTED"]:F.pointer,["FAILED"]:F.cross,["SKIPPED"]:F.arrowDown,["COMPLETED"]:F.tick,["OUTPUT"]:F.pointerSmall,["TITLE"]:F.arrowRight,["RETRY"]:F.warning,["ROLLBACK"]:F.arrowLeft,["PAUSED"]:F.squareSmallFilled,["CANCELLED"]:F.circleSlash},color:{["STARTED"]:z.yellow,["FAILED"]:z.red,["SKIPPED"]:z.yellow,["COMPLETED"]:z.green,["RETRY"]:z.yellowBright,["ROLLBACK"]:z.redBright,["PAUSED"]:z.yellowBright,["CANCELLED"]:z.red}},pg=["RETRY","ROLLBACK","FAILED"];ig={icon:{["SKIPPED_WITH_COLLAPSE"]:F.arrowDown,["SKIPPED_WITHOUT_COLLAPSE"]:F.warning,["OUTPUT"]:F.pointerSmall,["OUTPUT_WITH_BOTTOMBAR"]:F.pointerSmall,["PENDING"]:F.pointer,["COMPLETED"]:F.tick,["COMPLETED_WITH_FAILED_SUBTASKS"]:F.warning,["COMPLETED_WITH_SISTER_TASKS_FAILED"]:F.squareSmallFilled,["RETRY"]:F.warning,["ROLLING_BACK"]:F.warning,["ROLLED_BACK"]:F.arrowLeft,["FAILED"]:F.cross,["FAILED_WITH_SUBTASKS"]:F.pointer,["WAITING"]:F.squareSmallFilled,["PAUSED"]:F.squareSmallFilled,["CANCELLED"]:F.circleSlash},color:{["SKIPPED_WITH_COLLAPSE"]:z.yellow,["SKIPPED_WITHOUT_COLLAPSE"]:z.yellow,["PENDING"]:z.yellow,["COMPLETED"]:z.green,["COMPLETED_WITH_FAILED_SUBTASKS"]:z.yellow,["COMPLETED_WITH_SISTER_TASKS_FAILED"]:z.red,["RETRY"]:z.yellowBright,["ROLLING_BACK"]:z.redBright,["ROLLED_BACK"]:z.redBright,["FAILED"]:z.red,["FAILED_WITH_SUBTASKS"]:z.red,["WAITING"]:z.dim,["PAUSED"]:z.yellowBright,["CANCELLED"]:z.red}};Ia={condition:!0,field:GE,format:()=>z.dim},KE=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:{...Ia,format:()=>z.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:{...ig.icon,...r?.icon??{}},color:{...ig.color,...r?.color??{}}},this.spinner=this.options.spinner??new WE,this.logger=this.options.logger??new sn({useIcons:!0,toStderr:[]}),this.logger.options.icon=this.options.icon,this.logger.options.color=this.options.color}async render(){await Promise.resolve().then(() => Xh());await Promise.resolve().then(() => eg());await Promise.resolve().then(() => ba());if(this.updater=tn(this.logger.process.stdout),this.truncate=Ra,this.wrap=ur,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(Ae)}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(Ae).map((s,a)=>this.truncate(this.indent(s,a),i));break;case"wrap":n=this.wrap(t,i,{hard:!0,trim:!1}).split(Ae).map((s,a)=>this.indent(s,a));break;default:throw new rg("Format option for the renderer is wrong.")}if(this.options.removeEmptyLines)n=n.filter(Boolean);return n.map((s)=>og(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 rg("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=hr(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:()=>z.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:()=>z.yellow,condition:n.suffixRetries}),this.style(o),r));else if(o.isCompleted()&&o.hasTitle()&&Et(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 Oa({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(Ae))}),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 Oa({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=hr(n);return this.format(n,this.style(t,!0),r+1)}indent(t,r){return r>0?og(t.trimEnd(),this.options.indentation):t.trimEnd()}},JE=class e{tasks;options;static nonTTY=!0;static rendererOptions={pausedTimer:{...Ia,field:(t)=>`PAUSED:${t}`,format:()=>z.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:{...nn.icon,...r?.icon??{}},color:{...nn.color,...r?.color??{}}},this.logger=this.options.logger??new sn({useIcons:!0,toStderr:pg}),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:()=>z.red}});else if(i.skip)this.logger.log("SKIPPED",r.title,{suffix:{field:`SKIPPED: ${i.skip}`,format:()=>z.yellow}});else if(i.rollback)this.logger.log("ROLLBACK",r.title,{suffix:{field:`ROLLBACK: ${i.rollback}`,format:()=>z.red}});else if(i.retry)this.logger.log("RETRY",r.title,{suffix:{field:`RETRY:${i.retry.count}`,format:()=>z.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)}},XE=class e{tasks;options;static nonTTY=!0;static rendererOptions={subtasks:!0,state:Object.values(LE),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 sn({useIcons:!1}),this.serializer=new YE(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)}})})}},eS=class e{tasks;options;static nonTTY=!0;static rendererOptions={logTitleChange:!1,pausedTimer:{...Ia,format:()=>z.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:{...nn.icon,...r?.icon??{}},color:{...nn.color,...r?.color??{}}},this.logger=this.options.logger??new sn({useIcons:!1,toStderr:pg}),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=hr(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)}},Ta={default:KE,simple:JE,verbose:eS,test:XE,silent:HE};sS=class extends cg{},aS=class extends sS{listr;task;options;rendererOptions;rendererTaskOptions;id=NE();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=mr(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),hr(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 Et(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 nS(e),this.state$=t,this.message$={paused:null}}async run(e,t){let r=(i)=>{if(i instanceof he)i.options={...this.options,...i.options},i.rendererClass=on("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(FE(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(ME(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 Et(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 UE)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 Et(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})})}},sg=class extends cg{}});function cS(e){return typeof e==="string"&&/^sha256:[a-f0-9]{64}$/.test(e)}function dg(e){if(!cS(e))throw Error(`Invalid SHA-256 digest: ${e}`)}var gr=1;import{AsyncLocalStorage as uS}from"async_hooks";function Ba(e){return e["x-arch"]==="amd64"?"amd64":"arm64"}function fg(e){if(Ba(e)!=="amd64")return{};return{nodeSelector:{"kubernetes.io/arch":"amd64"},tolerations:[{key:"arch",operator:"Equal",value:"amd64",effect:"NoExecute"}]}}var CT;var za=_(()=>{CT=new uS});import{execFile as lS,spawn as pS}from"child_process";import{createHash as dS}from"crypto";import{constants as Da}from"fs";import{access as fS}from"fs/promises";import{chmod as DT,lstat as mS,mkdir as NT,open as hS,readdir as gg,readlink as gS,realpath as yS,symlink as LT,readFile as bS}from"fs/promises";import{delimiter as _S,dirname as wS,isAbsolute as La,relative as yr,resolve as $t,sep as br}from"path";import{promisify as vS}from"util";async function Ua(){for(let e of(process.env.PATH??"").split(_S)){if(!e)continue;try{return await fS($t(e,process.platform==="win32"?"git.exe":"git"),Da.X_OK),!0}catch{}}return!1}function Na(e){return`sha256:${dS("sha256").update(e).digest("hex")}`}function yg(e){if(!e||e.includes("\x00")||e.includes("\\")||La(e)||e.split("/").some((t)=>!t||t==="."||t===".."))throw Error(`Unsafe workspace path: ${JSON.stringify(e)}`)}function mg(e,t){let r=yr(e,t);return r===""||!r.startsWith(`..${br}`)&&r!==".."&&!La(r)}async function hg(e,t){let{stdout:r}=await Va("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 xS(e){let[t,r]=await Promise.all([hg(e,["--cached","--others","--exclude-standard"]),hg(e,["--others","--ignored","--exclude-standard","--",".env*","**/.env*"])]);return[...new Set([...t,...r])].sort((o,n)=>Buffer.from(o).compare(Buffer.from(n)))}async function ES(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 bS($t(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 d=f.replace(/^\//,"");if(d)n.push({base:yr(e,c).split(br).join("/"),pattern:d.replace(/\/$/,""),directory:f.endsWith("/")})}}catch(u){if(u.code!=="ENOENT")throw u}},s=(c,u)=>{let l=!1;for(let f of n){let d=f.base?`${f.base}/`:"";if(f.base&&c!==f.base&&!c.startsWith(d))continue;let p=f.base&&c.startsWith(d)?c.slice(d.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(p)||p.split("/").some((b)=>y.test(b)))&&(!f.directory||u||p.includes("/")))l=!0}return l},a=async(c)=>{await i(c);for(let u of await gg(c,{withFileTypes:!0})){let l=$t(c,u.name),f=yr(e,l).split(br).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: ${yr(e,l).split(br).join("/")}`)}};return await a(e),t.sort((c,u)=>Buffer.from(c).compare(Buffer.from(u)))}async function SS(e){if(!await Ua())return!1;try{return await Va("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 $S(e){let t=await Va("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 gg(m,{withFileTypes:!0})){if(m===e&&h.name===".git")continue;let y=$t(m,h.name),b=yr(e,y).split(br).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=pS("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 d=Buffer.concat(u),p=new Set;n=0;for(let m=d.indexOf(0);m!==-1;m=d.indexOf(0,n)){if(m>n)p.add(r.decode(d.subarray(n,m)));n=m+1}for(let m of i){let h=m.slice(m.lastIndexOf("/")+1);if(!p.has(m)||h.startsWith(".env"))throw Error(`Special files are not allowed in workspaces: ${m}`)}}function AS(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 Ma(e){return PS(e),Buffer.from(AS(e))}function kS(e){return Na(Ma(e))}function PS(e){if(e.version!==gr||!Array.isArray(e.files))throw Error("Unsupported workspace manifest");let t="",r=new Set;for(let o of e.files){if(yg(o.path),dg(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 an(e){let t=await yS(e),o=await SS(t)?await(async()=>(await $S(t),xS(t)))():await ES(t),n=[],i=new Map;for(let a of o){yg(a);let c=$t(t,a);if(!mg(t,c))throw Error(`Workspace path escapes root: ${a}`);let u;try{u=await mS(c)}catch(d){if(d.code==="ENOENT")continue;throw d}let l,f;if(u.isSymbolicLink()){let d=await gS(c);if(La(d)||!mg(t,$t(wS(c),d)))throw Error(`Symlink escapes workspace: ${a} -> ${d}`);l=Buffer.from(d),f={path:a,type:"symlink",digest:Na(l),size:l.byteLength,mode:511}}else if(u.isFile()){let d,p=await hS(c,Da.O_RDONLY|Da.O_NOFOLLOW);try{let m=await p.stat();if(!m.isFile())throw Error(`Not a regular file: ${a}`);d=m.mode&73?493:420,l=await p.readFile()}finally{await p.close()}f={path:a,type:"file",digest:Na(l),size:l.byteLength,mode:d}}else throw Error(`Special files are not allowed in workspaces: ${a}`);n.push(f),i.set(f.digest,l)}let s={version:gr,files:n};return{manifest:s,digest:kS(s),blobs:[...i].map(([a,c])=>({digest:a,data:c}))}}var Va;var Fa=_(()=>{Va=vS(lS)});import{randomUUID as CS}from"crypto";import{execFile as RS}from"child_process";import{isAbsolute as TS,relative as xg,resolve as bg,sep as Eg}from"path";import{promisify as OS}from"util";class $g{inflight=0;maxInflight;maxPerSecond;requestStarts=[];waiting=[];rateGate=Promise.resolve();clock;sleep;constructor(e){if(this.maxInflight=e?.maxInflight??NS,this.maxPerSecond=e?.maxPerSecond??LS,!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 VS(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 US(e,t){return xg(e,t).split(Eg).join("/")||"."}function wg(e,t,r,o){let n=xg(e,t);if(n.startsWith(`..${Eg}`)||n===".."||TS(n))throw Error(`${r} must stay inside the git repo for service ${o}`);return US(e,t)}function MS(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 FS(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=bg(o,a),u=wg(n,c,"Build context",t),l=typeof s==="string"||!s.dockerfile?void 0:bg(c,s.dockerfile);return{name:t,image:jS(e,t,i),context:u,dockerfile:l?wg(n,l,"Dockerfile",t):void 0,target:typeof s==="string"?void 0:s.target,buildArgs:MS(r)}}function jS(e,t,r=To){return`${r.replace(/\/+$/,"")}/kuber/${e}-${t}:latest`}async function ja(e){if(!await Ua())return e;try{let{stdout:t}=await IS("git",["-C",e,"rev-parse","--show-toplevel"]);return t.trim()}catch(t){if(t.code==="ENOENT")return e;throw t}}async function ZS(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+BS),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 qS(e,t=C,r,o,n){let i=new Map(e.blobs.map((a)=>[a.digest,a.data]));i.set(e.digest,Ma(e.manifest));let s=o??new $g;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 VS(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 ZS(c,u,t,s,n)})}}async function QS(e,t,r,o){if(e.type==="status"){let n=e.status.phase??(e.status.state==="succeeded"||e.status.state==="failed"?"done":e.status.state);if(!r?.has(n))r?.add(n),await t?.progress?.(`${o?`${o}: `:""}Build ${n}${e.status.state==="failed"?`: ${e.status.error??"unknown error"}`:""}`);return}if(t?.stream)t.stream.write(o?`[${o}] ${e.message}`:e.message);else await t?.progress?.(`${o?`${o}: `:""}${e.message.trimEnd()}`)}function WS(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 vg(e,t,r,o,n,i){for(let s=1;s<=_g;s++)try{return i?.throwIfAborted(),await e(t,{...r,signal:i},{timeoutMs:DS})}catch(a){if(!WS(a)||s===_g)throw a;i?.throwIfAborted(),await n(o)}throw Error("Build poll retries exhausted")}async function GS(e,t,r,o,n,i,s,a=!1){let c=i,u=0,l="",f=new Map;for(let{name:d,reporter:p}of r)if(!f.has(p))f.set(p,{name:d,reporter:p,states:new Set});for(;;){let d=await vg(t,`/builds/${encodeURIComponent(e)}/events?after=${u}`,void 0,o,n,s);for(let p of d){if(p.type==="log"&&p.sequence<=u)continue;if(p.type==="log")l=(l+p.message).slice(-8192);for(let{name:m,reporter:h,states:y}of f.values())await QS(p,h,y,a?m:void 0);if(p.type==="log")u=p.sequence}if(c.state==="succeeded"||c.state==="failed"){let p=l.trim();if(c.state==="failed"&&p&&!c.error?.includes(p))return{...c,error:`${c.error??"BuildKit Job failed"}
100
- ${p}`};return c}if(c=await vg(t,`/builds/${encodeURIComponent(e)}/reconcile`,{method:"POST",json:{}},o,n,s),c.state!=="succeeded"&&c.state!=="failed")s?.throwIfAborted(),await n(o)}}async function cn(e,t,r={}){let o=r.request??C,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(Sg,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 Ag(e,t,r=process.cwd(),o,n={}){if(!Object.values(t.services??{}).some((x)=>x.build))return{built:[],changed:[],images:{}};let i=n.buildConcurrency??Sg;if(!Number.isSafeInteger(i)||i<1)throw RangeError("buildConcurrency must be a positive integer");let s=n.request??C,a=n.workspaceRoot;if(!a&&!n.snapshot)try{a=await ja(r)}catch(x){a=r}a??=r;let c=n.snapshot??await an(a),u=Object.entries(t.services??{}).flatMap(([x,A])=>{let T=FS(e,x,A,r,a,n.registry??To);return T?[T]:[]});await qS(c,s,o,n.scheduler,e);let l=Array(u.length),f=new Map(u.map((x)=>[x.name,o?.service?.(x.name)??o])),d=Ba(t),p=new Map;u.forEach((x,A)=>{let T=JSON.stringify({workspace:c.digest,architecture:d,context:x.context,dockerfile:x.dockerfile,target:x.target,buildArgs:x.buildArgs}),B=p.get(T)??[];B.push(A),p.set(T,B)});let m=[...p.values()],h=0,y,b=!1,P=async()=>{while(!b&&h<m.length){let x=m[h++],A=x.map((T)=>u[T]);try{n.signal?.throwIfAborted();for(let B of A)await f.get(B.name)?.progress?.(`${o?.service?"":`${B.name}: `}Build queued`);let T=await E(A);x.forEach((B)=>{let W=u[B],Te=B===x[0]?T.reference:T.references?.[W.name];if(!Te)throw Error(`Build result missing image for service ${W.name}`);l[B]=Te});for(let B of A)o?.settled?.(B.name)}catch(T){if(!b)y=T;b=!0;for(let B of A)o?.settled?.(B.name,T)}}},E=async(x)=>{let A=x[0],T=CS(),B={version:gr,id:T,project:e,service:A.name,...x.length>1&&{destinations:x.slice(1).map(({name:Ne,image:sb})=>({service:Ne,image:sb}))},spec:{architecture:d,image:A.image,context:A.context,dockerfile:A.dockerfile,target:A.target,buildArgs:A.buildArgs,workspace:c.digest}},W=await s("/builds",{method:"POST",json:B,signal:n.signal},{timeoutMs:300000}),Te=await GS(T,s,x.map(({name:Ne})=>({name:Ne,reporter:f.get(Ne)})),n.pollIntervalMs??zS,n.sleep??((Ne)=>Bun.sleep(Ne)),W,n.signal,!o?.service);if(Te.state!=="succeeded")throw Error(`Build failed for service ${A.name}: ${Te.error??"unknown error"}`);return await s(`/builds/${encodeURIComponent(T)}/result`,{signal:n.signal})};if(await Promise.all(Array.from({length:Math.min(i,m.length)},P)),b)throw y;let k=Object.fromEntries(u.map((x,A)=>[x.name,l[A]]));return{built:u.map((x)=>x.name),changed:u.map((x)=>x.name),images:k}}var IS,BS=8388608,zS=1000,DS=300000,_g=3,Sg=3,NS=20,LS=40;var Za=_(()=>{za();G();Oo();Fa();IS=OS(RS)});function kg(e){return KS[e.kind]??999}function Pg(e){return[...e].sort((t,r)=>kg(t)-kg(r))}var KS,oO,nO;var un=_(()=>{Fe();KS={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},oO=`app.kubernetes.io/managed-by=${X["app.kubernetes.io/managed-by"]}`,nO=X["app.kubernetes.io/managed-by"]});function XS(e){return`${YS}-${e}`}function qa(e){return encodeURIComponent(e)}function Cg(e,t){return`postgresql://${qa(t.username)}:${qa(t.password)}@${Qa}:${Wa}/${qa(e.database)}`}function Rg(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 Tg(e){return typeof e==="string"&&Rg(e)!==void 0}function e$(e,t){let r=t.volumes?.flatMap((o)=>{if(typeof o!=="string")return[];let n=Rg(o);return n?[{...n,service:e,secretName:XS(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 st(e){let t=Object.entries(e.services??{}).flatMap(([o,n])=>{let i=e$(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 JS="database",YS="postgres",Qa,Wa=5432;var _r=_(()=>{Fe();un();Qa=`c.${JS}.svc.cluster.local`});function ln(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]=ln(n,i);else r[o]=i}return r}function Og(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 Ig(e){return typeof e==="string"&&Og(e)!==void 0}function t$(e,t){let r=t.volumes?.flatMap((o)=>{if(typeof o!=="string")return[];let n=Og(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 at(e){let t=Object.entries(e.services??{}).flatMap(([o,n])=>{let i=t$(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 wr=_(()=>{Fe();un()});import{existsSync as Bg,readFileSync as r$,realpathSync as Ka,statSync as o$}from"fs";import{dirname as n$,isAbsolute as zg,normalize as i$,relative as s$,resolve as pn,sep as Dg}from"path";function At(e,t){return Object.assign(Error(e),t?{code:t}:{})}function a$(e){if(!e||e.includes("\x00")||e.includes("\\")||e.startsWith("~")||zg(e))throw At(`Artifact path must be workspace-relative: ${e}`);let t=i$(e);if(t===".."||t.startsWith(`..${Dg}`))throw At(`Artifact path escapes the workspace: ${e}`);return t.replace(/^\.\//,"")}function Ha(e,t){let r=s$(e,t);if(r===".."||r.startsWith(`..${Dg}`)||zg(r))throw At(`Artifact path escapes the workspace: ${t}`)}function c$(e,t){let r=t;while(!Bg(r)){let o=n$(r);if(o===r)break;r=o}Ha(e,Ka(r))}function Ga(e,t){if(t!==void 0&&(!Number.isSafeInteger(t)||t<0))throw Error(`${e} must be a non-negative safe integer`)}class Ng{#t;#r=0;#e=0;constructor(e){Ga("maxArtifactCount",e.maxArtifactCount),Ga("maxArtifactBytes",e.maxArtifactBytes),Ga("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 At(`Artifact ${e} exceeds the ${this.#t.maxArtifactBytes} byte limit`);if(this.#t.maxArtifactCount!==void 0&&this.#r+1>this.#t.maxArtifactCount)throw At(`Artifact count exceeds the ${this.#t.maxArtifactCount} limit`);if(this.#t.maxTotalBytes!==void 0&&this.#e+r>this.#t.maxTotalBytes)throw At(`Artifact bytes exceed the ${this.#t.maxTotalBytes} byte limit`);this.#r+=1,this.#e+=r}}class Qe{#t;#r;#e;constructor(e){this.#t=e.strict?Ka(e.workspace):pn(e.workspace),this.#r=e.strict??!1,this.#e=new Ng(e)}#o(e,t){if(!this.#r)return t.expandHome&&e.startsWith("~")?pn(process.env.HOME??"",e.slice(1)):pn(this.#t,e);let r=pn(this.#t,a$(e));return Ha(this.#t,r),c$(this.#t,r),r}isFile(e,t={}){let r=this.#o(e,t);return Bg(r)&&o$(r).isFile()}readText(e,t={}){let r=this.#o(e,t);if(this.#r)Ha(this.#t,Ka(r));let o=r$(r,"utf8");return this.#e.add(e,o),o}}var Lg=()=>{};import{createHash as Zg}from"crypto";import{basename as qg}from"path";function Qg(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 Wg(e){return`kuber-longhorn-${Zg("sha256").update(JSON.stringify(e)).digest("hex").slice(0,12)}`}function ct(e){if(typeof e==="number")return e;if(!e||e.includes("-"))return;let t=Number(e);return Number.isInteger(t)?t:void 0}function Vg(e){if(typeof e!=="string"&&typeof e!=="number")return;let t=String(e).trim(),r=u$.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 fn(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 Ug(e){if(e.scale!==void 0){let t=ct(e.scale);if(t!==void 0)return fn("scale",String(e.scale)),t;fn("scale",String(e.scale))}if(e.deploy?.replicas!==void 0){let t=ct(e.deploy.replicas);if(t!==void 0)return fn("deploy.replicas",String(e.deploy.replicas)),t;fn("deploy.replicas",String(e.deploy.replicas))}return 1}function Gg(e){let t=Vg(e.scale);if(t)return Mg(t);if(e.scale!==void 0)return{kind:"fixed",value:Ug(e)};let r=Vg(e.deploy?.replicas);if(r)return Mg(r);return{kind:"fixed",value:Ug(e)}}function Mg(e){if(e.min===e.max)return{kind:"fixed",value:e.min};return e}function l$(e){if(e.kind==="range")return e.max>1;return e.value>1}function p$(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 Ja(e){return e?.toUpperCase()==="UDP"?"UDP":"TCP"}function mn(e){if(!e)return;return/[a-z]/i.test(e)?e:void 0}function hn(e){return typeof e==="string"?JSON.stringify(e):String(e)}function Fg(e,t){let r=String(e).trim(),o=d$.exec(r);if(!o)throw Error(`Invalid ${t} value ${hn(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 ${hn(e)}. CPU cores must be representable in whole millicores.`);return s%1000n===0n?String(s/1000n):`${s}m`}function jg(e,t){let r=e.trim(),o=f$.exec(r);if(!o)throw Error(`Invalid ${t} value ${hn(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 ${hn(e)}. Expected a valid Kubernetes or Compose memory quantity.`);return`${r.slice(0,r.length-n.length)}${i}`}function m$(e){let t=e.deploy?.resources;if(!t)return;let r={...t.limits?.cpus!==void 0?{cpu:Fg(t.limits.cpus,"deploy.resources.limits.cpus")}:{},...t.limits?.memory!==void 0?{memory:jg(t.limits.memory,"deploy.resources.limits.memory")}:{}},o={...t.reservations?.cpus!==void 0?{cpu:Fg(t.reservations.cpus,"deploy.resources.reservations.cpus")}:{},...t.reservations?.memory!==void 0?{memory:jg(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 h$(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 gn(e){return e.toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,63)}function Ya(e){if(e===void 0||e===null)return;let t=String(e).trim();if(!t)return;return t}function Kg(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 Hg(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 g$(e){let[t,r]=e.split(/\s+on\s+/i,2).map((n)=>n?.trim());if(!r)return{requestedStorage:Ya(t)};let o=/^(?:(?<replicas>\d+)\s+)?(?<tags>.+)$/.exec(r);return{requestedStorage:Ya(t),diskTag:Kg(o?.groups?.tags),replicaCount:Hg(o?.groups?.replicas),dataLocality:"none"}}function y$(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}=g$(t.groups.size??"");if(!r)return;return{source:r,requestedStorage:o,diskTag:n,replicaCount:i,dataLocality:s}}function Jg(e){if(!e||Xa(e))return{source:e};let t=y$(e);if(!t)return{source:e};if(!t.source)throw Error(`Invalid volume source ${e}. Expected name(size).`);return t}function Yg(e){return Ya(e?.["x-size"])}function Xg(e){return Kg(e?.["x-diskTag"])}function ey(e){return Hg(e?.["x-replicaCount"])}function ty(e){return e?.["x-dataLocality"]==="none"?"none":void 0}function ry(e){return gn(`bind-${Bun.hash(e).toString(36)}`)}function Xa(e){return e.startsWith(".")||e.startsWith("/")||e.startsWith("~")||e.includes("/")}function oy(e,t){return t.isFile(e,{expandHome:!0})}function b$(e,t,r){if(Tg(e)||Ig(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:d}=Jg(a||void 0);return{name:c&&Xa(c)?ry(c):`volume-${t}`,kind:c&&Xa(c)?oy(c,r)?"config-file":"bind":"volume",source:c||void 0,target:s,configKey:c?qg(c):void 0,readOnly:i?n==="ro":void 0,requestedStorage:u,diskTag:l,replicaCount:f,dataLocality:d}}function _$(e,t,r){if(typeof e==="string")return b$(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}=Jg(e.source);return{name:o?e.type==="bind"?ry(o):`${e.type}-${gn(o)||t}`:`${e.type}-${t}`,kind:e.type==="bind"&&o&&oy(o,r)?"config-file":e.type,source:o,target:e.target,readOnly:h$(e.read_only),configKey:o?qg(o):void 0,subPath:e.volume?.subpath,sizeLimit:e.type==="tmpfs"&&e.tmpfs?.size!==void 0?String(e.tmpfs.size):void 0,requestedStorage:n??Yg(e.volume),diskTag:i??Xg(e.volume),replicaCount:s??ey(e.volume),dataLocality:a??ty(e.volume)}}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 x$(e,t){if(!t||!e)return;let r=e[t];return ey(r)}function E$(e,t){if(!t||!e)return;let r=e[t];return ty(r)}function yn(e,t,r={}){let o=e.volumes?.flatMap((i,s)=>{let a=_$(i,s,t);if(!a)return[];return[{...a,requestedStorage:a.requestedStorage??w$(r,a.source)??(a.kind==="volume"&&a.source?dn.requestedStorage:void 0),diskTag:a.diskTag??v$(r,a.source)??(a.kind==="volume"&&a.source?dn.diskTag:void 0),replicaCount:a.replicaCount??x$(r,a.source)??(a.kind==="volume"&&a.source?dn.replicaCount:void 0),dataLocality:a.dataLocality??E$(r,a.source)??(a.kind==="volume"&&a.source?dn.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 S$(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,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:gn(`${e}-${r.source}`)}}})}function A$(e){return[...new Set(e.split(",").map((t)=>t.trim()).filter(Boolean).map((t)=>t.startsWith("/")?t:`/${t}`))]}function k$(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=A$(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 bn(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:d}=k$(c),p=l.split(":"),m=ct(p.at(-1));if(!m)return[];let h=ct(p.at(-2)),y=h!==void 0?mn(p.at(-3)):mn(p.at(-2));return[{name:`port-${n}`,containerPort:m,servicePort:h??m,hostPort:h,host:y,protocol:Ja(u),routingKind:y?f??"ingress":void 0,paths:d}]}let i=ct(o.target);if(!i)return[];let s=ct(o.published);return[{name:o.name??`port-${n}`,containerPort:i,servicePort:s??i,hostPort:s,host:mn(o.host_ip),protocol:Ja(o.protocol),routingKind:mn(o.host_ip)?"ingress":void 0}]})??[],r=e.expose?.flatMap((o,n)=>{let[i,s]=String(o).split("/"),a=ct(i);if(!a)return[];return[{name:`expose-${n}`,containerPort:a,servicePort:a,protocol:Ja(s)}]})??[];return[...t,...r]}function P$(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 C$(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 R$(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 T$(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:X},spec:{routes:o}}}function O$(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 I$(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 B$(e,t){let r={};for(let o of O$(e))try{let n=t.readText(o.path);Object.assign(r,I$(n))}catch(n){if(!o.required&&n&&typeof n==="object"&&"code"in n&&n.code==="ENOENT")continue;throw n}return r}function z$(e,t,r,o,n=process.cwd(),i={},s={},a={},c=new Qe({workspace:n}),u={}){let l=yn(o,c,s),f=bn(o),d=Boolean(o.env_file)||Object.keys(i).length>0,p=u.replicaSpec??Gg(o),m=p.kind==="range"?p.min:p.value,h=[ln({name:t,imagePullPolicy:"Always",env:um(o.environment),image:p$(t,o,a),command:o.command instanceof Array?o.command:o.command?o.command.split(" "):void 0,envFrom:d?[{secretRef:{name:`${t}-env`}}]:void 0,ports:P$(f),resources:m$(o),volumeMounts:S$(l)},o["x-container"]??{})],y={restartPolicy:"Always",...fg(r),volumes:$$(e,l),containers:h};if(l$(p))y.topologySpreadConstraints=[{maxSkew:1,topologyKey:"kubernetes.io/hostname",whenUnsatisfiable:"ScheduleAnyway",labelSelector:{matchLabels:{app:t}}}];return ln({apiVersion:"apps/v1",kind:"Deployment",metadata:{name:t,namespace:e,labels:X},spec:{replicas:m,strategy:{rollingUpdate:{maxSurge:"25%",maxUnavailable:"25%"}},selector:{matchLabels:{app:t}},template:{metadata:{labels:{app:t}},spec:y}}},o["x-deployment"]??{})}function D$(e,t,r){let o=C$(bn(r));if(!o)return;return{apiVersion:"v1",kind:"Service",metadata:{name:t,namespace:e,labels:X},spec:{type:"ClusterIP",selector:{app:t},ports:o}}}function N$(e,t,r){let o=R$(t,bn(r));if(o.length===0)return;return{apiVersion:"networking.k8s.io/v1",kind:"Ingress",metadata:{name:t,namespace:e,labels:X},spec:{rules:o}}}function L$(e,t,r=process.cwd(),o={},n=new Qe({workspace:r})){let i=new Map;for(let s of yn(t,n,o)){let a=s.kind==="bind"?s.source?s.name:void 0:s.kind==="volume"&&s.source?gn(`${e}-${s.source}`):void 0;if(!a||i.has(a))continue;let c=Qg(s);i.set(a,{apiVersion:"v1",kind:"PersistentVolumeClaim",metadata:{name:a,namespace:e,labels:X},spec:{accessModes:[c?.replicaCount===1?"ReadWriteOnce":"ReadWriteMany"],storageClassName:c?Wg(c):void 0,resources:{requests:{storage:s.requestedStorage??"1Gi"}}}})}return[...i.values()]}function V$(e,t=process.cwd(),r={},o=new Qe({workspace:t})){let n=new Map;for(let i of yn(e,o,r)){let s=Qg(i);if(!s)continue;let a=Wg(s);n.set(a,{apiVersion:"storage.k8s.io/v1",kind:"StorageClass",metadata:{name:a,labels:X},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 U$(e,t,r=process.cwd(),o={},n=new Qe({workspace:r})){let i=new Map;for(let s of yn(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:X},data:{[s.configKey]:n.readText(s.source,{expandHome:!0})}})}return[...i.values()]}async function M$(e,t,r,o=process.cwd(),n={},i=new Qe({workspace:o})){let s={...await B$(r.env_file,i),...n};if(Object.keys(s).length===0)return[];return[{apiVersion:"v1",kind:"Secret",metadata:{name:`${t}-env`,namespace:e,labels:X},type:"Opaque",stringData:s}]}function F$(e){let t=Object.entries(e.stringData??{}).sort(([r],[o])=>r.localeCompare(o));return Zg("sha256").update(JSON.stringify(t)).digest("hex")}function j$(e){return{apiVersion:"v1",kind:"Namespace",metadata:{name:e,labels:X}}}function Z$(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 q$(e,t,r){return{apiVersion:"autoscaling/v2",kind:"HorizontalPodAutoscaler",metadata:{name:t,namespace:e,labels:X},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 ke(e){return`${e.kind}:${e.metadata?.namespace??""}:${e.metadata?.name??""}`}async function _n(e,t,r=process.cwd(),o={},n={},i=new Qe({workspace:r})){let s=new Map,a=j$(e);s.set(ke(a),a);for(let[c,u]of Object.entries(t.services??{})){for(let b of V$(u,r,t.volumes,i))s.set(ke(b),b);for(let b of L$(e,u,r,t.volumes,i))s.set(ke(b),b);for(let b of U$(e,u,r,t.volumes,i))s.set(ke(b),b);let l=await M$(e,c,u,r,o[c]??{},i);for(let b of l)s.set(ke(b),b);let f=D$(e,c,u);if(f)s.set(ke(f),f);let d=Gg(u),p=z$(e,c,t,u,r,o[c]??{},t.volumes,n,i,{replicaSpec:d}),m=l[0];if(m)p.spec.template.metadata.annotations={...p.spec?.template.metadata?.annotations,"kuber.astrxl.dev/env-checksum":F$(m)};if(s.set(ke(p),p),d.kind==="range"){Z$(p,u);let b=q$(e,c,d);s.set(ke(b),b)}let h=N$(e,c,u);if(h)s.set(ke(h),h);let y=T$(e,c,bn(u));if(y)s.set(ke(y),y)}return[...s.values()]}var dn,u$,d$,f$;var ec=_(()=>{Fe();za();_r();ot();wr();Lg();dn={requestedStorage:"1Gi",diskTag:["fast"],replicaCount:2,dataLocality:"none"};u$=/^\s*(\d+)\s*-\s*(\d+)\s*$/;d$=/^(\d+)(?:\.(\d+))?$/,f$=/^(?:\d+(?:\.\d+)?|\.\d+)([a-zA-Z]*)$/});import{randomUUID as tc}from"crypto";import{isDeepStrictEqual as ny}from"util";function py(e){return`/workspaces/${encodeURIComponent(e)}/adopt`}function iy(e,t){let r={...e};for(let[o,n]of Object.entries(t))r[o]={...r[o],...n};return r}function H$(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 J$(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 Y$(e,t){return{source:{uri:`cas://${t.digest}`,digest:t.digest},config:{compose:e}}}function X$(e,t){return ny(e.spec?.source,t.source)&&ny(e.spec?.config,t.config)}function sy(e){if(e instanceof xe)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 eA(e,t,r,o=C){let n=`/workspaces/${encodeURIComponent(e)}`,i=Y$(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(X$(l,i))return l;return await s(l)}catch{throw u}},c;try{c=await o(n)}catch(u){if(!(u instanceof xe)||u.status!==404)throw u;try{return await o("/workspaces",{method:"POST",json:{id:e,...i}})}catch(l){if(!sy(l))throw l;return a(l)}}try{return await s(c)}catch(u){if(!sy(u))throw u;return a(u)}}function ay(e){return Object.fromEntries(Object.entries(e).filter(([t,r])=>t!=="operation"&&t!=="operationId"&&r!==null&&typeof r==="object"&&!Array.isArray(r)))}function wn(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 ${ly} ${py(e)} with namespace UID and ownership preconditions.`,{cause:t})}async function Pt(e,t,r,o){try{return await t(r,o)}catch(n){throw wn(e,n)}}function tA(e){if(!e||typeof e!=="object")return;let t=e.operationId;return typeof t==="string"&&t?t:void 0}function rA(e){if(!e||typeof e!=="object")return;let t=e.operation?.status;return t&&typeof t==="object"?t:void 0}function cy(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 xe(n,o?409:500,{title:o?"Operation cancelled":"Operation failed",status:o?409:500,code:i,operationId:e})}function oA(e){if(e instanceof xe)return K$.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 nA(e){return e.state==="failed"&&e.error?.code==="OPERATION_INTERRUPTED"}function iA(e,t){return e.cursorGap===!0||Number.isSafeInteger(e.retainedFirstSequence)&&e.retainedFirstSequence>t+1}function sA(e,t){return t+Math.max(e,0)+G$}function dy(e){return e.reason??new DOMException("The operation was aborted","AbortError")}function kt(e){if(e?.aborted)throw dy(e)}function aA(e,t){return kt(t),new Promise((r,o)=>{let n,i=()=>{if(n!==void 0)clearTimeout(n);t?.removeEventListener("abort",a)},s=()=>{i(),r()},a=()=>{i(),o(dy(t))};if(n=setTimeout(s,e),t?.addEventListener("abort",a,{once:!0}),t?.aborted)a()})}async function rc(e,t,r,o,n,i){let s=i.now??Date.now,a=sA(n,s()),c=new Headers(o.headers);c.set("idempotency-key",tc()),c.set("prefer","respond-async");let u={...o,headers:c,signal:i.signal??o.signal},l,f=Q$,d=!1,p=0;for(;;){if(kt(i.signal),d&&s()>=a)throw Error("Timed out while reconnecting to resume the operation");try{let y;if(l)y=(await Pt(e,t,`/operations/${encodeURIComponent(l)}`,{signal:i.signal})).status;else{d=!1;let b=await Pt(e,t,r,u);l=tA(b),y=rA(b)}if(l)try{let b=await Pt(e,t,`/operations/${encodeURIComponent(l)}/events?after=${p}`,{signal:i.signal});if(iA(b,p))throw new ic;for(let P of b.items??[]){if(!Number.isSafeInteger(P.sequence)||P.sequence<=p)continue;if(p=P.sequence,!J$(P))continue;i.onEvent?.(P)}}catch(b){if(b instanceof ic)throw b;kt(i.signal)}if(!l||!y||y.state==="succeeded")return;if(nA(y)){if(s()>=a)throw cy(l,y);l=void 0,p=0,d=!0,c.set("idempotency-key",tc()),u={...o,headers:c,signal:i.signal??o.signal}}else if(y.state==="failed"||y.state==="cancelled")throw cy(l,y)}catch(y){if(kt(i.signal),y instanceof xe&&y.code==="OPERATION_INTERRUPTED"){if(s()>=a)throw wn(e,y);l=void 0,p=0,d=!0,c.set("idempotency-key",tc()),u={...o,headers:c,signal:i.signal??o.signal}}else{if(!oA(y))throw wn(e,y);if(s()>=a)throw wn(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)kt(i.signal),await i.sleep(h),kt(i.signal);else await aA(h,i.signal);f=Math.min(f*2,W$)}}async function cA(e,t,r=C){let o=`/workspaces/${encodeURIComponent(e)}`;return Pt(e,r,`${o}/resources/plan`,{method:"POST",json:{resources:t}})}function oc(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 uy(e){return`${e.apiVersion}\x00${e.kind}\x00${e.namespace??""}\x00${e.name}`}function uA(e,t){return`${e==="apply"?"Apply":e==="wait"?"Wait for":"Delete"} ${t.kind}/${t.name}`}function nc(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:uA(t,c),task:async(u,l)=>{if(i.set(uy(c),l),n.onTaskStarted?.(c,l),a+=1,a!==r.length)return new Promise((f)=>{let d=()=>{e.signal.removeEventListener("abort",d),s.delete(d),f()};if(s.add(d),e.signal.aborted)d();else e.signal.addEventListener("abort",d,{once:!0})});try{await o((f)=>{let d=f.data.resource,p=i.get(uy(d));if(!p)return;p.output=f.data.state,e.output=H$(f)},e.signal)}finally{for(let f of[...s])f()}}})),{concurrent:!0})}async function vr(e,t=C,r={}){let{project:o,compose:n,cwd:i,config:s,hookContext:a}=D(),c=r.trust??await km(await bt(o,i)),u=t;t=async(d,p={},m)=>{let h=new Headers(p.headers);for(let[y,b]of Object.entries(Am(c)))h.set(y,b);return u(d,{...p,headers:h},m)};let l=`/workspaces/${encodeURIComponent(o)}`;return await new he([{title:"Read compose",task:async(d,p)=>{if(d.compose=await n(),e)await s.preBuild?.(d.compose,await a());p.output=`${Object.keys(d.compose.services??{}).length} services`}},{title:"Snapshot workspace",task:async(d,p)=>{let m;try{m=await ja(i)}catch(h){m=i}d.workspaceRoot=m,d.snapshot=await an(m),p.output=`${d.snapshot.manifest.files.length} files`}},{title:"Build images",rendererOptions:{bottomBar:1/0,persistentOutput:!0},enabled:async()=>e&&Object.values((await n()).services??{}).some((d)=>d.build),task:async(d,p)=>{let m=Object.entries(d.compose.services??{}).filter(([,A])=>A.build).map(([A])=>A),h=new Map,y=new Map,b=new Map(m.map((A)=>[A,new Promise((T)=>y.set(A,T))])),P,E,k,x=()=>(k??=Ag(o,d.compose,i,{progress:(A)=>{if(p.output!==A)p.output=A},service:(A)=>{let T;return{progress:(B)=>{let W=h.get(A);if(W&&W.output!==B)W.output=B},get stream(){let B=h.get(A);if(B)T??=B.stdout();return T}}},settled:(A,T)=>{y.get(A)?.(T),y.delete(A)}},{...s,request:t,snapshot:d.snapshot,workspaceRoot:d.workspaceRoot,signal:p.signal}).then((A)=>{P=A},(A)=>{let T=A instanceof Error?A:Error(String(A));E=T,p.output=T.stack??T.message,p.report(T,ag.HAS_FAILED);for(let B of y.values())B(T);y.clear()}),k);if(await p.newListr(m.map((A)=>({title:`Build ${A}`,rendererOptions:{outputBar:10,persistentOutput:!0},task:async(T,B)=>{if(h.set(A,B),B.output="Build queued",h.size===m.length)x();let W=await b.get(A);if(W)throw W;B.output="done"}})),{concurrent:!0,exitOnError:!1}).run(),await k,!P)throw E??Error("Build images failed");d.buildImages=P.images,await s.postBuild?.(P,await a()),p.title=`Built ${P.built.length} image${P.built.length===1?"":"s"}`}},{title:"Resolve images",enabled:async()=>!e&&Object.values((await n()).services??{}).some((d)=>d.build),task:async(d,p)=>{d.buildImages=await cn(o,d.compose,{...s,request:t}),p.output=`${Object.keys(d.buildImages).length} images`}},{title:"Update workspace",task:async(d,p)=>{let m=await eA(o,d.compose,d.snapshot,t),h=await t(py(o),{method:ly,json:{workspaceUid:m.metadata.uid}});p.output=h.resourcesAdopted?`Adopted ${h.resourcesAdopted} existing resources`:"Workspace ready"}},{title:"Reconcile backing services",task:async(d,p)=>{let m={},h={};await p.newListr([{title:"Reconcile databases",enabled:()=>st(d.compose).length>0,task:async(y,b)=>{let P=await Pt(o,t,`${l}/databases`,{method:"POST",json:{compose:d.compose}});m=ay(P),b.output=`${Object.keys(m).length} services`}},{title:"Reconcile S3 storage",enabled:()=>at(d.compose).length>0,task:async(y,b)=>{let P=await Pt(o,t,`${l}/storage`,{method:"POST",json:{compose:d.compose}});h=ay(P),b.output=`${Object.keys(h).length} services`}}],{concurrent:!0}).run(),d.serviceEnv=iy(iy(d.serviceEnv,m),h)}},{title:"Render manifests",task:async(d,p)=>{d.resources=await _n(o,d.compose,i,d.serviceEnv,d.buildImages),await s.postRender?.(d.resources,await a()),p.output=`${d.resources.length} resources`}},{title:"Reconcile resources",task:async(d,p)=>{d.plan=await cA(o,d.resources,t);let m=d.plan,h=m.desired.map(oc).filter((E)=>Boolean(E)),y=m.desired.filter((E)=>E.kind==="Deployment").map(oc).filter((E)=>Boolean(E)),b=m.stale.map(oc).filter((E)=>Boolean(E)),P=`${l}/resources`;return p.newListr([{title:"Apply resources",task:async(E,k)=>nc(k,"apply",h,(x,A)=>rc(o,t,`${P}/apply`,{method:"POST",json:{resources:m.desired}},s.rolloutTimeoutMs,{onEvent:x,signal:A}))},{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(E,k)=>nc(k,"wait",y,(x,A)=>rc(o,t,`${P}/wait`,{method:"POST",json:{deployments:y.map((T)=>T.name),timeoutMs:s.rolloutTimeoutMs}},s.rolloutTimeoutMs,{onEvent:x,signal:A}))},{title:"Delete stale resources",skip:b.length===0,task:async(E,k)=>nc(k,"delete",b,(x,A)=>rc(o,t,`${P}/delete`,{method:"POST",json:{resources:m.stale}},s.rolloutTimeoutMs,{onEvent:x,signal:A}))}])}}],{renderer:e?"simple":"default",rendererOptions:{collapseErrors:!1}}).run()}var ly="POST",Q$=250,W$=5000,G$=60000,K$,ic,lA;var vn=_(()=>{q();St();G();Za();ec();oe();_r();wr();Fa();Do();K$=new Set(["HTTP_502","HTTP_503","HTTP_504"]);ic=class ic extends Error{constructor(){super("Operation progress history was truncated; refusing to report an incomplete resource stream")}};lA=S({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 vr(e.build)}})});function pA(e){let t=e?.trim();if(!t)throw Error("KUBER_API_KEY or --api-key is required for kuber ci");return t}function dA(e){return(t,r={},o={})=>{let n=new Headers(r.headers);return n.set("authorization",`Bearer ${e}`),C(t,{...r,headers:n},{...o,authenticated:!1})}}async function fA(e,t,r,o=dA(r)){let{project:n,cwd:i}=D(),s=await bt(n,i);if(t)await o(`/workspaces/${encodeURIComponent(n)}/trust`,{method:"POST",json:{fingerprint:s.fingerprint}});await vr(e,o,{trust:t?s:void 0})}var mA;var fy=_(()=>{q();G();oe();Do();vn();mA=S({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 fA(e.build,Boolean(e.trust),pA(e.apiKey??process.env.KUBER_API_KEY))}})});function hA(e,t,r=C){return r(`/workspaces/${encodeURIComponent(e)}/databases/credentials`,{method:"POST",json:{claim:t}})}var gA,yA,bA;var my=_(()=>{q();G();oe();_r();ot();gA=S({meta:{name:"ls",description:"List managed postgres claims"},async run(){let e=st(await D().compose());if(e.length===0){console.log("No managed postgres volumes declared");return}console.log(fe(e.map((t)=>({service:t.service,username:t.username,database:t.database,secret:t.secretName}))))}}),yA=S({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=D(),o=st(await r.compose()).find((s)=>s.service===t);if(!o)throw Error(`Service ${t} does not declare a managed postgres volume.`);let n=await hA(r.project,o),i=Cg(o,n);console.log(fe([{service:o.service,username:n.username,database:o.database,host:Qa,port:Wa,secret:o.secretName}])),console.log(`DATABASE_URL=${i}`)}}),bA=S({meta:{name:"db",description:"Inspect managed postgres databases"},subCommands:{creds:yA,ls:gA}})});function _A(e,t=!1,r=C){return r(`/workspaces/${encodeURIComponent(e)}/down`,{method:"POST",json:{full:t}})}var wA;var hy=_(()=>{q();St();G();oe();wA=S({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}=D();await new he([{title:"Delete resources",task:async(r,o)=>{let n=await _A(t,e.full);o.output=`${n.delete.length} resources queued`}}]).run()}})});async function gy(e,t,r=process.cwd(),o={}){let n=[...st(t).length?["Postgres"]:[],...at(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 cn(e,t,o);return _n(e,t,r,{},i)}var yy=_(()=>{ec();_r();wr();Za()});import{resolve as vA}from"path";var{YAML:xA}=globalThis.Bun;function EA(e){return`${Pg(e).map((t)=>xA.stringify(t,null,2).trimEnd()).join(`
100
+ ${p}`};return c}if(c=await vg(t,`/builds/${encodeURIComponent(e)}/reconcile`,{method:"POST",json:{}},o,n,s),c.state!=="succeeded"&&c.state!=="failed")s?.throwIfAborted(),await n(o)}}async function cn(e,t,r={}){let o=r.request??C,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(Sg,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 Ag(e,t,r=process.cwd(),o,n={}){if(!Object.values(t.services??{}).some((x)=>x.build))return{built:[],changed:[],images:{}};let i=n.buildConcurrency??Sg;if(!Number.isSafeInteger(i)||i<1)throw RangeError("buildConcurrency must be a positive integer");let s=n.request??C,a=n.workspaceRoot;if(!a&&!n.snapshot)try{a=await ja(r)}catch(x){a=r}a??=r;let c=n.snapshot??await an(a),u=Object.entries(t.services??{}).flatMap(([x,A])=>{let T=FS(e,x,A,r,a,n.registry??To);return T?[T]:[]});await qS(c,s,o,n.scheduler,e);let l=Array(u.length),f=new Map(u.map((x)=>[x.name,o?.service?.(x.name)??o])),d=Ba(t),p=new Map;u.forEach((x,A)=>{let T=JSON.stringify({workspace:c.digest,architecture:d,context:x.context,dockerfile:x.dockerfile,target:x.target,buildArgs:x.buildArgs}),B=p.get(T)??[];B.push(A),p.set(T,B)});let m=[...p.values()],h=0,y,b=!1,P=async()=>{while(!b&&h<m.length){let x=m[h++],A=x.map((T)=>u[T]);try{n.signal?.throwIfAborted();for(let B of A)await f.get(B.name)?.progress?.(`${o?.service?"":`${B.name}: `}Build queued`);let T=await E(A);x.forEach((B)=>{let W=u[B],Te=B===x[0]?T.reference:T.references?.[W.name];if(!Te)throw Error(`Build result missing image for service ${W.name}`);l[B]=Te});for(let B of A)o?.settled?.(B.name)}catch(T){if(!b)y=T;b=!0;for(let B of A)o?.settled?.(B.name,T)}}},E=async(x)=>{let A=x[0],T=CS(),B={version:gr,id:T,project:e,service:A.name,...x.length>1&&{destinations:x.slice(1).map(({name:Ne,image:sb})=>({service:Ne,image:sb}))},spec:{architecture:d,image:A.image,context:A.context,dockerfile:A.dockerfile,target:A.target,buildArgs:A.buildArgs,workspace:c.digest}},W=await s("/builds",{method:"POST",json:B,signal:n.signal},{timeoutMs:300000}),Te=await GS(T,s,x.map(({name:Ne})=>({name:Ne,reporter:f.get(Ne)})),n.pollIntervalMs??zS,n.sleep??((Ne)=>Bun.sleep(Ne)),W,n.signal,!o?.service);if(Te.state!=="succeeded")throw Error(`Build failed for service ${A.name}: ${Te.error??"unknown error"}`);return await s(`/builds/${encodeURIComponent(T)}/result`,{signal:n.signal})};if(await Promise.all(Array.from({length:Math.min(i,m.length)},P)),b)throw y;let k=Object.fromEntries(u.map((x,A)=>[x.name,l[A]]));return{built:u.map((x)=>x.name),changed:u.map((x)=>x.name),images:k}}var IS,BS=8388608,zS=1000,DS=300000,_g=3,Sg=3,NS=20,LS=40;var Za=_(()=>{za();G();Oo();Fa();IS=OS(RS)});function kg(e){return KS[e.kind]??999}function Pg(e){return[...e].sort((t,r)=>kg(t)-kg(r))}var KS,oO,nO;var un=_(()=>{Fe();KS={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},oO=`app.kubernetes.io/managed-by=${X["app.kubernetes.io/managed-by"]}`,nO=X["app.kubernetes.io/managed-by"]});function XS(e){return`${YS}-${e}`}function qa(e){return encodeURIComponent(e)}function Cg(e,t){return`postgresql://${qa(t.username)}:${qa(t.password)}@${Qa}:${Wa}/${qa(e.database)}`}function Rg(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 Tg(e){return typeof e==="string"&&Rg(e)!==void 0}function e$(e,t){let r=t.volumes?.flatMap((o)=>{if(typeof o!=="string")return[];let n=Rg(o);return n?[{...n,service:e,secretName:XS(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 st(e){let t=Object.entries(e.services??{}).flatMap(([o,n])=>{let i=e$(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 JS="database",YS="postgres",Qa,Wa=5432;var _r=_(()=>{Fe();un();Qa=`c.${JS}.svc.cluster.local`});function ln(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]=ln(n,i);else r[o]=i}return r}function Og(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 Ig(e){return typeof e==="string"&&Og(e)!==void 0}function t$(e,t){let r=t.volumes?.flatMap((o)=>{if(typeof o!=="string")return[];let n=Og(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 at(e){let t=Object.entries(e.services??{}).flatMap(([o,n])=>{let i=t$(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 wr=_(()=>{Fe();un()});import{existsSync as Bg,readFileSync as r$,realpathSync as Ka,statSync as o$}from"fs";import{dirname as n$,isAbsolute as zg,normalize as i$,relative as s$,resolve as pn,sep as Dg}from"path";function At(e,t){return Object.assign(Error(e),t?{code:t}:{})}function a$(e){if(!e||e.includes("\x00")||e.includes("\\")||e.startsWith("~")||zg(e))throw At(`Artifact path must be workspace-relative: ${e}`);let t=i$(e);if(t===".."||t.startsWith(`..${Dg}`))throw At(`Artifact path escapes the workspace: ${e}`);return t.replace(/^\.\//,"")}function Ha(e,t){let r=s$(e,t);if(r===".."||r.startsWith(`..${Dg}`)||zg(r))throw At(`Artifact path escapes the workspace: ${t}`)}function c$(e,t){let r=t;while(!Bg(r)){let o=n$(r);if(o===r)break;r=o}Ha(e,Ka(r))}function Ga(e,t){if(t!==void 0&&(!Number.isSafeInteger(t)||t<0))throw Error(`${e} must be a non-negative safe integer`)}class Ng{#t;#r=0;#e=0;constructor(e){Ga("maxArtifactCount",e.maxArtifactCount),Ga("maxArtifactBytes",e.maxArtifactBytes),Ga("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 At(`Artifact ${e} exceeds the ${this.#t.maxArtifactBytes} byte limit`);if(this.#t.maxArtifactCount!==void 0&&this.#r+1>this.#t.maxArtifactCount)throw At(`Artifact count exceeds the ${this.#t.maxArtifactCount} limit`);if(this.#t.maxTotalBytes!==void 0&&this.#e+r>this.#t.maxTotalBytes)throw At(`Artifact bytes exceed the ${this.#t.maxTotalBytes} byte limit`);this.#r+=1,this.#e+=r}}class Qe{#t;#r;#e;constructor(e){this.#t=e.strict?Ka(e.workspace):pn(e.workspace),this.#r=e.strict??!1,this.#e=new Ng(e)}#o(e,t){if(!this.#r)return t.expandHome&&e.startsWith("~")?pn(process.env.HOME??"",e.slice(1)):pn(this.#t,e);let r=pn(this.#t,a$(e));return Ha(this.#t,r),c$(this.#t,r),r}isFile(e,t={}){let r=this.#o(e,t);return Bg(r)&&o$(r).isFile()}readText(e,t={}){let r=this.#o(e,t);if(this.#r)Ha(this.#t,Ka(r));let o=r$(r,"utf8");return this.#e.add(e,o),o}}var Lg=()=>{};import{createHash as Zg}from"crypto";import{basename as qg}from"path";function Qg(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 Wg(e){return`kuber-longhorn-${Zg("sha256").update(JSON.stringify(e)).digest("hex").slice(0,12)}`}function ct(e){if(typeof e==="number")return e;if(!e||e.includes("-"))return;let t=Number(e);return Number.isInteger(t)?t:void 0}function Vg(e){if(typeof e!=="string"&&typeof e!=="number")return;let t=String(e).trim(),r=u$.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 fn(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 Ug(e){if(e.scale!==void 0){let t=ct(e.scale);if(t!==void 0)return fn("scale",String(e.scale)),t;fn("scale",String(e.scale))}if(e.deploy?.replicas!==void 0){let t=ct(e.deploy.replicas);if(t!==void 0)return fn("deploy.replicas",String(e.deploy.replicas)),t;fn("deploy.replicas",String(e.deploy.replicas))}return 1}function Gg(e){let t=Vg(e.scale);if(t)return Mg(t);if(e.scale!==void 0)return{kind:"fixed",value:Ug(e)};let r=Vg(e.deploy?.replicas);if(r)return Mg(r);return{kind:"fixed",value:Ug(e)}}function Mg(e){if(e.min===e.max)return{kind:"fixed",value:e.min};return e}function l$(e){if(e.kind==="range")return e.max>1;return e.value>1}function p$(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 Ja(e){return e?.toUpperCase()==="UDP"?"UDP":"TCP"}function mn(e){if(!e)return;return/[a-z]/i.test(e)?e:void 0}function hn(e){return typeof e==="string"?JSON.stringify(e):String(e)}function Fg(e,t){let r=String(e).trim(),o=d$.exec(r);if(!o)throw Error(`Invalid ${t} value ${hn(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 ${hn(e)}. CPU cores must be representable in whole millicores.`);return s%1000n===0n?String(s/1000n):`${s}m`}function jg(e,t){let r=e.trim(),o=f$.exec(r);if(!o)throw Error(`Invalid ${t} value ${hn(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 ${hn(e)}. Expected a valid Kubernetes or Compose memory quantity.`);return`${r.slice(0,r.length-n.length)}${i}`}function m$(e){let t=e.deploy?.resources;if(!t)return;let r={...t.limits?.cpus!==void 0?{cpu:Fg(t.limits.cpus,"deploy.resources.limits.cpus")}:{},...t.limits?.memory!==void 0?{memory:jg(t.limits.memory,"deploy.resources.limits.memory")}:{}},o={...t.reservations?.cpus!==void 0?{cpu:Fg(t.reservations.cpus,"deploy.resources.reservations.cpus")}:{},...t.reservations?.memory!==void 0?{memory:jg(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 h$(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 gn(e){return e.toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,63)}function Ya(e){if(e===void 0||e===null)return;let t=String(e).trim();if(!t)return;return t}function Kg(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 Hg(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 g$(e){let[t,r]=e.split(/\s+on\s+/i,2).map((n)=>n?.trim());if(!r)return{requestedStorage:Ya(t)};let o=/^(?:(?<replicas>\d+)\s+)?(?<tags>.+)$/.exec(r);return{requestedStorage:Ya(t),diskTag:Kg(o?.groups?.tags),replicaCount:Hg(o?.groups?.replicas),dataLocality:"none"}}function y$(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}=g$(t.groups.size??"");if(!r)return;return{source:r,requestedStorage:o,diskTag:n,replicaCount:i,dataLocality:s}}function Jg(e){if(!e||Xa(e))return{source:e};let t=y$(e);if(!t)return{source:e};if(!t.source)throw Error(`Invalid volume source ${e}. Expected name(size).`);return t}function Yg(e){return Ya(e?.["x-size"])}function Xg(e){return Kg(e?.["x-diskTag"])}function ey(e){return Hg(e?.["x-replicaCount"])}function ty(e){return e?.["x-dataLocality"]==="none"?"none":void 0}function ry(e){return gn(`bind-${Bun.hash(e).toString(36)}`)}function Xa(e){return e.startsWith(".")||e.startsWith("/")||e.startsWith("~")||e.includes("/")}function oy(e,t){return t.isFile(e,{expandHome:!0})}function b$(e,t,r){if(Tg(e)||Ig(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:d}=Jg(a||void 0);return{name:c&&Xa(c)?ry(c):`volume-${t}`,kind:c&&Xa(c)?oy(c,r)?"config-file":"bind":"volume",source:c||void 0,target:s,configKey:c?qg(c):void 0,readOnly:i?n==="ro":void 0,requestedStorage:u,diskTag:l,replicaCount:f,dataLocality:d}}function _$(e,t,r){if(typeof e==="string")return b$(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}=Jg(e.source);return{name:o?e.type==="bind"?ry(o):`${e.type}-${gn(o)||t}`:`${e.type}-${t}`,kind:e.type==="bind"&&o&&oy(o,r)?"config-file":e.type,source:o,target:e.target,readOnly:h$(e.read_only),configKey:o?qg(o):void 0,subPath:e.volume?.subpath,sizeLimit:e.type==="tmpfs"&&e.tmpfs?.size!==void 0?String(e.tmpfs.size):void 0,requestedStorage:n??Yg(e.volume),diskTag:i??Xg(e.volume),replicaCount:s??ey(e.volume),dataLocality:a??ty(e.volume)}}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 x$(e,t){if(!t||!e)return;let r=e[t];return ey(r)}function E$(e,t){if(!t||!e)return;let r=e[t];return ty(r)}function yn(e,t,r={}){let o=e.volumes?.flatMap((i,s)=>{let a=_$(i,s,t);if(!a)return[];return[{...a,requestedStorage:a.requestedStorage??w$(r,a.source)??(a.kind==="volume"&&a.source?dn.requestedStorage:void 0),diskTag:a.diskTag??v$(r,a.source)??(a.kind==="volume"&&a.source?dn.diskTag:void 0),replicaCount:a.replicaCount??x$(r,a.source)??(a.kind==="volume"&&a.source?dn.replicaCount:void 0),dataLocality:a.dataLocality??E$(r,a.source)??(a.kind==="volume"&&a.source?dn.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 S$(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,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:gn(`${e}-${r.source}`)}}})}function A$(e){return[...new Set(e.split(",").map((t)=>t.trim()).filter(Boolean).map((t)=>t.startsWith("/")?t:`/${t}`))]}function k$(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=A$(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 bn(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:d}=k$(c),p=l.split(":"),m=ct(p.at(-1));if(!m)return[];let h=ct(p.at(-2)),y=h!==void 0?mn(p.at(-3)):mn(p.at(-2));return[{name:`port-${n}`,containerPort:m,servicePort:h??m,hostPort:h,host:y,protocol:Ja(u),routingKind:y?f??"ingress":void 0,paths:d}]}let i=ct(o.target);if(!i)return[];let s=ct(o.published);return[{name:o.name??`port-${n}`,containerPort:i,servicePort:s??i,hostPort:s,host:mn(o.host_ip),protocol:Ja(o.protocol),routingKind:mn(o.host_ip)?"ingress":void 0}]})??[],r=e.expose?.flatMap((o,n)=>{let[i,s]=String(o).split("/"),a=ct(i);if(!a)return[];return[{name:`expose-${n}`,containerPort:a,servicePort:a,protocol:Ja(s)}]})??[];return[...t,...r]}function P$(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 C$(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 R$(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 T$(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:X},spec:{routes:o}}}function O$(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 I$(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 B$(e,t){let r={};for(let o of O$(e))try{let n=t.readText(o.path);Object.assign(r,I$(n))}catch(n){if(!o.required&&n&&typeof n==="object"&&"code"in n&&n.code==="ENOENT")continue;throw n}return r}function z$(e,t,r,o,n=process.cwd(),i={},s={},a={},c=new Qe({workspace:n}),u={}){let l=yn(o,c,s),f=bn(o),d=Boolean(o.env_file)||Object.keys(i).length>0,p=u.replicaSpec??Gg(o),m=p.kind==="range"?p.min:p.value,h=[ln({name:t,imagePullPolicy:"Always",env:um(o.environment),image:p$(t,o,a),command:o.command instanceof Array?o.command:o.command?o.command.split(" "):void 0,envFrom:d?[{secretRef:{name:`${t}-env`}}]:void 0,ports:P$(f),resources:m$(o),volumeMounts:S$(l)},o["x-container"]??{})],y={restartPolicy:"Always",...fg(r),volumes:$$(e,l),containers:h};if(l$(p))y.topologySpreadConstraints=[{maxSkew:1,topologyKey:"kubernetes.io/hostname",whenUnsatisfiable:"ScheduleAnyway",labelSelector:{matchLabels:{app:t}}}];return ln({apiVersion:"apps/v1",kind:"Deployment",metadata:{name:t,namespace:e,labels:X},spec:{replicas:m,strategy:{rollingUpdate:{maxSurge:"25%",maxUnavailable:"25%"}},selector:{matchLabels:{app:t}},template:{metadata:{labels:{app:t}},spec:y}}},o["x-deployment"]??{})}function D$(e,t,r){let o=C$(bn(r));if(!o)return;return{apiVersion:"v1",kind:"Service",metadata:{name:t,namespace:e,labels:X},spec:{type:"ClusterIP",selector:{app:t},ports:o}}}function N$(e,t,r){let o=R$(t,bn(r));if(o.length===0)return;return{apiVersion:"networking.k8s.io/v1",kind:"Ingress",metadata:{name:t,namespace:e,labels:X},spec:{rules:o}}}function L$(e,t,r=process.cwd(),o={},n=new Qe({workspace:r})){let i=new Map;for(let s of yn(t,n,o)){let a=s.kind==="bind"?s.source?s.name:void 0:s.kind==="volume"&&s.source?gn(`${e}-${s.source}`):void 0;if(!a||i.has(a))continue;let c=Qg(s);i.set(a,{apiVersion:"v1",kind:"PersistentVolumeClaim",metadata:{name:a,namespace:e,labels:X},spec:{accessModes:[c?.replicaCount===1?"ReadWriteOnce":"ReadWriteMany"],storageClassName:c?Wg(c):void 0,resources:{requests:{storage:s.requestedStorage??"1Gi"}}}})}return[...i.values()]}function V$(e,t=process.cwd(),r={},o=new Qe({workspace:t})){let n=new Map;for(let i of yn(e,o,r)){let s=Qg(i);if(!s)continue;let a=Wg(s);n.set(a,{apiVersion:"storage.k8s.io/v1",kind:"StorageClass",metadata:{name:a,labels:X},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 U$(e,t,r=process.cwd(),o={},n=new Qe({workspace:r})){let i=new Map;for(let s of yn(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:X},data:{[s.configKey]:n.readText(s.source,{expandHome:!0})}})}return[...i.values()]}async function M$(e,t,r,o=process.cwd(),n={},i=new Qe({workspace:o})){let s={...await B$(r.env_file,i),...n};if(Object.keys(s).length===0)return[];return[{apiVersion:"v1",kind:"Secret",metadata:{name:`${t}-env`,namespace:e,labels:X},type:"Opaque",stringData:s}]}function F$(e){let t=Object.entries(e.stringData??{}).sort(([r],[o])=>r.localeCompare(o));return Zg("sha256").update(JSON.stringify(t)).digest("hex")}function j$(e){return{apiVersion:"v1",kind:"Namespace",metadata:{name:e,labels:X}}}function Z$(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 q$(e,t,r){return{apiVersion:"autoscaling/v2",kind:"HorizontalPodAutoscaler",metadata:{name:t,namespace:e,labels:X},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 ke(e){return`${e.kind}:${e.metadata?.namespace??""}:${e.metadata?.name??""}`}async function _n(e,t,r=process.cwd(),o={},n={},i=new Qe({workspace:r})){let s=new Map,a=j$(e);s.set(ke(a),a);for(let[c,u]of Object.entries(t.services??{})){for(let b of V$(u,r,t.volumes,i))s.set(ke(b),b);for(let b of L$(e,u,r,t.volumes,i))s.set(ke(b),b);for(let b of U$(e,u,r,t.volumes,i))s.set(ke(b),b);let l=await M$(e,c,u,r,o[c]??{},i);for(let b of l)s.set(ke(b),b);let f=D$(e,c,u);if(f)s.set(ke(f),f);let d=Gg(u),p=z$(e,c,t,u,r,o[c]??{},t.volumes,n,i,{replicaSpec:d}),m=l[0];if(m)p.spec.template.metadata.annotations={...p.spec?.template.metadata?.annotations,"kuber.astrxl.dev/env-checksum":F$(m)};if(s.set(ke(p),p),d.kind==="range"){Z$(p,u);let b=q$(e,c,d);s.set(ke(b),b)}let h=N$(e,c,u);if(h)s.set(ke(h),h);let y=T$(e,c,bn(u));if(y)s.set(ke(y),y)}return[...s.values()]}var dn,u$,d$,f$;var ec=_(()=>{Fe();za();_r();ot();wr();Lg();dn={requestedStorage:"1Gi",diskTag:["fast"],replicaCount:2,dataLocality:"none"};u$=/^\s*(\d+)\s*-\s*(\d+)\s*$/;d$=/^(\d+)(?:\.(\d+))?$/,f$=/^(?:\d+(?:\.\d+)?|\.\d+)([a-zA-Z]*)$/});import{randomUUID as tc}from"crypto";import{isDeepStrictEqual as ny}from"util";function py(e){return`/workspaces/${encodeURIComponent(e)}/adopt`}function iy(e,t){let r={...e};for(let[o,n]of Object.entries(t))r[o]={...r[o],...n};return r}function H$(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 J$(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 Y$(e,t){return{source:{uri:`cas://${t.digest}`,digest:t.digest},config:{compose:e}}}function X$(e,t){return ny(e.spec?.source,t.source)&&ny(e.spec?.config,t.config)}function sy(e){if(e instanceof xe)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 eA(e,t,r,o=C){let n=`/workspaces/${encodeURIComponent(e)}`,i=Y$(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(X$(l,i))return l;return await s(l)}catch{throw u}},c;try{c=await o(n)}catch(u){if(!(u instanceof xe)||u.status!==404)throw u;try{return await o("/workspaces",{method:"POST",json:{id:e,...i}})}catch(l){if(!sy(l))throw l;return a(l)}}try{return await s(c)}catch(u){if(!sy(u))throw u;return a(u)}}function ay(e){return Object.fromEntries(Object.entries(e).filter(([t,r])=>t!=="operation"&&t!=="operationId"&&r!==null&&typeof r==="object"&&!Array.isArray(r)))}function wn(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 ${ly} ${py(e)} with namespace UID and ownership preconditions.`,{cause:t})}async function Pt(e,t,r,o){try{return await t(r,o)}catch(n){throw wn(e,n)}}function tA(e){if(!e||typeof e!=="object")return;let t=e.operationId;return typeof t==="string"&&t?t:void 0}function rA(e){if(!e||typeof e!=="object")return;let t=e.operation?.status;return t&&typeof t==="object"?t:void 0}function cy(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 xe(n,o?409:500,{title:o?"Operation cancelled":"Operation failed",status:o?409:500,code:i,operationId:e})}function oA(e){if(e instanceof xe)return K$.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 nA(e){return e.state==="failed"&&e.error?.code==="OPERATION_INTERRUPTED"}function iA(e,t){return e.cursorGap===!0||Number.isSafeInteger(e.retainedFirstSequence)&&e.retainedFirstSequence>t+1}function sA(e,t){return t+Math.max(e,0)+G$}function dy(e){return e.reason??new DOMException("The operation was aborted","AbortError")}function kt(e){if(e?.aborted)throw dy(e)}function aA(e,t){return kt(t),new Promise((r,o)=>{let n,i=()=>{if(n!==void 0)clearTimeout(n);t?.removeEventListener("abort",a)},s=()=>{i(),r()},a=()=>{i(),o(dy(t))};if(n=setTimeout(s,e),t?.addEventListener("abort",a,{once:!0}),t?.aborted)a()})}async function rc(e,t,r,o,n,i){let s=i.now??Date.now,a=sA(n,s()),c=new Headers(o.headers);c.set("idempotency-key",tc()),c.set("prefer","respond-async");let u={...o,headers:c,signal:i.signal??o.signal},l,f=Q$,d=!1,p=0;for(;;){if(kt(i.signal),d&&s()>=a)throw Error("Timed out while reconnecting to resume the operation");try{let y;if(l)y=(await Pt(e,t,`/operations/${encodeURIComponent(l)}`,{signal:i.signal})).status;else{d=!1;let b=await Pt(e,t,r,u);l=tA(b),y=rA(b)}if(l)try{let b=await Pt(e,t,`/operations/${encodeURIComponent(l)}/events?after=${p}`,{signal:i.signal});if(iA(b,p))throw new ic;for(let P of b.items??[]){if(!Number.isSafeInteger(P.sequence)||P.sequence<=p)continue;if(p=P.sequence,!J$(P))continue;i.onEvent?.(P)}}catch(b){if(b instanceof ic)throw b;kt(i.signal)}if(!l||!y||y.state==="succeeded")return;if(nA(y)){if(s()>=a)throw cy(l,y);l=void 0,p=0,d=!0,c.set("idempotency-key",tc()),u={...o,headers:c,signal:i.signal??o.signal}}else if(y.state==="failed"||y.state==="cancelled")throw cy(l,y)}catch(y){if(kt(i.signal),y instanceof xe&&y.code==="OPERATION_INTERRUPTED"){if(s()>=a)throw wn(e,y);l=void 0,p=0,d=!0,c.set("idempotency-key",tc()),u={...o,headers:c,signal:i.signal??o.signal}}else{if(!oA(y))throw wn(e,y);if(s()>=a)throw wn(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)kt(i.signal),await i.sleep(h),kt(i.signal);else await aA(h,i.signal);f=Math.min(f*2,W$)}}async function cA(e,t,r=C){let o=`/workspaces/${encodeURIComponent(e)}`;return Pt(e,r,`${o}/resources/plan`,{method:"POST",json:{resources:t}})}function oc(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 uy(e){return`${e.apiVersion}\x00${e.kind}\x00${e.namespace??""}\x00${e.name}`}function uA(e,t){return`${e==="apply"?"Apply":e==="wait"?"Wait for":"Delete"} ${t.kind}/${t.name}`}function nc(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:uA(t,c),task:async(u,l)=>{if(i.set(uy(c),l),n.onTaskStarted?.(c,l),a+=1,a!==r.length)return new Promise((f)=>{let d=()=>{e.signal.removeEventListener("abort",d),s.delete(d),f()};if(s.add(d),e.signal.aborted)d();else e.signal.addEventListener("abort",d,{once:!0})});try{await o((f)=>{let d=f.data.resource,p=i.get(uy(d));if(!p)return;p.output=f.data.state,e.output=H$(f)},e.signal)}finally{for(let f of[...s])f()}}})),{concurrent:!0})}async function vr(e,t=C,r={}){let{project:o,compose:n,cwd:i,config:s,hookContext:a}=D(),c=r.trust??await km(await bt(o,i)),u=t;t=async(d,p={},m)=>{let h=new Headers(p.headers);for(let[y,b]of Object.entries(Am(c)))h.set(y,b);return u(d,{...p,headers:h},m)};let l=`/workspaces/${encodeURIComponent(o)}`;return await new he([{title:"Read compose",task:async(d,p)=>{if(d.compose=await n(),e)await s.preBuild?.(d.compose,await a());p.output=`${Object.keys(d.compose.services??{}).length} services`}},{title:"Snapshot workspace",task:async(d,p)=>{let m;try{m=await ja(i)}catch(h){m=i}d.workspaceRoot=m,d.snapshot=await an(m),p.output=`${d.snapshot.manifest.files.length} files`}},{title:"Build images",rendererOptions:{bottomBar:1/0,persistentOutput:!0},enabled:async()=>e&&Object.values((await n()).services??{}).some((d)=>d.build),task:async(d,p)=>{let m=Object.entries(d.compose.services??{}).filter(([,A])=>A.build).map(([A])=>A),h=new Map,y=new Map,b=new Map(m.map((A)=>[A,new Promise((T)=>y.set(A,T))])),P,E,k,x=()=>(k??=Ag(o,d.compose,i,{progress:(A)=>{if(p.output!==A)p.output=A},service:(A)=>{let T;return{progress:(B)=>{let W=h.get(A);if(W&&W.output!==B)W.output=B},get stream(){let B=h.get(A);if(B)T??=B.stdout();return T}}},settled:(A,T)=>{y.get(A)?.(T),y.delete(A)}},{...s,request:t,snapshot:d.snapshot,workspaceRoot:d.workspaceRoot,signal:p.signal}).then((A)=>{P=A},(A)=>{let T=A instanceof Error?A:Error(String(A));E=T,p.output=T.stack??T.message,p.report(T,ag.HAS_FAILED);for(let B of y.values())B(T);y.clear()}),k);return p.newListr([...m.map((A)=>({title:`Build ${A}`,rendererOptions:{outputBar:10,persistentOutput:!0},exitOnError:!1,task:async(T,B)=>{if(h.set(A,B),B.output="Build queued",h.size===m.length)x();let W=await b.get(A);if(W)throw W;B.output="done"}})),{task:async()=>{if(await Promise.all(b.values()),await k,!P)throw E??Error("Build images failed");d.buildImages=P.images,await s.postBuild?.(P,await a()),p.title=`Built ${P.built.length} image${P.built.length===1?"":"s"}`}}],{concurrent:!0})}},{title:"Resolve images",enabled:async()=>!e&&Object.values((await n()).services??{}).some((d)=>d.build),task:async(d,p)=>{d.buildImages=await cn(o,d.compose,{...s,request:t}),p.output=`${Object.keys(d.buildImages).length} images`}},{title:"Update workspace",task:async(d,p)=>{let m=await eA(o,d.compose,d.snapshot,t),h=await t(py(o),{method:ly,json:{workspaceUid:m.metadata.uid}});p.output=h.resourcesAdopted?`Adopted ${h.resourcesAdopted} existing resources`:"Workspace ready"}},{title:"Reconcile backing services",task:async(d,p)=>{let m={},h={};await p.newListr([{title:"Reconcile databases",enabled:()=>st(d.compose).length>0,task:async(y,b)=>{let P=await Pt(o,t,`${l}/databases`,{method:"POST",json:{compose:d.compose}});m=ay(P),b.output=`${Object.keys(m).length} services`}},{title:"Reconcile S3 storage",enabled:()=>at(d.compose).length>0,task:async(y,b)=>{let P=await Pt(o,t,`${l}/storage`,{method:"POST",json:{compose:d.compose}});h=ay(P),b.output=`${Object.keys(h).length} services`}}],{concurrent:!0}).run(),d.serviceEnv=iy(iy(d.serviceEnv,m),h)}},{title:"Render manifests",task:async(d,p)=>{d.resources=await _n(o,d.compose,i,d.serviceEnv,d.buildImages),await s.postRender?.(d.resources,await a()),p.output=`${d.resources.length} resources`}},{title:"Reconcile resources",task:async(d,p)=>{d.plan=await cA(o,d.resources,t);let m=d.plan,h=m.desired.map(oc).filter((E)=>Boolean(E)),y=m.desired.filter((E)=>E.kind==="Deployment").map(oc).filter((E)=>Boolean(E)),b=m.stale.map(oc).filter((E)=>Boolean(E)),P=`${l}/resources`;return p.newListr([{title:"Apply resources",task:async(E,k)=>nc(k,"apply",h,(x,A)=>rc(o,t,`${P}/apply`,{method:"POST",json:{resources:m.desired}},s.rolloutTimeoutMs,{onEvent:x,signal:A}))},{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(E,k)=>nc(k,"wait",y,(x,A)=>rc(o,t,`${P}/wait`,{method:"POST",json:{deployments:y.map((T)=>T.name),timeoutMs:s.rolloutTimeoutMs}},s.rolloutTimeoutMs,{onEvent:x,signal:A}))},{title:"Delete stale resources",skip:b.length===0,task:async(E,k)=>nc(k,"delete",b,(x,A)=>rc(o,t,`${P}/delete`,{method:"POST",json:{resources:m.stale}},s.rolloutTimeoutMs,{onEvent:x,signal:A}))}])}}],{renderer:"default",rendererOptions:{collapseErrors:!1,collapseSubtasks:!1,lazy:!0}}).run()}var ly="POST",Q$=250,W$=5000,G$=60000,K$,ic,lA;var vn=_(()=>{q();St();G();Za();ec();oe();_r();wr();Fa();Do();K$=new Set(["HTTP_502","HTTP_503","HTTP_504"]);ic=class ic extends Error{constructor(){super("Operation progress history was truncated; refusing to report an incomplete resource stream")}};lA=S({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 vr(e.build)}})});function pA(e){let t=e?.trim();if(!t)throw Error("KUBER_API_KEY or --api-key is required for kuber ci");return t}function dA(e){return(t,r={},o={})=>{let n=new Headers(r.headers);return n.set("authorization",`Bearer ${e}`),C(t,{...r,headers:n},{...o,authenticated:!1})}}async function fA(e,t,r,o=dA(r)){let{project:n,cwd:i}=D(),s=await bt(n,i);if(t)await o(`/workspaces/${encodeURIComponent(n)}/trust`,{method:"POST",json:{fingerprint:s.fingerprint}});await vr(e,o,{trust:t?s:void 0})}var mA;var fy=_(()=>{q();G();oe();Do();vn();mA=S({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 fA(e.build,Boolean(e.trust),pA(e.apiKey??process.env.KUBER_API_KEY))}})});function hA(e,t,r=C){return r(`/workspaces/${encodeURIComponent(e)}/databases/credentials`,{method:"POST",json:{claim:t}})}var gA,yA,bA;var my=_(()=>{q();G();oe();_r();ot();gA=S({meta:{name:"ls",description:"List managed postgres claims"},async run(){let e=st(await D().compose());if(e.length===0){console.log("No managed postgres volumes declared");return}console.log(fe(e.map((t)=>({service:t.service,username:t.username,database:t.database,secret:t.secretName}))))}}),yA=S({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=D(),o=st(await r.compose()).find((s)=>s.service===t);if(!o)throw Error(`Service ${t} does not declare a managed postgres volume.`);let n=await hA(r.project,o),i=Cg(o,n);console.log(fe([{service:o.service,username:n.username,database:o.database,host:Qa,port:Wa,secret:o.secretName}])),console.log(`DATABASE_URL=${i}`)}}),bA=S({meta:{name:"db",description:"Inspect managed postgres databases"},subCommands:{creds:yA,ls:gA}})});function _A(e,t=!1,r=C){return r(`/workspaces/${encodeURIComponent(e)}/down`,{method:"POST",json:{full:t}})}var wA;var hy=_(()=>{q();St();G();oe();wA=S({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}=D();await new he([{title:"Delete resources",task:async(r,o)=>{let n=await _A(t,e.full);o.output=`${n.delete.length} resources queued`}}]).run()}})});async function gy(e,t,r=process.cwd(),o={}){let n=[...st(t).length?["Postgres"]:[],...at(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 cn(e,t,o);return _n(e,t,r,{},i)}var yy=_(()=>{ec();_r();wr();Za()});import{resolve as vA}from"path";var{YAML:xA}=globalThis.Bun;function EA(e){return`${Pg(e).map((t)=>xA.stringify(t,null,2).trimEnd()).join(`
101
101
  ---
102
102
  `)}
103
103
  `}var SA;var by=_(()=>{q();un();oe();yy();SA=S({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}=D(),s=await gy(t,await r(),o,n);await n.postRender?.(s,await i());let a=vA(o,e.output||`${t}.yaml`);await Bun.write(a,EA(s)),console.log(a)}})});function $A(e,t){let r=new URL(`${e}${t}`);return r.protocol=r.protocol==="https:"?"wss:":"ws:",r.toString()}function kA(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 _y(e,t,r,o={}){if(r.aborted)throw r.reason??new DOMException("Aborted","AbortError");let n=o.session??await yt();if(!n)throw Error("Not logged in. Run kuber login first.");let i=`/workspaces/${encodeURIComponent(e)}/exec`,s=(o.socketFactory??AA)($A(o.baseUrl??Ao,i),{authorization:`Bearer ${n.token}`});s.binaryType="arraybuffer",await new Promise((E,k)=>{let x=()=>{W(),s.send(JSON.stringify({type:"start",version:1,...t})),E()},A=(Te)=>{W(),k(Te.error??Error("Exec WebSocket connection failed"))},T=()=>{W(),k(Error("Exec WebSocket closed before opening"))},B=()=>{W(),s.close(1000,"aborted"),k(r.reason??new DOMException("Aborted","AbortError"))},W=()=>{s.removeEventListener("open",x),s.removeEventListener("error",A),s.removeEventListener("close",T),r.removeEventListener("abort",B)};s.addEventListener("open",x),s.addEventListener("error",A),s.addEventListener("close",T),r.addEventListener("abort",B,{once:!0})});let a=[],c=[],u=!1,l,f=!1,d=[],p=(E)=>{if(u)return;u=!0,l=E,s.removeEventListener("message",m),s.removeEventListener("error",h),s.removeEventListener("close",y),r.removeEventListener("abort",b);for(let k of c.splice(0))if(E)k.reject(E);else k.resolve({done:!0,value:void 0})},m=(E)=>{try{if(!f){f=!0;for(let A of d.splice(0))s.send(JSON.stringify(A))}let k=kA(E.data),x=c.shift();if(x)x.resolve({done:!1,value:k});else a.push(k)}catch(k){s.close(1002,"invalid frame"),p(k)}},h=(E)=>p(E.error??Error("Exec WebSocket failed")),y=()=>p(),b=()=>{s.close(1000,"aborted"),p()};s.addEventListener("message",m),s.addEventListener("error",h),s.addEventListener("close",y),r.addEventListener("abort",b,{once:!0});let P=(E)=>{if(u)throw l??Error("Exec session is closed");if(!f){d.push(E);return}s.send(JSON.stringify(E))};return{sendStdin(E,k){P({type:"stdin",data:Buffer.from(E).toString("base64"),encoding:"base64",...k?{eof:!0}:{}})},resize(E,k){P({type:"resize",columns:E,rows:k})},close(){if(!u&&s.readyState===1)P({type:"close"});s.close(1000,"client closed"),p()},[Symbol.asyncIterator](){return{next(){let E=a.shift();if(E)return Promise.resolve({done:!1,value:E});if(l)return Promise.reject(l);if(u)return Promise.resolve({done:!0,value:void 0});return new Promise((k,x)=>c.push({resolve:k,reject:x}))}}}}}var AA=(e,t)=>new WebSocket(e,{headers:t});var wy=_(()=>{Fe();Po()});function vy(){return{columns:process.stdout.columns,rows:process.stdout.rows}}async function PA(e,t,r,o,n=_y,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?vy():{}},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:d}=vy();if(f&&d)a.resize(f,d)};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 CA;var xy=_(()=>{q();oe();wy();CA=S({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 PA(D().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 Ct}from"util";var{inspect:Ey}=globalThis.Bun;function ac(e){let t=Date.now(),r=Sy[sc];sc=(sc+1)%Sy.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":" "}`,d=a.reduce((p,m,h)=>p+m+(typeof c[h]==="string"?c[h]:typeof c[h]<"u"?Ey(c[h],{colors:!1}):""),"");d=d.split(`
@@ -916,4 +916,4 @@ Register-ArgumentCompleter -CommandName '${e}' -ScriptBlock $__${r}CompleterBloc
916
916
  `}var mc=_(()=>{fc()});function Hy(e="cli"){if(process.argv.indexOf("--")===-1){let t=`Error: You need to use -- to separate completion arguments.
917
917
  Example: ${e} complete -- <args>`;console.error(t),process.exit(1)}}var Jy=()=>{};async function jk(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 Yy(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 jk(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])=>Yy(await Promise.resolve(s),n.name)))),n}async function Zk(e){let t=await Yy(e);return JSON.stringify(t,null,2)}function Xy(e){return e.args&&Object.values(e.args).some((t)=>t.type==="positional")}async function eb(e,t,r){for(let[o,n]of Object.entries(e)){let i=await xr(n),s=await xr(i.meta),a=await xr(i.subCommands),c=r?.[o];if(!s||typeof s?.description!="string")throw Error("Invalid meta or missing description.");let u=Xy(i),l=t?`${t} ${o}`:o,f=Re.command(l,s.description);if(u&&i.args)for(let[d,p]of Object.entries(i.args)){let m=p;if(m.type==="positional"){let h=m.required===!1,y=c?.args?.[d];y?f.argument(d,y,h):f.argument(d,void 0,h)}}if(a&&await eb(a,l,c?.subCommands),i.args)for(let[d,p]of Object.entries(i.args)){let m=p,h=typeof m=="object"&&"alias"in m?Array.isArray(m.alias)?m.alias[0]:m.alias:void 0,y=c?.options?.[d];y?h?f.option(d,m.description??"",y,h):f.option(d,m.description??"",y):h?f.option(d,m.description??"",h):f.option(d,m.description??"")}}}async function tb(e,t){let r=await xr(e.meta);if(!r)throw Error("Invalid meta.");let o=r.name;if(!o)throw Error("Invalid meta or missing name.");let n=await xr(e.subCommands);if(Xy(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?Re.argument(s,l,u):Re.argument(s,void 0,u)}}if(n&&await eb(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?Re.option(s,c.description??"",l,u):Re.option(s,c.description??"",l):u?Re.option(s,c.description??"",u):Re.option(s,c.description??"")}let i=S({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=Sn(o,c);console.log(u);break}case"bash":{let u=$n(o,c);console.log(u);break}case"fish":{let u=An(o,c);console.log(u);break}case"powershell":{let u=kn(o,c);console.log(u);break}case"fig":{let u=await Zk(e);console.log(u);break}default:{Hy(o);let u=s.rawArgs.slice(s.rawArgs.indexOf("--")+1);return Re.parse(u)}}}});return n?n.complete=i:e.subCommands={complete:i},Re}async function xr(e){return e instanceof Function?await e():await e}var rb=_(()=>{mc();fc();Jy();q()});q();q();Ms();var Uf=Symbol("wrappedCommand");function Fs(e){if(e instanceof Ad)return zc(e);if(e instanceof Error){let t=e.stack?.split(`
918
918
  `).slice(0,3).join(`
919
- `);return t&&t.trim().length>0?t:e.message}try{return JSON.stringify(e,null,2)}catch{return String(e)}}function Lw(e){console.error(Fs(e)),process.exitCode=1}function tr(e,t=Lw){let r=e;if(r[Uf])return;if(r[Uf]=!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")tr(o,t)}function Q(e){let t;return()=>t??=e().then((r)=>{let o=nb(r);return tr(o),o}).catch((r)=>{throw t=void 0,r})}function nb(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"?nb(n):n]));return t}var Rt=S({meta:{name:"kuber",version:"2.6.1-rc1",description:"Docker Compose -> K8s translation layer"},args:{config:{type:"string",description:"Path to a kuber configuration file"}},subCommands:{audit:Q(()=>Promise.resolve().then(() => (lm(),{})).then((e)=>rv)),ci:Q(()=>Promise.resolve().then(() => (fy(),{})).then((e)=>mA)),db:Q(()=>Promise.resolve().then(() => (my(),{})).then((e)=>bA)),down:Q(()=>Promise.resolve().then(() => (hy(),{})).then((e)=>wA)),export:Q(()=>Promise.resolve().then(() => (by(),{})).then((e)=>SA)),exec:Q(()=>Promise.resolve().then(() => (xy(),{})).then((e)=>CA)),logs:Q(()=>Promise.resolve().then(() => (ky(),{})).then((e)=>OA)),maintenance:Q(()=>Promise.resolve().then(() => (Cy(),{})).then((e)=>UA)),login:Q(()=>Promise.resolve().then(() => (En(),{})).then((e)=>qA)),logout:Q(()=>Promise.resolve().then(() => (En(),{})).then((e)=>QA)),operations:Q(()=>Promise.resolve().then(() => (Ty(),{})).then((e)=>XA)),ps:Q(()=>Promise.resolve().then(() => (By(),{})).then((e)=>ok)),restart:Q(()=>Promise.resolve().then(() => (zy(),{})).then((e)=>ik)),rollback:Q(()=>Promise.resolve().then(() => (Dy(),{})).then((e)=>ak)),s3:Q(()=>Promise.resolve().then(() => (Ly(),{})).then((e)=>mk)),start:Q(()=>Promise.resolve().then(() => (Vy(),{})).then((e)=>hk)),stop:Q(()=>Promise.resolve().then(() => (Uy(),{})).then((e)=>yk)),up:Q(()=>Promise.resolve().then(() => (vn(),{})).then((e)=>lA)),users:Q(()=>Promise.resolve().then(() => (Wy(),{})).then((e)=>Bk)),trust:Q(()=>Promise.resolve().then(() => (Gy(),{})).then((e)=>Lk)),whoami:Q(()=>Promise.resolve().then(() => (En(),{})).then((e)=>WA))}}),ob;function ib(){return ob??=(async()=>{let e=Rt.subCommands;if(e&&typeof e!=="function")Rt.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(() => rb());return tb(Rt)})(),ob}oe();Oo();async function qk(){let{configPath:e,rawArgs:t}=dm(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 ib();tr(Rt);let r=xc(Rt),o=new Set(["login","logout","whoami","maintenance"]);if(t[0]&&o.has(t[0])){await r({rawArgs:t});return}await vm(()=>r({rawArgs:t}),e)}qk().catch((e)=>{console.error(Fs(e)),process.exitCode=1});
919
+ `);return t&&t.trim().length>0?t:e.message}try{return JSON.stringify(e,null,2)}catch{return String(e)}}function Lw(e){console.error(Fs(e)),process.exitCode=1}function tr(e,t=Lw){let r=e;if(r[Uf])return;if(r[Uf]=!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")tr(o,t)}function Q(e){let t;return()=>t??=e().then((r)=>{let o=nb(r);return tr(o),o}).catch((r)=>{throw t=void 0,r})}function nb(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"?nb(n):n]));return t}var Rt=S({meta:{name:"kuber",version:"2.6.1-rc2",description:"Docker Compose -> K8s translation layer"},args:{config:{type:"string",description:"Path to a kuber configuration file"}},subCommands:{audit:Q(()=>Promise.resolve().then(() => (lm(),{})).then((e)=>rv)),ci:Q(()=>Promise.resolve().then(() => (fy(),{})).then((e)=>mA)),db:Q(()=>Promise.resolve().then(() => (my(),{})).then((e)=>bA)),down:Q(()=>Promise.resolve().then(() => (hy(),{})).then((e)=>wA)),export:Q(()=>Promise.resolve().then(() => (by(),{})).then((e)=>SA)),exec:Q(()=>Promise.resolve().then(() => (xy(),{})).then((e)=>CA)),logs:Q(()=>Promise.resolve().then(() => (ky(),{})).then((e)=>OA)),maintenance:Q(()=>Promise.resolve().then(() => (Cy(),{})).then((e)=>UA)),login:Q(()=>Promise.resolve().then(() => (En(),{})).then((e)=>qA)),logout:Q(()=>Promise.resolve().then(() => (En(),{})).then((e)=>QA)),operations:Q(()=>Promise.resolve().then(() => (Ty(),{})).then((e)=>XA)),ps:Q(()=>Promise.resolve().then(() => (By(),{})).then((e)=>ok)),restart:Q(()=>Promise.resolve().then(() => (zy(),{})).then((e)=>ik)),rollback:Q(()=>Promise.resolve().then(() => (Dy(),{})).then((e)=>ak)),s3:Q(()=>Promise.resolve().then(() => (Ly(),{})).then((e)=>mk)),start:Q(()=>Promise.resolve().then(() => (Vy(),{})).then((e)=>hk)),stop:Q(()=>Promise.resolve().then(() => (Uy(),{})).then((e)=>yk)),up:Q(()=>Promise.resolve().then(() => (vn(),{})).then((e)=>lA)),users:Q(()=>Promise.resolve().then(() => (Wy(),{})).then((e)=>Bk)),trust:Q(()=>Promise.resolve().then(() => (Gy(),{})).then((e)=>Lk)),whoami:Q(()=>Promise.resolve().then(() => (En(),{})).then((e)=>WA))}}),ob;function ib(){return ob??=(async()=>{let e=Rt.subCommands;if(e&&typeof e!=="function")Rt.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(() => rb());return tb(Rt)})(),ob}oe();Oo();async function qk(){let{configPath:e,rawArgs:t}=dm(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 ib();tr(Rt);let r=xc(Rt),o=new Set(["login","logout","whoami","maintenance"]);if(t[0]&&o.has(t[0])){await r({rawArgs:t});return}await vm(()=>r({rawArgs:t}),e)}qk().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.6.1-rc1",
3
+ "version": "2.6.1-rc2",
4
4
  "description": "Docker Compose to Kubernetes translation layer",
5
5
  "bin": {
6
6
  "kuber": "dist/index.js"