@zonease/aiworker-cli 0.4.7 → 0.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -4
- package/aiworker-bun.js +498 -0
- package/aiworker.js +48 -478
- package/package.json +2 -1
- package/web/fleet/assets/index-Ba3f2IoY.js +20 -0
- package/web/fleet/index.html +1 -1
- package/web/worker/assets/index-y8aomiPl.js +30 -0
- package/web/worker/index.html +3 -3
- package/web/fleet/assets/index-CG6-NnyZ.js +0 -20
- package/web/worker/assets/index-e7kVxdqq.js +0 -30
package/aiworker.js
CHANGED
|
@@ -1,491 +1,61 @@
|
|
|
1
|
-
#!/usr/bin/env
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
`;return this.filterAndJoin([l$(D.type),l$(D.tag),F])}log(D,$){let F=this.formatLogObj(D,{columns:$.options.stdout.columns||0,...$.options.formatOptions});return uq(F+`
|
|
17
|
-
`,D.level<2?$.options.stderr||process.stderr:$.options.stdout||process.stdout)}}var l$=(D)=>D?`[${D}]`:"";var kB=()=>{};import*as Q7 from"tty";function yB(D,$,F,X,J=$.slice(0,Math.max(0,D))+X,G=$.slice(Math.max(0,D+F.length)),Y=G.indexOf(F)){return J+(Y<0?G:yB(Y,G,F,X))}function sq(D,$,F,X,J){return D<0?F+$+X:F+yB(D,$,X,J)+X}function rq(D,$,F=D,X=D.length+1){return(J)=>J||!(J===""||J===void 0)?sq((""+J).indexOf($,X),J,D,$,F):""}function XD(D,$,F){return rq(`\x1B[${D}m`,`\x1B[${$}m`,F)}function oq(D=nq){return D?vB:Object.fromEntries(Object.keys(vB).map(($)=>[$,String]))}function aq(D,$="reset"){return C0[D]||C0[$]}function H8(D){return D.replace(new RegExp(tq,"g"),"")}function uB(D,$={}){let F={...$,style:{...eq,...$.style}},X=D.split(`
|
|
18
|
-
`),J=[],G=aq(F.style.borderColor),Y={...typeof F.style.borderStyle==="string"?hB[F.style.borderStyle]||hB.solid:F.style.borderStyle};if(G)for(let A in Y)Y[A]=G(Y[A]);let B=F.style.padding%2===0?F.style.padding:F.style.padding+1,H=X.length+B,W=Math.max(...X.map((A)=>H8(A).length),F.title?H8(F.title).length:0)+B,Q=W+B,U=F.style.marginLeft>0?" ".repeat(F.style.marginLeft):"";if(F.style.marginTop>0)J.push("".repeat(F.style.marginTop));if(F.title){let A=G?G(F.title):F.title,C=Y.h.repeat(Math.floor((W-H8(F.title).length)/2)),O=Y.h.repeat(W-H8(F.title).length-H8(C).length+B);J.push(`${U}${Y.tl}${C}${A}${O}${Y.tr}`)}else J.push(`${U}${Y.tl}${Y.h.repeat(Q)}${Y.tr}`);let _=F.style.valign==="center"?Math.floor((H-X.length)/2):F.style.valign==="top"?H-X.length-B:H-X.length;for(let A=0;A<H;A++)if(A<_||A>=_+X.length)J.push(`${U}${Y.v}${" ".repeat(Q)}${Y.v}`);else{let C=X[A-_],O=" ".repeat(B),K=" ".repeat(W-H8(C).length);J.push(`${U}${Y.v}${O}${C}${K}${Y.v}`)}if(J.push(`${U}${Y.bl}${Y.h.repeat(Q)}${Y.br}`),F.style.marginBottom>0)J.push("".repeat(F.style.marginBottom));return J.join(`
|
|
19
|
-
`)}var W8,xB,mq,pq,cq,dq,gB,lq,iq,nq,vB,C0,tq,hB,eq;var mB=Z(()=>{({env:W8={},argv:xB=[],platform:mq=""}=typeof process>"u"?{}:process),pq="NO_COLOR"in W8||xB.includes("--no-color"),cq="FORCE_COLOR"in W8||xB.includes("--color"),dq=mq==="win32",gB=W8.TERM==="dumb",lq=Q7&&Q7.isatty&&Q7.isatty(1)&&W8.TERM&&!gB,iq="CI"in W8&&(("GITHUB_ACTIONS"in W8)||("GITLAB_CI"in W8)||("CIRCLECI"in W8)),nq=!pq&&(cq||dq&&!gB||lq||iq);vB={reset:XD(0,0),bold:XD(1,22,"\x1B[22m\x1B[1m"),dim:XD(2,22,"\x1B[22m\x1B[2m"),italic:XD(3,23),underline:XD(4,24),inverse:XD(7,27),hidden:XD(8,28),strikethrough:XD(9,29),black:XD(30,39),red:XD(31,39),green:XD(32,39),yellow:XD(33,39),blue:XD(34,39),magenta:XD(35,39),cyan:XD(36,39),white:XD(37,39),gray:XD(90,39),bgBlack:XD(40,49),bgRed:XD(41,49),bgGreen:XD(42,49),bgYellow:XD(43,49),bgBlue:XD(44,49),bgMagenta:XD(45,49),bgCyan:XD(46,49),bgWhite:XD(47,49),blackBright:XD(90,39),redBright:XD(91,39),greenBright:XD(92,39),yellowBright:XD(93,39),blueBright:XD(94,39),magentaBright:XD(95,39),cyanBright:XD(96,39),whiteBright:XD(97,39),bgBlackBright:XD(100,49),bgRedBright:XD(101,49),bgGreenBright:XD(102,49),bgYellowBright:XD(103,49),bgBlueBright:XD(104,49),bgMagentaBright:XD(105,49),bgCyanBright:XD(106,49),bgWhiteBright:XD(107,49)};C0=oq();tq=[String.raw`[\u001B\u009B][[\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\d\/#&.:=?%@~_]+)*|[a-zA-Z\d]+(?:;[-a-zA-Z\d\/#&.:=?%@~_]*)*)?\u0007)`,String.raw`(?:(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PR-TZcf-nq-uy=><~]))`].join("|");hB={solid:{tl:"\u250C",tr:"\u2510",bl:"\u2514",br:"\u2518",h:"\u2500",v:"\u2502"},double:{tl:"\u2554",tr:"\u2557",bl:"\u255A",br:"\u255D",h:"\u2550",v:"\u2551"},doubleSingle:{tl:"\u2553",tr:"\u2556",bl:"\u2559",br:"\u255C",h:"\u2500",v:"\u2551"},doubleSingleRounded:{tl:"\u256D",tr:"\u256E",bl:"\u2570",br:"\u256F",h:"\u2500",v:"\u2551"},singleThick:{tl:"\u250F",tr:"\u2513",bl:"\u2517",br:"\u251B",h:"\u2501",v:"\u2503"},singleDouble:{tl:"\u2552",tr:"\u2555",bl:"\u2558",br:"\u255B",h:"\u2550",v:"\u2502"},singleDoubleRounded:{tl:"\u256D",tr:"\u256E",bl:"\u2570",br:"\u256F",h:"\u2550",v:"\u2502"},rounded:{tl:"\u256D",tr:"\u256E",bl:"\u2570",br:"\u256F",h:"\u2500",v:"\u2502"}},eq={borderColor:"white",borderStyle:"rounded",valign:"center",padding:2,marginLeft:1,marginTop:1,marginBottom:1}});var UH={};d8(UH,{prompt:()=>QH,kCancel:()=>VH});import e0,{stdin as DN,stdout as $N}from"process";import pB from"readline";import{WriteStream as FN}from"tty";function XN(D){return D&&D.__esModule&&Object.prototype.hasOwnProperty.call(D,"default")?D.default:D}function JN(){if(cB)return n$;cB=1;let D="\x1B",$=`${D}[`,F="\x07",X={to(Y,B){if(!B)return`${$}${Y+1}G`;return`${$}${B+1};${Y+1}H`},move(Y,B){let H="";if(Y<0)H+=`${$}${-Y}D`;else if(Y>0)H+=`${$}${Y}C`;if(B<0)H+=`${$}${-B}A`;else if(B>0)H+=`${$}${B}B`;return H},up:(Y=1)=>`${$}${Y}A`,down:(Y=1)=>`${$}${Y}B`,forward:(Y=1)=>`${$}${Y}C`,backward:(Y=1)=>`${$}${Y}D`,nextLine:(Y=1)=>`${$}E`.repeat(Y),prevLine:(Y=1)=>`${$}F`.repeat(Y),left:`${$}G`,hide:`${$}?25l`,show:`${$}?25h`,save:`${D}7`,restore:`${D}8`},J={up:(Y=1)=>`${$}S`.repeat(Y),down:(Y=1)=>`${$}T`.repeat(Y)},G={screen:`${$}2J`,up:(Y=1)=>`${$}1J`.repeat(Y),down:(Y=1)=>`${$}J`.repeat(Y),line:`${$}2K`,lineEnd:`${$}K`,lineStart:`${$}1K`,lines(Y){let B="";for(let H=0;H<Y;H++)B+=this.line+(H<Y-1?X.up():"");if(Y)B+=X.left;return B}};return n$={cursor:X,scroll:J,erase:G,beep:F},n$}function YN(){if(dB)return U7.exports;dB=1;let D=process||{},$=D.argv||[],F=D.env||{},X=!(!!F.NO_COLOR||$.includes("--no-color"))&&(!!F.FORCE_COLOR||$.includes("--color")||D.platform==="win32"||(D.stdout||{}).isTTY&&F.TERM!=="dumb"||!!F.CI),J=(B,H,W=B)=>(Q)=>{let U=""+Q,_=U.indexOf(H,B.length);return~_?B+G(U,H,W,_)+H:B+U+H},G=(B,H,W,Q)=>{let U="",_=0;do U+=B.substring(_,Q)+W,_=Q+H.length,Q=B.indexOf(H,_);while(~Q);return U+B.substring(_)},Y=(B=X)=>{let H=B?J:()=>String;return{isColorSupported:B,reset:H("\x1B[0m","\x1B[0m"),bold:H("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:H("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:H("\x1B[3m","\x1B[23m"),underline:H("\x1B[4m","\x1B[24m"),inverse:H("\x1B[7m","\x1B[27m"),hidden:H("\x1B[8m","\x1B[28m"),strikethrough:H("\x1B[9m","\x1B[29m"),black:H("\x1B[30m","\x1B[39m"),red:H("\x1B[31m","\x1B[39m"),green:H("\x1B[32m","\x1B[39m"),yellow:H("\x1B[33m","\x1B[39m"),blue:H("\x1B[34m","\x1B[39m"),magenta:H("\x1B[35m","\x1B[39m"),cyan:H("\x1B[36m","\x1B[39m"),white:H("\x1B[37m","\x1B[39m"),gray:H("\x1B[90m","\x1B[39m"),bgBlack:H("\x1B[40m","\x1B[49m"),bgRed:H("\x1B[41m","\x1B[49m"),bgGreen:H("\x1B[42m","\x1B[49m"),bgYellow:H("\x1B[43m","\x1B[49m"),bgBlue:H("\x1B[44m","\x1B[49m"),bgMagenta:H("\x1B[45m","\x1B[49m"),bgCyan:H("\x1B[46m","\x1B[49m"),bgWhite:H("\x1B[47m","\x1B[49m"),blackBright:H("\x1B[90m","\x1B[39m"),redBright:H("\x1B[91m","\x1B[39m"),greenBright:H("\x1B[92m","\x1B[39m"),yellowBright:H("\x1B[93m","\x1B[39m"),blueBright:H("\x1B[94m","\x1B[39m"),magentaBright:H("\x1B[95m","\x1B[39m"),cyanBright:H("\x1B[96m","\x1B[39m"),whiteBright:H("\x1B[97m","\x1B[39m"),bgBlackBright:H("\x1B[100m","\x1B[49m"),bgRedBright:H("\x1B[101m","\x1B[49m"),bgGreenBright:H("\x1B[102m","\x1B[49m"),bgYellowBright:H("\x1B[103m","\x1B[49m"),bgBlueBright:H("\x1B[104m","\x1B[49m"),bgMagentaBright:H("\x1B[105m","\x1B[49m"),bgCyanBright:H("\x1B[106m","\x1B[49m"),bgWhiteBright:H("\x1B[107m","\x1B[49m")}};return U7.exports=Y(),U7.exports.createColors=Y,U7.exports}function BN({onlyFirst:D=!1}={}){let $=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp($,D?void 0:"g")}function $H(D){if(typeof D!="string")throw TypeError(`Expected a \`string\`, got \`${typeof D}\``);return D.replace(HN,"")}function FH(D){return D&&D.__esModule&&Object.prototype.hasOwnProperty.call(D,"default")?D.default:D}function G3(D,$={}){if(typeof D!="string"||D.length===0||($={ambiguousIsNarrow:!0,...$},D=$H(D),D.length===0))return 0;D=D.replace(UN()," ");let F=$.ambiguousIsNarrow?1:2,X=0;for(let J of D){let G=J.codePointAt(0);if(G<=31||G>=127&&G<=159||G>=768&&G<=879)continue;switch(VN.eastAsianWidth(J)){case"F":case"W":X+=2;break;case"A":X+=F;break;default:X+=1}}return X}function KN(){let D=new Map;for(let[$,F]of Object.entries(jD)){for(let[X,J]of Object.entries(F))jD[X]={open:`\x1B[${J[0]}m`,close:`\x1B[${J[1]}m`},F[X]=jD[X],D.set(J[0],J[1]);Object.defineProperty(jD,$,{value:F,enumerable:!1})}return Object.defineProperty(jD,"codes",{value:D,enumerable:!1}),jD.color.close="\x1B[39m",jD.bgColor.close="\x1B[49m",jD.color.ansi=lB(),jD.color.ansi256=iB(),jD.color.ansi16m=nB(),jD.bgColor.ansi=lB(s$),jD.bgColor.ansi256=iB(s$),jD.bgColor.ansi16m=nB(s$),Object.defineProperties(jD,{rgbToAnsi256:{value:($,F,X)=>$===F&&F===X?$<8?16:$>248?231:Math.round(($-8)/247*24)+232:16+36*Math.round($/255*5)+6*Math.round(F/255*5)+Math.round(X/255*5),enumerable:!1},hexToRgb:{value:($)=>{let F=/[a-f\d]{6}|[a-f\d]{3}/i.exec($.toString(16));if(!F)return[0,0,0];let[X]=F;X.length===3&&(X=[...X].map((G)=>G+G).join(""));let J=Number.parseInt(X,16);return[J>>16&255,J>>8&255,J&255]},enumerable:!1},hexToAnsi256:{value:($)=>jD.rgbToAnsi256(...jD.hexToRgb($)),enumerable:!1},ansi256ToAnsi:{value:($)=>{if($<8)return 30+$;if($<16)return 90+($-8);let F,X,J;if($>=232)F=(($-232)*10+8)/255,X=F,J=F;else{$-=16;let B=$%36;F=Math.floor($/36)/5,X=Math.floor(B/6)/5,J=B%6/5}let G=Math.max(F,X,J)*2;if(G===0)return 30;let Y=30+(Math.round(J)<<2|Math.round(X)<<1|Math.round(F));return G===2&&(Y+=60),Y},enumerable:!1},rgbToAnsi:{value:($,F,X)=>jD.ansi256ToAnsi(jD.rgbToAnsi256($,F,X)),enumerable:!1},hexToAnsi:{value:($)=>jD.ansi256ToAnsi(jD.hexToAnsi256($)),enumerable:!1}}),jD}function oB(D,$,F){return String(D).normalize().replace(/\r\n/g,`
|
|
20
|
-
`).split(`
|
|
21
|
-
`).map((X)=>ZN(X,$,F)).join(`
|
|
22
|
-
`)}function GH(D,$){if(typeof D=="string")return A7.aliases.get(D)===$;for(let F of D)if(F!==void 0&&GH(F,$))return!0;return!1}function NN(D,$){if(D===$)return;let F=D.split(`
|
|
23
|
-
`),X=$.split(`
|
|
24
|
-
`),J=[];for(let G=0;G<Math.max(F.length,X.length);G++)F[G]!==X[G]&&J.push(G);return J}function _7(D,$){let F=D;F.isTTY&&F.setRawMode($)}class B3{constructor(D,$=!0){I0(this,"input"),I0(this,"output"),I0(this,"_abortSignal"),I0(this,"rl"),I0(this,"opts"),I0(this,"_render"),I0(this,"_track",!1),I0(this,"_prevFrame",""),I0(this,"_subscribers",new Map),I0(this,"_cursor",0),I0(this,"state","initial"),I0(this,"error",""),I0(this,"value");let{input:F=DN,output:X=$N,render:J,signal:G,...Y}=D;this.opts=Y,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=J.bind(this),this._track=$,this._abortSignal=G,this.input=F,this.output=X}unsubscribe(){this._subscribers.clear()}setSubscriber(D,$){let F=this._subscribers.get(D)??[];F.push($),this._subscribers.set(D,F)}on(D,$){this.setSubscriber(D,{cb:$})}once(D,$){this.setSubscriber(D,{cb:$,once:!0})}emit(D,...$){let F=this._subscribers.get(D)??[],X=[];for(let J of F)J.cb(...$),J.once&&X.push(()=>F.splice(F.indexOf(J),1));for(let J of X)J()}prompt(){return new Promise((D,$)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),D(aB);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}let F=new FN(0);F._write=(X,J,G)=>{this._track&&(this.value=this.rl?.line.replace(/\t/g,""),this._cursor=this.rl?.cursor??0,this.emit("value",this.value)),G()},this.input.pipe(F),this.rl=pB.createInterface({input:this.input,output:F,tabSize:2,prompt:"",escapeCodeTimeout:50}),pB.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),_7(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(D2.cursor.show),this.output.off("resize",this.render),_7(this.input,!1),D(this.value)}),this.once("cancel",()=>{this.output.write(D2.cursor.show),this.output.off("resize",this.render),_7(this.input,!1),D(aB)})})}onKeypress(D,$){if(this.state==="error"&&(this.state="active"),$?.name&&(!this._track&&A7.aliases.has($.name)&&this.emit("cursor",A7.aliases.get($.name)),A7.actions.has($.name)&&this.emit("cursor",$.name)),D&&(D.toLowerCase()==="y"||D.toLowerCase()==="n")&&this.emit("confirm",D.toLowerCase()==="y"),D==="\t"&&this.opts.placeholder&&(this.value||(this.rl?.write(this.opts.placeholder),this.emit("value",this.opts.placeholder))),D&&this.emit("key",D.toLowerCase()),$?.name==="return"){if(this.opts.validate){let F=this.opts.validate(this.value);F&&(this.error=F instanceof Error?F.message:F,this.state="error",this.rl?.write(this.value))}this.state!=="error"&&(this.state="submit")}GH([D,$?.name,$?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
|
|
25
|
-
`),_7(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let D=oB(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
|
|
26
|
-
`).length-1;this.output.write(D2.cursor.move(-999,D*-1))}render(){let D=oB(this._render(this)??"",process.stdout.columns,{hard:!0});if(D!==this._prevFrame){if(this.state==="initial")this.output.write(D2.cursor.hide);else{let $=NN(this._prevFrame,D);if(this.restoreCursor(),$&&$?.length===1){let F=$[0];this.output.write(D2.cursor.move(0,F)),this.output.write(D2.erase.lines(1));let X=D.split(`
|
|
27
|
-
`);this.output.write(X[F]),this._prevFrame=D,this.output.write(D2.cursor.move(0,X.length-F-1));return}if($&&$?.length>1){let F=$[0];this.output.write(D2.cursor.move(0,F)),this.output.write(D2.erase.down());let X=D.split(`
|
|
28
|
-
`).slice(F);this.output.write(X.join(`
|
|
29
|
-
`)),this._prevFrame=D;return}this.output.write(D2.erase.down())}this.output.write(D),this.state==="initial"&&(this.state="active"),this._prevFrame=D}}}function SN(){return e0.platform!=="win32"?e0.env.TERM!=="linux":!!e0.env.CI||!!e0.env.WT_SESSION||!!e0.env.TERMINUS_SUBLIME||e0.env.ConEmuTask==="{cmd::Cmder}"||e0.env.TERM_PROGRAM==="Terminus-Sublime"||e0.env.TERM_PROGRAM==="vscode"||e0.env.TERM==="xterm-256color"||e0.env.TERM==="alacritty"||e0.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}async function QH(D,$={}){let F=(X)=>{if(typeof X!=="symbol"||X.toString()!=="Symbol(clack:cancel)")return X;switch($.cancel){case"reject":{let J=Error("Prompt cancelled.");if(J.name="ConsolaPromptCancelledError",Error.captureStackTrace)Error.captureStackTrace(J,QH);throw J}case"undefined":return;case"null":return null;case"symbol":return VH;default:case"default":return $.default??$.initial}};if(!$.type||$.type==="text")return await yN({message:D,defaultValue:$.default,placeholder:$.placeholder,initialValue:$.initial}).then(F);if($.type==="confirm")return await uN({message:D,initialValue:$.initial}).then(F);if($.type==="select")return await mN({message:D,options:$.options.map((X)=>typeof X==="string"?{value:X,label:X}:X),initialValue:$.initial}).then(F);if($.type==="multiselect")return await pN({message:D,options:$.options.map((X)=>typeof X==="string"?{value:X,label:X}:X),required:$.required,initialValues:$.initial}).then(F);throw Error(`Unknown prompt type: ${$.type}`)}var n$,cB,D2,U7,dB,GN,k,HN,XH,WN,VN,QN=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},UN,s$=10,lB=(D=0)=>($)=>`\x1B[${$+D}m`,iB=(D=0)=>($)=>`\x1B[${38+D};5;${$}m`,nB=(D=0)=>($,F,X)=>`\x1B[${38+D};2;${$};${F};${X}m`,jD,_N,AN,ON,K7,CN=39,e$="\x07",JH="[",RN="]",YH="m",DF,sB=(D)=>`${K7.values().next().value}${JH}${D}${YH}`,rB=(D)=>`${K7.values().next().value}${DF}${D}${e$}`,EN=(D)=>D.split(" ").map(($)=>G3($)),r$=(D,$,F)=>{let X=[...$],J=!1,G=!1,Y=G3($H(D[D.length-1]));for(let[B,H]of X.entries()){let W=G3(H);if(Y+W<=F?D[D.length-1]+=H:(D.push(H),Y=0),K7.has(H)&&(J=!0,G=X.slice(B+1).join("").startsWith(DF)),J){G?H===e$&&(J=!1,G=!1):H===YH&&(J=!1);continue}Y+=W,Y===F&&B<X.length-1&&(D.push(""),Y=0)}!Y&&D[D.length-1].length>0&&D.length>1&&(D[D.length-2]+=D.pop())},MN=(D)=>{let $=D.split(" "),F=$.length;for(;F>0&&!(G3($[F-1])>0);)F--;return F===$.length?D:$.slice(0,F).join(" ")+$.slice(F).join("")},ZN=(D,$,F={})=>{if(F.trim!==!1&&D.trim()==="")return"";let X="",J,G,Y=EN(D),B=[""];for(let[W,Q]of D.split(" ").entries()){F.trim!==!1&&(B[B.length-1]=B[B.length-1].trimStart());let U=G3(B[B.length-1]);if(W!==0&&(U>=$&&(F.wordWrap===!1||F.trim===!1)&&(B.push(""),U=0),(U>0||F.trim===!1)&&(B[B.length-1]+=" ",U++)),F.hard&&Y[W]>$){let _=$-U,A=1+Math.floor((Y[W]-_-1)/$);Math.floor((Y[W]-1)/$)<A&&B.push(""),r$(B,Q,$);continue}if(U+Y[W]>$&&U>0&&Y[W]>0){if(F.wordWrap===!1&&U<$){r$(B,Q,$);continue}B.push("")}if(U+Y[W]>$&&F.wordWrap===!1){r$(B,Q,$);continue}B[B.length-1]+=Q}F.trim!==!1&&(B=B.map((W)=>MN(W)));let H=[...B.join(`
|
|
30
|
-
`)];for(let[W,Q]of H.entries()){if(X+=Q,K7.has(Q)){let{groups:_}=new RegExp(`(?:\\${JH}(?<code>\\d+)m|\\${DF}(?<uri>.*)${e$})`).exec(H.slice(W).join(""))||{groups:{}};if(_.code!==void 0){let A=Number.parseFloat(_.code);J=A===CN?void 0:A}else _.uri!==void 0&&(G=_.uri.length===0?void 0:_.uri)}let U=ON.codes.get(Number(J));H[W+1]===`
|
|
31
|
-
`?(G&&(X+=rB("")),J&&U&&(X+=sB(U))):Q===`
|
|
32
|
-
`&&(J&&U&&(X+=sB(J)),G&&(X+=rB(G)))}return X},qN,A7,aB,PN,LN=(D,$,F)=>($ in D)?PN(D,$,{enumerable:!0,configurable:!0,writable:!0,value:F}):D[$]=F,I0=(D,$,F)=>(LN(D,typeof $!="symbol"?$+"":$,F),F),BH,jN,zN=(D,$,F)=>($ in D)?jN(D,$,{enumerable:!0,configurable:!0,writable:!0,value:F}):D[$]=F,tB=(D,$,F)=>(zN(D,typeof $!="symbol"?$+"":$,F),F),IN,TN,wN=(D,$,F)=>($ in D)?TN(D,$,{enumerable:!0,configurable:!0,writable:!0,value:F}):D[$]=F,eB=(D,$,F)=>(wN(D,typeof $!="symbol"?$+"":$,F),F),HH,WH,bN,$2=(D,$)=>bN?D:$,fN,kN,vN,hN,qD,u1,o$,a$,xN,DH,gN,O7=(D)=>{switch(D){case"initial":case"active":return k.cyan(fN);case"cancel":return k.red(kN);case"error":return k.yellow(vN);case"submit":return k.green(hN)}},t$=(D)=>{let{cursor:$,options:F,style:X}=D,J=D.maxItems??Number.POSITIVE_INFINITY,G=Math.max(process.stdout.rows-4,0),Y=Math.min(G,Math.max(J,5)),B=0;$>=B+Y-3?B=Math.max(Math.min($-Y+3,F.length-Y),0):$<B+2&&(B=Math.max($-2,0));let H=Y<F.length&&B>0,W=Y<F.length&&B+Y<F.length;return F.slice(B,B+Y).map((Q,U,_)=>{let A=U===0&&H,C=U===_.length-1&&W;return A||C?k.dim("..."):X(Q,U+B===$)})},yN=(D)=>new WH({validate:D.validate,placeholder:D.placeholder,defaultValue:D.defaultValue,initialValue:D.initialValue,render(){let $=`${k.gray(qD)}
|
|
33
|
-
${O7(this.state)} ${D.message}
|
|
34
|
-
`,F=D.placeholder?k.inverse(D.placeholder[0])+k.dim(D.placeholder.slice(1)):k.inverse(k.hidden("_")),X=this.value?this.valueWithCursor:F;switch(this.state){case"error":return`${$.trim()}
|
|
35
|
-
${k.yellow(qD)} ${X}
|
|
36
|
-
${k.yellow(u1)} ${k.yellow(this.error)}
|
|
37
|
-
`;case"submit":return`${$}${k.gray(qD)} ${k.dim(this.value||D.placeholder)}`;case"cancel":return`${$}${k.gray(qD)} ${k.strikethrough(k.dim(this.value??""))}${this.value?.trim()?`
|
|
38
|
-
${k.gray(qD)}`:""}`;default:return`${$}${k.cyan(qD)} ${X}
|
|
39
|
-
${k.cyan(u1)}
|
|
40
|
-
`}}}).prompt(),uN=(D)=>{let $=D.active??"Yes",F=D.inactive??"No";return new BH({active:$,inactive:F,initialValue:D.initialValue??!0,render(){let X=`${k.gray(qD)}
|
|
41
|
-
${O7(this.state)} ${D.message}
|
|
42
|
-
`,J=this.value?$:F;switch(this.state){case"submit":return`${X}${k.gray(qD)} ${k.dim(J)}`;case"cancel":return`${X}${k.gray(qD)} ${k.strikethrough(k.dim(J))}
|
|
43
|
-
${k.gray(qD)}`;default:return`${X}${k.cyan(qD)} ${this.value?`${k.green(o$)} ${$}`:`${k.dim(a$)} ${k.dim($)}`} ${k.dim("/")} ${this.value?`${k.dim(a$)} ${k.dim(F)}`:`${k.green(o$)} ${F}`}
|
|
44
|
-
${k.cyan(u1)}
|
|
45
|
-
`}}}).prompt()},mN=(D)=>{let $=(F,X)=>{let J=F.label??String(F.value);switch(X){case"selected":return`${k.dim(J)}`;case"active":return`${k.green(o$)} ${J} ${F.hint?k.dim(`(${F.hint})`):""}`;case"cancelled":return`${k.strikethrough(k.dim(J))}`;default:return`${k.dim(a$)} ${k.dim(J)}`}};return new HH({options:D.options,initialValue:D.initialValue,render(){let F=`${k.gray(qD)}
|
|
46
|
-
${O7(this.state)} ${D.message}
|
|
47
|
-
`;switch(this.state){case"submit":return`${F}${k.gray(qD)} ${$(this.options[this.cursor],"selected")}`;case"cancel":return`${F}${k.gray(qD)} ${$(this.options[this.cursor],"cancelled")}
|
|
48
|
-
${k.gray(qD)}`;default:return`${F}${k.cyan(qD)} ${t$({cursor:this.cursor,options:this.options,maxItems:D.maxItems,style:(X,J)=>$(X,J?"active":"inactive")}).join(`
|
|
49
|
-
${k.cyan(qD)} `)}
|
|
50
|
-
${k.cyan(u1)}
|
|
51
|
-
`}}}).prompt()},pN=(D)=>{let $=(F,X)=>{let J=F.label??String(F.value);return X==="active"?`${k.cyan(xN)} ${J} ${F.hint?k.dim(`(${F.hint})`):""}`:X==="selected"?`${k.green(DH)} ${k.dim(J)}`:X==="cancelled"?`${k.strikethrough(k.dim(J))}`:X==="active-selected"?`${k.green(DH)} ${J} ${F.hint?k.dim(`(${F.hint})`):""}`:X==="submitted"?`${k.dim(J)}`:`${k.dim(gN)} ${k.dim(J)}`};return new IN({options:D.options,initialValues:D.initialValues,required:D.required??!0,cursorAt:D.cursorAt,validate(F){if(this.required&&F.length===0)return`Please select at least one option.
|
|
52
|
-
${k.reset(k.dim(`Press ${k.gray(k.bgWhite(k.inverse(" space ")))} to select, ${k.gray(k.bgWhite(k.inverse(" enter ")))} to submit`))}`},render(){let F=`${k.gray(qD)}
|
|
53
|
-
${O7(this.state)} ${D.message}
|
|
54
|
-
`,X=(J,G)=>{let Y=this.value.includes(J.value);return G&&Y?$(J,"active-selected"):Y?$(J,"selected"):$(J,G?"active":"inactive")};switch(this.state){case"submit":return`${F}${k.gray(qD)} ${this.options.filter(({value:J})=>this.value.includes(J)).map((J)=>$(J,"submitted")).join(k.dim(", "))||k.dim("none")}`;case"cancel":{let J=this.options.filter(({value:G})=>this.value.includes(G)).map((G)=>$(G,"cancelled")).join(k.dim(", "));return`${F}${k.gray(qD)} ${J.trim()?`${J}
|
|
55
|
-
${k.gray(qD)}`:""}`}case"error":{let J=this.error.split(`
|
|
56
|
-
`).map((G,Y)=>Y===0?`${k.yellow(u1)} ${k.yellow(G)}`:` ${G}`).join(`
|
|
57
|
-
`);return`${F+k.yellow(qD)} ${t$({options:this.options,cursor:this.cursor,maxItems:D.maxItems,style:X}).join(`
|
|
58
|
-
${k.yellow(qD)} `)}
|
|
59
|
-
${J}
|
|
60
|
-
`}default:return`${F}${k.cyan(qD)} ${t$({options:this.options,cursor:this.cursor,maxItems:D.maxItems,style:X}).join(`
|
|
61
|
-
${k.cyan(qD)} `)}
|
|
62
|
-
${k.cyan(u1)}
|
|
63
|
-
`}}}).prompt()},VH;var _H=Z(()=>{D2=JN(),U7={exports:{}};GN=YN(),k=XN(GN);HN=BN();XH={exports:{}};(function(D){var $={};D.exports=$,$.eastAsianWidth=function(X){var J=X.charCodeAt(0),G=X.length==2?X.charCodeAt(1):0,Y=J;return 55296<=J&&J<=56319&&56320<=G&&G<=57343&&(J&=1023,G&=1023,Y=J<<10|G,Y+=65536),Y==12288||65281<=Y&&Y<=65376||65504<=Y&&Y<=65510?"F":Y==8361||65377<=Y&&Y<=65470||65474<=Y&&Y<=65479||65482<=Y&&Y<=65487||65490<=Y&&Y<=65495||65498<=Y&&Y<=65500||65512<=Y&&Y<=65518?"H":4352<=Y&&Y<=4447||4515<=Y&&Y<=4519||4602<=Y&&Y<=4607||9001<=Y&&Y<=9002||11904<=Y&&Y<=11929||11931<=Y&&Y<=12019||12032<=Y&&Y<=12245||12272<=Y&&Y<=12283||12289<=Y&&Y<=12350||12353<=Y&&Y<=12438||12441<=Y&&Y<=12543||12549<=Y&&Y<=12589||12593<=Y&&Y<=12686||12688<=Y&&Y<=12730||12736<=Y&&Y<=12771||12784<=Y&&Y<=12830||12832<=Y&&Y<=12871||12880<=Y&&Y<=13054||13056<=Y&&Y<=19903||19968<=Y&&Y<=42124||42128<=Y&&Y<=42182||43360<=Y&&Y<=43388||44032<=Y&&Y<=55203||55216<=Y&&Y<=55238||55243<=Y&&Y<=55291||63744<=Y&&Y<=64255||65040<=Y&&Y<=65049||65072<=Y&&Y<=65106||65108<=Y&&Y<=65126||65128<=Y&&Y<=65131||110592<=Y&&Y<=110593||127488<=Y&&Y<=127490||127504<=Y&&Y<=127546||127552<=Y&&Y<=127560||127568<=Y&&Y<=127569||131072<=Y&&Y<=194367||177984<=Y&&Y<=196605||196608<=Y&&Y<=262141?"W":32<=Y&&Y<=126||162<=Y&&Y<=163||165<=Y&&Y<=166||Y==172||Y==175||10214<=Y&&Y<=10221||10629<=Y&&Y<=10630?"Na":Y==161||Y==164||167<=Y&&Y<=168||Y==170||173<=Y&&Y<=174||176<=Y&&Y<=180||182<=Y&&Y<=186||188<=Y&&Y<=191||Y==198||Y==208||215<=Y&&Y<=216||222<=Y&&Y<=225||Y==230||232<=Y&&Y<=234||236<=Y&&Y<=237||Y==240||242<=Y&&Y<=243||247<=Y&&Y<=250||Y==252||Y==254||Y==257||Y==273||Y==275||Y==283||294<=Y&&Y<=295||Y==299||305<=Y&&Y<=307||Y==312||319<=Y&&Y<=322||Y==324||328<=Y&&Y<=331||Y==333||338<=Y&&Y<=339||358<=Y&&Y<=359||Y==363||Y==462||Y==464||Y==466||Y==468||Y==470||Y==472||Y==474||Y==476||Y==593||Y==609||Y==708||Y==711||713<=Y&&Y<=715||Y==717||Y==720||728<=Y&&Y<=731||Y==733||Y==735||768<=Y&&Y<=879||913<=Y&&Y<=929||931<=Y&&Y<=937||945<=Y&&Y<=961||963<=Y&&Y<=969||Y==1025||1040<=Y&&Y<=1103||Y==1105||Y==8208||8211<=Y&&Y<=8214||8216<=Y&&Y<=8217||8220<=Y&&Y<=8221||8224<=Y&&Y<=8226||8228<=Y&&Y<=8231||Y==8240||8242<=Y&&Y<=8243||Y==8245||Y==8251||Y==8254||Y==8308||Y==8319||8321<=Y&&Y<=8324||Y==8364||Y==8451||Y==8453||Y==8457||Y==8467||Y==8470||8481<=Y&&Y<=8482||Y==8486||Y==8491||8531<=Y&&Y<=8532||8539<=Y&&Y<=8542||8544<=Y&&Y<=8555||8560<=Y&&Y<=8569||Y==8585||8592<=Y&&Y<=8601||8632<=Y&&Y<=8633||Y==8658||Y==8660||Y==8679||Y==8704||8706<=Y&&Y<=8707||8711<=Y&&Y<=8712||Y==8715||Y==8719||Y==8721||Y==8725||Y==8730||8733<=Y&&Y<=8736||Y==8739||Y==8741||8743<=Y&&Y<=8748||Y==8750||8756<=Y&&Y<=8759||8764<=Y&&Y<=8765||Y==8776||Y==8780||Y==8786||8800<=Y&&Y<=8801||8804<=Y&&Y<=8807||8810<=Y&&Y<=8811||8814<=Y&&Y<=8815||8834<=Y&&Y<=8835||8838<=Y&&Y<=8839||Y==8853||Y==8857||Y==8869||Y==8895||Y==8978||9312<=Y&&Y<=9449||9451<=Y&&Y<=9547||9552<=Y&&Y<=9587||9600<=Y&&Y<=9615||9618<=Y&&Y<=9621||9632<=Y&&Y<=9633||9635<=Y&&Y<=9641||9650<=Y&&Y<=9651||9654<=Y&&Y<=9655||9660<=Y&&Y<=9661||9664<=Y&&Y<=9665||9670<=Y&&Y<=9672||Y==9675||9678<=Y&&Y<=9681||9698<=Y&&Y<=9701||Y==9711||9733<=Y&&Y<=9734||Y==9737||9742<=Y&&Y<=9743||9748<=Y&&Y<=9749||Y==9756||Y==9758||Y==9792||Y==9794||9824<=Y&&Y<=9825||9827<=Y&&Y<=9829||9831<=Y&&Y<=9834||9836<=Y&&Y<=9837||Y==9839||9886<=Y&&Y<=9887||9918<=Y&&Y<=9919||9924<=Y&&Y<=9933||9935<=Y&&Y<=9953||Y==9955||9960<=Y&&Y<=9983||Y==10045||Y==10071||10102<=Y&&Y<=10111||11093<=Y&&Y<=11097||12872<=Y&&Y<=12879||57344<=Y&&Y<=63743||65024<=Y&&Y<=65039||Y==65533||127232<=Y&&Y<=127242||127248<=Y&&Y<=127277||127280<=Y&&Y<=127337||127344<=Y&&Y<=127386||917760<=Y&&Y<=917999||983040<=Y&&Y<=1048573||1048576<=Y&&Y<=1114109?"A":"N"},$.characterLength=function(X){var J=this.eastAsianWidth(X);return J=="F"||J=="W"||J=="A"?2:1};function F(X){return X.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}$.length=function(X){for(var J=F(X),G=0,Y=0;Y<J.length;Y++)G=G+this.characterLength(J[Y]);return G},$.slice=function(X,J,G){textLen=$.length(X),J=J||0,G=G||1,J<0&&(J=textLen+J),G<0&&(G=textLen+G);for(var Y="",B=0,H=F(X),W=0;W<H.length;W++){var Q=H[W],U=$.length(Q);if(B>=J-(U==2?1:0))if(B+U<=G)Y+=Q;else break;B+=U}return Y}})(XH);WN=XH.exports,VN=FH(WN),UN=FH(QN);jD={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(jD.modifier);_N=Object.keys(jD.color),AN=Object.keys(jD.bgColor);[..._N,...AN];ON=KN(),K7=new Set(["\x1B","\x9B"]),DF=`${RN}8;;`;qN=["up","down","left","right","space","enter","cancel"],A7={actions:new Set(qN),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["\x03","cancel"],["escape","cancel"]])};globalThis.process.platform.startsWith("win");aB=Symbol("clack:cancel");PN=Object.defineProperty;BH=class BH extends B3{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(D){super(D,!1),this.value=!!D.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",($)=>{this.output.write(D2.cursor.move(0,-1)),this.value=$,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}};jN=Object.defineProperty,IN=class extends B3{constructor(D){super(D,!1),tB(this,"options"),tB(this,"cursor",0),this.options=D.options,this.value=[...D.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:$})=>$===D.cursorAt),0),this.on("key",($)=>{$==="a"&&this.toggleAll()}),this.on("cursor",($)=>{switch($){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case"space":this.toggleValue();break}})}get _value(){return this.options[this.cursor].value}toggleAll(){let D=this.value.length===this.options.length;this.value=D?[]:this.options.map(($)=>$.value)}toggleValue(){let D=this.value.includes(this._value);this.value=D?this.value.filter(($)=>$!==this._value):[...this.value,this._value]}},TN=Object.defineProperty;HH=class HH extends B3{constructor(D){super(D,!1),eB(this,"options"),eB(this,"cursor",0),this.options=D.options,this.cursor=this.options.findIndex(({value:$})=>$===D.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",($)=>{switch($){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}};WH=class WH extends B3{get valueWithCursor(){if(this.state==="submit")return this.value;if(this.cursor>=this.value.length)return`${this.value}\u2588`;let D=this.value.slice(0,this.cursor),[$,...F]=this.value.slice(this.cursor);return`${D}${k.inverse($)}${F.join("")}`}get cursor(){return this._cursor}constructor(D){super(D),this.on("finalize",()=>{this.value||(this.value=D.defaultValue)})}};bN=SN(),fN=$2("\u276F",">"),kN=$2("\u25A0","x"),vN=$2("\u25B2","x"),hN=$2("\u2714","\u221A"),qD=$2(""),u1=$2(""),o$=$2("\u25CF",">"),a$=$2("\u25CB"," "),xN=$2("\u25FB","[\u2022]"),DH=$2("\u25FC","[+]"),gN=$2("\u25FB","[ ]");`${k.gray(qD)} `;VH=Symbol.for("cancel")});import AH from"process";function lN(){if(globalThis.process?.env)for(let D of dN){let $=D[1]||D[0];if(globalThis.process?.env[$])return{name:D[0].toLowerCase(),...D[2]}}return globalThis.process?.env?.SHELL==="/bin/jsh"&&globalThis.process?.versions?.webcontainer?{name:"stackblitz",ci:!1}:{name:"",ci:!1}}function l8(D){return D?D!=="false":!1}function YP(){let D=JP.find(($)=>$[0]);if(D)return{name:D[1]}}function BP({onlyFirst:D=!1}={}){let F=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(F,D?void 0:"g")}function WP(D){if(typeof D!=="string")throw TypeError(`Expected a \`string\`, got \`${typeof D}\``);return D.replace(HP,"")}function VP(D){return D===161||D===164||D===167||D===168||D===170||D===173||D===174||D>=176&&D<=180||D>=182&&D<=186||D>=188&&D<=191||D===198||D===208||D===215||D===216||D>=222&&D<=225||D===230||D>=232&&D<=234||D===236||D===237||D===240||D===242||D===243||D>=247&&D<=250||D===252||D===254||D===257||D===273||D===275||D===283||D===294||D===295||D===299||D>=305&&D<=307||D===312||D>=319&&D<=322||D===324||D>=328&&D<=331||D===333||D===338||D===339||D===358||D===359||D===363||D===462||D===464||D===466||D===468||D===470||D===472||D===474||D===476||D===593||D===609||D===708||D===711||D>=713&&D<=715||D===717||D===720||D>=728&&D<=731||D===733||D===735||D>=768&&D<=879||D>=913&&D<=929||D>=931&&D<=937||D>=945&&D<=961||D>=963&&D<=969||D===1025||D>=1040&&D<=1103||D===1105||D===8208||D>=8211&&D<=8214||D===8216||D===8217||D===8220||D===8221||D>=8224&&D<=8226||D>=8228&&D<=8231||D===8240||D===8242||D===8243||D===8245||D===8251||D===8254||D===8308||D===8319||D>=8321&&D<=8324||D===8364||D===8451||D===8453||D===8457||D===8467||D===8470||D===8481||D===8482||D===8486||D===8491||D===8531||D===8532||D>=8539&&D<=8542||D>=8544&&D<=8555||D>=8560&&D<=8569||D===8585||D>=8592&&D<=8601||D===8632||D===8633||D===8658||D===8660||D===8679||D===8704||D===8706||D===8707||D===8711||D===8712||D===8715||D===8719||D===8721||D===8725||D===8730||D>=8733&&D<=8736||D===8739||D===8741||D>=8743&&D<=8748||D===8750||D>=8756&&D<=8759||D===8764||D===8765||D===8776||D===8780||D===8786||D===8800||D===8801||D>=8804&&D<=8807||D===8810||D===8811||D===8814||D===8815||D===8834||D===8835||D===8838||D===8839||D===8853||D===8857||D===8869||D===8895||D===8978||D>=9312&&D<=9449||D>=9451&&D<=9547||D>=9552&&D<=9587||D>=9600&&D<=9615||D>=9618&&D<=9621||D===9632||D===9633||D>=9635&&D<=9641||D===9650||D===9651||D===9654||D===9655||D===9660||D===9661||D===9664||D===9665||D>=9670&&D<=9672||D===9675||D>=9678&&D<=9681||D>=9698&&D<=9701||D===9711||D===9733||D===9734||D===9737||D===9742||D===9743||D===9756||D===9758||D===9792||D===9794||D===9824||D===9825||D>=9827&&D<=9829||D>=9831&&D<=9834||D===9836||D===9837||D===9839||D===9886||D===9887||D===9919||D>=9926&&D<=9933||D>=9935&&D<=9939||D>=9941&&D<=9953||D===9955||D===9960||D===9961||D>=9963&&D<=9969||D===9972||D>=9974&&D<=9977||D===9979||D===9980||D===9982||D===9983||D===10045||D>=10102&&D<=10111||D>=11094&&D<=11097||D>=12872&&D<=12879||D>=57344&&D<=63743||D>=65024&&D<=65039||D===65533||D>=127232&&D<=127242||D>=127248&&D<=127277||D>=127280&&D<=127337||D>=127344&&D<=127373||D===127375||D===127376||D>=127387&&D<=127404||D>=917760&&D<=917999||D>=983040&&D<=1048573||D>=1048576&&D<=1114109}function QP(D){return D===12288||D>=65281&&D<=65376||D>=65504&&D<=65510}function UP(D){return D>=4352&&D<=4447||D===8986||D===8987||D===9001||D===9002||D>=9193&&D<=9196||D===9200||D===9203||D===9725||D===9726||D===9748||D===9749||D>=9776&&D<=9783||D>=9800&&D<=9811||D===9855||D>=9866&&D<=9871||D===9875||D===9889||D===9898||D===9899||D===9917||D===9918||D===9924||D===9925||D===9934||D===9940||D===9962||D===9970||D===9971||D===9973||D===9978||D===9981||D===9989||D===9994||D===9995||D===10024||D===10060||D===10062||D>=10067&&D<=10069||D===10071||D>=10133&&D<=10135||D===10160||D===10175||D===11035||D===11036||D===11088||D===11093||D>=11904&&D<=11929||D>=11931&&D<=12019||D>=12032&&D<=12245||D>=12272&&D<=12287||D>=12289&&D<=12350||D>=12353&&D<=12438||D>=12441&&D<=12543||D>=12549&&D<=12591||D>=12593&&D<=12686||D>=12688&&D<=12773||D>=12783&&D<=12830||D>=12832&&D<=12871||D>=12880&&D<=42124||D>=42128&&D<=42182||D>=43360&&D<=43388||D>=44032&&D<=55203||D>=63744&&D<=64255||D>=65040&&D<=65049||D>=65072&&D<=65106||D>=65108&&D<=65126||D>=65128&&D<=65131||D>=94176&&D<=94180||D===94192||D===94193||D>=94208&&D<=100343||D>=100352&&D<=101589||D>=101631&&D<=101640||D>=110576&&D<=110579||D>=110581&&D<=110587||D===110589||D===110590||D>=110592&&D<=110882||D===110898||D>=110928&&D<=110930||D===110933||D>=110948&&D<=110951||D>=110960&&D<=111355||D>=119552&&D<=119638||D>=119648&&D<=119670||D===126980||D===127183||D===127374||D>=127377&&D<=127386||D>=127488&&D<=127490||D>=127504&&D<=127547||D>=127552&&D<=127560||D===127568||D===127569||D>=127584&&D<=127589||D>=127744&&D<=127776||D>=127789&&D<=127797||D>=127799&&D<=127868||D>=127870&&D<=127891||D>=127904&&D<=127946||D>=127951&&D<=127955||D>=127968&&D<=127984||D===127988||D>=127992&&D<=128062||D===128064||D>=128066&&D<=128252||D>=128255&&D<=128317||D>=128331&&D<=128334||D>=128336&&D<=128359||D===128378||D===128405||D===128406||D===128420||D>=128507&&D<=128591||D>=128640&&D<=128709||D===128716||D>=128720&&D<=128722||D>=128725&&D<=128727||D>=128732&&D<=128735||D===128747||D===128748||D>=128756&&D<=128764||D>=128992&&D<=129003||D===129008||D>=129292&&D<=129338||D>=129340&&D<=129349||D>=129351&&D<=129535||D>=129648&&D<=129660||D>=129664&&D<=129673||D>=129679&&D<=129734||D>=129742&&D<=129756||D>=129759&&D<=129769||D>=129776&&D<=129784||D>=131072&&D<=196605||D>=196608&&D<=262141}function _P(D){if(!Number.isSafeInteger(D))throw TypeError(`Expected a code point, got \`${typeof D}\`.`)}function AP(D,{ambiguousAsWide:$=!1}={}){if(_P(D),QP(D)||UP(D)||$&&VP(D))return 2;return 1}function RP(D,$={}){if(typeof D!=="string"||D.length===0)return 0;let{ambiguousIsNarrow:F=!0,countAnsiEscapeCodes:X=!1}=$;if(!X)D=WP(D);if(D.length===0)return 0;let J=0,G={ambiguousAsWide:!F};for(let{segment:Y}of OP.segment(D)){let B=Y.codePointAt(0);if(B<=31||B>=127&&B<=159)continue;if(B>=8203&&B<=8207||B===65279)continue;if(B>=768&&B<=879||B>=6832&&B<=6911||B>=7616&&B<=7679||B>=8400&&B<=8447||B>=65056&&B<=65071)continue;if(B>=55296&&B<=57343)continue;if(B>=65024&&B<=65039)continue;if(CP.test(Y))continue;if(KP().test(Y)){J+=2;continue}J+=AP(B,G)}return J}function EP(){let{env:D}=AH,{TERM:$,TERM_PROGRAM:F}=D;if(AH.platform!=="win32")return $!=="linux";return Boolean(D.WT_SESSION)||Boolean(D.TERMINUS_SUBLIME)||D.ConEmuTask==="{cmd::Cmder}"||F==="Terminus-Sublime"||F==="vscode"||$==="xterm-256color"||$==="alacritty"||$==="rxvt-unicode"||$==="rxvt-unicode-256color"||D.TERMINAL_EMULATOR==="JetBrains-JediTerm"}function CH(D){if(typeof Intl!=="object"||!Intl.Segmenter)return H8(D).length;return RP(D)}function C7(D){return D.replace(/`([^`]+)`/gm,($,F)=>C0.cyan(F)).replace(/\s+_([^_]+)_\s+/gm,($,F)=>` ${C0.underline(F)} `)}function NP(D="white"){return C0[D]||C0.white}function PP(D="bgWhite"){return C0[`bg${D[0].toUpperCase()}${D.slice(1)}`]||C0.bgWhite}function LP(D={}){let $=jP();if(process.env.CONSOLA_LEVEL)$=Number.parseInt(process.env.CONSOLA_LEVEL)??$;return bB({level:$,defaults:{level:$},stdout:process.stdout,stderr:process.stderr,prompt:(...X)=>Promise.resolve().then(() => (_H(),UH)).then((J)=>J.prompt(...X)),reporters:D.reporters||[D.fancy??!($F||FF)?new MH:new V7],...D})}function jP(){if(nN)return J0.debug;if(FF)return J0.warn;return J0.info}var R7,H3=(D)=>globalThis.process?.env||import.meta.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(D?R7:globalThis),V8,cN,dN,RH,iN,$F,EH,nN,FF,sN,rN,oN,KH,aN,tN,eN,DP,$P,FP,XP,JP,GP,HP,KP=()=>{return/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g},OP,CP,MP,ZP,qP,z2=(D,$)=>qP?D:$,OH,MH,E;var JD=Z(()=>{d$();d$();kB();mB();R7=Object.create(null),V8=new Proxy(R7,{get(D,$){return H3()[$]??R7[$]},has(D,$){let F=H3();return $ in F||$ in R7},set(D,$,F){let X=H3(!0);return X[$]=F,!0},deleteProperty(D,$){if(!$)return!1;let F=H3(!0);return delete F[$],!0},ownKeys(){let D=H3(!0);return Object.keys(D)}}),cN=typeof process<"u"&&process.env&&"development"||"",dN=[["APPVEYOR"],["AWS_AMPLIFY","AWS_APP_ID",{ci:!0}],["AZURE_PIPELINES","SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"],["AZURE_STATIC","INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN"],["APPCIRCLE","AC_APPCIRCLE"],["BAMBOO","bamboo_planKey"],["BITBUCKET","BITBUCKET_COMMIT"],["BITRISE","BITRISE_IO"],["BUDDY","BUDDY_WORKSPACE_ID"],["BUILDKITE"],["CIRCLE","CIRCLECI"],["CIRRUS","CIRRUS_CI"],["CLOUDFLARE_PAGES","CF_PAGES",{ci:!0}],["CODEBUILD","CODEBUILD_BUILD_ARN"],["CODEFRESH","CF_BUILD_ID"],["DRONE"],["DRONE","DRONE_BUILD_EVENT"],["DSARI"],["GITHUB_ACTIONS"],["GITLAB","GITLAB_CI"],["GITLAB","CI_MERGE_REQUEST_ID"],["GOCD","GO_PIPELINE_LABEL"],["LAYERCI"],["HUDSON","HUDSON_URL"],["JENKINS","JENKINS_URL"],["MAGNUM"],["NETLIFY"],["NETLIFY","NETLIFY_LOCAL",{ci:!1}],["NEVERCODE"],["RENDER"],["SAIL","SAILCI"],["SEMAPHORE"],["SCREWDRIVER"],["SHIPPABLE"],["SOLANO","TDDIUM"],["STRIDER"],["TEAMCITY","TEAMCITY_VERSION"],["TRAVIS"],["VERCEL","NOW_BUILDER"],["VERCEL","VERCEL",{ci:!1}],["VERCEL","VERCEL_ENV",{ci:!1}],["APPCENTER","APPCENTER_BUILD_ID"],["CODESANDBOX","CODESANDBOX_SSE",{ci:!1}],["CODESANDBOX","CODESANDBOX_HOST",{ci:!1}],["STACKBLITZ"],["STORMKIT"],["CLEAVR"],["ZEABUR"],["CODESPHERE","CODESPHERE_APP_ID",{ci:!0}],["RAILWAY","RAILWAY_PROJECT_ID"],["RAILWAY","RAILWAY_SERVICE_ID"],["DENO-DEPLOY","DENO_DEPLOYMENT_ID"],["FIREBASE_APP_HOSTING","FIREBASE_APP_HOSTING",{ci:!0}]];RH=lN();RH.name;iN=globalThis.process?.platform||"",$F=l8(V8.CI)||RH.ci!==!1,EH=l8(globalThis.process?.stdout&&globalThis.process?.stdout.isTTY),nN=l8(V8.DEBUG),FF=cN==="test"||l8(V8.TEST);l8(V8.MINIMAL);sN=/^win/i.test(iN);!l8(V8.NO_COLOR)&&(l8(V8.FORCE_COLOR)||(EH||sN)&&V8.TERM);rN=(globalThis.process?.versions?.node||"").replace(/^v/,"")||null;Number(rN?.split(".")[0]);oN=globalThis.process||Object.create(null),KH={versions:{}};new Proxy(oN,{get(D,$){if($==="env")return V8;if($ in D)return D[$];if($ in KH)return KH[$]}});aN=globalThis.process?.release?.name==="node",tN=!!globalThis.Bun||!!globalThis.process?.versions?.bun,eN=!!globalThis.Deno,DP=!!globalThis.fastly,$P=!!globalThis.Netlify,FP=!!globalThis.EdgeRuntime,XP=globalThis.navigator?.userAgent==="Cloudflare-Workers",JP=[[$P,"netlify"],[FP,"edge-light"],[XP,"workerd"],[DP,"fastly"],[eN,"deno"],[tN,"bun"],[aN,"node"]];GP=YP();GP?.name;HP=BP();OP=globalThis.Intl?.Segmenter?new Intl.Segmenter:{segment:(D)=>D.split("")},CP=/^\p{Default_Ignorable_Code_Point}$/u;MP={info:"cyan",fail:"red",success:"green",ready:"green",start:"magenta"},ZP={0:"red",1:"yellow"},qP=EP(),OH={error:z2("\u2716","\xD7"),fatal:z2("\u2716","\xD7"),ready:z2("\u2714","\u221A"),warn:z2("\u26A0","\u203C"),info:z2("\u2139","i"),success:z2("\u2714","\u221A"),debug:z2("\u2699","D"),trace:z2("\u2192","\u2192"),fail:z2("\u2716","\xD7"),start:z2("\u25D0","o"),log:""};MH=class MH extends V7{formatStack(D,$,F){let X=" ".repeat((F?.errorLevel||0)+1);return`
|
|
64
|
-
${X}`+i$(D,$).map((J)=>" "+J.replace(/^at +/,(G)=>C0.gray(G)).replace(/\((.+)\)/,(G,Y)=>`(${C0.cyan(Y)})`)).join(`
|
|
65
|
-
${X}`)}formatType(D,$,F){let X=MP[D.type]||ZP[D.level]||"gray";if($)return PP(X)(C0.black(` ${D.type.toUpperCase()} `));let J=typeof OH[D.type]==="string"?OH[D.type]:D.icon||D.type;return J?NP(X)(J):""}formatLogObj(D,$){let[F,...X]=this.formatArgs(D.args,$).split(`
|
|
66
|
-
`);if(D.type==="box")return uB(C7(F+(X.length>0?`
|
|
67
|
-
`+X.join(`
|
|
68
|
-
`):"")),{title:D.title?C7(D.title):void 0,style:D.style});let J=this.formatDate(D.date,$),G=J&&C0.gray(J),Y=D.badge??D.level<2,B=this.formatType(D,Y,$),H=D.tag?C0.gray(D.tag):"",W,Q=this.filterAndJoin([B,C7(F)]),U=this.filterAndJoin($.columns?[H,G]:[H]),_=($.columns||0)-CH(Q)-CH(U)-2;if(W=_>0&&($.columns||0)>=80?Q+" ".repeat(_)+U:(U?`${C0.gray(`[${U}]`)} `:"")+Q,W+=C7(X.length>0?`
|
|
69
|
-
`+X.join(`
|
|
70
|
-
`):""),D.type==="trace"){let A=Error("Trace: "+D.message);W+=this.formatStack(A.stack||"",A.message)}return Y?`
|
|
71
|
-
`+W+`
|
|
72
|
-
`:W}};E=LP()});var HD,XF,h,I2=(D)=>{switch(typeof D){case"undefined":return h.undefined;case"string":return h.string;case"number":return Number.isNaN(D)?h.nan:h.number;case"boolean":return h.boolean;case"function":return h.function;case"bigint":return h.bigint;case"symbol":return h.symbol;case"object":if(Array.isArray(D))return h.array;if(D===null)return h.null;if(D.then&&typeof D.then==="function"&&D.catch&&typeof D.catch==="function")return h.promise;if(typeof Map<"u"&&D instanceof Map)return h.map;if(typeof Set<"u"&&D instanceof Set)return h.set;if(typeof Date<"u"&&D instanceof Date)return h.date;return h.object;default:return h.unknown}};var W3=Z(()=>{(function(D){D.assertEqual=(J)=>{};function $(J){}D.assertIs=$;function F(J){throw Error()}D.assertNever=F,D.arrayToEnum=(J)=>{let G={};for(let Y of J)G[Y]=Y;return G},D.getValidEnumValues=(J)=>{let G=D.objectKeys(J).filter((B)=>typeof J[J[B]]!=="number"),Y={};for(let B of G)Y[B]=J[B];return D.objectValues(Y)},D.objectValues=(J)=>{return D.objectKeys(J).map(function(G){return J[G]})},D.objectKeys=typeof Object.keys==="function"?(J)=>Object.keys(J):(J)=>{let G=[];for(let Y in J)if(Object.prototype.hasOwnProperty.call(J,Y))G.push(Y);return G},D.find=(J,G)=>{for(let Y of J)if(G(Y))return Y;return},D.isInteger=typeof Number.isInteger==="function"?(J)=>Number.isInteger(J):(J)=>typeof J==="number"&&Number.isFinite(J)&&Math.floor(J)===J;function X(J,G=" | "){return J.map((Y)=>typeof Y==="string"?`'${Y}'`:Y).join(G)}D.joinValues=X,D.jsonStringifyReplacer=(J,G)=>{if(typeof G==="bigint")return G.toString();return G}})(HD||(HD={}));(function(D){D.mergeShapes=($,F)=>{return{...$,...F}}})(XF||(XF={}));h=HD.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"])});var w,IP=(D)=>{return JSON.stringify(D,null,2).replace(/"([^"]+)":/g,"$1:")},M0;var E7=Z(()=>{W3();w=HD.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);M0=class M0 extends Error{get errors(){return this.issues}constructor(D){super();this.issues=[],this.addIssue=(F)=>{this.issues=[...this.issues,F]},this.addIssues=(F=[])=>{this.issues=[...this.issues,...F]};let $=new.target.prototype;if(Object.setPrototypeOf)Object.setPrototypeOf(this,$);else this.__proto__=$;this.name="ZodError",this.issues=D}format(D){let $=D||function(J){return J.message},F={_errors:[]},X=(J)=>{for(let G of J.issues)if(G.code==="invalid_union")G.unionErrors.map(X);else if(G.code==="invalid_return_type")X(G.returnTypeError);else if(G.code==="invalid_arguments")X(G.argumentsError);else if(G.path.length===0)F._errors.push($(G));else{let Y=F,B=0;while(B<G.path.length){let H=G.path[B];if(B!==G.path.length-1)Y[H]=Y[H]||{_errors:[]};else Y[H]=Y[H]||{_errors:[]},Y[H]._errors.push($(G));Y=Y[H],B++}}};return X(this),F}static assert(D){if(!(D instanceof M0))throw Error(`Not a ZodError: ${D}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,HD.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(D=($)=>$.message){let $={},F=[];for(let X of this.issues)if(X.path.length>0){let J=X.path[0];$[J]=$[J]||[],$[J].push(D(X))}else F.push(D(X));return{formErrors:F,fieldErrors:$}}get formErrors(){return this.flatten()}};M0.create=(D)=>{return new M0(D)}});var TP=(D,$)=>{let F;switch(D.code){case w.invalid_type:if(D.received===h.undefined)F="Required";else F=`Expected ${D.expected}, received ${D.received}`;break;case w.invalid_literal:F=`Invalid literal value, expected ${JSON.stringify(D.expected,HD.jsonStringifyReplacer)}`;break;case w.unrecognized_keys:F=`Unrecognized key(s) in object: ${HD.joinValues(D.keys,", ")}`;break;case w.invalid_union:F="Invalid input";break;case w.invalid_union_discriminator:F=`Invalid discriminator value. Expected ${HD.joinValues(D.options)}`;break;case w.invalid_enum_value:F=`Invalid enum value. Expected ${HD.joinValues(D.options)}, received '${D.received}'`;break;case w.invalid_arguments:F="Invalid function arguments";break;case w.invalid_return_type:F="Invalid function return type";break;case w.invalid_date:F="Invalid date";break;case w.invalid_string:if(typeof D.validation==="object")if("includes"in D.validation){if(F=`Invalid input: must include "${D.validation.includes}"`,typeof D.validation.position==="number")F=`${F} at one or more positions greater than or equal to ${D.validation.position}`}else if("startsWith"in D.validation)F=`Invalid input: must start with "${D.validation.startsWith}"`;else if("endsWith"in D.validation)F=`Invalid input: must end with "${D.validation.endsWith}"`;else HD.assertNever(D.validation);else if(D.validation!=="regex")F=`Invalid ${D.validation}`;else F="Invalid";break;case w.too_small:if(D.type==="array")F=`Array must contain ${D.exact?"exactly":D.inclusive?"at least":"more than"} ${D.minimum} element(s)`;else if(D.type==="string")F=`String must contain ${D.exact?"exactly":D.inclusive?"at least":"over"} ${D.minimum} character(s)`;else if(D.type==="number")F=`Number must be ${D.exact?"exactly equal to ":D.inclusive?"greater than or equal to ":"greater than "}${D.minimum}`;else if(D.type==="bigint")F=`Number must be ${D.exact?"exactly equal to ":D.inclusive?"greater than or equal to ":"greater than "}${D.minimum}`;else if(D.type==="date")F=`Date must be ${D.exact?"exactly equal to ":D.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(D.minimum))}`;else F="Invalid input";break;case w.too_big:if(D.type==="array")F=`Array must contain ${D.exact?"exactly":D.inclusive?"at most":"less than"} ${D.maximum} element(s)`;else if(D.type==="string")F=`String must contain ${D.exact?"exactly":D.inclusive?"at most":"under"} ${D.maximum} character(s)`;else if(D.type==="number")F=`Number must be ${D.exact?"exactly":D.inclusive?"less than or equal to":"less than"} ${D.maximum}`;else if(D.type==="bigint")F=`BigInt must be ${D.exact?"exactly":D.inclusive?"less than or equal to":"less than"} ${D.maximum}`;else if(D.type==="date")F=`Date must be ${D.exact?"exactly":D.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(D.maximum))}`;else F="Invalid input";break;case w.custom:F="Invalid input";break;case w.invalid_intersection_types:F="Intersection results could not be merged";break;case w.not_multiple_of:F=`Number must be a multiple of ${D.multipleOf}`;break;case w.not_finite:F="Number must be finite";break;default:F=$.defaultError,HD.assertNever(D)}return{message:F}},m2;var JF=Z(()=>{E7();W3();m2=TP});function wP(D){qH=D}function m1(){return qH}var qH;var M7=Z(()=>{JF();qH=m2});function g(D,$){let F=m1(),X=V3({issueData:$,data:D.data,path:D.path,errorMaps:[D.common.contextualErrorMap,D.schemaErrorMap,F,F===m2?void 0:m2].filter((J)=>!!J)});D.common.issues.push(X)}class Y0{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray(D,$){let F=[];for(let X of $){if(X.status==="aborted")return n;if(X.status==="dirty")D.dirty();F.push(X.value)}return{status:D.value,value:F}}static async mergeObjectAsync(D,$){let F=[];for(let X of $){let J=await X.key,G=await X.value;F.push({key:J,value:G})}return Y0.mergeObjectSync(D,F)}static mergeObjectSync(D,$){let F={};for(let X of $){let{key:J,value:G}=X;if(J.status==="aborted")return n;if(G.status==="aborted")return n;if(J.status==="dirty")D.dirty();if(G.status==="dirty")D.dirty();if(J.value!=="__proto__"&&(typeof G.value<"u"||X.alwaysSet))F[J.value]=G.value}return{status:D.value,value:F}}}var V3=(D)=>{let{data:$,path:F,errorMaps:X,issueData:J}=D,G=[...F,...J.path||[]],Y={...J,path:G};if(J.message!==void 0)return{...J,path:G,message:J.message};let B="",H=X.filter((W)=>!!W).slice().reverse();for(let W of H)B=W(Y,{data:$,defaultError:B}).message;return{...J,path:G,message:B}},SP,n,i8=(D)=>({status:"dirty",value:D}),W0=(D)=>({status:"valid",value:D}),Z7=(D)=>D.status==="aborted",q7=(D)=>D.status==="dirty",Q8=(D)=>D.status==="valid",p1=(D)=>typeof Promise<"u"&&D instanceof Promise;var YF=Z(()=>{M7();JF();SP=[];n=Object.freeze({status:"aborted"})});var NH=()=>{};var p;var PH=Z(()=>{(function(D){D.errToObj=($)=>typeof $==="string"?{message:$}:$||{},D.toString=($)=>typeof $==="string"?$:$?.message})(p||(p={}))});class Y2{constructor(D,$,F,X){this._cachedPath=[],this.parent=D,this.data=$,this._path=F,this._key=X}get path(){if(!this._cachedPath.length)if(Array.isArray(this._key))this._cachedPath.push(...this._path,...this._key);else this._cachedPath.push(...this._path,this._key);return this._cachedPath}}function FD(D){if(!D)return{};let{errorMap:$,invalid_type_error:F,required_error:X,description:J}=D;if($&&(F||X))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if($)return{errorMap:$,description:J};return{errorMap:(Y,B)=>{let{message:H}=D;if(Y.code==="invalid_enum_value")return{message:H??B.defaultError};if(typeof B.data>"u")return{message:H??X??B.defaultError};if(Y.code!=="invalid_type")return{message:B.defaultError};return{message:H??F??B.defaultError}},description:J}}class YD{get description(){return this._def.description}_getType(D){return I2(D.data)}_getOrReturnCtx(D,$){return $||{common:D.parent.common,data:D.data,parsedType:I2(D.data),schemaErrorMap:this._def.errorMap,path:D.path,parent:D.parent}}_processInputParams(D){return{status:new Y0,ctx:{common:D.parent.common,data:D.data,parsedType:I2(D.data),schemaErrorMap:this._def.errorMap,path:D.path,parent:D.parent}}}_parseSync(D){let $=this._parse(D);if(p1($))throw Error("Synchronous parse encountered promise.");return $}_parseAsync(D){let $=this._parse(D);return Promise.resolve($)}parse(D,$){let F=this.safeParse(D,$);if(F.success)return F.data;throw F.error}safeParse(D,$){let F={common:{issues:[],async:$?.async??!1,contextualErrorMap:$?.errorMap},path:$?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:D,parsedType:I2(D)},X=this._parseSync({data:D,path:F.path,parent:F});return LH(F,X)}"~validate"(D){let $={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:D,parsedType:I2(D)};if(!this["~standard"].async)try{let F=this._parseSync({data:D,path:[],parent:$});return Q8(F)?{value:F.value}:{issues:$.common.issues}}catch(F){if(F?.message?.toLowerCase()?.includes("encountered"))this["~standard"].async=!0;$.common={issues:[],async:!0}}return this._parseAsync({data:D,path:[],parent:$}).then((F)=>Q8(F)?{value:F.value}:{issues:$.common.issues})}async parseAsync(D,$){let F=await this.safeParseAsync(D,$);if(F.success)return F.data;throw F.error}async safeParseAsync(D,$){let F={common:{issues:[],contextualErrorMap:$?.errorMap,async:!0},path:$?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:D,parsedType:I2(D)},X=this._parse({data:D,path:F.path,parent:F}),J=await(p1(X)?X:Promise.resolve(X));return LH(F,J)}refine(D,$){let F=(X)=>{if(typeof $==="string"||typeof $>"u")return{message:$};else if(typeof $==="function")return $(X);else return $};return this._refinement((X,J)=>{let G=D(X),Y=()=>J.addIssue({code:w.custom,...F(X)});if(typeof Promise<"u"&&G instanceof Promise)return G.then((B)=>{if(!B)return Y(),!1;else return!0});if(!G)return Y(),!1;else return!0})}refinement(D,$){return this._refinement((F,X)=>{if(!D(F))return X.addIssue(typeof $==="function"?$(F,X):$),!1;else return!0})}_refinement(D){return new G2({schema:this,typeName:r.ZodEffects,effect:{type:"refinement",refinement:D}})}superRefine(D){return this._refinement(D)}constructor(D){this.spa=this.safeParseAsync,this._def=D,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:($)=>this["~validate"]($)}}optional(){return J2.create(this,this._def)}nullable(){return c2.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return X2.create(this)}promise(){return o8.create(this,this._def)}or(D){return s1.create([this,D],this._def)}and(D){return r1.create(this,D,this._def)}transform(D){return new G2({...FD(this._def),schema:this,typeName:r.ZodEffects,effect:{type:"transform",transform:D}})}default(D){let $=typeof D==="function"?D:()=>D;return new e1({...FD(this._def),innerType:this,defaultValue:$,typeName:r.ZodDefault})}brand(){return new P7({typeName:r.ZodBranded,type:this,...FD(this._def)})}catch(D){let $=typeof D==="function"?D:()=>D;return new D6({...FD(this._def),innerType:this,catchValue:$,typeName:r.ZodCatch})}describe(D){return new this.constructor({...this._def,description:D})}pipe(D){return O3.create(this,D)}readonly(){return $6.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}function IH(D){let $="[0-5]\\d";if(D.precision)$=`${$}\\.\\d{${D.precision}}`;else if(D.precision==null)$=`${$}(\\.\\d+)?`;let F=D.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${$})${F}`}function sP(D){return new RegExp(`^${IH(D)}$`)}function TH(D){let $=`${zH}T${IH(D)}`,F=[];if(F.push(D.local?"Z?":"Z"),D.offset)F.push("([+-]\\d{2}:?\\d{2})");return $=`${$}(${F.join("|")})`,new RegExp(`^${$}$`)}function rP(D,$){if(($==="v4"||!$)&&mP.test(D))return!0;if(($==="v6"||!$)&&cP.test(D))return!0;return!1}function oP(D,$){if(!xP.test(D))return!1;try{let[F]=D.split(".");if(!F)return!1;let X=F.replace(/-/g,"+").replace(/_/g,"/").padEnd(F.length+(4-F.length%4)%4,"="),J=JSON.parse(atob(X));if(typeof J!=="object"||J===null)return!1;if("typ"in J&&J?.typ!=="JWT")return!1;if(!J.alg)return!1;if($&&J.alg!==$)return!1;return!0}catch{return!1}}function aP(D,$){if(($==="v4"||!$)&&pP.test(D))return!0;if(($==="v6"||!$)&&dP.test(D))return!0;return!1}function tP(D,$){let F=(D.toString().split(".")[1]||"").length,X=($.toString().split(".")[1]||"").length,J=F>X?F:X,G=Number.parseInt(D.toFixed(J).replace(".","")),Y=Number.parseInt($.toFixed(J).replace(".",""));return G%Y/10**J}function c1(D){if(D instanceof bD){let $={};for(let F in D.shape){let X=D.shape[F];$[F]=J2.create(c1(X))}return new bD({...D._def,shape:()=>$})}else if(D instanceof X2)return new X2({...D._def,type:c1(D.element)});else if(D instanceof J2)return J2.create(c1(D.unwrap()));else if(D instanceof c2)return c2.create(c1(D.unwrap()));else if(D instanceof w2)return w2.create(D.items.map(($)=>c1($)));else return D}function BF(D,$){let F=I2(D),X=I2($);if(D===$)return{valid:!0,data:D};else if(F===h.object&&X===h.object){let J=HD.objectKeys($),G=HD.objectKeys(D).filter((B)=>J.indexOf(B)!==-1),Y={...D,...$};for(let B of G){let H=BF(D[B],$[B]);if(!H.valid)return{valid:!1};Y[B]=H.data}return{valid:!0,data:Y}}else if(F===h.array&&X===h.array){if(D.length!==$.length)return{valid:!1};let J=[];for(let G=0;G<D.length;G++){let Y=D[G],B=$[G],H=BF(Y,B);if(!H.valid)return{valid:!1};J.push(H.data)}return{valid:!0,data:J}}else if(F===h.date&&X===h.date&&+D===+$)return{valid:!0,data:D};else return{valid:!1}}function wH(D,$){return new K8({values:D,typeName:r.ZodEnum,...FD($)})}function jH(D,$){let F=typeof D==="function"?D($):typeof D==="string"?{message:D}:D;return typeof F==="string"?{message:F}:F}function SH(D,$={},F){if(D)return s8.create().superRefine((X,J)=>{let G=D(X);if(G instanceof Promise)return G.then((Y)=>{if(!Y){let B=jH($,X),H=B.fatal??F??!0;J.addIssue({code:"custom",...B,fatal:H})}});if(!G){let Y=jH($,X),B=Y.fatal??F??!0;J.addIssue({code:"custom",...Y,fatal:B})}return});return s8.create()}var LH=(D,$)=>{if(Q8($))return{success:!0,data:$.value};else{if(!D.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let F=new M0(D.common.issues);return this._error=F,this._error}}}},bP,fP,kP,vP,hP,xP,gP,yP,uP="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",GF,mP,pP,cP,dP,lP,iP,zH="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",nP,F2,_8,A8,l1,n8,Q3,i1,n1,s8,U8,T2,U3,X2,bD,s1,p2=(D)=>{if(D instanceof o1)return p2(D.schema);else if(D instanceof G2)return p2(D.innerType());else if(D instanceof a1)return[D.value];else if(D instanceof K8)return D.options;else if(D instanceof t1)return HD.objectValues(D.enum);else if(D instanceof e1)return p2(D._def.innerType);else if(D instanceof i1)return[void 0];else if(D instanceof n1)return[null];else if(D instanceof J2)return[void 0,...p2(D.unwrap())];else if(D instanceof c2)return[null,...p2(D.unwrap())];else if(D instanceof P7)return p2(D.unwrap());else if(D instanceof $6)return p2(D.unwrap());else if(D instanceof D6)return p2(D._def.innerType);else return[]},N7,r1,w2,_3,A3,r8,d1,o1,a1,K8,t1,o8,G2,J2,c2,e1,D6,K3,eP,P7,O3,$6,DL,r,$L=(D,$={message:`Input not instance of ${D.name}`})=>SH((F)=>F instanceof D,$),bH,fH,FL,XL,kH,JL,YL,GL,BL,HL,WL,VL,QL,UL,_L,AL,KL,OL,CL,RL,EL,ML,ZL,qL,NL,PL,LL,jL,zL,IL,TL,wL,SL,bL,fL=()=>bH().optional(),kL=()=>fH().optional(),vL=()=>kH().optional(),hL,xL;var vH=Z(()=>{E7();M7();PH();YF();W3();bP=/^c[^\s-]{8,}$/i,fP=/^[0-9a-z]+$/,kP=/^[0-9A-HJKMNP-TV-Z]{26}$/i,vP=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,hP=/^[a-z0-9_-]{21}$/i,xP=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,gP=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,yP=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,mP=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,pP=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,cP=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,dP=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,lP=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,iP=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nP=new RegExp(`^${zH}$`);F2=class F2 extends YD{_parse(D){if(this._def.coerce)D.data=String(D.data);if(this._getType(D)!==h.string){let J=this._getOrReturnCtx(D);return g(J,{code:w.invalid_type,expected:h.string,received:J.parsedType}),n}let F=new Y0,X=void 0;for(let J of this._def.checks)if(J.kind==="min"){if(D.data.length<J.value)X=this._getOrReturnCtx(D,X),g(X,{code:w.too_small,minimum:J.value,type:"string",inclusive:!0,exact:!1,message:J.message}),F.dirty()}else if(J.kind==="max"){if(D.data.length>J.value)X=this._getOrReturnCtx(D,X),g(X,{code:w.too_big,maximum:J.value,type:"string",inclusive:!0,exact:!1,message:J.message}),F.dirty()}else if(J.kind==="length"){let G=D.data.length>J.value,Y=D.data.length<J.value;if(G||Y){if(X=this._getOrReturnCtx(D,X),G)g(X,{code:w.too_big,maximum:J.value,type:"string",inclusive:!0,exact:!0,message:J.message});else if(Y)g(X,{code:w.too_small,minimum:J.value,type:"string",inclusive:!0,exact:!0,message:J.message});F.dirty()}}else if(J.kind==="email"){if(!yP.test(D.data))X=this._getOrReturnCtx(D,X),g(X,{validation:"email",code:w.invalid_string,message:J.message}),F.dirty()}else if(J.kind==="emoji"){if(!GF)GF=new RegExp(uP,"u");if(!GF.test(D.data))X=this._getOrReturnCtx(D,X),g(X,{validation:"emoji",code:w.invalid_string,message:J.message}),F.dirty()}else if(J.kind==="uuid"){if(!vP.test(D.data))X=this._getOrReturnCtx(D,X),g(X,{validation:"uuid",code:w.invalid_string,message:J.message}),F.dirty()}else if(J.kind==="nanoid"){if(!hP.test(D.data))X=this._getOrReturnCtx(D,X),g(X,{validation:"nanoid",code:w.invalid_string,message:J.message}),F.dirty()}else if(J.kind==="cuid"){if(!bP.test(D.data))X=this._getOrReturnCtx(D,X),g(X,{validation:"cuid",code:w.invalid_string,message:J.message}),F.dirty()}else if(J.kind==="cuid2"){if(!fP.test(D.data))X=this._getOrReturnCtx(D,X),g(X,{validation:"cuid2",code:w.invalid_string,message:J.message}),F.dirty()}else if(J.kind==="ulid"){if(!kP.test(D.data))X=this._getOrReturnCtx(D,X),g(X,{validation:"ulid",code:w.invalid_string,message:J.message}),F.dirty()}else if(J.kind==="url")try{new URL(D.data)}catch{X=this._getOrReturnCtx(D,X),g(X,{validation:"url",code:w.invalid_string,message:J.message}),F.dirty()}else if(J.kind==="regex"){if(J.regex.lastIndex=0,!J.regex.test(D.data))X=this._getOrReturnCtx(D,X),g(X,{validation:"regex",code:w.invalid_string,message:J.message}),F.dirty()}else if(J.kind==="trim")D.data=D.data.trim();else if(J.kind==="includes"){if(!D.data.includes(J.value,J.position))X=this._getOrReturnCtx(D,X),g(X,{code:w.invalid_string,validation:{includes:J.value,position:J.position},message:J.message}),F.dirty()}else if(J.kind==="toLowerCase")D.data=D.data.toLowerCase();else if(J.kind==="toUpperCase")D.data=D.data.toUpperCase();else if(J.kind==="startsWith"){if(!D.data.startsWith(J.value))X=this._getOrReturnCtx(D,X),g(X,{code:w.invalid_string,validation:{startsWith:J.value},message:J.message}),F.dirty()}else if(J.kind==="endsWith"){if(!D.data.endsWith(J.value))X=this._getOrReturnCtx(D,X),g(X,{code:w.invalid_string,validation:{endsWith:J.value},message:J.message}),F.dirty()}else if(J.kind==="datetime"){if(!TH(J).test(D.data))X=this._getOrReturnCtx(D,X),g(X,{code:w.invalid_string,validation:"datetime",message:J.message}),F.dirty()}else if(J.kind==="date"){if(!nP.test(D.data))X=this._getOrReturnCtx(D,X),g(X,{code:w.invalid_string,validation:"date",message:J.message}),F.dirty()}else if(J.kind==="time"){if(!sP(J).test(D.data))X=this._getOrReturnCtx(D,X),g(X,{code:w.invalid_string,validation:"time",message:J.message}),F.dirty()}else if(J.kind==="duration"){if(!gP.test(D.data))X=this._getOrReturnCtx(D,X),g(X,{validation:"duration",code:w.invalid_string,message:J.message}),F.dirty()}else if(J.kind==="ip"){if(!rP(D.data,J.version))X=this._getOrReturnCtx(D,X),g(X,{validation:"ip",code:w.invalid_string,message:J.message}),F.dirty()}else if(J.kind==="jwt"){if(!oP(D.data,J.alg))X=this._getOrReturnCtx(D,X),g(X,{validation:"jwt",code:w.invalid_string,message:J.message}),F.dirty()}else if(J.kind==="cidr"){if(!aP(D.data,J.version))X=this._getOrReturnCtx(D,X),g(X,{validation:"cidr",code:w.invalid_string,message:J.message}),F.dirty()}else if(J.kind==="base64"){if(!lP.test(D.data))X=this._getOrReturnCtx(D,X),g(X,{validation:"base64",code:w.invalid_string,message:J.message}),F.dirty()}else if(J.kind==="base64url"){if(!iP.test(D.data))X=this._getOrReturnCtx(D,X),g(X,{validation:"base64url",code:w.invalid_string,message:J.message}),F.dirty()}else HD.assertNever(J);return{status:F.value,value:D.data}}_regex(D,$,F){return this.refinement((X)=>D.test(X),{validation:$,code:w.invalid_string,...p.errToObj(F)})}_addCheck(D){return new F2({...this._def,checks:[...this._def.checks,D]})}email(D){return this._addCheck({kind:"email",...p.errToObj(D)})}url(D){return this._addCheck({kind:"url",...p.errToObj(D)})}emoji(D){return this._addCheck({kind:"emoji",...p.errToObj(D)})}uuid(D){return this._addCheck({kind:"uuid",...p.errToObj(D)})}nanoid(D){return this._addCheck({kind:"nanoid",...p.errToObj(D)})}cuid(D){return this._addCheck({kind:"cuid",...p.errToObj(D)})}cuid2(D){return this._addCheck({kind:"cuid2",...p.errToObj(D)})}ulid(D){return this._addCheck({kind:"ulid",...p.errToObj(D)})}base64(D){return this._addCheck({kind:"base64",...p.errToObj(D)})}base64url(D){return this._addCheck({kind:"base64url",...p.errToObj(D)})}jwt(D){return this._addCheck({kind:"jwt",...p.errToObj(D)})}ip(D){return this._addCheck({kind:"ip",...p.errToObj(D)})}cidr(D){return this._addCheck({kind:"cidr",...p.errToObj(D)})}datetime(D){if(typeof D==="string")return this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:D});return this._addCheck({kind:"datetime",precision:typeof D?.precision>"u"?null:D?.precision,offset:D?.offset??!1,local:D?.local??!1,...p.errToObj(D?.message)})}date(D){return this._addCheck({kind:"date",message:D})}time(D){if(typeof D==="string")return this._addCheck({kind:"time",precision:null,message:D});return this._addCheck({kind:"time",precision:typeof D?.precision>"u"?null:D?.precision,...p.errToObj(D?.message)})}duration(D){return this._addCheck({kind:"duration",...p.errToObj(D)})}regex(D,$){return this._addCheck({kind:"regex",regex:D,...p.errToObj($)})}includes(D,$){return this._addCheck({kind:"includes",value:D,position:$?.position,...p.errToObj($?.message)})}startsWith(D,$){return this._addCheck({kind:"startsWith",value:D,...p.errToObj($)})}endsWith(D,$){return this._addCheck({kind:"endsWith",value:D,...p.errToObj($)})}min(D,$){return this._addCheck({kind:"min",value:D,...p.errToObj($)})}max(D,$){return this._addCheck({kind:"max",value:D,...p.errToObj($)})}length(D,$){return this._addCheck({kind:"length",value:D,...p.errToObj($)})}nonempty(D){return this.min(1,p.errToObj(D))}trim(){return new F2({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new F2({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new F2({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find((D)=>D.kind==="datetime")}get isDate(){return!!this._def.checks.find((D)=>D.kind==="date")}get isTime(){return!!this._def.checks.find((D)=>D.kind==="time")}get isDuration(){return!!this._def.checks.find((D)=>D.kind==="duration")}get isEmail(){return!!this._def.checks.find((D)=>D.kind==="email")}get isURL(){return!!this._def.checks.find((D)=>D.kind==="url")}get isEmoji(){return!!this._def.checks.find((D)=>D.kind==="emoji")}get isUUID(){return!!this._def.checks.find((D)=>D.kind==="uuid")}get isNANOID(){return!!this._def.checks.find((D)=>D.kind==="nanoid")}get isCUID(){return!!this._def.checks.find((D)=>D.kind==="cuid")}get isCUID2(){return!!this._def.checks.find((D)=>D.kind==="cuid2")}get isULID(){return!!this._def.checks.find((D)=>D.kind==="ulid")}get isIP(){return!!this._def.checks.find((D)=>D.kind==="ip")}get isCIDR(){return!!this._def.checks.find((D)=>D.kind==="cidr")}get isBase64(){return!!this._def.checks.find((D)=>D.kind==="base64")}get isBase64url(){return!!this._def.checks.find((D)=>D.kind==="base64url")}get minLength(){let D=null;for(let $ of this._def.checks)if($.kind==="min"){if(D===null||$.value>D)D=$.value}return D}get maxLength(){let D=null;for(let $ of this._def.checks)if($.kind==="max"){if(D===null||$.value<D)D=$.value}return D}};F2.create=(D)=>{return new F2({checks:[],typeName:r.ZodString,coerce:D?.coerce??!1,...FD(D)})};_8=class _8 extends YD{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(D){if(this._def.coerce)D.data=Number(D.data);if(this._getType(D)!==h.number){let J=this._getOrReturnCtx(D);return g(J,{code:w.invalid_type,expected:h.number,received:J.parsedType}),n}let F=void 0,X=new Y0;for(let J of this._def.checks)if(J.kind==="int"){if(!HD.isInteger(D.data))F=this._getOrReturnCtx(D,F),g(F,{code:w.invalid_type,expected:"integer",received:"float",message:J.message}),X.dirty()}else if(J.kind==="min"){if(J.inclusive?D.data<J.value:D.data<=J.value)F=this._getOrReturnCtx(D,F),g(F,{code:w.too_small,minimum:J.value,type:"number",inclusive:J.inclusive,exact:!1,message:J.message}),X.dirty()}else if(J.kind==="max"){if(J.inclusive?D.data>J.value:D.data>=J.value)F=this._getOrReturnCtx(D,F),g(F,{code:w.too_big,maximum:J.value,type:"number",inclusive:J.inclusive,exact:!1,message:J.message}),X.dirty()}else if(J.kind==="multipleOf"){if(tP(D.data,J.value)!==0)F=this._getOrReturnCtx(D,F),g(F,{code:w.not_multiple_of,multipleOf:J.value,message:J.message}),X.dirty()}else if(J.kind==="finite"){if(!Number.isFinite(D.data))F=this._getOrReturnCtx(D,F),g(F,{code:w.not_finite,message:J.message}),X.dirty()}else HD.assertNever(J);return{status:X.value,value:D.data}}gte(D,$){return this.setLimit("min",D,!0,p.toString($))}gt(D,$){return this.setLimit("min",D,!1,p.toString($))}lte(D,$){return this.setLimit("max",D,!0,p.toString($))}lt(D,$){return this.setLimit("max",D,!1,p.toString($))}setLimit(D,$,F,X){return new _8({...this._def,checks:[...this._def.checks,{kind:D,value:$,inclusive:F,message:p.toString(X)}]})}_addCheck(D){return new _8({...this._def,checks:[...this._def.checks,D]})}int(D){return this._addCheck({kind:"int",message:p.toString(D)})}positive(D){return this._addCheck({kind:"min",value:0,inclusive:!1,message:p.toString(D)})}negative(D){return this._addCheck({kind:"max",value:0,inclusive:!1,message:p.toString(D)})}nonpositive(D){return this._addCheck({kind:"max",value:0,inclusive:!0,message:p.toString(D)})}nonnegative(D){return this._addCheck({kind:"min",value:0,inclusive:!0,message:p.toString(D)})}multipleOf(D,$){return this._addCheck({kind:"multipleOf",value:D,message:p.toString($)})}finite(D){return this._addCheck({kind:"finite",message:p.toString(D)})}safe(D){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:p.toString(D)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:p.toString(D)})}get minValue(){let D=null;for(let $ of this._def.checks)if($.kind==="min"){if(D===null||$.value>D)D=$.value}return D}get maxValue(){let D=null;for(let $ of this._def.checks)if($.kind==="max"){if(D===null||$.value<D)D=$.value}return D}get isInt(){return!!this._def.checks.find((D)=>D.kind==="int"||D.kind==="multipleOf"&&HD.isInteger(D.value))}get isFinite(){let D=null,$=null;for(let F of this._def.checks)if(F.kind==="finite"||F.kind==="int"||F.kind==="multipleOf")return!0;else if(F.kind==="min"){if($===null||F.value>$)$=F.value}else if(F.kind==="max"){if(D===null||F.value<D)D=F.value}return Number.isFinite($)&&Number.isFinite(D)}};_8.create=(D)=>{return new _8({checks:[],typeName:r.ZodNumber,coerce:D?.coerce||!1,...FD(D)})};A8=class A8 extends YD{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte}_parse(D){if(this._def.coerce)try{D.data=BigInt(D.data)}catch{return this._getInvalidInput(D)}if(this._getType(D)!==h.bigint)return this._getInvalidInput(D);let F=void 0,X=new Y0;for(let J of this._def.checks)if(J.kind==="min"){if(J.inclusive?D.data<J.value:D.data<=J.value)F=this._getOrReturnCtx(D,F),g(F,{code:w.too_small,type:"bigint",minimum:J.value,inclusive:J.inclusive,message:J.message}),X.dirty()}else if(J.kind==="max"){if(J.inclusive?D.data>J.value:D.data>=J.value)F=this._getOrReturnCtx(D,F),g(F,{code:w.too_big,type:"bigint",maximum:J.value,inclusive:J.inclusive,message:J.message}),X.dirty()}else if(J.kind==="multipleOf"){if(D.data%J.value!==BigInt(0))F=this._getOrReturnCtx(D,F),g(F,{code:w.not_multiple_of,multipleOf:J.value,message:J.message}),X.dirty()}else HD.assertNever(J);return{status:X.value,value:D.data}}_getInvalidInput(D){let $=this._getOrReturnCtx(D);return g($,{code:w.invalid_type,expected:h.bigint,received:$.parsedType}),n}gte(D,$){return this.setLimit("min",D,!0,p.toString($))}gt(D,$){return this.setLimit("min",D,!1,p.toString($))}lte(D,$){return this.setLimit("max",D,!0,p.toString($))}lt(D,$){return this.setLimit("max",D,!1,p.toString($))}setLimit(D,$,F,X){return new A8({...this._def,checks:[...this._def.checks,{kind:D,value:$,inclusive:F,message:p.toString(X)}]})}_addCheck(D){return new A8({...this._def,checks:[...this._def.checks,D]})}positive(D){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:p.toString(D)})}negative(D){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:p.toString(D)})}nonpositive(D){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:p.toString(D)})}nonnegative(D){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:p.toString(D)})}multipleOf(D,$){return this._addCheck({kind:"multipleOf",value:D,message:p.toString($)})}get minValue(){let D=null;for(let $ of this._def.checks)if($.kind==="min"){if(D===null||$.value>D)D=$.value}return D}get maxValue(){let D=null;for(let $ of this._def.checks)if($.kind==="max"){if(D===null||$.value<D)D=$.value}return D}};A8.create=(D)=>{return new A8({checks:[],typeName:r.ZodBigInt,coerce:D?.coerce??!1,...FD(D)})};l1=class l1 extends YD{_parse(D){if(this._def.coerce)D.data=Boolean(D.data);if(this._getType(D)!==h.boolean){let F=this._getOrReturnCtx(D);return g(F,{code:w.invalid_type,expected:h.boolean,received:F.parsedType}),n}return W0(D.data)}};l1.create=(D)=>{return new l1({typeName:r.ZodBoolean,coerce:D?.coerce||!1,...FD(D)})};n8=class n8 extends YD{_parse(D){if(this._def.coerce)D.data=new Date(D.data);if(this._getType(D)!==h.date){let J=this._getOrReturnCtx(D);return g(J,{code:w.invalid_type,expected:h.date,received:J.parsedType}),n}if(Number.isNaN(D.data.getTime())){let J=this._getOrReturnCtx(D);return g(J,{code:w.invalid_date}),n}let F=new Y0,X=void 0;for(let J of this._def.checks)if(J.kind==="min"){if(D.data.getTime()<J.value)X=this._getOrReturnCtx(D,X),g(X,{code:w.too_small,message:J.message,inclusive:!0,exact:!1,minimum:J.value,type:"date"}),F.dirty()}else if(J.kind==="max"){if(D.data.getTime()>J.value)X=this._getOrReturnCtx(D,X),g(X,{code:w.too_big,message:J.message,inclusive:!0,exact:!1,maximum:J.value,type:"date"}),F.dirty()}else HD.assertNever(J);return{status:F.value,value:new Date(D.data.getTime())}}_addCheck(D){return new n8({...this._def,checks:[...this._def.checks,D]})}min(D,$){return this._addCheck({kind:"min",value:D.getTime(),message:p.toString($)})}max(D,$){return this._addCheck({kind:"max",value:D.getTime(),message:p.toString($)})}get minDate(){let D=null;for(let $ of this._def.checks)if($.kind==="min"){if(D===null||$.value>D)D=$.value}return D!=null?new Date(D):null}get maxDate(){let D=null;for(let $ of this._def.checks)if($.kind==="max"){if(D===null||$.value<D)D=$.value}return D!=null?new Date(D):null}};n8.create=(D)=>{return new n8({checks:[],coerce:D?.coerce||!1,typeName:r.ZodDate,...FD(D)})};Q3=class Q3 extends YD{_parse(D){if(this._getType(D)!==h.symbol){let F=this._getOrReturnCtx(D);return g(F,{code:w.invalid_type,expected:h.symbol,received:F.parsedType}),n}return W0(D.data)}};Q3.create=(D)=>{return new Q3({typeName:r.ZodSymbol,...FD(D)})};i1=class i1 extends YD{_parse(D){if(this._getType(D)!==h.undefined){let F=this._getOrReturnCtx(D);return g(F,{code:w.invalid_type,expected:h.undefined,received:F.parsedType}),n}return W0(D.data)}};i1.create=(D)=>{return new i1({typeName:r.ZodUndefined,...FD(D)})};n1=class n1 extends YD{_parse(D){if(this._getType(D)!==h.null){let F=this._getOrReturnCtx(D);return g(F,{code:w.invalid_type,expected:h.null,received:F.parsedType}),n}return W0(D.data)}};n1.create=(D)=>{return new n1({typeName:r.ZodNull,...FD(D)})};s8=class s8 extends YD{constructor(){super(...arguments);this._any=!0}_parse(D){return W0(D.data)}};s8.create=(D)=>{return new s8({typeName:r.ZodAny,...FD(D)})};U8=class U8 extends YD{constructor(){super(...arguments);this._unknown=!0}_parse(D){return W0(D.data)}};U8.create=(D)=>{return new U8({typeName:r.ZodUnknown,...FD(D)})};T2=class T2 extends YD{_parse(D){let $=this._getOrReturnCtx(D);return g($,{code:w.invalid_type,expected:h.never,received:$.parsedType}),n}};T2.create=(D)=>{return new T2({typeName:r.ZodNever,...FD(D)})};U3=class U3 extends YD{_parse(D){if(this._getType(D)!==h.undefined){let F=this._getOrReturnCtx(D);return g(F,{code:w.invalid_type,expected:h.void,received:F.parsedType}),n}return W0(D.data)}};U3.create=(D)=>{return new U3({typeName:r.ZodVoid,...FD(D)})};X2=class X2 extends YD{_parse(D){let{ctx:$,status:F}=this._processInputParams(D),X=this._def;if($.parsedType!==h.array)return g($,{code:w.invalid_type,expected:h.array,received:$.parsedType}),n;if(X.exactLength!==null){let G=$.data.length>X.exactLength.value,Y=$.data.length<X.exactLength.value;if(G||Y)g($,{code:G?w.too_big:w.too_small,minimum:Y?X.exactLength.value:void 0,maximum:G?X.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:X.exactLength.message}),F.dirty()}if(X.minLength!==null){if($.data.length<X.minLength.value)g($,{code:w.too_small,minimum:X.minLength.value,type:"array",inclusive:!0,exact:!1,message:X.minLength.message}),F.dirty()}if(X.maxLength!==null){if($.data.length>X.maxLength.value)g($,{code:w.too_big,maximum:X.maxLength.value,type:"array",inclusive:!0,exact:!1,message:X.maxLength.message}),F.dirty()}if($.common.async)return Promise.all([...$.data].map((G,Y)=>{return X.type._parseAsync(new Y2($,G,$.path,Y))})).then((G)=>{return Y0.mergeArray(F,G)});let J=[...$.data].map((G,Y)=>{return X.type._parseSync(new Y2($,G,$.path,Y))});return Y0.mergeArray(F,J)}get element(){return this._def.type}min(D,$){return new X2({...this._def,minLength:{value:D,message:p.toString($)}})}max(D,$){return new X2({...this._def,maxLength:{value:D,message:p.toString($)}})}length(D,$){return new X2({...this._def,exactLength:{value:D,message:p.toString($)}})}nonempty(D){return this.min(1,D)}};X2.create=(D,$)=>{return new X2({type:D,minLength:null,maxLength:null,exactLength:null,typeName:r.ZodArray,...FD($)})};bD=class bD extends YD{constructor(){super(...arguments);this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let D=this._def.shape(),$=HD.objectKeys(D);return this._cached={shape:D,keys:$},this._cached}_parse(D){if(this._getType(D)!==h.object){let H=this._getOrReturnCtx(D);return g(H,{code:w.invalid_type,expected:h.object,received:H.parsedType}),n}let{status:F,ctx:X}=this._processInputParams(D),{shape:J,keys:G}=this._getCached(),Y=[];if(!(this._def.catchall instanceof T2&&this._def.unknownKeys==="strip")){for(let H in X.data)if(!G.includes(H))Y.push(H)}let B=[];for(let H of G){let W=J[H],Q=X.data[H];B.push({key:{status:"valid",value:H},value:W._parse(new Y2(X,Q,X.path,H)),alwaysSet:H in X.data})}if(this._def.catchall instanceof T2){let H=this._def.unknownKeys;if(H==="passthrough")for(let W of Y)B.push({key:{status:"valid",value:W},value:{status:"valid",value:X.data[W]}});else if(H==="strict"){if(Y.length>0)g(X,{code:w.unrecognized_keys,keys:Y}),F.dirty()}else if(H==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let H=this._def.catchall;for(let W of Y){let Q=X.data[W];B.push({key:{status:"valid",value:W},value:H._parse(new Y2(X,Q,X.path,W)),alwaysSet:W in X.data})}}if(X.common.async)return Promise.resolve().then(async()=>{let H=[];for(let W of B){let Q=await W.key,U=await W.value;H.push({key:Q,value:U,alwaysSet:W.alwaysSet})}return H}).then((H)=>{return Y0.mergeObjectSync(F,H)});else return Y0.mergeObjectSync(F,B)}get shape(){return this._def.shape()}strict(D){return p.errToObj,new bD({...this._def,unknownKeys:"strict",...D!==void 0?{errorMap:($,F)=>{let X=this._def.errorMap?.($,F).message??F.defaultError;if($.code==="unrecognized_keys")return{message:p.errToObj(D).message??X};return{message:X}}}:{}})}strip(){return new bD({...this._def,unknownKeys:"strip"})}passthrough(){return new bD({...this._def,unknownKeys:"passthrough"})}extend(D){return new bD({...this._def,shape:()=>({...this._def.shape(),...D})})}merge(D){return new bD({unknownKeys:D._def.unknownKeys,catchall:D._def.catchall,shape:()=>({...this._def.shape(),...D._def.shape()}),typeName:r.ZodObject})}setKey(D,$){return this.augment({[D]:$})}catchall(D){return new bD({...this._def,catchall:D})}pick(D){let $={};for(let F of HD.objectKeys(D))if(D[F]&&this.shape[F])$[F]=this.shape[F];return new bD({...this._def,shape:()=>$})}omit(D){let $={};for(let F of HD.objectKeys(this.shape))if(!D[F])$[F]=this.shape[F];return new bD({...this._def,shape:()=>$})}deepPartial(){return c1(this)}partial(D){let $={};for(let F of HD.objectKeys(this.shape)){let X=this.shape[F];if(D&&!D[F])$[F]=X;else $[F]=X.optional()}return new bD({...this._def,shape:()=>$})}required(D){let $={};for(let F of HD.objectKeys(this.shape))if(D&&!D[F])$[F]=this.shape[F];else{let J=this.shape[F];while(J instanceof J2)J=J._def.innerType;$[F]=J}return new bD({...this._def,shape:()=>$})}keyof(){return wH(HD.objectKeys(this.shape))}};bD.create=(D,$)=>{return new bD({shape:()=>D,unknownKeys:"strip",catchall:T2.create(),typeName:r.ZodObject,...FD($)})};bD.strictCreate=(D,$)=>{return new bD({shape:()=>D,unknownKeys:"strict",catchall:T2.create(),typeName:r.ZodObject,...FD($)})};bD.lazycreate=(D,$)=>{return new bD({shape:D,unknownKeys:"strip",catchall:T2.create(),typeName:r.ZodObject,...FD($)})};s1=class s1 extends YD{_parse(D){let{ctx:$}=this._processInputParams(D),F=this._def.options;function X(J){for(let Y of J)if(Y.result.status==="valid")return Y.result;for(let Y of J)if(Y.result.status==="dirty")return $.common.issues.push(...Y.ctx.common.issues),Y.result;let G=J.map((Y)=>new M0(Y.ctx.common.issues));return g($,{code:w.invalid_union,unionErrors:G}),n}if($.common.async)return Promise.all(F.map(async(J)=>{let G={...$,common:{...$.common,issues:[]},parent:null};return{result:await J._parseAsync({data:$.data,path:$.path,parent:G}),ctx:G}})).then(X);else{let J=void 0,G=[];for(let B of F){let H={...$,common:{...$.common,issues:[]},parent:null},W=B._parseSync({data:$.data,path:$.path,parent:H});if(W.status==="valid")return W;else if(W.status==="dirty"&&!J)J={result:W,ctx:H};if(H.common.issues.length)G.push(H.common.issues)}if(J)return $.common.issues.push(...J.ctx.common.issues),J.result;let Y=G.map((B)=>new M0(B));return g($,{code:w.invalid_union,unionErrors:Y}),n}}get options(){return this._def.options}};s1.create=(D,$)=>{return new s1({options:D,typeName:r.ZodUnion,...FD($)})};N7=class N7 extends YD{_parse(D){let{ctx:$}=this._processInputParams(D);if($.parsedType!==h.object)return g($,{code:w.invalid_type,expected:h.object,received:$.parsedType}),n;let F=this.discriminator,X=$.data[F],J=this.optionsMap.get(X);if(!J)return g($,{code:w.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[F]}),n;if($.common.async)return J._parseAsync({data:$.data,path:$.path,parent:$});else return J._parseSync({data:$.data,path:$.path,parent:$})}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(D,$,F){let X=new Map;for(let J of $){let G=p2(J.shape[D]);if(!G.length)throw Error(`A discriminator value for key \`${D}\` could not be extracted from all schema options`);for(let Y of G){if(X.has(Y))throw Error(`Discriminator property ${String(D)} has duplicate value ${String(Y)}`);X.set(Y,J)}}return new N7({typeName:r.ZodDiscriminatedUnion,discriminator:D,options:$,optionsMap:X,...FD(F)})}};r1=class r1 extends YD{_parse(D){let{status:$,ctx:F}=this._processInputParams(D),X=(J,G)=>{if(Z7(J)||Z7(G))return n;let Y=BF(J.value,G.value);if(!Y.valid)return g(F,{code:w.invalid_intersection_types}),n;if(q7(J)||q7(G))$.dirty();return{status:$.value,value:Y.data}};if(F.common.async)return Promise.all([this._def.left._parseAsync({data:F.data,path:F.path,parent:F}),this._def.right._parseAsync({data:F.data,path:F.path,parent:F})]).then(([J,G])=>X(J,G));else return X(this._def.left._parseSync({data:F.data,path:F.path,parent:F}),this._def.right._parseSync({data:F.data,path:F.path,parent:F}))}};r1.create=(D,$,F)=>{return new r1({left:D,right:$,typeName:r.ZodIntersection,...FD(F)})};w2=class w2 extends YD{_parse(D){let{status:$,ctx:F}=this._processInputParams(D);if(F.parsedType!==h.array)return g(F,{code:w.invalid_type,expected:h.array,received:F.parsedType}),n;if(F.data.length<this._def.items.length)return g(F,{code:w.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n;if(!this._def.rest&&F.data.length>this._def.items.length)g(F,{code:w.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),$.dirty();let J=[...F.data].map((G,Y)=>{let B=this._def.items[Y]||this._def.rest;if(!B)return null;return B._parse(new Y2(F,G,F.path,Y))}).filter((G)=>!!G);if(F.common.async)return Promise.all(J).then((G)=>{return Y0.mergeArray($,G)});else return Y0.mergeArray($,J)}get items(){return this._def.items}rest(D){return new w2({...this._def,rest:D})}};w2.create=(D,$)=>{if(!Array.isArray(D))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new w2({items:D,typeName:r.ZodTuple,rest:null,...FD($)})};_3=class _3 extends YD{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(D){let{status:$,ctx:F}=this._processInputParams(D);if(F.parsedType!==h.object)return g(F,{code:w.invalid_type,expected:h.object,received:F.parsedType}),n;let X=[],J=this._def.keyType,G=this._def.valueType;for(let Y in F.data)X.push({key:J._parse(new Y2(F,Y,F.path,Y)),value:G._parse(new Y2(F,F.data[Y],F.path,Y)),alwaysSet:Y in F.data});if(F.common.async)return Y0.mergeObjectAsync($,X);else return Y0.mergeObjectSync($,X)}get element(){return this._def.valueType}static create(D,$,F){if($ instanceof YD)return new _3({keyType:D,valueType:$,typeName:r.ZodRecord,...FD(F)});return new _3({keyType:F2.create(),valueType:D,typeName:r.ZodRecord,...FD($)})}};A3=class A3 extends YD{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(D){let{status:$,ctx:F}=this._processInputParams(D);if(F.parsedType!==h.map)return g(F,{code:w.invalid_type,expected:h.map,received:F.parsedType}),n;let X=this._def.keyType,J=this._def.valueType,G=[...F.data.entries()].map(([Y,B],H)=>{return{key:X._parse(new Y2(F,Y,F.path,[H,"key"])),value:J._parse(new Y2(F,B,F.path,[H,"value"]))}});if(F.common.async){let Y=new Map;return Promise.resolve().then(async()=>{for(let B of G){let H=await B.key,W=await B.value;if(H.status==="aborted"||W.status==="aborted")return n;if(H.status==="dirty"||W.status==="dirty")$.dirty();Y.set(H.value,W.value)}return{status:$.value,value:Y}})}else{let Y=new Map;for(let B of G){let{key:H,value:W}=B;if(H.status==="aborted"||W.status==="aborted")return n;if(H.status==="dirty"||W.status==="dirty")$.dirty();Y.set(H.value,W.value)}return{status:$.value,value:Y}}}};A3.create=(D,$,F)=>{return new A3({valueType:$,keyType:D,typeName:r.ZodMap,...FD(F)})};r8=class r8 extends YD{_parse(D){let{status:$,ctx:F}=this._processInputParams(D);if(F.parsedType!==h.set)return g(F,{code:w.invalid_type,expected:h.set,received:F.parsedType}),n;let X=this._def;if(X.minSize!==null){if(F.data.size<X.minSize.value)g(F,{code:w.too_small,minimum:X.minSize.value,type:"set",inclusive:!0,exact:!1,message:X.minSize.message}),$.dirty()}if(X.maxSize!==null){if(F.data.size>X.maxSize.value)g(F,{code:w.too_big,maximum:X.maxSize.value,type:"set",inclusive:!0,exact:!1,message:X.maxSize.message}),$.dirty()}let J=this._def.valueType;function G(B){let H=new Set;for(let W of B){if(W.status==="aborted")return n;if(W.status==="dirty")$.dirty();H.add(W.value)}return{status:$.value,value:H}}let Y=[...F.data.values()].map((B,H)=>J._parse(new Y2(F,B,F.path,H)));if(F.common.async)return Promise.all(Y).then((B)=>G(B));else return G(Y)}min(D,$){return new r8({...this._def,minSize:{value:D,message:p.toString($)}})}max(D,$){return new r8({...this._def,maxSize:{value:D,message:p.toString($)}})}size(D,$){return this.min(D,$).max(D,$)}nonempty(D){return this.min(1,D)}};r8.create=(D,$)=>{return new r8({valueType:D,minSize:null,maxSize:null,typeName:r.ZodSet,...FD($)})};d1=class d1 extends YD{constructor(){super(...arguments);this.validate=this.implement}_parse(D){let{ctx:$}=this._processInputParams(D);if($.parsedType!==h.function)return g($,{code:w.invalid_type,expected:h.function,received:$.parsedType}),n;function F(Y,B){return V3({data:Y,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,m1(),m2].filter((H)=>!!H),issueData:{code:w.invalid_arguments,argumentsError:B}})}function X(Y,B){return V3({data:Y,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,m1(),m2].filter((H)=>!!H),issueData:{code:w.invalid_return_type,returnTypeError:B}})}let J={errorMap:$.common.contextualErrorMap},G=$.data;if(this._def.returns instanceof o8){let Y=this;return W0(async function(...B){let H=new M0([]),W=await Y._def.args.parseAsync(B,J).catch((_)=>{throw H.addIssue(F(B,_)),H}),Q=await Reflect.apply(G,this,W);return await Y._def.returns._def.type.parseAsync(Q,J).catch((_)=>{throw H.addIssue(X(Q,_)),H})})}else{let Y=this;return W0(function(...B){let H=Y._def.args.safeParse(B,J);if(!H.success)throw new M0([F(B,H.error)]);let W=Reflect.apply(G,this,H.data),Q=Y._def.returns.safeParse(W,J);if(!Q.success)throw new M0([X(W,Q.error)]);return Q.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...D){return new d1({...this._def,args:w2.create(D).rest(U8.create())})}returns(D){return new d1({...this._def,returns:D})}implement(D){return this.parse(D)}strictImplement(D){return this.parse(D)}static create(D,$,F){return new d1({args:D?D:w2.create([]).rest(U8.create()),returns:$||U8.create(),typeName:r.ZodFunction,...FD(F)})}};o1=class o1 extends YD{get schema(){return this._def.getter()}_parse(D){let{ctx:$}=this._processInputParams(D);return this._def.getter()._parse({data:$.data,path:$.path,parent:$})}};o1.create=(D,$)=>{return new o1({getter:D,typeName:r.ZodLazy,...FD($)})};a1=class a1 extends YD{_parse(D){if(D.data!==this._def.value){let $=this._getOrReturnCtx(D);return g($,{received:$.data,code:w.invalid_literal,expected:this._def.value}),n}return{status:"valid",value:D.data}}get value(){return this._def.value}};a1.create=(D,$)=>{return new a1({value:D,typeName:r.ZodLiteral,...FD($)})};K8=class K8 extends YD{_parse(D){if(typeof D.data!=="string"){let $=this._getOrReturnCtx(D),F=this._def.values;return g($,{expected:HD.joinValues(F),received:$.parsedType,code:w.invalid_type}),n}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has(D.data)){let $=this._getOrReturnCtx(D),F=this._def.values;return g($,{received:$.data,code:w.invalid_enum_value,options:F}),n}return W0(D.data)}get options(){return this._def.values}get enum(){let D={};for(let $ of this._def.values)D[$]=$;return D}get Values(){let D={};for(let $ of this._def.values)D[$]=$;return D}get Enum(){let D={};for(let $ of this._def.values)D[$]=$;return D}extract(D,$=this._def){return K8.create(D,{...this._def,...$})}exclude(D,$=this._def){return K8.create(this.options.filter((F)=>!D.includes(F)),{...this._def,...$})}};K8.create=wH;t1=class t1 extends YD{_parse(D){let $=HD.getValidEnumValues(this._def.values),F=this._getOrReturnCtx(D);if(F.parsedType!==h.string&&F.parsedType!==h.number){let X=HD.objectValues($);return g(F,{expected:HD.joinValues(X),received:F.parsedType,code:w.invalid_type}),n}if(!this._cache)this._cache=new Set(HD.getValidEnumValues(this._def.values));if(!this._cache.has(D.data)){let X=HD.objectValues($);return g(F,{received:F.data,code:w.invalid_enum_value,options:X}),n}return W0(D.data)}get enum(){return this._def.values}};t1.create=(D,$)=>{return new t1({values:D,typeName:r.ZodNativeEnum,...FD($)})};o8=class o8 extends YD{unwrap(){return this._def.type}_parse(D){let{ctx:$}=this._processInputParams(D);if($.parsedType!==h.promise&&$.common.async===!1)return g($,{code:w.invalid_type,expected:h.promise,received:$.parsedType}),n;let F=$.parsedType===h.promise?$.data:Promise.resolve($.data);return W0(F.then((X)=>{return this._def.type.parseAsync(X,{path:$.path,errorMap:$.common.contextualErrorMap})}))}};o8.create=(D,$)=>{return new o8({type:D,typeName:r.ZodPromise,...FD($)})};G2=class G2 extends YD{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===r.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(D){let{status:$,ctx:F}=this._processInputParams(D),X=this._def.effect||null,J={addIssue:(G)=>{if(g(F,G),G.fatal)$.abort();else $.dirty()},get path(){return F.path}};if(J.addIssue=J.addIssue.bind(J),X.type==="preprocess"){let G=X.transform(F.data,J);if(F.common.async)return Promise.resolve(G).then(async(Y)=>{if($.value==="aborted")return n;let B=await this._def.schema._parseAsync({data:Y,path:F.path,parent:F});if(B.status==="aborted")return n;if(B.status==="dirty")return i8(B.value);if($.value==="dirty")return i8(B.value);return B});else{if($.value==="aborted")return n;let Y=this._def.schema._parseSync({data:G,path:F.path,parent:F});if(Y.status==="aborted")return n;if(Y.status==="dirty")return i8(Y.value);if($.value==="dirty")return i8(Y.value);return Y}}if(X.type==="refinement"){let G=(Y)=>{let B=X.refinement(Y,J);if(F.common.async)return Promise.resolve(B);if(B instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return Y};if(F.common.async===!1){let Y=this._def.schema._parseSync({data:F.data,path:F.path,parent:F});if(Y.status==="aborted")return n;if(Y.status==="dirty")$.dirty();return G(Y.value),{status:$.value,value:Y.value}}else return this._def.schema._parseAsync({data:F.data,path:F.path,parent:F}).then((Y)=>{if(Y.status==="aborted")return n;if(Y.status==="dirty")$.dirty();return G(Y.value).then(()=>{return{status:$.value,value:Y.value}})})}if(X.type==="transform")if(F.common.async===!1){let G=this._def.schema._parseSync({data:F.data,path:F.path,parent:F});if(!Q8(G))return n;let Y=X.transform(G.value,J);if(Y instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:$.value,value:Y}}else return this._def.schema._parseAsync({data:F.data,path:F.path,parent:F}).then((G)=>{if(!Q8(G))return n;return Promise.resolve(X.transform(G.value,J)).then((Y)=>({status:$.value,value:Y}))});HD.assertNever(X)}};G2.create=(D,$,F)=>{return new G2({schema:D,typeName:r.ZodEffects,effect:$,...FD(F)})};G2.createWithPreprocess=(D,$,F)=>{return new G2({schema:$,effect:{type:"preprocess",transform:D},typeName:r.ZodEffects,...FD(F)})};J2=class J2 extends YD{_parse(D){if(this._getType(D)===h.undefined)return W0(void 0);return this._def.innerType._parse(D)}unwrap(){return this._def.innerType}};J2.create=(D,$)=>{return new J2({innerType:D,typeName:r.ZodOptional,...FD($)})};c2=class c2 extends YD{_parse(D){if(this._getType(D)===h.null)return W0(null);return this._def.innerType._parse(D)}unwrap(){return this._def.innerType}};c2.create=(D,$)=>{return new c2({innerType:D,typeName:r.ZodNullable,...FD($)})};e1=class e1 extends YD{_parse(D){let{ctx:$}=this._processInputParams(D),F=$.data;if($.parsedType===h.undefined)F=this._def.defaultValue();return this._def.innerType._parse({data:F,path:$.path,parent:$})}removeDefault(){return this._def.innerType}};e1.create=(D,$)=>{return new e1({innerType:D,typeName:r.ZodDefault,defaultValue:typeof $.default==="function"?$.default:()=>$.default,...FD($)})};D6=class D6 extends YD{_parse(D){let{ctx:$}=this._processInputParams(D),F={...$,common:{...$.common,issues:[]}},X=this._def.innerType._parse({data:F.data,path:F.path,parent:{...F}});if(p1(X))return X.then((J)=>{return{status:"valid",value:J.status==="valid"?J.value:this._def.catchValue({get error(){return new M0(F.common.issues)},input:F.data})}});else return{status:"valid",value:X.status==="valid"?X.value:this._def.catchValue({get error(){return new M0(F.common.issues)},input:F.data})}}removeCatch(){return this._def.innerType}};D6.create=(D,$)=>{return new D6({innerType:D,typeName:r.ZodCatch,catchValue:typeof $.catch==="function"?$.catch:()=>$.catch,...FD($)})};K3=class K3 extends YD{_parse(D){if(this._getType(D)!==h.nan){let F=this._getOrReturnCtx(D);return g(F,{code:w.invalid_type,expected:h.nan,received:F.parsedType}),n}return{status:"valid",value:D.data}}};K3.create=(D)=>{return new K3({typeName:r.ZodNaN,...FD(D)})};eP=Symbol("zod_brand");P7=class P7 extends YD{_parse(D){let{ctx:$}=this._processInputParams(D),F=$.data;return this._def.type._parse({data:F,path:$.path,parent:$})}unwrap(){return this._def.type}};O3=class O3 extends YD{_parse(D){let{status:$,ctx:F}=this._processInputParams(D);if(F.common.async)return(async()=>{let J=await this._def.in._parseAsync({data:F.data,path:F.path,parent:F});if(J.status==="aborted")return n;if(J.status==="dirty")return $.dirty(),i8(J.value);else return this._def.out._parseAsync({data:J.value,path:F.path,parent:F})})();else{let X=this._def.in._parseSync({data:F.data,path:F.path,parent:F});if(X.status==="aborted")return n;if(X.status==="dirty")return $.dirty(),{status:"dirty",value:X.value};else return this._def.out._parseSync({data:X.value,path:F.path,parent:F})}}static create(D,$){return new O3({in:D,out:$,typeName:r.ZodPipeline})}};$6=class $6 extends YD{_parse(D){let $=this._def.innerType._parse(D),F=(X)=>{if(Q8(X))X.value=Object.freeze(X.value);return X};return p1($)?$.then((X)=>F(X)):F($)}unwrap(){return this._def.innerType}};$6.create=(D,$)=>{return new $6({innerType:D,typeName:r.ZodReadonly,...FD($)})};DL={object:bD.lazycreate};(function(D){D.ZodString="ZodString",D.ZodNumber="ZodNumber",D.ZodNaN="ZodNaN",D.ZodBigInt="ZodBigInt",D.ZodBoolean="ZodBoolean",D.ZodDate="ZodDate",D.ZodSymbol="ZodSymbol",D.ZodUndefined="ZodUndefined",D.ZodNull="ZodNull",D.ZodAny="ZodAny",D.ZodUnknown="ZodUnknown",D.ZodNever="ZodNever",D.ZodVoid="ZodVoid",D.ZodArray="ZodArray",D.ZodObject="ZodObject",D.ZodUnion="ZodUnion",D.ZodDiscriminatedUnion="ZodDiscriminatedUnion",D.ZodIntersection="ZodIntersection",D.ZodTuple="ZodTuple",D.ZodRecord="ZodRecord",D.ZodMap="ZodMap",D.ZodSet="ZodSet",D.ZodFunction="ZodFunction",D.ZodLazy="ZodLazy",D.ZodLiteral="ZodLiteral",D.ZodEnum="ZodEnum",D.ZodEffects="ZodEffects",D.ZodNativeEnum="ZodNativeEnum",D.ZodOptional="ZodOptional",D.ZodNullable="ZodNullable",D.ZodDefault="ZodDefault",D.ZodCatch="ZodCatch",D.ZodPromise="ZodPromise",D.ZodBranded="ZodBranded",D.ZodPipeline="ZodPipeline",D.ZodReadonly="ZodReadonly"})(r||(r={}));bH=F2.create,fH=_8.create,FL=K3.create,XL=A8.create,kH=l1.create,JL=n8.create,YL=Q3.create,GL=i1.create,BL=n1.create,HL=s8.create,WL=U8.create,VL=T2.create,QL=U3.create,UL=X2.create,_L=bD.create,AL=bD.strictCreate,KL=s1.create,OL=N7.create,CL=r1.create,RL=w2.create,EL=_3.create,ML=A3.create,ZL=r8.create,qL=d1.create,NL=o1.create,PL=a1.create,LL=K8.create,jL=t1.create,zL=o8.create,IL=G2.create,TL=J2.create,wL=c2.create,SL=G2.createWithPreprocess,bL=O3.create,hL={string:(D)=>F2.create({...D,coerce:!0}),number:(D)=>_8.create({...D,coerce:!0}),boolean:(D)=>l1.create({...D,coerce:!0}),bigint:(D)=>A8.create({...D,coerce:!0}),date:(D)=>n8.create({...D,coerce:!0})},xL=n});var V={};d8(V,{void:()=>QL,util:()=>HD,unknown:()=>WL,union:()=>KL,undefined:()=>GL,tuple:()=>RL,transformer:()=>IL,symbol:()=>YL,string:()=>bH,strictObject:()=>AL,setErrorMap:()=>wP,set:()=>ZL,record:()=>EL,quotelessJson:()=>IP,promise:()=>zL,preprocess:()=>SL,pipeline:()=>bL,ostring:()=>fL,optional:()=>TL,onumber:()=>kL,oboolean:()=>vL,objectUtil:()=>XF,object:()=>_L,number:()=>fH,nullable:()=>wL,null:()=>BL,never:()=>VL,nativeEnum:()=>jL,nan:()=>FL,map:()=>ML,makeIssue:()=>V3,literal:()=>PL,lazy:()=>NL,late:()=>DL,isValid:()=>Q8,isDirty:()=>q7,isAsync:()=>p1,isAborted:()=>Z7,intersection:()=>CL,instanceof:()=>$L,getParsedType:()=>I2,getErrorMap:()=>m1,function:()=>qL,enum:()=>LL,effect:()=>IL,discriminatedUnion:()=>OL,defaultErrorMap:()=>m2,datetimeRegex:()=>TH,date:()=>JL,custom:()=>SH,coerce:()=>hL,boolean:()=>kH,bigint:()=>XL,array:()=>UL,any:()=>HL,addIssueToContext:()=>g,ZodVoid:()=>U3,ZodUnknown:()=>U8,ZodUnion:()=>s1,ZodUndefined:()=>i1,ZodType:()=>YD,ZodTuple:()=>w2,ZodTransformer:()=>G2,ZodSymbol:()=>Q3,ZodString:()=>F2,ZodSet:()=>r8,ZodSchema:()=>YD,ZodRecord:()=>_3,ZodReadonly:()=>$6,ZodPromise:()=>o8,ZodPipeline:()=>O3,ZodParsedType:()=>h,ZodOptional:()=>J2,ZodObject:()=>bD,ZodNumber:()=>_8,ZodNullable:()=>c2,ZodNull:()=>n1,ZodNever:()=>T2,ZodNativeEnum:()=>t1,ZodNaN:()=>K3,ZodMap:()=>A3,ZodLiteral:()=>a1,ZodLazy:()=>o1,ZodIssueCode:()=>w,ZodIntersection:()=>r1,ZodFunction:()=>d1,ZodFirstPartyTypeKind:()=>r,ZodError:()=>M0,ZodEnum:()=>K8,ZodEffects:()=>G2,ZodDiscriminatedUnion:()=>N7,ZodDefault:()=>e1,ZodDate:()=>n8,ZodCatch:()=>D6,ZodBranded:()=>P7,ZodBoolean:()=>l1,ZodBigInt:()=>A8,ZodArray:()=>X2,ZodAny:()=>s8,Schema:()=>YD,ParseStatus:()=>Y0,OK:()=>W0,NEVER:()=>xL,INVALID:()=>n,EMPTY_PATH:()=>SP,DIRTY:()=>i8,BRAND:()=>eP});var HF=Z(()=>{M7();YF();NH();W3();vH();E7()});var yD=Z(()=>{HF();HF()});function WF(D){return Object.prototype.hasOwnProperty.call(iH,D)}var e,f0,hH,xH,gH,yH,uH,mH,pH,cH,dH,L7,j7,lH,iH;var nH=Z(()=>{yD();e={WORKER_ONLINE:"worker.online",WORKER_OFFLINE:"worker.offline",CHAT_MESSAGE:"chat.message",AGENT_THINKING:"agent.thinking",AGENT_TOOL_CALL:"agent.tool_call",AGENT_DONE:"agent.done",CONFIG_CHANGED:"config.changed",LOGS_LINE:"logs.line",APPROVAL_REQUESTED:"approval.requested",ENROLLMENT_OTP:"enrollment.otp",ENROLLMENT_APPROVED:"enrollment.approved",ENROLLMENT_PENDING:"enrollment.pending"},f0=V.object({workerId:V.string().min(1)}),hH=f0.extend({displayName:V.string().optional(),deviceId:V.string().min(1),connectedAt:V.number().int()}),xH=f0.extend({deviceId:V.string().min(1),reason:V.enum(["disconnected","expired","kicked"]).optional(),disconnectedAt:V.number().int()}),gH=f0.extend({conversationId:V.string().min(1),role:V.enum(["user","assistant","system"]),content:V.string(),createdAt:V.number().int()}),yH=f0.extend({conversationId:V.string().min(1),taskId:V.string().min(1).optional(),chunk:V.string().optional()}),uH=f0.extend({conversationId:V.string().min(1),taskId:V.string().min(1).optional(),toolCallId:V.string().min(1),toolName:V.string().min(1),status:V.enum(["pending","running","success","error"]),args:V.unknown().optional(),result:V.unknown().optional()}),mH=f0.extend({conversationId:V.string().min(1),taskId:V.string().min(1).optional(),finishReason:V.enum(["stop","length","tool_use","error","cancelled"]),usage:V.object({inputTokens:V.number().int().nonnegative().optional(),outputTokens:V.number().int().nonnegative().optional(),totalTokens:V.number().int().nonnegative().optional()}).optional()}),pH=f0.extend({version:V.number().int().nonnegative(),changedAt:V.number().int()}),cH=f0.extend({stream:V.enum(["stdout","stderr"]),line:V.string(),ts:V.number().int()}),dH=f0.extend({taskId:V.string().min(1),toolCallId:V.string().min(1),toolName:V.string().min(1),params:V.record(V.unknown()),expiresAt:V.number().int()}),L7=f0.extend({otp:V.string().min(1),expiresAt:V.number().int()}),j7=f0.extend({deviceToken:V.string().min(1)}),lH=f0.extend({otp:V.string().min(1),displayName:V.string().min(1).optional(),submittedAt:V.number().int(),expiresAt:V.number().int(),reason:V.enum(["submitted","approved","rejected","expired","abandoned"])}),iH={[e.WORKER_ONLINE]:hH,[e.WORKER_OFFLINE]:xH,[e.CHAT_MESSAGE]:gH,[e.AGENT_THINKING]:yH,[e.AGENT_TOOL_CALL]:uH,[e.AGENT_DONE]:mH,[e.CONFIG_CHANGED]:pH,[e.LOGS_LINE]:cH,[e.APPROVAL_REQUESTED]:dH,[e.ENROLLMENT_OTP]:L7,[e.ENROLLMENT_APPROVED]:j7,[e.ENROLLMENT_PENDING]:lH}});var zD;var sH=Z(()=>{zD=class zD extends Error{code;status;constructor(D,$,F){super(F);this.code=D;this.status=$;this.name="AppError"}static badRequest(D,$="BAD_REQUEST"){return new zD($,400,D)}static notFound(D,$="NOT_FOUND"){return new zD($,404,D)}static internal(D,$="INTERNAL_ERROR"){return new zD($,500,D)}toJSON(){return{error:{code:this.code,message:this.message}}}}});var z7=20;var d2,I7="0123456789abcdefghjkmnpqrstvwxyz";var rH=Z(()=>{d2=/^w_[0-9a-hjkmnp-tv-z]{12}$/});function O8(D){return typeof D==="string"&&l2.test(D)}var T7="wtk_",l2;var oH=Z(()=>{l2=/^wtk_[\w-]{32,}$/});var VF=Z(()=>{rH();oH()});function a8(D){if(!D)return!1;if(D==="127.0.0.1"||D==="::1"||D==="::ffff:127.0.0.1"||D==="localhost")return!0;if(D.startsWith("127."))return!0;return!1}function C3(D){return D==="1"||D==="true"}function R3(D){if(!D.serveWeb)return;if(a8(D.host))return;if(D.externalAuthAcknowledged===!0)return;throw Error(`[${D.surface}] refusing to serve /admin/* on non-loopback host="${D.host}" without external-auth acknowledgement.
|
|
73
|
-
|
|
74
|
-
Public admin UI must be protected before traffic reaches AIWorker.
|
|
75
|
-
|
|
76
|
-
Fix one of these ways:
|
|
77
|
-
1. Bind the service to 127.0.0.1 and put Caddy/Cloudflare Access/IP allowlist/basic-auth in front;
|
|
78
|
-
2. Disable admin static serving with --no-serve-web;
|
|
79
|
-
3. Confirm an external auth layer protects /admin/*, /ws, and /api/*, then set AIWORKER_ADMIN_EXTERNAL_AUTH=1.`)}function yL(D,$){let F=0,X=0,J="";for(let G=0;G<D.length&&J.length<$;G+=1){X=X<<8|D[G],F+=8;while(F>=5&&J.length<$)J+=I7[X>>>F-5&31],F-=5}return J.padEnd($,"0")}function QF(){let D=new Uint8Array(10);return globalThis.crypto.getRandomValues(D),`w_${yL(D,12)}`}var aH=Z(()=>{VF()});var UF,_F,w7,uL,AF,tH;var eH=Z(()=>{yD();UF=V.discriminatedUnion("kind",[V.object({kind:V.literal("file_read"),path:V.string()}),V.object({kind:V.literal("file_edit"),path:V.string(),diff:V.string().optional()}),V.object({kind:V.literal("command_run"),command:V.string()}),V.object({kind:V.literal("search"),query:V.string()}),V.object({kind:V.literal("web_fetch"),url:V.string()}),V.object({kind:V.literal("task_plan"),summary:V.string()}),V.object({kind:V.literal("tool"),toolName:V.string(),arguments:V.record(V.unknown()).optional()}),V.object({kind:V.literal("other"),description:V.string().optional()})]),_F=V.enum(["pending","running","success","failed","pending_approval","denied"]),w7=V.object({inputTokens:V.number().int().nonnegative(),outputTokens:V.number().int().nonnegative()}),uL=V.record(V.unknown()),AF=V.enum(["stop","tool","length","error","cancelled"]),tH=V.discriminatedUnion("type",[V.object({type:V.literal("assistant_message_delta"),delta:V.string()}),V.object({type:V.literal("thinking_delta"),delta:V.string()}),V.object({type:V.literal("tool_use"),id:V.string(),name:V.string(),arguments:V.record(V.unknown()),action:UF,status:_F.optional()}),V.object({type:V.literal("tool_result"),id:V.string(),name:V.string(),content:V.string(),isError:V.boolean().optional()}),V.object({type:V.literal("permission_request"),id:V.string(),reason:V.string(),toolUseId:V.string().optional()}),V.object({type:V.literal("token_usage"),usage:w7}),V.object({type:V.literal("engine_binding"),engine:V.string().min(1),binding:uL.nullable()}),V.object({type:V.literal("finish"),reason:AF,usage:w7.optional()}),V.object({type:V.literal("error"),error:V.string()})])});var DW=Z(()=>{eH()});var aD=Z(()=>{sH();VF();aH();DW()});var t8,KF;var OF=Z(()=>{yD();t8={OPERATOR:"operator",NODE:"node"},KF=V.union([V.literal(t8.OPERATOR),V.literal(t8.NODE)])});function i2(D){let $;try{$=JSON.parse(D)}catch(X){return{ok:!1,error:`invalid_json:${X instanceof Error?X.message:String(X)}`}}let F=GW.safeParse($);if(!F.success)return{ok:!1,error:`schema:${F.error.message}`};return{ok:!0,frame:F.data}}function ND(D){return JSON.stringify(D)}var $W,FW,XW,mL,pL,JW,YW,GW;var BW=Z(()=>{aD();yD();OF();$W=V.object({type:V.literal("connect"),role:KF,agentId:V.string().min(1),deviceId:V.string().min(1),auth:V.object({token:V.string()}),meta:V.record(V.string()).optional(),enroll:V.object({apiToken:V.string().regex(l2,"apiToken must match wtk_<base64url>"),displayName:V.string().min(1).max(80).optional(),mode:V.enum(["join-token","otp"]).optional(),joinToken:V.string().min(1).optional()}).optional().refine((D)=>D===void 0||((D.mode??"join-token")==="otp"?D.joinToken===void 0:!!D.joinToken),{message:"mode=join-token requires joinToken; mode=otp must omit joinToken"})}),FW=V.object({type:V.literal("request"),id:V.string().min(1),method:V.string().min(1),params:V.unknown().optional()}),XW=V.object({code:V.string().min(1),message:V.string(),details:V.unknown().optional()}),mL=V.object({type:V.literal("response"),id:V.string().min(1),ok:V.literal(!0),result:V.unknown()}),pL=V.object({type:V.literal("response"),id:V.string().min(1),ok:V.literal(!1),error:XW}),JW=V.discriminatedUnion("ok",[mL,pL]),YW=V.object({type:V.literal("event"),name:V.string().min(1),payload:V.unknown(),ts:V.number().int()}),GW=V.union([$W,FW,JW,YW])});function vD(D){return D}function k7(D){return Object.prototype.hasOwnProperty.call(tD,D)}function E3(D){if(!k7(D))return;return tD[D]}var e8,cL,dL,HW,F6,lL,iL,nL,sL,S7,rL,oL,aL,b7,tL,eL,Dj,$j,Fj,Xj,WW,VW,Jj,Yj,Gj,CF,f7,QW,UW,Bj,Hj,Wj,Vj,tD;var _W=Z(()=>{yD();e8=V.object({workerId:V.string().min(1),displayName:V.string().optional(),online:V.boolean(),deviceId:V.string().min(1).optional(),baseUrl:V.string().optional(),lastSeenAt:V.number().int().nullable().optional()}),cL=vD({method:"workers.list",description:"\u5217\u51FA fleet \u5185\u6240\u6709\u5DF2\u6CE8\u518C worker\uFF08\u542B online \u72B6\u6001\uFF09\u3002",params:V.object({}).optional().default({}),result:V.object({workers:V.array(e8)}),routing:"operator-to-gateway"}),dL=vD({method:"workers.info",description:"\u8BFB\u53D6\u67D0\u4E2A worker \u7684\u8FD0\u884C\u65F6\u5FEB\u7167\uFF08/worker/info \u7B49\u4EF7\u7269\uFF09\u3002",params:V.object({workerId:V.string().min(1)}),result:V.unknown(),routing:"operator-to-node"}),HW=V.object({workerBaseUrl:V.string().min(1),bootstrapToken:V.string().min(1),displayName:V.string().optional()}),F6=V.object({workerId:V.string().min(1),deviceToken:V.string().min(1)}),lL=vD({method:"workers.pair",description:"\u628A\u4E00\u4E2A\u5DF2\u542F\u52A8\u7684 worker \u901A\u8FC7 bootstrap token \u6CE8\u518C\u5230 fleet\u3002",params:HW,result:F6,routing:"operator-to-gateway"}),iL=vD({method:"workers.launch",description:"\u7531 gateway/supervisor \u672C\u5730\u62C9\u8D77\u4E00\u4E2A worker \u5BB9\u5668\u5E76\u5B8C\u6210\u6CE8\u518C\u3002",params:V.object({displayName:V.string().optional(),image:V.string().optional(),env:V.record(V.string()).optional()}),result:F6,routing:"operator-to-gateway"}),nL=vD({method:"workers.stop",description:"\u5411\u76EE\u6807 worker \u4E0B\u53D1\u505C\u6B62\u6307\u4EE4\uFF08\u4E0D\u4ECE fleet \u91CC\u5220\u9664\uFF09\u3002",params:V.object({workerId:V.string().min(1)}),result:V.object({stopped:V.boolean()}),routing:"operator-to-node"}),sL=vD({method:"workers.remove",description:"\u628A worker \u4ECE fleet \u4E2D\u6458\u9664\uFF08\u5B58\u91CF deviceToken \u4F5C\u5E9F\uFF09\u3002",params:V.object({workerId:V.string().min(1)}),result:V.object({removed:V.boolean()}),routing:"operator-to-gateway"}),S7=V.object({otp:V.string().min(1),workerId:V.string().min(1),displayName:V.string().min(1).optional(),submittedAt:V.number().int(),expiresAt:V.number().int()}),rL=vD({method:"enroll.list",description:"\u5217\u51FA gateway \u5F53\u524D\u6240\u6709 pending OTP enrollment \u8BF7\u6C42\u3002",params:V.object({}).optional().default({}),result:V.object({pending:V.array(S7)}),routing:"operator-to-gateway"}),oL=vD({method:"enroll.approve",description:"\u6279\u51C6\u67D0\u6761 pending OTP enrollment\uFF1Afleet.db \u843D row + \u63A8 enrollment.approved \u4E8B\u4EF6\u7ED9\u7B49\u5F85\u4E2D\u7684 worker\u3002",params:V.object({otp:V.string().min(1)}),result:V.object({workerId:V.string().min(1),deviceToken:V.string().min(1)}),routing:"operator-to-gateway"}),aL=vD({method:"enroll.reject",description:"\u62D2\u7EDD\u67D0\u6761 pending OTP\uFF1Aclose 4403 \u7ED9 worker\uFF0Caudit gateway.enrollment.rejected\u3002",params:V.object({otp:V.string().min(1)}),result:V.object({rejected:V.boolean()}),routing:"operator-to-gateway"}),b7=V.object({id:V.number().int().positive(),at:V.string().min(1),actor:V.string().min(1),action:V.string().min(1),workerId:V.string().min(1).nullable(),detail:V.record(V.unknown()).nullable()}),tL=vD({method:"audit.list",description:"fleet.db audit_events \u6D4F\u89C8\uFF1A\u6309 id \u5012\u5E8F\u5206\u9875\uFF0C\u53EF\u6309 action \u524D\u7F00 / workerId \u8FC7\u6EE4\u3002",params:V.object({limit:V.number().int().positive().max(200).optional(),before:V.number().int().positive().optional(),action:V.string().min(1).optional(),workerId:V.string().min(1).optional()}).optional().default({}),result:V.object({events:V.array(b7),hasMore:V.boolean()}),routing:"operator-to-gateway"}),eL=vD({method:"chat.send",description:"\u5411\u76EE\u6807 worker \u7684\u67D0\u4F1A\u8BDD\u8FFD\u52A0\u4E00\u6761\u7528\u6237\u6D88\u606F\u5E76\u89E6\u53D1\u4E00\u6B21 run\u3002",params:V.object({workerId:V.string().min(1),conversationId:V.string().min(1).optional(),content:V.string().min(1),metadata:V.record(V.unknown()).optional()}),result:V.object({conversationId:V.string().min(1),taskId:V.string().min(1).optional(),accepted:V.boolean()}),routing:"operator-to-node"}),Dj=vD({method:"config.get",description:"\u8BFB\u53D6 worker \u5F53\u524D\u914D\u7F6E\uFF08\u542B version\uFF09\u3002",params:V.object({workerId:V.string().min(1)}),result:V.object({version:V.number().int().nonnegative(),config:V.unknown()}),routing:"operator-to-node"}),$j=vD({method:"config.put",description:"\u66F4\u65B0 worker \u914D\u7F6E\uFF0C\u4F7F\u7528 ifMatch \u8FDB\u884C\u4E50\u89C2\u9501\u3002",params:V.object({workerId:V.string().min(1),ifMatch:V.number().int().nonnegative(),config:V.unknown()}),result:V.object({version:V.number().int().nonnegative(),appliedAt:V.number().int()}),routing:"operator-to-node"}),Fj=vD({method:"token.rotate",description:"\u4E3A\u76EE\u6807 worker \u8F6E\u6362 deviceToken\uFF0C\u65E7 token \u7ACB\u5373\u5931\u6548\u3002",params:V.object({workerId:V.string().min(1)}),result:V.object({deviceToken:V.string().min(1)}),routing:"operator-to-gateway"}),Xj=vD({method:"logs.tail",description:"\u8BA2\u9605 worker \u7684\u65E5\u5FD7\u5C3E\u90E8\uFF08\u901A\u8FC7\u540E\u7EED logs.line \u4E8B\u4EF6\u63A8\u9001\uFF09\u3002",params:V.object({workerId:V.string().min(1),follow:V.boolean().optional(),lines:V.number().int().positive().max(1000).optional()}),result:V.object({subscribed:V.boolean()}),routing:"operator-to-node"}),WW=V.enum(["allow","deny"]),VW=V.object({workerId:V.string().min(1),taskId:V.string().min(1),toolCallId:V.string().min(1),toolName:V.string().min(1),params:V.record(V.unknown()),expiresAt:V.number().int()}),Jj=vD({method:"approval.list",description:"\u5217\u51FA\u76EE\u6807 worker \u5F53\u524D\u6240\u6709\u6302\u8D77\u7684 per-tool \u5BA1\u6279\u8BF7\u6C42\u3002",params:V.object({workerId:V.string().min(1)}),result:V.object({approvals:V.array(VW)}),routing:"operator-to-node"}),Yj=vD({method:"approval.grant",description:"\u89E3\u9501\u67D0\u6761\u6302\u8D77\u7684 tool \u5BA1\u6279\uFF1Aallow \u8BA9 orchestrator \u7EE7\u7EED\u6267\u884C\uFF0Cdeny \u7ACB\u5373\u77ED\u8DEF\u3002",params:V.object({workerId:V.string().min(1),taskId:V.string().min(1),toolCallId:V.string().min(1),decision:WW}),result:V.object({granted:V.boolean()}),routing:"operator-to-node"}),Gj=vD({method:"system.presence",description:"operator \u5FC3\u8DF3 / \u8BE2\u95EE\u5F53\u524D online \u7684\u6240\u6709 node \u5217\u8868\u3002",params:V.object({}).optional().default({}),result:V.object({now:V.number().int(),online:V.array(e8)}),routing:"operator-to-gateway"}),CF=V.enum(["web","line","telegram","lark","whatsapp"]),f7=V.object({id:V.string().min(1),expression:V.string().min(1),prompt:V.string().min(1),channel:CF,chatId:V.string().min(1),accountId:V.string().min(1),enabled:V.boolean(),lastRunAt:V.string().nullable(),nextRunAt:V.string().nullable(),createdAt:V.string(),updatedAt:V.string()}),QW=V.object({expression:V.string().min(1),prompt:V.string().min(1),channel:CF,chatId:V.string().min(1),accountId:V.string().min(1).optional(),enabled:V.boolean().optional()}),UW=V.object({expression:V.string().min(1).optional(),prompt:V.string().min(1).optional(),channel:CF.optional(),chatId:V.string().min(1).optional(),accountId:V.string().min(1).optional(),enabled:V.boolean().optional()}).refine((D)=>Object.keys(D).length>0,{message:"\u81F3\u5C11\u63D0\u4F9B\u4E00\u4E2A\u5F85\u66F4\u65B0\u5B57\u6BB5"}),Bj=vD({method:"cron.list",description:"\u5217\u51FA\u76EE\u6807 worker \u4E0A\u6240\u6709 cron \u4EFB\u52A1\uFF08\u542B enabled / lastRunAt / nextRunAt\uFF09\u3002",params:V.object({workerId:V.string().min(1)}),result:V.object({jobs:V.array(f7)}),routing:"operator-to-node"}),Hj=vD({method:"cron.add",description:"\u5728\u76EE\u6807 worker \u4E0A\u65B0\u589E\u4E00\u6761 cron \u4EFB\u52A1\uFF1B\u975E\u6CD5 expression \u76F4\u63A5\u5931\u8D25\u3002",params:V.object({workerId:V.string().min(1),job:QW}),result:V.object({job:f7}),routing:"operator-to-node"}),Wj=vD({method:"cron.remove",description:"\u5220\u9664\u76EE\u6807 worker \u4E0A\u7684\u67D0\u6761 cron \u4EFB\u52A1\u3002",params:V.object({workerId:V.string().min(1),jobId:V.string().min(1)}),result:V.object({removed:V.boolean()}),routing:"operator-to-node"}),Vj=vD({method:"cron.update",description:"\u5C40\u90E8\u66F4\u65B0\u76EE\u6807 worker \u4E0A\u67D0\u6761 cron \u4EFB\u52A1\uFF1B\u6539 expression \u6216 enabled \u4F1A\u91CD\u7B97 nextRunAt\u3002",params:V.object({workerId:V.string().min(1),jobId:V.string().min(1),patch:UW}),result:V.object({job:f7}),routing:"operator-to-node"}),tD={"workers.list":cL,"workers.info":dL,"workers.pair":lL,"workers.launch":iL,"workers.stop":nL,"workers.remove":sL,"enroll.list":rL,"enroll.approve":oL,"enroll.reject":aL,"audit.list":tL,"chat.send":eL,"config.get":Dj,"config.put":$j,"token.rotate":Fj,"logs.tail":Xj,"system.presence":Gj,"approval.list":Jj,"approval.grant":Yj,"cron.list":Bj,"cron.add":Hj,"cron.remove":Wj,"cron.update":Vj}});var eD=Z(()=>{nH();BW();_W();OF()});import{statSync as Qj}from"fs";import{access as Uj,mkdir as _j,stat as ws,writeFile as Aj}from"fs/promises";import{homedir as CW}from"os";import BD from"path";import RW from"process";function KW(D){return D.startsWith("~")?BD.join(CW(),D.slice(1)):D}function OW(D){try{return Qj(D).isDirectory()}catch{return!1}}function EF(D){let $=BD.resolve(D??RW.cwd());if(!$)return null;while(!0){let F=BD.join($,X6);if(OW(F))return $;let X=BD.join($,".git");if(OW(X))return null;let J=BD.dirname($);if(J===$)return null;$=J}}function B2(D={}){if(D.explicitHome&&D.explicitHome.length>0)return{scope:"explicit",home:BD.resolve(KW(D.explicitHome)),source:"cli-flag"};let $=RW.env[Kj];if($&&$.length>0)return{scope:"explicit",home:BD.resolve(KW($)),source:"env"};if(!D.disableProjectDetect){let F=EF(D.cwd);if(F)return{scope:"project",home:BD.join(F,X6,RF),projectRoot:F,source:"project-detect"}}return{scope:"user",home:BD.resolve(CW(),X6),source:"user-default"}}function H2(){return B2().home}function W2(D){let $=B2();if($.scope==="project"&&$.projectRoot)return BD.join($.projectRoot,X6);return BD.join($.home,"workers",D)}function J6(D){let $=B2();if($.scope==="project"&&$.projectRoot)return BD.join($.projectRoot,X6);return BD.join(W2(D),"brain")}function Oj(D){return BD.join(J6(D),"skills")}function Cj(D){return BD.join(J6(D),"memories")}function MF(D){return BD.join(J6(D),"MEMORY.md")}function v7(D){let $=B2();if($.scope==="project"&&$.projectRoot)return BD.join($.home,"workspaces");return BD.join(W2(D),"workspaces")}function EW(D){return BD.join(W2(D),"config.yaml")}function ZF(D){return BD.join(W2(D),"AGENT.md")}function qF(D){return BD.join(W2(D),"SOUL.md")}function NF(D){return BD.join(W2(D),"USER.md")}function MW(D){return BD.join(W2(D),"ROLLUP.md")}function ZW(D){return BD.join(W2(D),"mcp.json")}async function v0(D,$){await _j(D,{recursive:!0,...$===void 0?{}:{mode:$}})}async function k0(D,$){try{await Uj(D)}catch{await Aj(D,$,{encoding:"utf8"})}}async function PF(D){let $=B2();if($.scope==="project"){await v0($.home,448),await v0(v7(D));return}let F=W2(D);await v0(F),await v0(J6(D)),await v0(Oj(D)),await v0(Cj(D)),await v0(v7(D)),await k0(ZF(D),`# Agent ${D}
|
|
80
|
-
|
|
81
|
-
> Draft persona document. Describe the role, responsibilities, and tone that this agent should adopt. The orchestrator may inject this file into the system prompt.
|
|
82
|
-
`),await k0(qF(D),`# Voice of ${D}
|
|
83
|
-
|
|
84
|
-
> Draft voice / style guide. Influences how the agent phrases responses across channels.
|
|
85
|
-
`),await k0(NF(D),`# User profile (maintained by ${D})
|
|
86
|
-
|
|
87
|
-
> The agent writes learned facts about the primary user here over time. Edit by hand to bootstrap.
|
|
88
|
-
`),await k0(MF(D),`# Memory index
|
|
89
|
-
|
|
90
|
-
> One line per memory: \`- [Title](filename.md) \u2014 short description.\`
|
|
91
|
-
`)}async function LF(D){let $=BD.resolve(D),F=BD.join($,X6),X=BD.join(F,RF);await v0(F),await v0(BD.join(F,"skills")),await v0(BD.join(F,"memories")),await v0(X,448),await v0(BD.join(X,"workspaces")),await k0(BD.join(F,"AGENT.md"),`# Agent
|
|
92
|
-
|
|
93
|
-
> Persona / role document for the agent that lives in this project. The orchestrator injects this file into the system prompt.
|
|
94
|
-
`),await k0(BD.join(F,"SOUL.md"),`# Voice & style
|
|
95
|
-
|
|
96
|
-
> Voice / style guide. Influences how the agent phrases responses across channels.
|
|
97
|
-
`),await k0(BD.join(F,"USER.md"),`# User profile
|
|
98
|
-
|
|
99
|
-
> The agent writes learned facts about the primary user here over time. Edit by hand to bootstrap.
|
|
100
|
-
`),await k0(BD.join(F,"MEMORY.md"),`# Long-term memory
|
|
101
|
-
|
|
102
|
-
> Durable facts, decisions, preferences. Loaded into every session.
|
|
103
|
-
`),await k0(BD.join(F,"ROLLUP.md"),`# Continuity rollup
|
|
104
|
-
|
|
105
|
-
> Auto-distilled by the evolution cron job. Recent decisions / todos / context that survive session compaction.
|
|
106
|
-
`),await k0(BD.join(F,"mcp.json"),`${JSON.stringify({servers:{}},null,2)}
|
|
107
|
-
`),await k0(BD.join(F,".gitignore"),`${RF}/
|
|
108
|
-
`),await k0(BD.join(X,".gitignore"),`*
|
|
109
|
-
!.gitignore
|
|
110
|
-
`)}var Kj="AIWORKER_HOME",X6=".aiworker",RF="local";var V2=()=>{};var m7={};d8(m7,{saveAimState:()=>zF,resolveGatewayPidPath:()=>g7,resolveGatewayLogPath:()=>y7,resolveAimStatePath:()=>jF,patchAimState:()=>Z3,normalizeGatewayWsUrl:()=>M3,loadAimState:()=>u7,gatewayWsUrlForLocalPort:()=>x7,DEFAULT_GATEWAY_URL:()=>qW});import{chmod as Rj,mkdir as Ej,readFile as Mj,rename as Zj,writeFile as qj}from"fs/promises";import h7 from"path";function x7(D){return`ws://localhost:${D}/ws`}function M3(D){try{let $=new URL(D);if(($.protocol==="ws:"||$.protocol==="wss:")&&($.pathname===""||$.pathname==="/"))return $.pathname="/ws",$.toString()}catch{}return D}function jF(){return h7.join(H2(),"aim.json")}function g7(){return h7.join(H2(),"aim-gateway.pid")}function y7(){return h7.join(H2(),"aim-gateway.log")}function Nj(){return`op-${crypto.randomUUID()}`}function Pj(){return{gatewayUrl:qW,deviceId:Nj(),deviceToken:""}}function Lj(D){if(D===null||typeof D!=="object")return!1;let $=D;return typeof $.gatewayUrl==="string"&&typeof $.deviceId==="string"&&typeof $.deviceToken==="string"&&($.defaultWorkerId===void 0||typeof $.defaultWorkerId==="string")}async function u7(){let D=jF(),$;try{$=await Mj(D,"utf8")}catch(X){if(X.code==="ENOENT")return Pj();throw X}let F;try{F=JSON.parse($)}catch(X){let J=X instanceof Error?X.message:String(X);throw Error(`aim.json \u89E3\u6790\u5931\u8D25 (${D}): ${J}`)}if(!Lj(F))throw Error(`aim.json \u7ED3\u6784\u4E0D\u7B26\u5408 AimState (${D})`);return{...F,gatewayUrl:M3(F.gatewayUrl)}}async function zF(D){let $=jF();await Ej(h7.dirname($),{recursive:!0});let F=`${$}.tmp`;await qj(F,`${JSON.stringify(D,null,2)}
|
|
111
|
-
`,{encoding:"utf8",mode:384}),await Zj(F,$);try{await Rj($,384)}catch{}}async function Z3(D){let F={...await u7()};for(let[X,J]of Object.entries(D)){if(J===void 0)continue;let G=X==="gatewayUrl"&&typeof J==="string"?M3(J):J;F[X]=G}return await zF(F),F}var qW="ws://localhost:9218/ws";var D1=Z(()=>{V2()});function I(D,$){if(!D||typeof D!=="object")return!1;if(D instanceof $)return!0;if(!Object.prototype.hasOwnProperty.call($,P))throw Error(`Class "${$.name??"<unknown>"}" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`);let F=Object.getPrototypeOf(D).constructor;if(F)while(F){if(P in F&&F[P]===$[P])return!0;F=Object.getPrototypeOf(F)}return!1}var P;var a=Z(()=>{P=Symbol.for("drizzle:entityKind")});var bW,IF,TF;var p7=Z(()=>{a();bW=class bW{static[P]="ConsoleLogWriter";write(D){console.log(D)}};IF=class IF{static[P]="DefaultLogger";writer;constructor(D){this.writer=D?.writer??new bW}logQuery(D,$){let F=$.map((J)=>{try{return JSON.stringify(J)}catch{return String(J)}}),X=F.length?` -- params: [${F.join(", ")}]`:"";this.writer.write(`Query: ${D}${X}`)}};TF=class TF{static[P]="NoopLogger";logQuery(){}}});var T0;var q3=Z(()=>{T0=Symbol.for("drizzle:Name")});function C8(D){return D[T0]}function $1(D){return`${D[c7]??"public"}.${D[T0]}`}var c7,d7,fW,wF,SF,N3,kW,jj,x;var V0=Z(()=>{a();q3();c7=Symbol.for("drizzle:Schema"),d7=Symbol.for("drizzle:Columns"),fW=Symbol.for("drizzle:ExtraConfigColumns"),wF=Symbol.for("drizzle:OriginalName"),SF=Symbol.for("drizzle:BaseName"),N3=Symbol.for("drizzle:IsAlias"),kW=Symbol.for("drizzle:ExtraConfigBuilder"),jj=Symbol.for("drizzle:IsDrizzleTable");x=class x{static[P]="Table";static Symbol={Name:T0,Schema:c7,OriginalName:wF,Columns:d7,ExtraConfigColumns:fW,BaseName:SF,IsAlias:N3,ExtraConfigBuilder:kW};[T0];[wF];[c7];[d7];[fW];[SF];[N3]=!1;[jj]=!0;[kW]=void 0;constructor(D,$,F){this[T0]=this[wF]=D,this[c7]=$,this[SF]=F}}});var OD;var U2=Z(()=>{a();OD=class OD{constructor(D,$){this.table=D,this.config=$,this.name=$.name,this.keyAsName=$.keyAsName,this.notNull=$.notNull,this.default=$.default,this.defaultFn=$.defaultFn,this.onUpdateFn=$.onUpdateFn,this.hasDefault=$.hasDefault,this.primary=$.primaryKey,this.isUnique=$.isUnique,this.uniqueName=$.uniqueName,this.uniqueType=$.uniqueType,this.dataType=$.dataType,this.columnType=$.columnType,this.generated=$.generated,this.generatedIdentity=$.generatedIdentity}static[P]="Column";name;keyAsName;primary;notNull;default;defaultFn;onUpdateFn;hasDefault;isUnique;uniqueName;uniqueType;dataType;columnType;enumValues=void 0;generated=void 0;generatedIdentity=void 0;config;mapFromDriverValue(D){return D}mapToDriverValue(D){return D}shouldDisableInsert(){return this.config.generated!==void 0&&this.config.generated.type!=="byDefault"}}});var bF;var fF=Z(()=>{a();bF=class bF{static[P]="ColumnBuilder";config;constructor(D,$,F){this.config={name:D,keyAsName:D==="",notNull:!1,default:void 0,hasDefault:!1,primaryKey:!1,isUnique:!1,uniqueName:void 0,uniqueType:void 0,dataType:$,columnType:F,generated:void 0}}$type(){return this}notNull(){return this.config.notNull=!0,this}default(D){return this.config.default=D,this.config.hasDefault=!0,this}$defaultFn(D){return this.config.defaultFn=D,this.config.hasDefault=!0,this}$default=this.$defaultFn;$onUpdateFn(D){return this.config.onUpdateFn=D,this.config.hasDefault=!0,this}$onUpdate=this.$onUpdateFn;primaryKey(){return this.config.primaryKey=!0,this.config.notNull=!0,this}setName(D){if(this.config.name!=="")return;this.config.name=D}}});function vW(D,...$){return D(...$)}var hW=()=>{};function xW(D,$){return`${D[T0]}_${$.join("_")}_unique`}var gW=Z(()=>{q3()});var P3,zj;var yW=Z(()=>{U2();a();gW();P3=class P3 extends OD{constructor(D,$){if(!$.uniqueName)$.uniqueName=xW(D,[$.name]);super(D,$);this.table=D}static[P]="PgColumn"};zj=class zj extends P3{static[P]="ExtraConfigColumn";getSQLType(){return this.getSQLType()}indexConfig={order:this.config.order??"asc",nulls:this.config.nulls??"last",opClass:this.config.opClass};defaultConfig={order:"asc",nulls:"last",opClass:void 0};asc(){return this.indexConfig.order="asc",this}desc(){return this.indexConfig.order="desc",this}nullsFirst(){return this.indexConfig.nulls="first",this}nullsLast(){return this.indexConfig.nulls="last",this}op(D){return this.indexConfig.opClass=D,this}}});function mW(D){return!!D&&typeof D==="function"&&uW in D&&D[uW]===!0}var Ij,uW,Tj;var pW=Z(()=>{a();yW();Ij=class Ij extends P3{static[P]="PgEnumObjectColumn";enum;enumValues=this.config.enum.enumValues;constructor(D,$){super(D,$);this.enum=$.enum}getSQLType(){return this.enum.enumName}};uW=Symbol.for("drizzle:isPgEnum");Tj=class Tj extends P3{static[P]="PgEnumColumn";enum=this.config.enum;enumValues=this.config.enum.enumValues;constructor(D,$){super(D,$);this.enum=$.enum}getSQLType(){return this.enum.enumName}}});var pD,L3;var _2=Z(()=>{a();pD=class pD{static[P]="Subquery";constructor(D,$,F,X=!1,J=[]){this._={brand:"Subquery",sql:D,selectedFields:$,alias:F,isWith:X,usedTables:J}}};L3=class L3 extends pD{static[P]="WithSubquery"}});var cW="0.44.7";var dW=()=>{};var kF,vF,lW;var iW=Z(()=>{hW();dW();lW={startActiveSpan(D,$){if(!kF)return $();if(!vF)vF=kF.trace.getTracer("drizzle-orm",cW);return vW((F,X)=>X.startActiveSpan(D,(J)=>{try{return $(J)}catch(G){throw J.setStatus({code:F.SpanStatusCode.ERROR,message:G instanceof Error?G.message:"Unknown error"}),G}finally{J.end()}}),kF,vF)}}});var fD;var n2=Z(()=>{fD=Symbol.for("drizzle:ViewBaseConfig")});function hF(D){return D!==null&&D!==void 0&&typeof D.getSQL==="function"}function wj(D){let $={sql:"",params:[]};for(let F of D)if($.sql+=F.sql,$.params.push(...F.params),F.typings?.length){if(!$.typings)$.typings=[];$.typings.push(...F.typings)}return $}function nW(D){return typeof D==="object"&&D!==null&&"mapToDriverValue"in D&&typeof D.mapToDriverValue==="function"}function M(D,...$){let F=[];if($.length>0||D.length>0&&D[0]!=="")F.push(new nD(D[0]));for(let[X,J]of $.entries())F.push(J,new nD(D[X+1]));return new m(F)}function j3(D,$){return D.map((F)=>{if(I(F,R8)){if(!(F.name in $))throw Error(`No value for placeholder "${F.name}" was provided`);return $[F.name]}if(I(F,w0)&&I(F.value,R8)){if(!(F.value.name in $))throw Error(`No value for placeholder "${F.value.name}" was provided`);return F.encoder.mapToDriverValue($[F.value.name])}return F})}var nD,m,l7,sW,rW,xr,w0,R8,Sj,h0;var D0=Z(()=>{a();pW();_2();iW();n2();U2();V0();nD=class nD{static[P]="StringChunk";value;constructor(D){this.value=Array.isArray(D)?D:[D]}getSQL(){return new m([this])}};m=class m{constructor(D){this.queryChunks=D;for(let $ of D)if(I($,x)){let F=$[x.Symbol.Schema];this.usedTables.push(F===void 0?$[x.Symbol.Name]:F+"."+$[x.Symbol.Name])}}static[P]="SQL";decoder=sW;shouldInlineParams=!1;usedTables=[];append(D){return this.queryChunks.push(...D.queryChunks),this}toQuery(D){return lW.startActiveSpan("drizzle.buildSQL",($)=>{let F=this.buildQueryFromSourceParams(this.queryChunks,D);return $?.setAttributes({"drizzle.query.text":F.sql,"drizzle.query.params":JSON.stringify(F.params)}),F})}buildQueryFromSourceParams(D,$){let F=Object.assign({},$,{inlineParams:$.inlineParams||this.shouldInlineParams,paramStartIndex:$.paramStartIndex||{value:0}}),{casing:X,escapeName:J,escapeParam:G,prepareTyping:Y,inlineParams:B,paramStartIndex:H}=F;return wj(D.map((W)=>{if(I(W,nD))return{sql:W.value.join(""),params:[]};if(I(W,l7))return{sql:J(W.value),params:[]};if(W===void 0)return{sql:"",params:[]};if(Array.isArray(W)){let Q=[new nD("(")];for(let[U,_]of W.entries())if(Q.push(_),U<W.length-1)Q.push(new nD(", "));return Q.push(new nD(")")),this.buildQueryFromSourceParams(Q,F)}if(I(W,m))return this.buildQueryFromSourceParams(W.queryChunks,{...F,inlineParams:B||W.shouldInlineParams});if(I(W,x)){let Q=W[x.Symbol.Schema],U=W[x.Symbol.Name];return{sql:Q===void 0||W[N3]?J(U):J(Q)+"."+J(U),params:[]}}if(I(W,OD)){let Q=X.getColumnCasing(W);if($.invokeSource==="indexes")return{sql:J(Q),params:[]};let U=W.table[x.Symbol.Schema];return{sql:W.table[N3]||U===void 0?J(W.table[x.Symbol.Name])+"."+J(Q):J(U)+"."+J(W.table[x.Symbol.Name])+"."+J(Q),params:[]}}if(I(W,h0)){let Q=W[fD].schema,U=W[fD].name;return{sql:Q===void 0||W[fD].isAlias?J(U):J(Q)+"."+J(U),params:[]}}if(I(W,w0)){if(I(W.value,R8))return{sql:G(H.value++,W),params:[W],typings:["none"]};let Q=W.value===null?null:W.encoder.mapToDriverValue(W.value);if(I(Q,m))return this.buildQueryFromSourceParams([Q],F);if(B)return{sql:this.mapInlineParam(Q,F),params:[]};let U=["none"];if(Y)U=[Y(W.encoder)];return{sql:G(H.value++,Q),params:[Q],typings:U}}if(I(W,R8))return{sql:G(H.value++,W),params:[W],typings:["none"]};if(I(W,m.Aliased)&&W.fieldAlias!==void 0)return{sql:J(W.fieldAlias),params:[]};if(I(W,pD)){if(W._.isWith)return{sql:J(W._.alias),params:[]};return this.buildQueryFromSourceParams([new nD("("),W._.sql,new nD(") "),new l7(W._.alias)],F)}if(mW(W)){if(W.schema)return{sql:J(W.schema)+"."+J(W.enumName),params:[]};return{sql:J(W.enumName),params:[]}}if(hF(W)){if(W.shouldOmitSQLParens?.())return this.buildQueryFromSourceParams([W.getSQL()],F);return this.buildQueryFromSourceParams([new nD("("),W.getSQL(),new nD(")")],F)}if(B)return{sql:this.mapInlineParam(W,F),params:[]};return{sql:G(H.value++,W),params:[W],typings:["none"]}}))}mapInlineParam(D,{escapeString:$}){if(D===null)return"null";if(typeof D==="number"||typeof D==="boolean")return D.toString();if(typeof D==="string")return $(D);if(typeof D==="object"){let F=D.toString();if(F==="[object Object]")return $(JSON.stringify(D));return $(F)}throw Error("Unexpected param value: "+D)}getSQL(){return this}as(D){if(D===void 0)return this;return new m.Aliased(this,D)}mapWith(D){return this.decoder=typeof D==="function"?{mapFromDriverValue:D}:D,this}inlineParams(){return this.shouldInlineParams=!0,this}if(D){return D?this:void 0}};l7=class l7{constructor(D){this.value=D}static[P]="Name";brand;getSQL(){return new m([this])}};sW={mapFromDriverValue:(D)=>D},rW={mapToDriverValue:(D)=>D},xr={...sW,...rW};w0=class w0{constructor(D,$=rW){this.value=D,this.encoder=$}static[P]="Param";brand;getSQL(){return new m([this])}};((D)=>{function $(){return new m([])}D.empty=$;function F(H){return new m(H)}D.fromList=F;function X(H){return new m([new nD(H)])}D.raw=X;function J(H,W){let Q=[];for(let[U,_]of H.entries()){if(U>0&&W!==void 0)Q.push(W);Q.push(_)}return new m(Q)}D.join=J;function G(H){return new l7(H)}D.identifier=G;function Y(H){return new R8(H)}D.placeholder=Y;function B(H,W){return new w0(H,W)}D.param=B})(M||(M={}));((D)=>{class ${constructor(F,X){this.sql=F,this.fieldAlias=X}static[P]="SQL.Aliased";isSelectionField=!1;getSQL(){return this.sql}clone(){return new $(this.sql,this.fieldAlias)}}D.Aliased=$})(m||(m={}));R8=class R8{constructor(D){this.name=D}static[P]="Placeholder";getSQL(){return new m([this])}};Sj=Symbol.for("drizzle:IsDrizzleView");h0=class h0{static[P]="View";[fD];[Sj]=!0;constructor({name:D,schema:$,selectedFields:F,query:X}){this[fD]={name:D,originalName:D,schema:$,selectedFields:F,query:X,isExisting:!X,isAlias:!1}}getSQL(){return new m([this])}};OD.prototype.getSQL=function(){return new m([this])};x.prototype.getSQL=function(){return new m([this])};pD.prototype.getSQL=function(){return new m([this])}});function xF(D,$,F){let X={},J=D.reduce((G,{path:Y,field:B},H)=>{let W;if(I(B,OD))W=B;else if(I(B,m))W=B.decoder;else W=B.sql.decoder;let Q=G;for(let[U,_]of Y.entries())if(U<Y.length-1){if(!(_ in Q))Q[_]={};Q=Q[_]}else{let A=$[H],C=Q[_]=A===null?null:W.mapFromDriverValue(A);if(F&&I(B,OD)&&Y.length===2){let O=Y[0];if(!(O in X))X[O]=C===null?C8(B.table):!1;else if(typeof X[O]==="string"&&X[O]!==C8(B.table))X[O]=!1}}return G},{});if(F&&Object.keys(X).length>0){for(let[G,Y]of Object.entries(X))if(typeof Y==="string"&&!F[Y])J[G]=null}return J}function x0(D,$){return Object.entries(D).reduce((F,[X,J])=>{if(typeof X!=="string")return F;let G=$?[...$,X]:[X];if(I(J,OD)||I(J,m)||I(J,m.Aliased))F.push({path:G,field:J});else if(I(J,x))F.push(...x0(J[x.Symbol.Columns],G));else F.push(...x0(J,G));return F},[])}function z3(D,$){let F=Object.keys(D),X=Object.keys($);if(F.length!==X.length)return!1;for(let[J,G]of F.entries())if(G!==X[J])return!1;return!0}function i7(D,$){let F=Object.entries($).filter(([,X])=>X!==void 0).map(([X,J])=>{if(I(J,m)||I(J,OD))return[X,J];else return[X,new w0(J,D[x.Symbol.Columns][X])]});if(F.length===0)throw Error("No values to set");return Object.fromEntries(F)}function oW(D,$){for(let F of $)for(let X of Object.getOwnPropertyNames(F.prototype)){if(X==="constructor")continue;Object.defineProperty(D.prototype,X,Object.getOwnPropertyDescriptor(F.prototype,X)||Object.create(null))}}function aW(D){return D[x.Symbol.Columns]}function I3(D){return I(D,pD)?D._.alias:I(D,h0)?D[fD].name:I(D,m)?void 0:D[x.Symbol.IsAlias]?D[x.Symbol.Name]:D[x.Symbol.BaseName]}function S2(D,$){return{name:typeof D==="string"&&D.length>0?D:"",config:typeof D==="object"?D:$}}function tW(D){if(typeof D!=="object"||D===null)return!1;if(D.constructor.name!=="Object")return!1;if("logger"in D){let $=typeof D.logger;if($!=="boolean"&&($!=="object"||typeof D.logger.logQuery!=="function")&&$!=="undefined")return!1;return!0}if("schema"in D){let $=typeof D.schema;if($!=="object"&&$!=="undefined")return!1;return!0}if("casing"in D){let $=typeof D.casing;if($!=="string"&&$!=="undefined")return!1;return!0}if("mode"in D){if(D.mode!=="default"||D.mode!=="planetscale"||D.mode!==void 0)return!1;return!0}if("connection"in D){let $=typeof D.connection;if($!=="string"&&$!=="object"&&$!=="undefined")return!1;return!0}if("client"in D){let $=typeof D.client;if($!=="object"&&$!=="function"&&$!=="undefined")return!1;return!0}if(Object.keys(D).length===0)return!0;return!1}var gF;var Z0=Z(()=>{U2();a();D0();_2();V0();n2();gF=typeof TextDecoder>"u"?null:new TextDecoder});var eW,DV,yF;var $V=Z(()=>{a();V0();eW=Symbol.for("drizzle:PgInlineForeignKeys"),DV=Symbol.for("drizzle:EnableRLS");yF=class yF extends x{static[P]="PgTable";static Symbol=Object.assign({},x.Symbol,{InlineForeignKeys:eW,EnableRLS:DV});[eW]=[];[DV]=!1;[x.Symbol.ExtraConfigBuilder]=void 0;[x.Symbol.ExtraConfigColumns]={}}});var uF,FV;var XV=Z(()=>{a();$V();uF=class uF{static[P]="PgPrimaryKeyBuilder";columns;name;constructor(D,$){this.columns=D,this.name=$}build(D){return new FV(D,this.columns,this.name)}};FV=class FV{constructor(D,$,F){this.table=D,this.columns=$,this.name=F}static[P]="PgPrimaryKey";columns;name;getName(){return this.name??`${this.table[yF.Symbol.Name]}_${this.columns.map((D)=>D.name).join("_")}_pk`}}});function q0(D,$){if(nW($)&&!hF(D)&&!I(D,w0)&&!I(D,R8)&&!I(D,OD)&&!I(D,x)&&!I(D,h0))return new w0(D,$);return D}function uD(...D){let $=D.filter((F)=>F!==void 0);if($.length===0)return;if($.length===1)return new m($);return new m([new nD("("),M.join($,new nD(" and ")),new nD(")")])}function YV(...D){let $=D.filter((F)=>F!==void 0);if($.length===0)return;if($.length===1)return new m($);return new m([new nD("("),M.join($,new nD(" or ")),new nD(")")])}function GV(D){return M`not ${D}`}function E8(D,$){if(Array.isArray($)){if($.length===0)return M`false`;return M`${D} in ${$.map((F)=>q0(F,D))}`}return M`${D} in ${q0($,D)}`}function HV(D,$){if(Array.isArray($)){if($.length===0)return M`true`;return M`${D} not in ${$.map((F)=>q0(F,D))}`}return M`${D} not in ${q0($,D)}`}function w3(D){return M`${D} is null`}function WV(D){return M`${D} is not null`}function VV(D){return M`exists ${D}`}function QV(D){return M`not exists ${D}`}function UV(D,$,F){return M`${D} between ${q0($,D)} and ${q0(F,D)}`}function _V(D,$,F){return M`${D} not between ${q0($,D)} and ${q0(F,D)}`}function AV(D,$){return M`${D} like ${$}`}function KV(D,$){return M`${D} not like ${$}`}function OV(D,$){return M`${D} ilike ${$}`}function CV(D,$){return M`${D} not ilike ${$}`}var v=(D,$)=>{return M`${D} = ${q0($,D)}`},JV=(D,$)=>{return M`${D} <> ${q0($,D)}`},T3=(D,$)=>{return M`${D} > ${q0($,D)}`},BV=(D,$)=>{return M`${D} >= ${q0($,D)}`},n7=(D,$)=>{return M`${D} < ${q0($,D)}`},s7=(D,$)=>{return M`${D} <= ${q0($,D)}`};var RV=Z(()=>{U2();a();V0();D0()});function b2(D){return M`${D} asc`}function hD(D){return M`${D} desc`}var EV=Z(()=>{D0()});var mF=Z(()=>{RV();EV()});function ZV(){return{and:uD,between:UV,eq:v,exists:VV,gt:T3,gte:BV,ilike:OV,inArray:E8,isNull:w3,isNotNull:WV,like:AV,lt:n7,lte:s7,ne:JV,not:GV,notBetween:_V,notExists:QV,notLike:KV,notIlike:CV,notInArray:HV,or:YV,sql:M}}function qV(){return{sql:M,asc:b2,desc:hD}}function NV(D,$){if(Object.keys(D).length===1&&"default"in D&&!I(D.default,x))D=D.default;let F={},X={},J={};for(let[G,Y]of Object.entries(D))if(I(Y,x)){let B=$1(Y),H=X[B];F[B]=G,J[G]={tsName:G,dbName:Y[x.Symbol.Name],schema:Y[x.Symbol.Schema],columns:Y[x.Symbol.Columns],relations:H?.relations??{},primaryKey:H?.primaryKey??[]};for(let Q of Object.values(Y[x.Symbol.Columns]))if(Q.primary)J[G].primaryKey.push(Q);let W=Y[x.Symbol.ExtraConfigBuilder]?.(Y[x.Symbol.ExtraConfigColumns]);if(W){for(let Q of Object.values(W))if(I(Q,uF))J[G].primaryKey.push(...Q.columns)}}else if(I(Y,MV)){let B=$1(Y.table),H=F[B],W=Y.config($(Y.table)),Q;for(let[U,_]of Object.entries(W))if(H){let A=J[H];if(A.relations[U]=_,Q)A.primaryKey.push(...Q)}else{if(!(B in X))X[B]={relations:{},primaryKey:Q};X[B].relations[U]=_}}return{tables:J,tableNamesMap:F}}function bj(D){return function(F,X){return new M8(D,F,X,X?.fields.reduce((J,G)=>J&&G.notNull,!0)??!1)}}function fj(D){return function(F,X){return new S3(D,F,X)}}function PV(D,$,F){if(I(F,M8)&&F.config)return{fields:F.config.fields,references:F.config.references};let X=$[$1(F.referencedTable)];if(!X)throw Error(`Table "${F.referencedTable[x.Symbol.Name]}" not found in schema`);let J=D[X];if(!J)throw Error(`Table "${X}" not found in schema`);let G=F.sourceTable,Y=$[$1(G)];if(!Y)throw Error(`Table "${G[x.Symbol.Name]}" not found in schema`);let B=[];for(let H of Object.values(J.relations))if(F.relationName&&F!==H&&H.relationName===F.relationName||!F.relationName&&H.referencedTable===F.sourceTable)B.push(H);if(B.length>1)throw F.relationName?Error(`There are multiple relations with name "${F.relationName}" in table "${X}"`):Error(`There are multiple relations between "${X}" and "${F.sourceTable[x.Symbol.Name]}". Please specify relation name`);if(B[0]&&I(B[0],M8)&&B[0].config)return{fields:B[0].config.references,references:B[0].config.fields};throw Error(`There is not enough information to infer relation "${Y}.${F.fieldName}"`)}function LV(D){return{one:bj(D),many:fj(D)}}function r7(D,$,F,X,J=(G)=>G){let G={};for(let[Y,B]of X.entries())if(B.isJson){let H=$.relations[B.tsKey],W=F[Y],Q=typeof W==="string"?JSON.parse(W):W;G[B.tsKey]=I(H,M8)?Q&&r7(D,D[B.relationTableTsKey],Q,B.selection,J):Q.map((U)=>r7(D,D[B.relationTableTsKey],U,B.selection,J))}else{let H=J(F[Y]),W=B.field,Q;if(I(W,OD))Q=W;else if(I(W,m))Q=W.decoder;else Q=W.sql.decoder;G[B.tsKey]=H===null?null:Q.mapFromDriverValue(H)}return G}var pF,MV,M8,S3;var b3=Z(()=>{V0();U2();a();XV();mF();D0();pF=class pF{constructor(D,$,F){this.sourceTable=D,this.referencedTable=$,this.relationName=F,this.referencedTableName=$[x.Symbol.Name]}static[P]="Relation";referencedTableName;fieldName};MV=class MV{constructor(D,$){this.table=D,this.config=$}static[P]="Relations"};M8=class M8 extends pF{constructor(D,$,F,X){super(D,$,F?.relationName);this.config=F,this.isNullable=X}static[P]="One";withFieldName(D){let $=new M8(this.sourceTable,this.referencedTable,this.config,this.isNullable);return $.fieldName=D,$}};S3=class S3 extends pF{constructor(D,$,F){super(D,$,F?.relationName);this.config=F}static[P]="Many";withFieldName(D){let $=new S3(this.sourceTable,this.referencedTable,this.config);return $.fieldName=D,$}}});function o7(D,$){return new Proxy(D,new f3($,!1))}function f2(D,$){return new Proxy(D,new Y6(new Proxy(D.table,new f3($,!1))))}function cF(D,$){return new m.Aliased(k3(D.sql,$),D.fieldAlias)}function k3(D,$){return M.join(D.queryChunks.map((F)=>{if(I(F,OD))return f2(F,$);if(I(F,m))return k3(F,$);if(I(F,m.Aliased))return cF(F,$);return F}))}var Y6,f3;var a7=Z(()=>{U2();a();D0();V0();n2();Y6=class Y6{constructor(D){this.table=D}static[P]="ColumnAliasProxyHandler";get(D,$){if($==="table")return this.table;return D[$]}};f3=class f3{constructor(D,$){this.alias=D,this.replaceOriginalName=$}static[P]="TableAliasProxyHandler";get(D,$){if($===x.Symbol.IsAlias)return!0;if($===x.Symbol.Name)return this.alias;if(this.replaceOriginalName&&$===x.Symbol.OriginalName)return this.alias;if($===fD)return{...D[fD],name:this.alias,isAlias:!0};if($===x.Symbol.Columns){let X=D[x.Symbol.Columns];if(!X)return X;let J={};return Object.keys(X).map((G)=>{J[G]=new Proxy(X[G],new Y6(new Proxy(D,this)))}),J}let F=D[$];if(I(F,OD))return new Proxy(F,new Y6(new Proxy(D,this)));return F}}});var cD;var G6=Z(()=>{a7();U2();a();D0();_2();n2();cD=class cD{static[P]="SelectionProxyHandler";config;constructor(D){this.config={...D}}get(D,$){if($==="_")return{...D._,selectedFields:new Proxy(D._.selectedFields,this)};if($===fD)return{...D[fD],selectedFields:new Proxy(D[fD].selectedFields,this)};if(typeof $==="symbol")return D[$];let X=(I(D,pD)?D._.selectedFields:I(D,h0)?D[fD].selectedFields:D)[$];if(I(X,m.Aliased)){if(this.config.sqlAliasedBehavior==="sql"&&!X.isSelectionField)return X.sql;let J=X.clone();return J.isSelectionField=!0,J}if(I(X,m)){if(this.config.sqlBehavior==="sql")return X;throw Error(`You tried to reference "${$}" field from a subquery, which is a raw SQL field, but it doesn't have an alias declared. Please add an alias to the field using ".as('alias')" method.`)}if(I(X,OD)){if(this.config.alias)return new Proxy(X,new Y6(new Proxy(X.table,new f3(this.config.alias,this.config.replaceOriginalName??!1))));return X}if(typeof X!=="object"||X===null)return X;return new Proxy(X,new cD(this.config))}}});var R0;var s2=Z(()=>{a();R0=class R0{static[P]="QueryPromise";[Symbol.toStringTag]="QueryPromise";catch(D){return this.then(void 0,D)}finally(D){return this.then(($)=>{return D?.(),$},($)=>{throw D?.(),$})}then(D,$){return this.execute().then(D,$)}}});var dF,jV;var lF=Z(()=>{a();q3();dF=class dF{static[P]="SQLiteForeignKeyBuilder";reference;_onUpdate;_onDelete;constructor(D,$){if(this.reference=()=>{let{name:F,columns:X,foreignColumns:J}=D();return{name:F,columns:X,foreignTable:J[0].table,foreignColumns:J}},$)this._onUpdate=$.onUpdate,this._onDelete=$.onDelete}onUpdate(D){return this._onUpdate=D,this}onDelete(D){return this._onDelete=D,this}build(D){return new jV(D,this)}};jV=class jV{constructor(D,$){this.table=D,this.reference=$.reference,this.onUpdate=$._onUpdate,this.onDelete=$._onDelete}static[P]="SQLiteForeignKey";reference;onUpdate;onDelete;getName(){let{name:D,columns:$,foreignColumns:F}=this.reference(),X=$.map((Y)=>Y.name),J=F.map((Y)=>Y.name),G=[this.table[T0],...X,F[0].table[T0],...J];return D??`${G.join("_")}_fk`}}});function zV(D,$){return`${D[T0]}_${$.join("_")}_unique`}var iF=Z(()=>{q3()});var $0,xD;var Z8=Z(()=>{fF();U2();a();lF();iF();$0=class $0 extends bF{static[P]="SQLiteColumnBuilder";foreignKeyConfigs=[];references(D,$={}){return this.foreignKeyConfigs.push({ref:D,actions:$}),this}unique(D){return this.config.isUnique=!0,this.config.uniqueName=D,this}generatedAlwaysAs(D,$){return this.config.generated={as:D,type:"always",mode:$?.mode??"virtual"},this}buildForeignKeys(D,$){return this.foreignKeyConfigs.map(({ref:F,actions:X})=>{return((J,G)=>{let Y=new dF(()=>{let B=J();return{columns:[D],foreignColumns:[B]}});if(G.onUpdate)Y.onUpdate(G.onUpdate);if(G.onDelete)Y.onDelete(G.onDelete);return Y.build($)})(F,X)})}};xD=class xD extends OD{constructor(D,$){if(!$.uniqueName)$.uniqueName=zV(D,[$.name]);super(D,$);this.table=D}static[P]="SQLiteColumn"}});function kV(D,$){let{name:F,config:X}=S2(D,$);if(X?.mode==="json")return new wV(F);if(X?.mode==="bigint")return new IV(F);return new bV(F)}var IV,TV,wV,SV,bV,fV;var nF=Z(()=>{a();Z0();Z8();IV=class IV extends $0{static[P]="SQLiteBigIntBuilder";constructor(D){super(D,"bigint","SQLiteBigInt")}build(D){return new TV(D,this.config)}};TV=class TV extends xD{static[P]="SQLiteBigInt";getSQLType(){return"blob"}mapFromDriverValue(D){if(typeof Buffer<"u"&&Buffer.from){let $=Buffer.isBuffer(D)?D:D instanceof ArrayBuffer?Buffer.from(D):D.buffer?Buffer.from(D.buffer,D.byteOffset,D.byteLength):Buffer.from(D);return BigInt($.toString("utf8"))}return BigInt(gF.decode(D))}mapToDriverValue(D){return Buffer.from(D.toString())}};wV=class wV extends $0{static[P]="SQLiteBlobJsonBuilder";constructor(D){super(D,"json","SQLiteBlobJson")}build(D){return new SV(D,this.config)}};SV=class SV extends xD{static[P]="SQLiteBlobJson";getSQLType(){return"blob"}mapFromDriverValue(D){if(typeof Buffer<"u"&&Buffer.from){let $=Buffer.isBuffer(D)?D:D instanceof ArrayBuffer?Buffer.from(D):D.buffer?Buffer.from(D.buffer,D.byteOffset,D.byteLength):Buffer.from(D);return JSON.parse($.toString("utf8"))}return JSON.parse(gF.decode(D))}mapToDriverValue(D){return Buffer.from(JSON.stringify(D))}};bV=class bV extends $0{static[P]="SQLiteBlobBufferBuilder";constructor(D){super(D,"buffer","SQLiteBlobBuffer")}build(D){return new fV(D,this.config)}};fV=class fV extends xD{static[P]="SQLiteBlobBuffer";mapFromDriverValue(D){if(Buffer.isBuffer(D))return D;return Buffer.from(D)}getSQLType(){return"blob"}}});function xV(D){return($,F)=>{let{name:X,config:J}=S2($,F);return new vV(X,J,D)}}var vV,hV;var sF=Z(()=>{a();Z0();Z8();vV=class vV extends $0{static[P]="SQLiteCustomColumnBuilder";constructor(D,$,F){super(D,"custom","SQLiteCustomColumn");this.config.fieldConfig=$,this.config.customTypeParams=F}build(D){return new hV(D,this.config)}};hV=class hV extends xD{static[P]="SQLiteCustomColumn";sqlName;mapTo;mapFrom;constructor(D,$){super(D,$);this.sqlName=$.customTypeParams.dataType($.fieldConfig),this.mapTo=$.customTypeParams.toDriver,this.mapFrom=$.customTypeParams.fromDriver}getSQLType(){return this.sqlName}mapFromDriverValue(D){return typeof this.mapFrom==="function"?this.mapFrom(D):D}mapToDriverValue(D){return typeof this.mapTo==="function"?this.mapTo(D):D}}});function TD(D,$){let{name:F,config:X}=S2(D,$);if(X?.mode==="timestamp"||X?.mode==="timestamp_ms")return new uV(F,X.mode);if(X?.mode==="boolean")return new pV(F,X.mode);return new gV(F)}var t7,e7,gV,yV,uV,mV,pV,cV;var rF=Z(()=>{a();D0();Z0();Z8();t7=class t7 extends $0{static[P]="SQLiteBaseIntegerBuilder";constructor(D,$,F){super(D,$,F);this.config.autoIncrement=!1}primaryKey(D){if(D?.autoIncrement)this.config.autoIncrement=!0;return this.config.hasDefault=!0,super.primaryKey()}};e7=class e7 extends xD{static[P]="SQLiteBaseInteger";autoIncrement=this.config.autoIncrement;getSQLType(){return"integer"}};gV=class gV extends t7{static[P]="SQLiteIntegerBuilder";constructor(D){super(D,"number","SQLiteInteger")}build(D){return new yV(D,this.config)}};yV=class yV extends e7{static[P]="SQLiteInteger"};uV=class uV extends t7{static[P]="SQLiteTimestampBuilder";constructor(D,$){super(D,"date","SQLiteTimestamp");this.config.mode=$}defaultNow(){return this.default(M`(cast((julianday('now') - 2440587.5)*86400000 as integer))`)}build(D){return new mV(D,this.config)}};mV=class mV extends e7{static[P]="SQLiteTimestamp";mode=this.config.mode;mapFromDriverValue(D){if(this.config.mode==="timestamp")return new Date(D*1000);return new Date(D)}mapToDriverValue(D){let $=D.getTime();if(this.config.mode==="timestamp")return Math.floor($/1000);return $}};pV=class pV extends t7{static[P]="SQLiteBooleanBuilder";constructor(D,$){super(D,"boolean","SQLiteBoolean");this.config.mode=$}build(D){return new cV(D,this.config)}};cV=class cV extends e7{static[P]="SQLiteBoolean";mode=this.config.mode;mapFromDriverValue(D){return Number(D)===1}mapToDriverValue(D){return D?1:0}}});function oV(D,$){let{name:F,config:X}=S2(D,$),J=X?.mode;return J==="number"?new iV(F):J==="bigint"?new sV(F):new dV(F)}var dV,lV,iV,nV,sV,rV;var oF=Z(()=>{a();Z0();Z8();dV=class dV extends $0{static[P]="SQLiteNumericBuilder";constructor(D){super(D,"string","SQLiteNumeric")}build(D){return new lV(D,this.config)}};lV=class lV extends xD{static[P]="SQLiteNumeric";mapFromDriverValue(D){if(typeof D==="string")return D;return String(D)}getSQLType(){return"numeric"}};iV=class iV extends $0{static[P]="SQLiteNumericNumberBuilder";constructor(D){super(D,"number","SQLiteNumericNumber")}build(D){return new nV(D,this.config)}};nV=class nV extends xD{static[P]="SQLiteNumericNumber";mapFromDriverValue(D){if(typeof D==="number")return D;return Number(D)}mapToDriverValue=String;getSQLType(){return"numeric"}};sV=class sV extends $0{static[P]="SQLiteNumericBigIntBuilder";constructor(D){super(D,"bigint","SQLiteNumericBigInt")}build(D){return new rV(D,this.config)}};rV=class rV extends xD{static[P]="SQLiteNumericBigInt";mapFromDriverValue=BigInt;mapToDriverValue=String;getSQLType(){return"numeric"}}});function eV(D){return new aV(D??"")}var aV,tV;var aF=Z(()=>{a();Z8();aV=class aV extends $0{static[P]="SQLiteRealBuilder";constructor(D){super(D,"number","SQLiteReal")}build(D){return new tV(D,this.config)}};tV=class tV extends xD{static[P]="SQLiteReal";getSQLType(){return"real"}}});function T(D,$={}){let{name:F,config:X}=S2(D,$);if(X.mode==="json")return new FQ(F);return new DQ(F,X)}var DQ,$Q,FQ,XQ;var tF=Z(()=>{a();Z0();Z8();DQ=class DQ extends $0{static[P]="SQLiteTextBuilder";constructor(D,$){super(D,"string","SQLiteText");this.config.enumValues=$.enum,this.config.length=$.length}build(D){return new $Q(D,this.config)}};$Q=class $Q extends xD{static[P]="SQLiteText";enumValues=this.config.enumValues;length=this.config.length;constructor(D,$){super(D,$)}getSQLType(){return`text${this.config.length?`(${this.config.length})`:""}`}};FQ=class FQ extends $0{static[P]="SQLiteTextJsonBuilder";constructor(D){super(D,"json","SQLiteTextJson")}build(D){return new XQ(D,this.config)}};XQ=class XQ extends xD{static[P]="SQLiteTextJson";getSQLType(){return"text"}mapFromDriverValue(D){return JSON.parse(D)}mapToDriverValue(D){return JSON.stringify(D)}}});function JQ(){return{blob:kV,customType:xV,integer:TD,numeric:oV,real:eV,text:T}}var YQ=Z(()=>{nF();sF();rF();oF();aF();tF()});function kj(D,$,F,X,J=D){let G=new F0(D,X,J),Y=typeof $==="function"?$(JQ()):$,B=Object.fromEntries(Object.entries(Y).map(([W,Q])=>{let U=Q;U.setName(W);let _=U.build(G);return G[eF].push(...U.buildForeignKeys(_,G)),[W,_]})),H=Object.assign(G,B);if(H[x.Symbol.Columns]=B,H[x.Symbol.ExtraConfigColumns]=B,F)H[F0.Symbol.ExtraConfigBuilder]=F;return H}var eF,F0,Q0=(D,$,F)=>{return kj(D,$,F)};var F1=Z(()=>{a();V0();YQ();eF=Symbol.for("drizzle:SQLiteInlineForeignKeys");F0=class F0 extends x{static[P]="SQLiteTable";static Symbol=Object.assign({},x.Symbol,{InlineForeignKeys:eF});[x.Symbol.Columns];[eF]=[];[x.Symbol.ExtraConfigBuilder]=void 0}});var GQ=()=>{};function g0(D){return new DX(D,!1)}function WQ(D){return new DX(D,!0)}var DX,BQ,HQ;var VQ=Z(()=>{a();DX=class DX{constructor(D,$){this.name=D,this.unique=$}static[P]="SQLiteIndexBuilderOn";on(...D){return new BQ(this.name,D,this.unique)}};BQ=class BQ{static[P]="SQLiteIndexBuilder";config;constructor(D,$,F){this.config={name:D,columns:$,unique:F,where:void 0}}where(D){return this.config.where=D,this}build(D){return new HQ(this.config,D)}};HQ=class HQ{static[P]="SQLiteIndex";config;constructor(D,$){this.config={...D,table:$}}}});var QQ=()=>{};function A2(D){if(I(D,F0))return[`${D[x.Symbol.BaseName]}`];if(I(D,pD))return D._.usedTables??[];if(I(D,m))return D.usedTables??[];return[]}var B6=Z(()=>{a();D0();_2();V0();F1()});var D4;var UQ=Z(()=>{a();s2();G6();F1();V0();Z0();B6();D4=class D4 extends R0{constructor(D,$,F,X){super();this.table=D,this.session=$,this.dialect=F,this.config={table:D,withList:X}}static[P]="SQLiteDelete";config;where(D){return this.config.where=D,this}orderBy(...D){if(typeof D[0]==="function"){let $=D[0](new Proxy(this.config.table[x.Symbol.Columns],new cD({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),F=Array.isArray($)?$:[$];this.config.orderBy=F}else{let $=D;this.config.orderBy=$}return this}limit(D){return this.config.limit=D,this}returning(D=this.table[F0.Symbol.Columns]){return this.config.returning=x0(D),this}getSQL(){return this.dialect.buildDeleteQuery(this.config)}toSQL(){let{typings:D,...$}=this.dialect.sqlToQuery(this.getSQL());return $}_prepare(D=!0){return this.session[D?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",!0,void 0,{type:"delete",tables:A2(this.config.table)})}prepare(){return this._prepare(!1)}run=(D)=>{return this._prepare().run(D)};all=(D)=>{return this._prepare().all(D)};get=(D)=>{return this._prepare().get(D)};values=(D)=>{return this._prepare().values(D)};async execute(D){return this._prepare().execute(D)}$dynamic(){return this}}});function vj(D){return(D.replace(/['\u2019]/g,"").match(/[\da-z]+|[A-Z]+(?![a-z])|[A-Z][\da-z]+/g)??[]).map((F)=>F.toLowerCase()).join("_")}function hj(D){return(D.replace(/['\u2019]/g,"").match(/[\da-z]+|[A-Z]+(?![a-z])|[A-Z][\da-z]+/g)??[]).reduce((F,X,J)=>{let G=J===0?X.toLowerCase():`${X[0].toUpperCase()}${X.slice(1)}`;return F+G},"")}function xj(D){return D}var $X;var _Q=Z(()=>{a();V0();$X=class $X{static[P]="CasingCache";cache={};cachedTables={};convert;constructor(D){this.convert=D==="snake_case"?vj:D==="camelCase"?hj:xj}getColumnCasing(D){if(!D.keyAsName)return D.name;let $=D.table[x.Symbol.Schema]??"public",F=D.table[x.Symbol.OriginalName],X=`${$}.${F}.${D.name}`;if(!this.cache[X])this.cacheTable(D.table);return this.cache[X]}cacheTable(D){let $=D[x.Symbol.Schema]??"public",F=D[x.Symbol.OriginalName],X=`${$}.${F}`;if(!this.cachedTables[X]){for(let J of Object.values(D[x.Symbol.Columns])){let G=`${X}.${J.name}`;this.cache[G]=this.convert(J.name)}this.cachedTables[X]=!0}}clearCache(){this.cache={},this.cachedTables={}}}});var H6,r2,FX;var $4=Z(()=>{a();H6=class H6 extends Error{static[P]="DrizzleError";constructor({message:D,cause:$}){super(D);this.name="DrizzleError",this.cause=$}};r2=class r2 extends Error{constructor(D,$,F){super(`Failed query: ${D}
|
|
112
|
-
params: ${$}`);if(this.query=D,this.params=$,this.cause=F,Error.captureStackTrace(this,r2),F)this.cause=F}};FX=class FX extends H6{static[P]="TransactionRollbackError";constructor(){super({message:"Rollback"})}}});function F4(D){return M`count(${D||M.raw("*")})`.mapWith(Number)}var AQ=Z(()=>{D0()});var KQ=()=>{};var OQ=Z(()=>{AQ();KQ()});var XX=Z(()=>{mF();OQ();D0()});var JX=Z(()=>{nF();Z8();sF();rF();oF();aF();tF()});var X1;var X4=Z(()=>{a();D0();X1=class X1 extends h0{static[P]="SQLiteViewBase"}});var v3,h3;var J4=Z(()=>{a7();_Q();U2();a();$4();b3();XX();D0();JX();F1();_2();V0();Z0();n2();X4();v3=class v3{static[P]="SQLiteDialect";casing;constructor(D){this.casing=new $X(D?.casing)}escapeName(D){return`"${D}"`}escapeParam(D){return"?"}escapeString(D){return`'${D.replace(/'/g,"''")}'`}buildWithCTE(D){if(!D?.length)return;let $=[M`with `];for(let[F,X]of D.entries())if($.push(M`${M.identifier(X._.alias)} as (${X._.sql})`),F<D.length-1)$.push(M`, `);return $.push(M` `),M.join($)}buildDeleteQuery({table:D,where:$,returning:F,withList:X,limit:J,orderBy:G}){let Y=this.buildWithCTE(X),B=F?M` returning ${this.buildSelection(F,{isSingleTable:!0})}`:void 0,H=$?M` where ${$}`:void 0,W=this.buildOrderBy(G),Q=this.buildLimit(J);return M`${Y}delete from ${D}${H}${B}${W}${Q}`}buildUpdateSet(D,$){let F=D[x.Symbol.Columns],X=Object.keys(F).filter((G)=>$[G]!==void 0||F[G]?.onUpdateFn!==void 0),J=X.length;return M.join(X.flatMap((G,Y)=>{let B=F[G],H=$[G]??M.param(B.onUpdateFn(),B),W=M`${M.identifier(this.casing.getColumnCasing(B))} = ${H}`;if(Y<J-1)return[W,M.raw(", ")];return[W]}))}buildUpdateQuery({table:D,set:$,where:F,returning:X,withList:J,joins:G,from:Y,limit:B,orderBy:H}){let W=this.buildWithCTE(J),Q=this.buildUpdateSet(D,$),U=Y&&M.join([M.raw(" from "),this.buildFromTable(Y)]),_=this.buildJoins(G),A=X?M` returning ${this.buildSelection(X,{isSingleTable:!0})}`:void 0,C=F?M` where ${F}`:void 0,O=this.buildOrderBy(H),K=this.buildLimit(B);return M`${W}update ${D} set ${Q}${U}${_}${C}${A}${O}${K}`}buildSelection(D,{isSingleTable:$=!1}={}){let F=D.length,X=D.flatMap(({field:J},G)=>{let Y=[];if(I(J,m.Aliased)&&J.isSelectionField)Y.push(M.identifier(J.fieldAlias));else if(I(J,m.Aliased)||I(J,m)){let B=I(J,m.Aliased)?J.sql:J;if($)Y.push(new m(B.queryChunks.map((H)=>{if(I(H,OD))return M.identifier(this.casing.getColumnCasing(H));return H})));else Y.push(B);if(I(J,m.Aliased))Y.push(M` as ${M.identifier(J.fieldAlias)}`)}else if(I(J,OD)){let B=J.table[x.Symbol.Name];if(J.columnType==="SQLiteNumericBigInt")if($)Y.push(M`cast(${M.identifier(this.casing.getColumnCasing(J))} as text)`);else Y.push(M`cast(${M.identifier(B)}.${M.identifier(this.casing.getColumnCasing(J))} as text)`);else if($)Y.push(M.identifier(this.casing.getColumnCasing(J)));else Y.push(M`${M.identifier(B)}.${M.identifier(this.casing.getColumnCasing(J))}`)}if(G<F-1)Y.push(M`, `);return Y});return M.join(X)}buildJoins(D){if(!D||D.length===0)return;let $=[];if(D)for(let[F,X]of D.entries()){if(F===0)$.push(M` `);let J=X.table,G=X.on?M` on ${X.on}`:void 0;if(I(J,F0)){let Y=J[F0.Symbol.Name],B=J[F0.Symbol.Schema],H=J[F0.Symbol.OriginalName],W=Y===H?void 0:X.alias;$.push(M`${M.raw(X.joinType)} join ${B?M`${M.identifier(B)}.`:void 0}${M.identifier(H)}${W&&M` ${M.identifier(W)}`}${G}`)}else $.push(M`${M.raw(X.joinType)} join ${J}${G}`);if(F<D.length-1)$.push(M` `)}return M.join($)}buildLimit(D){return typeof D==="object"||typeof D==="number"&&D>=0?M` limit ${D}`:void 0}buildOrderBy(D){let $=[];if(D){for(let[F,X]of D.entries())if($.push(X),F<D.length-1)$.push(M`, `)}return $.length>0?M` order by ${M.join($)}`:void 0}buildFromTable(D){if(I(D,x)&&D[x.Symbol.IsAlias])return M`${M`${M.identifier(D[x.Symbol.Schema]??"")}.`.if(D[x.Symbol.Schema])}${M.identifier(D[x.Symbol.OriginalName])} ${M.identifier(D[x.Symbol.Name])}`;return D}buildSelectQuery({withList:D,fields:$,fieldsFlat:F,where:X,having:J,table:G,joins:Y,orderBy:B,groupBy:H,limit:W,offset:Q,distinct:U,setOperators:_}){let A=F??x0($);for(let $D of A)if(I($D.field,OD)&&C8($D.field.table)!==(I(G,pD)?G._.alias:I(G,X1)?G[fD].name:I(G,m)?void 0:C8(G))&&!((rD)=>Y?.some(({alias:j2})=>j2===(rD[x.Symbol.IsAlias]?C8(rD):rD[x.Symbol.BaseName])))($D.field.table)){let rD=C8($D.field.table);throw Error(`Your "${$D.path.join("->")}" field references a column "${rD}"."${$D.field.name}", but the table "${rD}" is not part of the query! Did you forget to join it?`)}let C=!Y||Y.length===0,O=this.buildWithCTE(D),K=U?M` distinct`:void 0,R=this.buildSelection(A,{isSingleTable:C}),q=this.buildFromTable(G),N=this.buildJoins(Y),S=X?M` where ${X}`:void 0,b=J?M` having ${J}`:void 0,L=[];if(H){for(let[$D,rD]of H.entries())if(L.push(rD),$D<H.length-1)L.push(M`, `)}let z=L.length>0?M` group by ${M.join(L)}`:void 0,j=this.buildOrderBy(B),d=this.buildLimit(W),VD=Q?M` offset ${Q}`:void 0,QD=M`${O}select${K} ${R} from ${q}${N}${S}${z}${b}${j}${d}${VD}`;if(_.length>0)return this.buildSetOperations(QD,_);return QD}buildSetOperations(D,$){let[F,...X]=$;if(!F)throw Error("Cannot pass undefined values to any set operator");if(X.length===0)return this.buildSetOperationQuery({leftSelect:D,setOperator:F});return this.buildSetOperations(this.buildSetOperationQuery({leftSelect:D,setOperator:F}),X)}buildSetOperationQuery({leftSelect:D,setOperator:{type:$,isAll:F,rightSelect:X,limit:J,orderBy:G,offset:Y}}){let B=M`${D.getSQL()} `,H=M`${X.getSQL()}`,W;if(G&&G.length>0){let A=[];for(let C of G)if(I(C,xD))A.push(M.identifier(C.name));else if(I(C,m)){for(let O=0;O<C.queryChunks.length;O++){let K=C.queryChunks[O];if(I(K,xD))C.queryChunks[O]=M.identifier(this.casing.getColumnCasing(K))}A.push(M`${C}`)}else A.push(M`${C}`);W=M` order by ${M.join(A,M`, `)}`}let Q=typeof J==="object"||typeof J==="number"&&J>=0?M` limit ${J}`:void 0,U=M.raw(`${$} ${F?"all ":""}`),_=Y?M` offset ${Y}`:void 0;return M`${B}${U}${H}${W}${Q}${_}`}buildInsertQuery({table:D,values:$,onConflict:F,returning:X,withList:J,select:G}){let Y=[],B=D[x.Symbol.Columns],H=Object.entries(B).filter(([C,O])=>!O.shouldDisableInsert()),W=H.map(([,C])=>M.identifier(this.casing.getColumnCasing(C)));if(G){let C=$;if(I(C,m))Y.push(C);else Y.push(C.getSQL())}else{let C=$;Y.push(M.raw("values "));for(let[O,K]of C.entries()){let R=[];for(let[q,N]of H){let S=K[q];if(S===void 0||I(S,w0)&&S.value===void 0){let b;if(N.default!==null&&N.default!==void 0)b=I(N.default,m)?N.default:M.param(N.default,N);else if(N.defaultFn!==void 0){let L=N.defaultFn();b=I(L,m)?L:M.param(L,N)}else if(!N.default&&N.onUpdateFn!==void 0){let L=N.onUpdateFn();b=I(L,m)?L:M.param(L,N)}else b=M`null`;R.push(b)}else R.push(S)}if(Y.push(R),O<C.length-1)Y.push(M`, `)}}let Q=this.buildWithCTE(J),U=M.join(Y),_=X?M` returning ${this.buildSelection(X,{isSingleTable:!0})}`:void 0,A=F?.length?M.join(F):void 0;return M`${Q}insert into ${D} ${W} ${U}${A}${_}`}sqlToQuery(D,$){return D.toQuery({casing:this.casing,escapeName:this.escapeName,escapeParam:this.escapeParam,escapeString:this.escapeString,invokeSource:$})}buildRelationalQuery({fullSchema:D,schema:$,tableNamesMap:F,table:X,tableConfig:J,queryConfig:G,tableAlias:Y,nestedQueryRelation:B,joinOn:H}){let W=[],Q,U,_=[],A,C=[];if(G===!0)W=Object.entries(J.columns).map(([R,q])=>({dbKey:q.name,tsKey:R,field:f2(q,Y),relationTableTsKey:void 0,isJson:!1,selection:[]}));else{let K=Object.fromEntries(Object.entries(J.columns).map(([L,z])=>[L,f2(z,Y)]));if(G.where){let L=typeof G.where==="function"?G.where(K,ZV()):G.where;A=L&&k3(L,Y)}let R=[],q=[];if(G.columns){let L=!1;for(let[z,j]of Object.entries(G.columns)){if(j===void 0)continue;if(z in J.columns){if(!L&&j===!0)L=!0;q.push(z)}}if(q.length>0)q=L?q.filter((z)=>G.columns?.[z]===!0):Object.keys(J.columns).filter((z)=>!q.includes(z))}else q=Object.keys(J.columns);for(let L of q){let z=J.columns[L];R.push({tsKey:L,value:z})}let N=[];if(G.with)N=Object.entries(G.with).filter((L)=>!!L[1]).map(([L,z])=>({tsKey:L,queryConfig:z,relation:J.relations[L]}));let S;if(G.extras){S=typeof G.extras==="function"?G.extras(K,{sql:M}):G.extras;for(let[L,z]of Object.entries(S))R.push({tsKey:L,value:cF(z,Y)})}for(let{tsKey:L,value:z}of R)W.push({dbKey:I(z,m.Aliased)?z.fieldAlias:J.columns[L].name,tsKey:L,field:I(z,OD)?f2(z,Y):z,relationTableTsKey:void 0,isJson:!1,selection:[]});let b=typeof G.orderBy==="function"?G.orderBy(K,qV()):G.orderBy??[];if(!Array.isArray(b))b=[b];_=b.map((L)=>{if(I(L,OD))return f2(L,Y);return k3(L,Y)}),Q=G.limit,U=G.offset;for(let{tsKey:L,queryConfig:z,relation:j}of N){let d=PV($,F,j),VD=$1(j.referencedTable),QD=F[VD],$D=`${Y}_${L}`,rD=uD(...d.fields.map((Qq,Uq)=>v(f2(d.references[Uq],$D),f2(Qq,Y)))),j2=this.buildRelationalQuery({fullSchema:D,schema:$,tableNamesMap:F,table:D[QD],tableConfig:$[QD],queryConfig:I(j,M8)?z===!0?{limit:1}:{...z,limit:1}:z,tableAlias:$D,joinOn:rD,nestedQueryRelation:j}),Vq=M`(${j2.sql})`.as(L);W.push({dbKey:L,tsKey:L,field:Vq,relationTableTsKey:QD,isJson:!0,selection:j2.selection})}}if(W.length===0)throw new H6({message:`No fields selected for table "${J.tsName}" ("${Y}"). You need to have at least one item in "columns", "with" or "extras". If you need to select all columns, omit the "columns" key or set it to undefined.`});let O;if(A=uD(H,A),B){let K=M`json_array(${M.join(W.map(({field:N})=>I(N,xD)?M.identifier(this.casing.getColumnCasing(N)):I(N,m.Aliased)?N.sql:N),M`, `)})`;if(I(B,S3))K=M`coalesce(json_group_array(${K}), json_array())`;let R=[{dbKey:"data",tsKey:"data",field:K.as("data"),isJson:!0,relationTableTsKey:J.tsName,selection:W}];if(Q!==void 0||U!==void 0||_.length>0)O=this.buildSelectQuery({table:o7(X,Y),fields:{},fieldsFlat:[{path:[],field:M.raw("*")}],where:A,limit:Q,offset:U,orderBy:_,setOperators:[]}),A=void 0,Q=void 0,U=void 0,_=void 0;else O=o7(X,Y);O=this.buildSelectQuery({table:I(O,F0)?O:new pD(O,{},Y),fields:{},fieldsFlat:R.map(({field:N})=>({path:[],field:I(N,OD)?f2(N,Y):N})),joins:C,where:A,limit:Q,offset:U,orderBy:_,setOperators:[]})}else O=this.buildSelectQuery({table:o7(X,Y),fields:{},fieldsFlat:W.map(({field:K})=>({path:[],field:I(K,OD)?f2(K,Y):K})),joins:C,where:A,limit:Q,offset:U,orderBy:_,setOperators:[]});return{tableTsKey:J.tsName,sql:O,selection:W}}};h3=class h3 extends v3{static[P]="SQLiteSyncDialect";migrate(D,$,F){let X=F===void 0?"__drizzle_migrations":typeof F==="string"?"__drizzle_migrations":F.migrationsTable??"__drizzle_migrations",J=M`
|
|
113
|
-
CREATE TABLE IF NOT EXISTS ${M.identifier(X)} (
|
|
114
|
-
id SERIAL PRIMARY KEY,
|
|
115
|
-
hash text NOT NULL,
|
|
116
|
-
created_at numeric
|
|
117
|
-
)
|
|
118
|
-
`;$.run(J);let Y=$.values(M`SELECT id, hash, created_at FROM ${M.identifier(X)} ORDER BY created_at DESC LIMIT 1`)[0]??void 0;$.run(M`BEGIN`);try{for(let B of D)if(!Y||Number(Y[2])<B.folderMillis){for(let H of B.sql)$.run(M.raw(H));$.run(M`INSERT INTO ${M.identifier(X)} ("hash", "created_at") VALUES(${B.hash}, ${B.folderMillis})`)}$.run(M`COMMIT`)}catch(B){throw $.run(M`ROLLBACK`),B}}}});var YX;var CQ=Z(()=>{a();YX=class YX{static[P]="TypedQueryBuilder";getSelectedFields(){return this._.selectedFields}}});function Y4(D,$){return(F,X,...J)=>{let G=[X,...J].map((Y)=>({type:D,isAll:$,rightSelect:Y}));for(let Y of G)if(!z3(F.getSelectedFields(),Y.rightSelect.getSelectedFields()))throw Error("Set operator error (union / intersect / except): selected fields are not the same or are in a different order");return F.addSetOperators(G)}}var K2,RQ,GX,gj=()=>({union:yj,unionAll:uj,intersect:mj,except:pj}),yj,uj,mj,pj;var BX=Z(()=>{a();CQ();s2();G6();D0();_2();V0();Z0();n2();B6();X4();K2=class K2{static[P]="SQLiteSelectBuilder";fields;session;dialect;withList;distinct;constructor(D){this.fields=D.fields,this.session=D.session,this.dialect=D.dialect,this.withList=D.withList,this.distinct=D.distinct}from(D){let $=!!this.fields,F;if(this.fields)F=this.fields;else if(I(D,pD))F=Object.fromEntries(Object.keys(D._.selectedFields).map((X)=>[X,D[X]]));else if(I(D,X1))F=D[fD].selectedFields;else if(I(D,m))F={};else F=aW(D);return new GX({table:D,fields:F,isPartialSelect:$,session:this.session,dialect:this.dialect,withList:this.withList,distinct:this.distinct})}};RQ=class RQ extends YX{static[P]="SQLiteSelectQueryBuilder";_;config;joinsNotNullableMap;tableName;isPartialSelect;session;dialect;cacheConfig=void 0;usedTables=new Set;constructor({table:D,fields:$,isPartialSelect:F,session:X,dialect:J,withList:G,distinct:Y}){super();this.config={withList:G,table:D,fields:{...$},distinct:Y,setOperators:[]},this.isPartialSelect=F,this.session=X,this.dialect=J,this._={selectedFields:$,config:this.config},this.tableName=I3(D),this.joinsNotNullableMap=typeof this.tableName==="string"?{[this.tableName]:!0}:{};for(let B of A2(D))this.usedTables.add(B)}getUsedTables(){return[...this.usedTables]}createJoin(D){return($,F)=>{let X=this.tableName,J=I3($);for(let G of A2($))this.usedTables.add(G);if(typeof J==="string"&&this.config.joins?.some((G)=>G.alias===J))throw Error(`Alias "${J}" is already used in this query`);if(!this.isPartialSelect){if(Object.keys(this.joinsNotNullableMap).length===1&&typeof X==="string")this.config.fields={[X]:this.config.fields};if(typeof J==="string"&&!I($,m)){let G=I($,pD)?$._.selectedFields:I($,h0)?$[fD].selectedFields:$[x.Symbol.Columns];this.config.fields[J]=G}}if(typeof F==="function")F=F(new Proxy(this.config.fields,new cD({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})));if(!this.config.joins)this.config.joins=[];if(this.config.joins.push({on:F,table:$,joinType:D,alias:J}),typeof J==="string")switch(D){case"left":{this.joinsNotNullableMap[J]=!1;break}case"right":{this.joinsNotNullableMap=Object.fromEntries(Object.entries(this.joinsNotNullableMap).map(([G])=>[G,!1])),this.joinsNotNullableMap[J]=!0;break}case"cross":case"inner":{this.joinsNotNullableMap[J]=!0;break}case"full":{this.joinsNotNullableMap=Object.fromEntries(Object.entries(this.joinsNotNullableMap).map(([G])=>[G,!1])),this.joinsNotNullableMap[J]=!1;break}}return this}}leftJoin=this.createJoin("left");rightJoin=this.createJoin("right");innerJoin=this.createJoin("inner");fullJoin=this.createJoin("full");crossJoin=this.createJoin("cross");createSetOperator(D,$){return(F)=>{let X=typeof F==="function"?F(gj()):F;if(!z3(this.getSelectedFields(),X.getSelectedFields()))throw Error("Set operator error (union / intersect / except): selected fields are not the same or are in a different order");return this.config.setOperators.push({type:D,isAll:$,rightSelect:X}),this}}union=this.createSetOperator("union",!1);unionAll=this.createSetOperator("union",!0);intersect=this.createSetOperator("intersect",!1);except=this.createSetOperator("except",!1);addSetOperators(D){return this.config.setOperators.push(...D),this}where(D){if(typeof D==="function")D=D(new Proxy(this.config.fields,new cD({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})));return this.config.where=D,this}having(D){if(typeof D==="function")D=D(new Proxy(this.config.fields,new cD({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})));return this.config.having=D,this}groupBy(...D){if(typeof D[0]==="function"){let $=D[0](new Proxy(this.config.fields,new cD({sqlAliasedBehavior:"alias",sqlBehavior:"sql"})));this.config.groupBy=Array.isArray($)?$:[$]}else this.config.groupBy=D;return this}orderBy(...D){if(typeof D[0]==="function"){let $=D[0](new Proxy(this.config.fields,new cD({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),F=Array.isArray($)?$:[$];if(this.config.setOperators.length>0)this.config.setOperators.at(-1).orderBy=F;else this.config.orderBy=F}else{let $=D;if(this.config.setOperators.length>0)this.config.setOperators.at(-1).orderBy=$;else this.config.orderBy=$}return this}limit(D){if(this.config.setOperators.length>0)this.config.setOperators.at(-1).limit=D;else this.config.limit=D;return this}offset(D){if(this.config.setOperators.length>0)this.config.setOperators.at(-1).offset=D;else this.config.offset=D;return this}getSQL(){return this.dialect.buildSelectQuery(this.config)}toSQL(){let{typings:D,...$}=this.dialect.sqlToQuery(this.getSQL());return $}as(D){let $=[];if($.push(...A2(this.config.table)),this.config.joins)for(let F of this.config.joins)$.push(...A2(F.table));return new Proxy(new pD(this.getSQL(),this.config.fields,D,!1,[...new Set($)]),new cD({alias:D,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}getSelectedFields(){return new Proxy(this.config.fields,new cD({alias:this.tableName,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}$dynamic(){return this}};GX=class GX extends RQ{static[P]="SQLiteSelect";_prepare(D=!0){if(!this.session)throw Error("Cannot execute a query on a query builder. Please use a database instance instead.");let $=x0(this.config.fields),F=this.session[D?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),$,"all",!0,void 0,{type:"select",tables:[...this.usedTables]},this.cacheConfig);return F.joinsNotNullableMap=this.joinsNotNullableMap,F}$withCache(D){return this.cacheConfig=D===void 0?{config:{},enable:!0,autoInvalidate:!0}:D===!1?{enable:!1}:{enable:!0,autoInvalidate:!0,...D},this}prepare(){return this._prepare(!1)}run=(D)=>{return this._prepare().run(D)};all=(D)=>{return this._prepare().all(D)};get=(D)=>{return this._prepare().get(D)};values=(D)=>{return this._prepare().values(D)};async execute(){return this.all()}};oW(GX,[R0]);yj=Y4("union",!1),uj=Y4("union",!0),mj=Y4("intersect",!1),pj=Y4("except",!1)});var x3;var HX=Z(()=>{a();G6();J4();_2();BX();x3=class x3{static[P]="SQLiteQueryBuilder";dialect;dialectConfig;constructor(D){this.dialect=I(D,v3)?D:void 0,this.dialectConfig=I(D,v3)?void 0:D}$with=(D,$)=>{let F=this;return{as:(J)=>{if(typeof J==="function")J=J(F);return new Proxy(new L3(J.getSQL(),$??("getSelectedFields"in J?J.getSelectedFields()??{}:{}),D,!0),new cD({alias:D,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}}};with(...D){let $=this;function F(J){return new K2({fields:J??void 0,session:void 0,dialect:$.getDialect(),withList:D})}function X(J){return new K2({fields:J??void 0,session:void 0,dialect:$.getDialect(),withList:D,distinct:!0})}return{select:F,selectDistinct:X}}select(D){return new K2({fields:D??void 0,session:void 0,dialect:this.getDialect()})}selectDistinct(D){return new K2({fields:D??void 0,session:void 0,dialect:this.getDialect(),distinct:!0})}getDialect(){if(!this.dialect)this.dialect=new h3(this.dialectConfig);return this.dialect}}});var G4,WX;var EQ=Z(()=>{a();s2();D0();F1();V0();Z0();B6();HX();G4=class G4{constructor(D,$,F,X){this.table=D,this.session=$,this.dialect=F,this.withList=X}static[P]="SQLiteInsertBuilder";values(D){if(D=Array.isArray(D)?D:[D],D.length===0)throw Error("values() must be called with at least one value");let $=D.map((F)=>{let X={},J=this.table[x.Symbol.Columns];for(let G of Object.keys(F)){let Y=F[G];X[G]=I(Y,m)?Y:new w0(Y,J[G])}return X});return new WX(this.table,$,this.session,this.dialect,this.withList)}select(D){let $=typeof D==="function"?D(new x3):D;if(!I($,m)&&!z3(this.table[d7],$._.selectedFields))throw Error("Insert select error: selected fields are not the same or are in a different order compared to the table definition");return new WX(this.table,$,this.session,this.dialect,this.withList,!0)}};WX=class WX extends R0{constructor(D,$,F,X,J,G){super();this.session=F,this.dialect=X,this.config={table:D,values:$,withList:J,select:G}}static[P]="SQLiteInsert";config;returning(D=this.config.table[F0.Symbol.Columns]){return this.config.returning=x0(D),this}onConflictDoNothing(D={}){if(!this.config.onConflict)this.config.onConflict=[];if(D.target===void 0)this.config.onConflict.push(M` on conflict do nothing`);else{let $=Array.isArray(D.target)?M`${D.target}`:M`${[D.target]}`,F=D.where?M` where ${D.where}`:M``;this.config.onConflict.push(M` on conflict ${$} do nothing${F}`)}return this}onConflictDoUpdate(D){if(D.where&&(D.targetWhere||D.setWhere))throw Error('You cannot use both "where" and "targetWhere"/"setWhere" at the same time - "where" is deprecated, use "targetWhere" or "setWhere" instead.');if(!this.config.onConflict)this.config.onConflict=[];let $=D.where?M` where ${D.where}`:void 0,F=D.targetWhere?M` where ${D.targetWhere}`:void 0,X=D.setWhere?M` where ${D.setWhere}`:void 0,J=Array.isArray(D.target)?M`${D.target}`:M`${[D.target]}`,G=this.dialect.buildUpdateSet(this.config.table,i7(this.config.table,D.set));return this.config.onConflict.push(M` on conflict ${J}${F} do update set ${G}${$}${X}`),this}getSQL(){return this.dialect.buildInsertQuery(this.config)}toSQL(){let{typings:D,...$}=this.dialect.sqlToQuery(this.getSQL());return $}_prepare(D=!0){return this.session[D?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",!0,void 0,{type:"insert",tables:A2(this.config.table)})}prepare(){return this._prepare(!1)}run=(D)=>{return this._prepare().run(D)};all=(D)=>{return this._prepare().all(D)};get=(D)=>{return this._prepare().get(D)};values=(D)=>{return this._prepare().values(D)};async execute(){return this.config.returning?this.all():this.run()}$dynamic(){return this}}});var B4,MQ;var ZQ=Z(()=>{a();s2();G6();F1();_2();V0();Z0();n2();B6();X4();B4=class B4{constructor(D,$,F,X){this.table=D,this.session=$,this.dialect=F,this.withList=X}static[P]="SQLiteUpdateBuilder";set(D){return new MQ(this.table,i7(this.table,D),this.session,this.dialect,this.withList)}};MQ=class MQ extends R0{constructor(D,$,F,X,J){super();this.session=F,this.dialect=X,this.config={set:$,table:D,withList:J,joins:[]}}static[P]="SQLiteUpdate";config;from(D){return this.config.from=D,this}createJoin(D){return($,F)=>{let X=I3($);if(typeof X==="string"&&this.config.joins.some((J)=>J.alias===X))throw Error(`Alias "${X}" is already used in this query`);if(typeof F==="function"){let J=this.config.from?I($,F0)?$[x.Symbol.Columns]:I($,pD)?$._.selectedFields:I($,X1)?$[fD].selectedFields:void 0:void 0;F=F(new Proxy(this.config.table[x.Symbol.Columns],new cD({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})),J&&new Proxy(J,new cD({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))}return this.config.joins.push({on:F,table:$,joinType:D,alias:X}),this}}leftJoin=this.createJoin("left");rightJoin=this.createJoin("right");innerJoin=this.createJoin("inner");fullJoin=this.createJoin("full");where(D){return this.config.where=D,this}orderBy(...D){if(typeof D[0]==="function"){let $=D[0](new Proxy(this.config.table[x.Symbol.Columns],new cD({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),F=Array.isArray($)?$:[$];this.config.orderBy=F}else{let $=D;this.config.orderBy=$}return this}limit(D){return this.config.limit=D,this}returning(D=this.config.table[F0.Symbol.Columns]){return this.config.returning=x0(D),this}getSQL(){return this.dialect.buildUpdateQuery(this.config)}toSQL(){let{typings:D,...$}=this.dialect.sqlToQuery(this.getSQL());return $}_prepare(D=!0){return this.session[D?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",!0,void 0,{type:"insert",tables:A2(this.config.table)})}prepare(){return this._prepare(!1)}run=(D)=>{return this._prepare().run(D)};all=(D)=>{return this._prepare().all(D)};get=(D)=>{return this._prepare().get(D)};values=(D)=>{return this._prepare().values(D)};async execute(){return this.config.returning?this.all():this.run()}$dynamic(){return this}}});var VX=Z(()=>{UQ();EQ();HX();BX();ZQ()});var g3;var qQ=Z(()=>{a();D0();g3=class g3 extends m{constructor(D){super(g3.buildEmbeddedCount(D.source,D.filters).queryChunks);this.params=D,this.session=D.session,this.sql=g3.buildCount(D.source,D.filters)}sql;static[P]="SQLiteCountBuilderAsync";[Symbol.toStringTag]="SQLiteCountBuilderAsync";session;static buildEmbeddedCount(D,$){return M`(select count(*) from ${D}${M.raw(" where ").if($)}${$})`}static buildCount(D,$){return M`select count(*) from ${D}${M.raw(" where ").if($)}${$}`}then(D,$){return Promise.resolve(this.session.count(this.sql)).then(D,$)}catch(D){return this.then(void 0,D)}finally(D){return this.then(($)=>{return D?.(),$},($)=>{throw D?.(),$})}}});var UX,H4,QX;var NQ=Z(()=>{a();s2();b3();UX=class UX{constructor(D,$,F,X,J,G,Y,B){this.mode=D,this.fullSchema=$,this.schema=F,this.tableNamesMap=X,this.table=J,this.tableConfig=G,this.dialect=Y,this.session=B}static[P]="SQLiteAsyncRelationalQueryBuilder";findMany(D){return this.mode==="sync"?new QX(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,D?D:{},"many"):new H4(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,D?D:{},"many")}findFirst(D){return this.mode==="sync"?new QX(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,D?{...D,limit:1}:{limit:1},"first"):new H4(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,D?{...D,limit:1}:{limit:1},"first")}};H4=class H4 extends R0{constructor(D,$,F,X,J,G,Y,B,H){super();this.fullSchema=D,this.schema=$,this.tableNamesMap=F,this.table=X,this.tableConfig=J,this.dialect=G,this.session=Y,this.config=B,this.mode=H}static[P]="SQLiteAsyncRelationalQuery";mode;getSQL(){return this.dialect.buildRelationalQuery({fullSchema:this.fullSchema,schema:this.schema,tableNamesMap:this.tableNamesMap,table:this.table,tableConfig:this.tableConfig,queryConfig:this.config,tableAlias:this.tableConfig.tsName}).sql}_prepare(D=!1){let{query:$,builtQuery:F}=this._toSQL();return this.session[D?"prepareOneTimeQuery":"prepareQuery"](F,void 0,this.mode==="first"?"get":"all",!0,(X,J)=>{let G=X.map((Y)=>r7(this.schema,this.tableConfig,Y,$.selection,J));if(this.mode==="first")return G[0];return G})}prepare(){return this._prepare(!1)}_toSQL(){let D=this.dialect.buildRelationalQuery({fullSchema:this.fullSchema,schema:this.schema,tableNamesMap:this.tableNamesMap,table:this.table,tableConfig:this.tableConfig,queryConfig:this.config,tableAlias:this.tableConfig.tsName}),$=this.dialect.sqlToQuery(D.sql);return{query:D,builtQuery:$}}toSQL(){return this._toSQL().builtQuery}executeRaw(){if(this.mode==="first")return this._prepare(!1).get();return this._prepare(!1).all()}async execute(){return this.executeRaw()}};QX=class QX extends H4{static[P]="SQLiteSyncRelationalQuery";sync(){return this.executeRaw()}}});var W6;var PQ=Z(()=>{a();s2();W6=class W6 extends R0{constructor(D,$,F,X,J){super();this.execute=D,this.getSQL=$,this.dialect=X,this.mapBatchResult=J,this.config={action:F}}static[P]="SQLiteRaw";config;getQuery(){return{...this.dialect.sqlToQuery(this.getSQL()),method:this.config.action}}mapResult(D,$){return $?this.mapBatchResult(D):D}_prepare(){return this}isResponseInArrayMode(){return!1}}});var y3;var W4=Z(()=>{a();G6();D0();VX();_2();qQ();NQ();PQ();y3=class y3{constructor(D,$,F,X){this.resultKind=D,this.dialect=$,this.session=F,this._=X?{schema:X.schema,fullSchema:X.fullSchema,tableNamesMap:X.tableNamesMap}:{schema:void 0,fullSchema:{},tableNamesMap:{}},this.query={};let J=this.query;if(this._.schema)for(let[G,Y]of Object.entries(this._.schema))J[G]=new UX(D,X.fullSchema,this._.schema,this._.tableNamesMap,X.fullSchema[G],Y,$,F);this.$cache={invalidate:async(G)=>{}}}static[P]="BaseSQLiteDatabase";query;$with=(D,$)=>{let F=this;return{as:(J)=>{if(typeof J==="function")J=J(new x3(F.dialect));return new Proxy(new L3(J.getSQL(),$??("getSelectedFields"in J?J.getSelectedFields()??{}:{}),D,!0),new cD({alias:D,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}}};$count(D,$){return new g3({source:D,filters:$,session:this.session})}with(...D){let $=this;function F(B){return new K2({fields:B??void 0,session:$.session,dialect:$.dialect,withList:D})}function X(B){return new K2({fields:B??void 0,session:$.session,dialect:$.dialect,withList:D,distinct:!0})}function J(B){return new B4(B,$.session,$.dialect,D)}function G(B){return new G4(B,$.session,$.dialect,D)}function Y(B){return new D4(B,$.session,$.dialect,D)}return{select:F,selectDistinct:X,update:J,insert:G,delete:Y}}select(D){return new K2({fields:D??void 0,session:this.session,dialect:this.dialect})}selectDistinct(D){return new K2({fields:D??void 0,session:this.session,dialect:this.dialect,distinct:!0})}update(D){return new B4(D,this.session,this.dialect)}$cache;insert(D){return new G4(D,this.session,this.dialect)}delete(D){return new D4(D,this.session,this.dialect)}run(D){let $=typeof D==="string"?M.raw(D):D.getSQL();if(this.resultKind==="async")return new W6(async()=>this.session.run($),()=>$,"run",this.dialect,this.session.extractRawRunValueFromBatchResult.bind(this.session));return this.session.run($)}all(D){let $=typeof D==="string"?M.raw(D):D.getSQL();if(this.resultKind==="async")return new W6(async()=>this.session.all($),()=>$,"all",this.dialect,this.session.extractRawAllValueFromBatchResult.bind(this.session));return this.session.all($)}get(D){let $=typeof D==="string"?M.raw(D):D.getSQL();if(this.resultKind==="async")return new W6(async()=>this.session.get($),()=>$,"get",this.dialect,this.session.extractRawGetValueFromBatchResult.bind(this.session));return this.session.get($)}values(D){let $=typeof D==="string"?M.raw(D):D.getSQL();if(this.resultKind==="async")return new W6(async()=>this.session.values($),()=>$,"values",this.dialect,this.session.extractRawValuesValueFromBatchResult.bind(this.session));return this.session.values($)}transaction(D,$){return this.session.transaction(D,$)}}});var LQ=()=>{};async function AX(D,$){let F=`${D}-${JSON.stringify($)}`,J=new TextEncoder().encode(F),G=await crypto.subtle.digest("SHA-256",J);return[...new Uint8Array(G)].map((H)=>H.toString(16).padStart(2,"0")).join("")}var jQ,_X;var zQ=Z(()=>{a();jQ=class jQ{static[P]="Cache"};_X=class _X extends jQ{strategy(){return"all"}static[P]="NoopCache";async get(D){return}async put(D,$,F,X){}async onMutate(D){}}});var IQ,KX,OX,CX;var RX=Z(()=>{zQ();a();$4();s2();W4();IQ=class IQ extends R0{constructor(D){super();this.resultCb=D}static[P]="ExecuteResultSync";async execute(){return this.resultCb()}sync(){return this.resultCb()}};KX=class KX{constructor(D,$,F,X,J,G){if(this.mode=D,this.executeMethod=$,this.query=F,this.cache=X,this.queryMetadata=J,this.cacheConfig=G,X&&X.strategy()==="all"&&G===void 0)this.cacheConfig={enable:!0,autoInvalidate:!0};if(!this.cacheConfig?.enable)this.cacheConfig=void 0}static[P]="PreparedQuery";joinsNotNullableMap;async queryWithCache(D,$,F){if(this.cache===void 0||I(this.cache,_X)||this.queryMetadata===void 0)try{return await F()}catch(X){throw new r2(D,$,X)}if(this.cacheConfig&&!this.cacheConfig.enable)try{return await F()}catch(X){throw new r2(D,$,X)}if((this.queryMetadata.type==="insert"||this.queryMetadata.type==="update"||this.queryMetadata.type==="delete")&&this.queryMetadata.tables.length>0)try{let[X]=await Promise.all([F(),this.cache.onMutate({tables:this.queryMetadata.tables})]);return X}catch(X){throw new r2(D,$,X)}if(!this.cacheConfig)try{return await F()}catch(X){throw new r2(D,$,X)}if(this.queryMetadata.type==="select"){let X=await this.cache.get(this.cacheConfig.tag??await AX(D,$),this.queryMetadata.tables,this.cacheConfig.tag!==void 0,this.cacheConfig.autoInvalidate);if(X===void 0){let J;try{J=await F()}catch(G){throw new r2(D,$,G)}return await this.cache.put(this.cacheConfig.tag??await AX(D,$),J,this.cacheConfig.autoInvalidate?this.queryMetadata.tables:[],this.cacheConfig.tag!==void 0,this.cacheConfig.config),J}return X}try{return await F()}catch(X){throw new r2(D,$,X)}}getQuery(){return this.query}mapRunResult(D,$){return D}mapAllResult(D,$){throw Error("Not implemented")}mapGetResult(D,$){throw Error("Not implemented")}execute(D){if(this.mode==="async")return this[this.executeMethod](D);return new IQ(()=>this[this.executeMethod](D))}mapResult(D,$){switch(this.executeMethod){case"run":return this.mapRunResult(D,$);case"all":return this.mapAllResult(D,$);case"get":return this.mapGetResult(D,$)}}};OX=class OX{constructor(D){this.dialect=D}static[P]="SQLiteSession";prepareOneTimeQuery(D,$,F,X,J,G,Y){return this.prepareQuery(D,$,F,X,J,G,Y)}run(D){let $=this.dialect.sqlToQuery(D);try{return this.prepareOneTimeQuery($,void 0,"run",!1).run()}catch(F){throw new H6({cause:F,message:`Failed to run the query '${$.sql}'`})}}extractRawRunValueFromBatchResult(D){return D}all(D){return this.prepareOneTimeQuery(this.dialect.sqlToQuery(D),void 0,"run",!1).all()}extractRawAllValueFromBatchResult(D){throw Error("Not implemented")}get(D){return this.prepareOneTimeQuery(this.dialect.sqlToQuery(D),void 0,"run",!1).get()}extractRawGetValueFromBatchResult(D){throw Error("Not implemented")}values(D){return this.prepareOneTimeQuery(this.dialect.sqlToQuery(D),void 0,"run",!1).values()}async count(D){return(await this.values(D))[0][0]}extractRawValuesValueFromBatchResult(D){throw Error("Not implemented")}};CX=class CX extends y3{constructor(D,$,F,X,J=0){super(D,$,F,X);this.schema=X,this.nestedIndex=J}static[P]="SQLiteTransaction";rollback(){throw new FX}}});var TQ=()=>{};var V4=Z(()=>{LQ();GQ();JX();W4();J4();lF();VQ();QQ();VX();RX();F1();iF();B6();TQ()});var EX,MX,wQ;var ZX=Z(()=>{a();p7();D0();V4();RX();Z0();EX=class EX extends OX{constructor(D,$,F,X={}){super($);this.client=D,this.schema=F,this.logger=X.logger??new TF}static[P]="SQLiteBunSession";logger;exec(D){this.client.exec(D)}prepareQuery(D,$,F,X,J){let G=this.client.prepare(D.sql);return new wQ(G,D,this.logger,$,F,X,J)}transaction(D,$={}){let F=new MX("sync",this.dialect,this,this.schema),X;return this.client.transaction(()=>{X=D(F)})[$.behavior??"deferred"](),X}};MX=class MX extends CX{static[P]="SQLiteBunTransaction";transaction(D){let $=`sp${this.nestedIndex}`,F=new MX("sync",this.dialect,this.session,this.schema,this.nestedIndex+1);this.session.run(M.raw(`savepoint ${$}`));try{let X=D(F);return this.session.run(M.raw(`release savepoint ${$}`)),X}catch(X){throw this.session.run(M.raw(`rollback to savepoint ${$}`)),X}}};wQ=class wQ extends KX{constructor(D,$,F,X,J,G,Y){super("sync",J,$);this.stmt=D,this.logger=F,this.fields=X,this._isResponseInArrayMode=G,this.customResultMapper=Y}static[P]="SQLiteBunPreparedQuery";run(D){let $=j3(this.query.params,D??{});return this.logger.logQuery(this.query.sql,$),this.stmt.run(...$)}all(D){let{fields:$,query:F,logger:X,joinsNotNullableMap:J,stmt:G,customResultMapper:Y}=this;if(!$&&!Y){let H=j3(F.params,D??{});return X.logQuery(F.sql,H),G.all(...H)}let B=this.values(D);if(Y)return Y(B);return B.map((H)=>xF($,H,J))}get(D){let $=j3(this.query.params,D??{});this.logger.logQuery(this.query.sql,$);let F=this.stmt.values(...$)[0];if(!F)return;let{fields:X,joinsNotNullableMap:J,customResultMapper:G}=this;if(!X&&!G)return F;if(G)return G([F]);return xF(X,F,J)}values(D){let $=j3(this.query.params,D??{});return this.logger.logQuery(this.query.sql,$),this.stmt.values(...$)}isResponseInArrayMode(){return this._isResponseInArrayMode}}});import{Database as Q4}from"bun:sqlite";function V6(D,$={}){let F=new h3({casing:$.casing}),X;if($.logger===!0)X=new IF;else if($.logger!==!1)X=$.logger;let J;if($.schema){let B=NV($.schema,LV);J={fullSchema:$.schema,schema:B.tables,tableNamesMap:B.tableNamesMap}}let G=new EX(D,F,J,{logger:X}),Y=new SQ("sync",F,G,J);return Y.$client=D,Y}function Q6(...D){if(D[0]===void 0||typeof D[0]==="string"){let $=D[0]===void 0?new Q4:new Q4(D[0]);return V6($,D[1])}if(tW(D[0])){let{connection:$,client:F,...X}=D[0];if(F)return V6(F,X);if(typeof $==="object"){let{source:G,...Y}=$,B=Object.values(Y).filter((W)=>W!==void 0).length?Y:void 0,H=new Q4(G,B);return V6(H,X)}let J=new Q4($);return V6(J,X)}return V6(D[0],D[1])}var SQ;var bQ=Z(()=>{a();p7();b3();W4();J4();Z0();ZX();SQ=class SQ extends y3{static[P]="BunSQLiteDatabase"};((D)=>{function $(F){return V6({},F)}D.mock=$})(Q6||(Q6={}))});var qX=Z(()=>{bQ();ZX()});import cj from"crypto";import NX from"fs";function fQ(D){let $=D.migrationsFolder,F=[],X=`${$}/meta/_journal.json`;if(!NX.existsSync(X))throw Error("Can't find meta/_journal.json file");let J=NX.readFileSync(`${$}/meta/_journal.json`).toString(),G=JSON.parse(J);for(let Y of G.entries){let B=`${$}/${Y.tag}.sql`;try{let H=NX.readFileSync(`${$}/${Y.tag}.sql`).toString(),W=H.split("--> statement-breakpoint").map((Q)=>{return Q});F.push({sql:W,bps:Y.breakpoints,folderMillis:Y.when,hash:cj.createHash("sha256").update(H).digest("hex")})}catch{throw Error(`No file ${B} found in ${$} folder`)}}return F}var kQ=()=>{};function U4(D,$){let F=fQ($);D.dialect.migrate(F,D.session,$)}var PX=Z(()=>{kQ()});var U0=Z(()=>{a7();fF();U2();a();$4();p7();s2();b3();XX();_2();V0();Z0();n2()});var z4={};d8(z4,{workerSecrets:()=>_0,workerIdentity:()=>y0,workerConfig:()=>C2,skillDrafts:()=>N0,skillBindings:()=>i3,sessionEntries:()=>WD,messages:()=>l,executionLogs:()=>e2,evolutionObservations:()=>O2,cronJobs:()=>PD,conversations:()=>c,agentTasks:()=>L8});var L8,c,WD,l,e2,i3,N0,O2,y0,C2,PD,_0;var gX=Z(()=>{V4();L8=Q0("agent_tasks",{id:T("id").primaryKey(),prompt:T("prompt").notNull(),status:T("status",{enum:["queued","running","succeeded","failed","cancelled"]}).notNull(),conversationId:T("conversation_id"),createdAt:T("created_at").notNull().$defaultFn(()=>new Date().toISOString()),finishedAt:T("finished_at"),result:T("result",{mode:"json"}).$type(),error:T("error")},(D)=>({createdAtIdx:g0("agent_tasks_created_at_idx").on(D.createdAt)})),c=Q0("conversations",{id:T("id").primaryKey(),taskId:T("task_id").references(()=>L8.id),channel:T("channel").$type().notNull(),chatId:T("chat_id").notNull(),threadId:T("thread_id"),status:T("status",{enum:["open","closed"]}).notNull().default("open"),summary:T("summary"),startedAt:T("started_at").notNull().$defaultFn(()=>new Date().toISOString()),lastActiveAt:T("last_active_at").notNull().$defaultFn(()=>new Date().toISOString()),closedAt:T("closed_at")},(D)=>({lookupIdx:g0("conversations_lookup_idx").on(D.channel,D.chatId,D.threadId,D.status),lastActiveAtIdx:g0("conversations_last_active_at_idx").on(D.lastActiveAt)})),WD=Q0("session_entries",{sessionKey:T("session_key").primaryKey(),currentConversationId:T("current_conversation_id").notNull().references(()=>c.id),channel:T("channel").$type().notNull(),chatId:T("chat_id").notNull(),threadId:T("thread_id"),accountId:T("account_id"),status:T("status",{enum:["active","closed"]}).notNull().default("active"),sessionStartedAt:T("session_started_at").notNull().$defaultFn(()=>new Date().toISOString()),lastInteractionAt:T("last_interaction_at").notNull().$defaultFn(()=>new Date().toISOString()),resetAt:T("reset_at"),resetReason:T("reset_reason"),contextTokens:TD("context_tokens").notNull().default(0),totalTokens:TD("total_tokens").notNull().default(0),totalTokensFresh:TD("total_tokens_fresh").notNull().default(0),compactionCount:TD("compaction_count").notNull().default(0),memoryFlushAt:T("memory_flush_at"),memoryFlushCompactionCount:TD("memory_flush_compaction_count").notNull().default(0),engineBindings:T("engine_bindings",{mode:"json"}).$type().notNull().$defaultFn(()=>({})),createdAt:T("created_at").notNull().$defaultFn(()=>new Date().toISOString()),updatedAt:T("updated_at").notNull().$defaultFn(()=>new Date().toISOString())},(D)=>({currentConversationIdIdx:g0("session_entries_current_conversation_id_idx").on(D.currentConversationId),lastInteractionAtIdx:g0("session_entries_last_interaction_at_idx").on(D.lastInteractionAt)})),l=Q0("messages",{id:TD("id").primaryKey({autoIncrement:!0}),conversationId:T("conversation_id").notNull().references(()=>c.id,{onDelete:"cascade"}),role:T("role",{enum:["system","user","assistant","tool"]}).notNull(),content:T("content").notNull(),toolCalls:T("tool_calls",{mode:"json"}).$type(),toolCallId:T("tool_call_id"),tokensIn:TD("tokens_in"),tokensOut:TD("tokens_out"),richMetadata:T("rich_metadata"),createdAt:T("created_at").notNull().$defaultFn(()=>new Date().toISOString())},(D)=>({conversationIdIdx:g0("messages_conversation_id_idx").on(D.conversationId)})),e2=Q0("execution_logs",{id:TD("id").primaryKey({autoIncrement:!0}),conversationId:T("conversation_id"),toolName:T("tool_name").notNull(),params:T("params",{mode:"json"}).$type(),result:T("result",{mode:"json"}).$type(),duration:TD("duration"),createdAt:T("created_at").notNull().$defaultFn(()=>new Date().toISOString())},(D)=>({conversationIdIdx:g0("execution_logs_conversation_id_idx").on(D.conversationId)})),i3=Q0("skill_bindings",{id:TD("id").primaryKey({autoIncrement:!0}),source:T("source").$type().notNull(),brainName:T("brain_name"),skillName:T("skill_name").notNull(),enabled:TD("enabled",{mode:"boolean"}).notNull().default(!0),priority:TD("priority").notNull().default(0),config:T("config",{mode:"json"}).$type(),createdAt:T("created_at").notNull().$defaultFn(()=>new Date().toISOString()),updatedAt:T("updated_at").notNull().$defaultFn(()=>new Date().toISOString())},(D)=>({uniqueBinding:WQ("skill_bindings_source_brain_name_idx").on(D.source,D.brainName,D.skillName)})),N0=Q0("skill_drafts",{id:TD("id").primaryKey({autoIncrement:!0}),proposedName:T("proposed_name").notNull(),source:T("source").$type().notNull(),bodyMarkdown:T("body_markdown").notNull(),rationale:T("rationale").notNull().default(""),status:T("status").$type().notNull().default("pending"),createdAt:T("created_at").notNull().$defaultFn(()=>new Date().toISOString()),decidedAt:T("decided_at"),decidedBy:T("decided_by")}),O2=Q0("evolution_observations",{id:TD("id").primaryKey({autoIncrement:!0}),conversationId:T("conversation_id"),kind:T("kind").notNull(),payload:T("payload",{mode:"json"}).$type().notNull(),noticedAt:T("noticed_at").notNull().$defaultFn(()=>new Date().toISOString())},(D)=>({noticedAtIdx:g0("evolution_observations_noticed_at_idx").on(D.noticedAt)})),y0=Q0("worker_identity",{pk:T("pk").primaryKey().default("default"),workerId:T("worker_id").notNull().unique(),apiTokenEnc:T("api_token_enc").notNull(),nonce:T("nonce").notNull(),authTag:T("auth_tag").notNull(),bootstrapShownAt:T("bootstrap_shown_at").notNull().$defaultFn(()=>new Date().toISOString()),createdAt:T("created_at").notNull().$defaultFn(()=>new Date().toISOString()),rotatedAt:T("rotated_at")}),C2=Q0("worker_config",{pk:T("pk").primaryKey().default("default"),configJson:T("config_json",{mode:"json"}).$type().notNull(),version:TD("version").notNull().default(1),updatedAt:T("updated_at").notNull().$defaultFn(()=>new Date().toISOString()),updatedBy:T("updated_by",{enum:["bootstrap","api","cli"]})}),PD=Q0("cron_jobs",{id:T("id").primaryKey(),expression:T("expression").notNull(),prompt:T("prompt").notNull(),channel:T("channel").$type().notNull(),chatId:T("chat_id").notNull(),accountId:T("account_id").notNull(),enabled:TD("enabled",{mode:"boolean"}).notNull().default(!0),lastRunAt:T("last_run_at"),nextRunAt:T("next_run_at"),createdAt:T("created_at").notNull().$defaultFn(()=>new Date().toISOString()),updatedAt:T("updated_at").notNull().$defaultFn(()=>new Date().toISOString())},(D)=>({dueIdx:g0("cron_jobs_due_idx").on(D.enabled,D.nextRunAt)})),_0=Q0("worker_secrets",{id:TD("id").primaryKey({autoIncrement:!0}),key:T("key").notNull().unique(),valueEnc:T("value_enc").notNull(),nonce:T("nonce").notNull(),authTag:T("auth_tag").notNull(),createdAt:T("created_at").notNull().$defaultFn(()=>new Date().toISOString()),updatedAt:T("updated_at").notNull().$defaultFn(()=>new Date().toISOString())})});var dX={};d8(dX,{workerSecrets:()=>_0,workerSchema:()=>z4,workerIdentity:()=>y0,workerConfig:()=>C2,upsertSessionEntry:()=>uX,updateSessionEngineBinding:()=>cX,touchSessionEntry:()=>K6,skillDrafts:()=>N0,skillBindings:()=>i3,sessionEntries:()=>WD,runWorkerMigrations:()=>r3,rotateSessionConversation:()=>mX,recordSessionCompaction:()=>pX,messages:()=>l,initWorkerDb:()=>s3,getWorkerDb:()=>y,getSessionEntry:()=>B0,executionLogs:()=>e2,evolutionObservations:()=>O2,defaultWorkerMigrationsFolder:()=>A6,cronJobs:()=>PD,conversations:()=>c,closeWorkerDb:()=>yI,agentTasks:()=>L8});import{existsSync as aU}from"fs";import yX from"path";import{fileURLToPath as vI}from"url";import{Database as hI}from"bun:sqlite";function xI(D){let $=yX.resolve(tU,"../../drizzle",D);if(aU($))return $;let F=yX.resolve(tU,"drizzle",D);if(aU(F))return F;return $}function gI(D){let $=new hI(D,{create:!0});return $.exec("PRAGMA journal_mode = WAL"),$.exec("PRAGMA foreign_keys = ON"),Q6($,{schema:z4})}function s3(D){return n3=gI(D),n3}function y(){if(!n3)throw Error("Worker database not initialized. Call initWorkerDb() first.");return n3}function yI(){n3=null}function r3(D=A6){U4(y(),{migrationsFolder:D})}function B0(D){return y().select().from(WD).where(v(WD.sessionKey,D)).get()??null}function uX(D){let $=y(),F=D.at??new Date().toISOString(),X=B0(D.sessionKey);if(!X)$.insert(WD).values({sessionKey:D.sessionKey,currentConversationId:D.currentConversationId,channel:D.channel,chatId:D.chatId,threadId:D.threadId??null,accountId:D.accountId??null,status:"active",sessionStartedAt:F,lastInteractionAt:F,engineBindings:D.engineBindings??{},createdAt:F,updatedAt:F}).run();else $.update(WD).set({currentConversationId:D.currentConversationId,channel:D.channel,chatId:D.chatId,threadId:D.threadId??null,accountId:D.accountId??null,status:"active",lastInteractionAt:F,engineBindings:D.engineBindings??X.engineBindings,updatedAt:F}).where(v(WD.sessionKey,D.sessionKey)).run();return B0(D.sessionKey)}function K6(D,$={}){if(!B0(D))return null;let X=$.at??new Date().toISOString();return y().update(WD).set({lastInteractionAt:X,updatedAt:X,...$.contextTokens===void 0?{}:{contextTokens:$.contextTokens},...$.totalTokens===void 0?{}:{totalTokens:$.totalTokens},...$.totalTokensFresh===void 0?{}:{totalTokensFresh:$.totalTokensFresh}}).where(v(WD.sessionKey,D)).run(),B0(D)}function mX(D){if(!B0(D.sessionKey))return null;let F=D.at??new Date().toISOString();return y().update(WD).set({currentConversationId:D.currentConversationId,status:"active",sessionStartedAt:F,lastInteractionAt:F,resetAt:F,resetReason:D.resetReason,contextTokens:0,totalTokens:0,totalTokensFresh:0,compactionCount:0,memoryFlushAt:null,memoryFlushCompactionCount:0,engineBindings:{},updatedAt:F}).where(v(WD.sessionKey,D.sessionKey)).run(),B0(D.sessionKey)}function pX(D,$={}){let F=B0(D);if(!F)return null;let X=$.at??new Date().toISOString(),J=F.compactionCount+1;return y().update(WD).set({compactionCount:J,...$.memoryFlushAt===void 0?{}:{memoryFlushAt:$.memoryFlushAt,memoryFlushCompactionCount:J},updatedAt:X}).where(v(WD.sessionKey,D)).run(),B0(D)}function cX(D,$,F,X){let J=B0(D);if(!J)return null;let G={...J.engineBindings};if(F===null)delete G[$];else G[$]=F;return y().update(WD).set({engineBindings:G,updatedAt:X??new Date().toISOString()}).where(v(WD.sessionKey,D)).run(),B0(D)}var tU,A6,n3=null;var wD=Z(()=>{U0();qX();PX();gX();gX();tU=yX.dirname(vI(import.meta.url));A6=xI("worker")});import eU from"path";import D_ from"process";function mI(D){let $={};for(let[F,X]of Object.entries(D)){let J=/^MAX_CONCURRENT_(.+)$/.exec(F);if(!J)continue;if(J[1]==="TOTAL")continue;let G=J[1].toLowerCase().replace(/_/g,"-"),Y=Number.parseInt(X??"",10);if(Number.isFinite(Y)&&Y>0)$[G]=Y}return $}function G1(){if(I4)return I4;let D=uI.parse(D_.env);return I4=Object.freeze({...D,perEngineLimits:Object.freeze({...mI(D_.env)})}),I4}var uI,I4=null,i;var T4=Z(()=>{V2();aD();wD();yD();uI=V.object({PORT:V.coerce.number().default(9217),AIWORKER_WORKER_HOST:V.string().min(1).default("127.0.0.1"),AIWORKER_ADMIN_EXTERNAL_AUTH:V.enum(["1","true","0","false"]).default("0").transform(C3),WORKER_DB_PATH:V.string().default(()=>eU.join(H2(),"worker.db")),WORKER_MIGRATIONS_FOLDER:V.string().default(()=>A6),AIWORKER_MASTER_KEY:V.string().regex(/^[0-9a-f]{64}$/,"AIWORKER_MASTER_KEY must be 32-byte hex (64 hex chars)"),AIWORKER_FORCE_ID:V.string().regex(d2).optional(),AIWORKER_FORCE_TOKEN:V.string().regex(l2).optional(),AIWORKER_ADVERTISED_BASE_URL:V.string().optional(),WORKER_DATA_ROOT:V.string().default(()=>eU.join(H2(),"data-root")),WORKER_WORKSPACE_GIT_ORIGIN:V.string().optional(),AIWORKER_GATEWAY_URL:V.string().url().optional(),AIWORKER_JOIN_TOKEN:V.string().min(1).optional(),AIWORKER_DISPLAY_NAME:V.string().min(1).max(80).optional(),AIWORKER_ENROLL_MODE:V.enum(["auto","otp"]).optional().default("auto"),CLAUDE_CLI_VERSION:V.string().optional(),MAX_CONCURRENT_TOTAL:V.coerce.number().int().min(1).default(4),PROCESS_STALL_TIMEOUT_MS:V.coerce.number().int().min(1).default(120000),PROCESS_KILL_TIMEOUT_MS:V.coerce.number().int().min(0).default(1e4),PROCESS_AUTO_CLEANUP_DELAY_MS:V.coerce.number().int().min(0).default(60000),PROCESS_GC_INTERVAL_MS:V.coerce.number().int().min(0).default(30000)});i=new Proxy({},{get(D,$){return G1()[$]},has(D,$){return $ in G1()},ownKeys(D){return Reflect.ownKeys(G1())},getOwnPropertyDescriptor(D,$){return Reflect.getOwnPropertyDescriptor(G1(),$)}})});function D8(D){let $=pI[D.engine];if(!$)throw Error(`unknown executor engine: ${D.engine}`);let F=$.variants[D.variant];if(!F)throw Error(`unknown executor variant '${D.variant}' for engine '${D.engine}'`);let{cmd:X,...J}=D.overrides??{},G={...F,...J};return{engine:D.engine,body:G,...X?{cmd:X}:{},...D.modelId===void 0?{}:{modelId:D.modelId},...D.reasoningId===void 0?{}:{reasoningId:D.reasoningId},...D.permissionPolicy===void 0?{}:{permissionPolicy:D.permissionPolicy}}}function $_(D){if(!D||typeof D!=="object")return{...a3};let $=D;if(typeof $.engine==="string")return $;let F=$.type;if(typeof F!=="string")return{...a3};switch(F){case"http":return{engine:"http",variant:"default",overrides:o3({baseUrl:$.baseUrl,apiKey:$.apiKey,model:$.model,timeoutMs:$.timeoutMs})};case"mcp":return{engine:"mcp",variant:"default",overrides:o3({url:$.url,token:$.token,defaultModel:$.defaultModel,tools:$.tools,timeoutMs:$.timeoutMs})};case"cli":return{engine:"cli",variant:"default",overrides:o3({command:$.command,args:$.args,cwd:$.cwd,env:$.env,timeoutMs:$.timeoutMs,sandbox:$.sandbox})};case"claude-code":return{engine:"claude-code",variant:"default",overrides:o3({model:$.model,cliVersion:$.cliVersion,extraArgs:$.extraArgs,env:$.env,workspaceRoot:$.workspaceRoot,timeoutMs:$.timeoutMs})};case"acp":return{engine:"acp",variant:$.agent==="qwen"?"qwen":"gemini",overrides:o3({model:$.model,cliVersion:$.cliVersion,extraArgs:$.extraArgs,env:$.env,timeoutMs:$.timeoutMs})};default:return{...a3}}}function o3(D){let $={};for(let[F,X]of Object.entries(D))if(X!==void 0)$[F]=X;return $}var pI,a3;var B1=Z(()=>{pI={http:{variants:{default:{baseUrl:"",apiKey:"",model:"gpt-4o-mini",contextWindowTokens:128000,timeoutMs:30000},"gemini-openai-compat":{baseUrl:"https://generativelanguage.googleapis.com/v1beta/openai",apiKey:"",model:"gemini-2.5-flash",contextWindowTokens:1e6,timeoutMs:30000},deepseek:{baseUrl:"https://api.deepseek.com",apiKey:"",model:"deepseek-chat",contextWindowTokens:64000,timeoutMs:30000},siliconflow:{baseUrl:"https://api.siliconflow.cn/v1",apiKey:"",model:"Qwen/Qwen2.5-7B-Instruct",contextWindowTokens:32000,timeoutMs:30000},openrouter:{baseUrl:"https://openrouter.ai/api/v1",apiKey:"",model:"anthropic/claude-sonnet-4.5",contextWindowTokens:200000,timeoutMs:30000}}},mcp:{variants:{default:{url:"",token:"",timeoutMs:30000}}},cli:{variants:{default:{command:"",args:[],timeoutMs:30000}}},"claude-code":{variants:{default:{model:"sonnet",contextWindowTokens:200000,timeoutMs:120000},"opus-plan":{model:"opus",contextWindowTokens:200000,permissionPolicy:"plan",timeoutMs:180000}}},acp:{variants:{gemini:{agent:"gemini",contextWindowTokens:1e6,timeoutMs:120000},qwen:{agent:"qwen",contextWindowTokens:32000,timeoutMs:120000}}},codex:{variants:{default:{model:"gpt-5.5",contextWindowTokens:128000,timeoutMs:120000}}},cursor:{variants:{default:{model:"auto",timeoutMs:120000}}}},a3={engine:"http",variant:"default",overrides:{baseUrl:"http://localhost:9999",model:"stub"}}});var O6;var lX=Z(()=>{B1();O6={brains:[],brainWriteTarget:"",brainRetrieval:"first-match",executor:{...a3},channels:[],evolution:{enabled:!1,observationRetentionDays:7}}});async function H1(D){let $=await D.select().from(C2).where(v(C2.pk,"default")).get();if($)return{config:cI($.configJson),version:$.version};let F=new Date().toISOString();return await D.insert(C2).values({pk:"default",configJson:O6,version:1,updatedAt:F,updatedBy:"bootstrap"}).run(),{config:O6,version:1}}function cI(D){let $=D.executor;if($&&typeof $==="object"&&"engine"in $)return D;return{...D,executor:$_($)}}var F_=Z(()=>{wD();U0();B1();lX()});import{randomBytes as dI}from"crypto";function C6(){let D=dI(32),$=`${T7}${lI(D)}`;if(!O8($))throw Error("mintApiToken: generated token failed isWorkerApiToken check");return $}function lI(D){return D.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function W1(D,$,F={}){let X=await D.select().from(y0).where(v(y0.pk,"default")).get();if(X){let U=$.decryptString(X.apiTokenEnc,X.nonce,X.authTag);if(!O8(U))throw Error("loadOrMintIdentity: decrypted API token failed isWorkerApiToken check");return await PF(X.workerId),{workerId:X.workerId,token:U,justMinted:!1}}let J=F.forceId??w4();if(!d2.test(J))throw Error(`loadOrMintIdentity: forceId ${J} does not match WORKER_ID_PATTERN`);let G=F.forceToken??C6();if(!O8(G))throw Error("loadOrMintIdentity: forceToken does not match WORKER_API_TOKEN_PATTERN");let Y=G,{ciphertext:B,nonce:H,authTag:W}=$.encryptString(Y),Q=new Date().toISOString();return await D.insert(y0).values({pk:"default",workerId:J,apiTokenEnc:B,nonce:H,authTag:W,bootstrapShownAt:Q,createdAt:Q}).run(),await PF(J),{workerId:J,token:Y,justMinted:!0}}var w4;var iX=Z(()=>{V2();aD();wD();U0();w4=QF});import iI from"process";function V1(D,$,F,X,J=iI.stdout){if(!X)return;J.write(`[worker] id=${D}
|
|
119
|
-
`),J.write(`[worker] AIWORKER_BOOTSTRAP_TOKEN=${$}
|
|
120
|
-
`),J.write(`[worker] save this token; it will not be printed again.
|
|
121
|
-
`),F.update(y0).set({bootstrapShownAt:new Date().toISOString()}).where(v(y0.pk,"default")).run()}var X_=Z(()=>{wD();U0()});var J_=Z(()=>{F_();lX();iX();X_()});import{Buffer as Y_}from"buffer";import{timingSafeEqual as nI}from"crypto";function k2(D,$){let F=Y_.from(D,"utf8"),X=Y_.from($,"utf8");if(F.length!==X.length)return!1;return nI(F,X)}var S4=()=>{};import{Buffer as G_}from"buffer";import{createDecipheriv as sI,createHash as rI}from"crypto";function aI(D,$){let F=rI("sha256").update($,"utf8").digest(),X=G_.from(D,"base64");if(X.length<=16)throw Error("lark: encrypted payload too short");let J=X.subarray(0,16),G=X.subarray(16),Y=sI("aes-256-cbc",F,J);return G_.concat([Y.update(G),Y.final()]).toString("utf8")}function B_(D,$){let F=JSON.parse(D);if(typeof F.encrypt==="string"){if(!$)throw Error("lark: encrypted payload received but encryptKey is missing");return JSON.parse(aI(F.encrypt,$))}return F}function tI(D){return D.type==="url_verification"||D.header?.event_type==="url_verification"}function eI(D){if(typeof D.header?.token==="string")return D.header.token;if(typeof D.token==="string")return D.token;return}async function DT(D,$){let F=await fetch("https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({app_id:D,app_secret:$})});if(!F.ok){let J=await F.text().catch(()=>"");throw Error(`Lark token exchange HTTP ${F.status}: ${J}`)}let X=await F.json();if(typeof X.code==="number"&&X.code!==0)throw Error(`Lark token exchange error ${X.code}: ${X.msg??"unknown"}`);if(!X.tenant_access_token||typeof X.expire!=="number")throw Error("Lark token exchange returned malformed response");return{token:X.tenant_access_token,expiresAt:Date.now()+X.expire*1000}}async function $T(D,$){let F=nX.get(D);if(!F)F={},nX.set(D,F);if(F.current&&F.current.expiresAt-Date.now()>oI)return F.current.token;if(F.inflight)return(await F.inflight).token;let X=F;return X.inflight=DT(D,$).then((J)=>{return X.current=J,J}).finally(()=>{X.inflight=void 0}),(await X.inflight).token}function FT(D){let $=typeof D.parent_id==="string"&&D.parent_id.length>0?D.parent_id:void 0;if(!$)return;return{quote:$}}function W_(){nX.clear()}var oI=60000,nX,H_;var sX=Z(()=>{S4();nX=new Map;H_={channel:"lark",async verify(D,$,F){if(F.credentials.channel!=="lark")throw Error("lark adapter called with non-lark credentials");let X=B_(D,F.credentials.encryptKey),J=eI(X);if(J===void 0||!k2(J,F.credentials.verificationToken))throw Error("invalid Lark verification token")},async toEnvelopes(D,$,F){if(!F||F.credentials.channel!=="lark")throw Error("lark adapter requires a lark binding for accountId derivation");let X=F.credentials.appId,J=F.credentials.encryptKey,G=B_(D,J);if(tI(G))return[];if(G.header?.event_type!=="im.message.receive_v1")return[];let Y=G.event?.message;if(!Y||Y.message_type!=="text")return[];let B="";try{let C=JSON.parse(Y.content);B=typeof C.text==="string"?C.text:""}catch{return[]}if(!B)return[];let H=G.event?.sender,W=H?.sender_id?.open_id,Q=H?.sender_id?.name,U=Y.chat_type==="group"?`group:${Y.chat_id}`:`p2p:${W??""}`,_=FT(Y);return[{workerId:$,channel:"lark",accountId:X,chatId:U,...W===void 0?{}:{userId:W},...Q===void 0?{}:{userDisplayName:Q},text:B,..._===void 0?{}:{richMetadata:_},receivedAt:new Date(Number(Y.create_time)).toISOString(),raw:G}]},async send(D,$){if(D.credentials.channel!=="lark")throw Error("lark adapter called with non-lark credentials");let{appId:F,appSecret:X}=D.credentials,J=await $T(F,X),[G,Y]=$.chatId.split(":",2);if(!G||!Y)throw Error(`lark send: malformed chatId ${$.chatId}`);if(G!=="group"&&G!=="p2p")throw Error(`lark send: unsupported chat kind "${G}"`);let H=await fetch(`https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=${G==="group"?"chat_id":"open_id"}`,{method:"POST",headers:{Authorization:`Bearer ${J}`,"Content-Type":"application/json"},body:JSON.stringify({receive_id:Y,msg_type:"text",content:JSON.stringify({text:$.text})})}),W=await H.json().catch(()=>({}));if(W.code!==0)throw Error(`Lark send failed: ${W.code??H.status} ${W.msg??H.statusText}`)}}});function R6(){return new Date().toISOString()}import{Buffer as V_}from"buffer";import{createHash as XT,createHmac as JT,timingSafeEqual as YT}from"crypto";function GT(D,$){return JT("sha256",D).update($,"utf8").digest("base64")}function BT(D){switch(D.type){case"user":return`user:${D.userId}`;case"group":return`group:${D.groupId}`;case"room":return`room:${D.roomId}`}}function HT(D){let $=D.message?.quotedMessageId;if(typeof $!=="string"||$.length===0)return;return{quote:$}}var Q_;var U_=Z(()=>{Q_={channel:"line",async verify(D,$,F){if(F.credentials.channel!=="line")throw Error("line adapter called with non-line credentials");let X=$["x-line-signature"];if(!X)throw Error("missing X-Line-Signature header");let J=GT(F.credentials.channelSecret,D),G=V_.from(X,"base64"),Y=V_.from(J,"base64");if(G.length!==Y.length||!YT(G,Y))throw Error("invalid LINE signature")},async toEnvelopes(D,$,F){if(!F||F.credentials.channel!=="line")throw Error("line adapter requires a line binding for accountId derivation");let X=XT("sha256").update(F.credentials.channelAccessToken,"utf8").digest("hex").slice(0,16),J=JSON.parse(D),G=[];for(let Y of J.events){if(Y.type!=="message"||Y.message?.type!=="text"||!Y.message.text)continue;let B=BT(Y.source),H=Y.source.type==="user"?Y.source.userId:("userId"in Y.source)?Y.source.userId:void 0,W=HT(Y);G.push({workerId:$,channel:"line",accountId:X,chatId:B,...H===void 0?{}:{userId:H},text:Y.message.text,...W===void 0?{}:{richMetadata:W},receivedAt:new Date(Y.timestamp).toISOString()||R6(),raw:Y})}return G},async send(D,$){if(D.credentials.channel!=="line")throw Error("line adapter called with non-line credentials");let F=D.credentials.channelAccessToken,[X,J]=$.chatId.split(":",2);if(!X||!J)throw Error(`line send: malformed chatId ${$.chatId}`);let G=await fetch("https://api.line.me/v2/bot/message/push",{method:"POST",headers:{Authorization:`Bearer ${F}`,"Content-Type":"application/json"},body:JSON.stringify({to:J,messages:[{type:"text",text:$.text}]})});if(!G.ok){let Y=await G.text();throw Error(`LINE push failed: ${G.status} ${Y}`)}}}});import{Buffer as __}from"buffer";import{createHash as WT,timingSafeEqual as VT}from"crypto";function AT(D,$){let F=__.from(D,"utf8"),X=__.from($,"utf8");if(F.length!==X.length)return!1;return VT(F,X)}function KT(D){if(!D)return;if(D.first_name)return D.last_name?`${D.first_name} ${D.last_name}`:D.first_name;return D.username}function OT(D,$){if(D.length<=$)return[D];let F=[],X=D;while(X.length>$){let J=-1;for(let G=$-1;G>0;G--)if(_T.test(X[G])){J=G;break}if(J>0)F.push(X.slice(0,J)),X=X.slice(J+1);else F.push(X.slice(0,$)),X=X.slice($)}if(X.length>0)F.push(X);return F}function CT(D){if(D.botUsername&&D.botUsername.length>0)return D.botUsername;return WT("sha256").update(D.botToken,"utf8").digest("hex").slice(0,16)}function RT(D){let $={};if(typeof D.edit_date==="number")$.isEdit=!0;let F=D.reply_to_message;if(F){let X=F.from?.id?.toString();if(X!==void 0)$.replyTo={authorId:X,text:typeof F.text==="string"?F.text:""}}return $.isEdit===void 0&&$.replyTo===void 0?void 0:$}var QT=4096,UT="x-telegram-bot-api-secret-token",_T,A_;var K_=Z(()=>{_T=/\s/;A_={channel:"telegram",async verify(D,$,F){if(F.credentials.channel!=="telegram")throw Error("telegram adapter called with non-telegram credentials");let X=F.credentials.webhookSecretToken;if(!X)return;let J=$[UT];if(!J||!AT(J,X))throw Error("invalid X-Telegram-Bot-Api-Secret-Token")},async toEnvelopes(D,$,F){if(!F||F.credentials.channel!=="telegram")throw Error("telegram adapter requires a telegram binding for accountId derivation");let X=JSON.parse(D),J=X.message;if(!J||typeof J.text!=="string")return[];let G=`${J.chat.type}:${J.chat.id}`,Y=J.from?.id?.toString(),B=KT(J.from),H=Number.isFinite(J.date)?new Date(J.date*1000).toISOString():R6(),W=CT(F.credentials),Q=RT(J);return[{workerId:$,channel:"telegram",accountId:W,chatId:G,...Y===void 0?{}:{userId:Y},...B===void 0?{}:{userDisplayName:B},text:J.text,...Q===void 0?{}:{richMetadata:Q},receivedAt:H,raw:X}]},async send(D,$){if(D.credentials.channel!=="telegram")throw Error("telegram adapter called with non-telegram credentials");let F=D.credentials.botToken,X=$.chatId.indexOf(":");if(X<=0||X===$.chatId.length-1)throw Error(`telegram send: malformed chatId ${$.chatId}`);let J=$.chatId.slice(X+1),G=Number(J);if(!Number.isFinite(G)||!Number.isInteger(G))throw Error(`telegram send: malformed chatId ${$.chatId}`);let Y=`https://api.telegram.org/bot${F}/sendMessage`,B=OT($.text,QT);for(let H of B){let W=await fetch(Y,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat_id:G,text:H})});if(!W.ok){let Q=await W.text();throw Error(`Telegram sendMessage failed: ${W.status} ${Q}`)}}}}});function MT(D){if(!D)return;let $={};if(D.isEdit===!0)$.isEdit=!0;if(D.isDelete===!0)$.isDelete=!0;if(D.replyTo&&typeof D.replyTo.authorId==="string"&&typeof D.replyTo.text==="string")$.replyTo={authorId:D.replyTo.authorId,text:D.replyTo.text};if(typeof D.quote==="string"&&D.quote.length>0)$.quote=D.quote;return Object.keys($).length===0?void 0:$}function ZT(D){let $=D.authorization;if(!$)return null;let F=/^bearer\s+(\S+)\s*$/i.exec($);return F?F[1]:null}var ET="default",O_;var C_=Z(()=>{S4();O_={channel:"web",async verify(D,$,F){if(F.credentials.channel!=="web")throw Error("web adapter called with non-web credentials");let X=F.credentials.inboundToken;if(!X||X.length===0)throw Error("web channel binding has no inboundToken \u2014 refusing inbound traffic");let J=ZT($);if(!J||!k2(J,X))throw Error("invalid Authorization bearer token")},async toEnvelopes(D,$,F){let X=F?.id&&F.id.length>0?F.id:ET,J=JSON.parse(D),G=MT(J.metadata);return[{workerId:$,channel:"web",accountId:X,chatId:J.chatId,...J.threadId===void 0?{}:{threadId:J.threadId},...J.userId===void 0?{}:{userId:J.userId},...J.userDisplayName===void 0?{}:{userDisplayName:J.userDisplayName},text:J.text,...G===void 0?{}:{richMetadata:G},receivedAt:R6(),raw:J}]},async send(){}}});import{Buffer as R_}from"buffer";import{createHmac as qT,timingSafeEqual as NT}from"crypto";function LT(D){switch(D.type){case"text":return D.text?.body;case"image":return D.image?.caption;case"audio":return D.audio?.caption;case"video":return D.video?.caption;case"document":return D.document?.caption;default:return}}function jT(D){let $=D.context;if(!$||typeof $.from!=="string"||$.from.length===0)return;let F={replyTo:{authorId:$.from,text:""}};if(typeof $.id==="string"&&$.id.length>0)F.quote=$.id;return F}var PT="v21.0",E_;var M_=Z(()=>{E_={channel:"whatsapp",async verify(D,$,F){if(F.credentials.channel!=="whatsapp")throw Error("whatsapp adapter called with non-whatsapp credentials");let X=$["x-hub-signature-256"];if(!X)throw Error("missing X-Hub-Signature-256 header");let[J,G]=X.split("=",2);if(J!=="sha256"||!G)throw Error("invalid X-Hub-Signature-256 format");let Y=qT("sha256",F.credentials.appSecret).update(D,"utf8").digest("hex"),B=R_.from(G,"hex"),H=R_.from(Y,"hex");if(B.length!==H.length||!NT(B,H))throw Error("invalid WhatsApp signature")},async toEnvelopes(D,$,F){if(!F||F.credentials.channel!=="whatsapp")throw Error("whatsapp adapter requires a whatsapp binding for accountId derivation");let X=F.credentials.phoneNumberId,J=JSON.parse(D),G=[];for(let Y of J.entry??[])for(let B of Y.changes??[]){let H=B.value;if(!H||!H.messages||H.messages.length===0)continue;let W=H.contacts??[];for(let Q of H.messages){let U=LT(Q);if(U===void 0)continue;let _=Q.from,C=W.find((K)=>K.wa_id===_)?.profile?.name,O=jT(Q);G.push({workerId:$,channel:"whatsapp",accountId:X,chatId:_,userId:_,...C?{userDisplayName:C}:{},text:U,...O===void 0?{}:{richMetadata:O},receivedAt:new Date(Number(Q.timestamp)*1000).toISOString(),raw:Q})}}return G},async send(D,$){if(D.credentials.channel!=="whatsapp")throw Error("whatsapp adapter called with non-whatsapp credentials");let{phoneNumberId:F,accessToken:X}=D.credentials,J=`https://graph.facebook.com/${PT}/${F}/messages`,G=await fetch(J,{method:"POST",headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/json"},body:JSON.stringify({messaging_product:"whatsapp",recipient_type:"individual",to:$.chatId,type:"text",text:{preview_url:!1,body:$.text}})});if(!G.ok){let Y=await G.text();throw Error(`WhatsApp send failed: ${G.status} ${Y}`)}}}});function Q1(D){return zT[D]}class t3{byChannel;constructor(D){this.byChannel=new Map;for(let $ of D)if($.enabled)this.byChannel.set($.channel,$)}list(){return Array.from(this.byChannel.values())}get(D){return this.byChannel.get(D)??null}adapter(D){return Q1(D)}}var zT;var e3=Z(()=>{sX();U_();K_();C_();M_();zT={web:O_,line:Q_,telegram:A_,lark:H_,whatsapp:E_}});function $8(D){let $=[];D.brains.forEach((X,J)=>{if(X.type==="cloud-gateway")$.push({path:`brains.${J}.config.token`,value:X.config.token})});let F=D.executor.overrides??{};if(D.executor.engine==="http"&&typeof F.apiKey==="string")$.push({path:"executor.overrides.apiKey",value:F.apiKey});else if(D.executor.engine==="mcp"&&typeof F.token==="string")$.push({path:"executor.overrides.token",value:F.token});return D.channels.forEach((X)=>{let J=X.credentials;switch(J.channel){case"line":$.push({path:"channels.line.credentials.channelSecret",value:J.channelSecret},{path:"channels.line.credentials.channelAccessToken",value:J.channelAccessToken});break;case"telegram":if($.push({path:"channels.telegram.credentials.botToken",value:J.botToken}),J.webhookSecretToken)$.push({path:"channels.telegram.credentials.webhookSecretToken",value:J.webhookSecretToken});break;case"lark":$.push({path:"channels.lark.credentials.appSecret",value:J.appSecret},{path:"channels.lark.credentials.encryptKey",value:J.encryptKey},{path:"channels.lark.credentials.verificationToken",value:J.verificationToken});break;case"whatsapp":$.push({path:"channels.whatsapp.credentials.accessToken",value:J.accessToken},{path:"channels.whatsapp.credentials.appSecret",value:J.appSecret},{path:"channels.whatsapp.credentials.verifyToken",value:J.verifyToken});break;case"web":if(J.inboundToken&&J.inboundToken.length>0)$.push({path:"channels.web.credentials.inboundToken",value:J.inboundToken});break}}),$}function b4(D){let $=structuredClone(D);return $.brains=$.brains.map((F)=>{if(F.type==="cloud-gateway")return{...F,config:{...F.config,token:""}};return F}),IT($),$.channels=$.channels.map((F)=>{let X=F.credentials;switch(X.channel){case"line":return{...F,credentials:{...X,channelSecret:"",channelAccessToken:""}};case"telegram":return{...F,credentials:{...X,botToken:"",webhookSecretToken:X.webhookSecretToken===void 0?void 0:""}};case"lark":return{...F,credentials:{...X,appSecret:"",encryptKey:"",verificationToken:""}};case"whatsapp":return{...F,credentials:{...X,accessToken:"",appSecret:"",verifyToken:""}};case"web":return{...F,credentials:{...X,inboundToken:X.inboundToken===void 0?void 0:""}};default:return F}}),$}function E6(D,$){let F=structuredClone(D);return F.brains=F.brains.map((X,J)=>{if(X.type==="cloud-gateway")return{...X,config:{...X.config,token:$.get(`brains.${J}.config.token`)??""}};return X}),TT(F,$),F.channels=F.channels.map((X)=>{let J=X.credentials;switch(J.channel){case"line":return{...X,credentials:{...J,channelSecret:$.get("channels.line.credentials.channelSecret")??"",channelAccessToken:$.get("channels.line.credentials.channelAccessToken")??""}};case"telegram":{let G=$.get("channels.telegram.credentials.webhookSecretToken");return{...X,credentials:{...J,botToken:$.get("channels.telegram.credentials.botToken")??"",webhookSecretToken:G??J.webhookSecretToken}}}case"lark":return{...X,credentials:{...J,appSecret:$.get("channels.lark.credentials.appSecret")??"",encryptKey:$.get("channels.lark.credentials.encryptKey")??"",verificationToken:$.get("channels.lark.credentials.verificationToken")??""}};case"whatsapp":return{...X,credentials:{...J,accessToken:$.get("channels.whatsapp.credentials.accessToken")??"",appSecret:$.get("channels.whatsapp.credentials.appSecret")??"",verifyToken:$.get("channels.whatsapp.credentials.verifyToken")??""}};case"web":{let G=$.get("channels.web.credentials.inboundToken");return{...X,credentials:{...J,inboundToken:G??J.inboundToken}}}default:return X}}),F}function IT(D){let $={...D.executor.overrides??{}};if(D.executor.engine==="http"&&typeof $.apiKey==="string")$.apiKey="";if(D.executor.engine==="mcp"&&typeof $.token==="string")$.token="";D.executor={...D.executor,overrides:$}}function TT(D,$){let F={...D.executor.overrides??{}};if(D.executor.engine==="http"){let X=$.get("executor.overrides.apiKey");if(X!==void 0)F.apiKey=X}else if(D.executor.engine==="mcp"){let X=$.get("executor.overrides.token");if(X!==void 0)F.token=X}D.executor={...D.executor,overrides:F}}var q_=f((Z_)=>{Object.defineProperty(Z_,"__esModule",{value:!0})});var j8=f((N_)=>{Object.defineProperty(N_,"__esModule",{value:!0});N_.CronField=void 0;class rX{#D=!1;#$=!1;#X=!1;#Y=[];options={rawValue:""};static get min(){throw Error("min must be overridden")}static get max(){throw Error("max must be overridden")}static get chars(){return Object.freeze([])}static get validChars(){return/^[?,*\dH/-]+$|^.*H\(\d+-\d+\)\/\d+.*$|^.*H\(\d+-\d+\).*$|^.*H\/\d+.*$/}static get constraints(){return{min:this.min,max:this.max,chars:this.chars,validChars:this.validChars}}constructor(D,$={rawValue:""}){if(!Array.isArray(D))throw Error(`${this.constructor.name} Validation error, values is not an array`);if(!(D.length>0))throw Error(`${this.constructor.name} Validation error, values contains no values`);this.options={...$,rawValue:$.rawValue??""},this.#Y=D.sort(rX.sorter),this.#X=this.options.wildcard!==void 0?this.options.wildcard:this.#J(),this.#D=this.options.rawValue.includes("L")||D.includes("L"),this.#$=this.options.rawValue.includes("?")||D.includes("?")}get min(){return this.constructor.min}get max(){return this.constructor.max}get chars(){return this.constructor.chars}get hasLastChar(){return this.#D}get hasQuestionMarkChar(){return this.#$}get isWildcard(){return this.#X}get values(){return this.#Y}static sorter(D,$){let F=typeof D==="number",X=typeof $==="number";if(F&&X)return D-$;if(!F&&!X)return D.localeCompare($);return F?-1:1}static findNearestValueInList(D,$,F=!1){if(F){for(let X=D.length-1;X>=0;X--)if(D[X]<$)return D[X];return null}for(let X=0;X<D.length;X++)if(D[X]>$)return D[X];return null}findNearestValue(D,$=!1){return this.constructor.findNearestValueInList(this.values,D,$)}serialize(){return{wildcard:this.#X,values:this.#Y}}validate(){let D,$=this.chars.length>0?` or chars ${this.chars.join("")}`:"",F=(Y)=>(B)=>new RegExp(`^\\d{0,2}${B}$`).test(Y),X=(Y)=>{return D=Y,typeof Y==="number"?Y>=this.min&&Y<=this.max:this.chars.some(F(Y))};if(!this.#Y.every(X))throw Error(`${this.constructor.name} Validation error, got value ${D} expected range ${this.min}-${this.max}${$}`);let G=this.#Y.find((Y,B)=>this.#Y.indexOf(Y)!==B);if(G)throw Error(`${this.constructor.name} Validation error, duplicate values found: ${G}`)}#J(){if(this.options.rawValue.length>0)return["*","?"].includes(this.options.rawValue);return Array.from({length:this.max-this.min+1},(D,$)=>$+this.min).every((D)=>this.#Y.includes(D))}}N_.CronField=rX});var I_=f((j_)=>{Object.defineProperty(j_,"__esModule",{value:!0});j_.CronDayOfMonth=void 0;var wT=j8(),ST=1,bT=31,fT=Object.freeze(["L"]);class L_ extends wT.CronField{static get min(){return ST}static get max(){return bT}static get chars(){return fT}static get validChars(){return/^[?,*\dLH/-]+$|^.*H\(\d+-\d+\)\/\d+.*$|^.*H\(\d+-\d+\).*$|^.*H\/\d+.*$/}constructor(D,$){super(D,$);this.validate()}get values(){return super.values}}j_.CronDayOfMonth=L_});var b_=f((w_)=>{Object.defineProperty(w_,"__esModule",{value:!0});w_.CronDayOfWeek=void 0;var kT=j8(),vT=0,hT=7,xT=Object.freeze(["L"]);class T_ extends kT.CronField{static get min(){return vT}static get max(){return hT}static get chars(){return xT}static get validChars(){return/^[?,*\dLH#/-]+$|^.*H\(\d+-\d+\)\/\d+.*$|^.*H\(\d+-\d+\).*$|^.*H\/\d+.*$/}constructor(D,$){super(D,$);this.validate()}get values(){return super.values}get nthDay(){return this.options.nthDayOfWeek??0}}w_.CronDayOfWeek=T_});var h_=f((k_)=>{Object.defineProperty(k_,"__esModule",{value:!0});k_.CronHour=void 0;var gT=j8(),yT=0,uT=23,mT=Object.freeze([]);class f_ extends gT.CronField{static get min(){return yT}static get max(){return uT}static get chars(){return mT}constructor(D,$){super(D,$);this.validate()}get values(){return super.values}}k_.CronHour=f_});var u_=f((g_)=>{Object.defineProperty(g_,"__esModule",{value:!0});g_.CronMinute=void 0;var pT=j8(),cT=0,dT=59,lT=Object.freeze([]);class x_ extends pT.CronField{static get min(){return cT}static get max(){return dT}static get chars(){return lT}constructor(D,$){super(D,$);this.validate()}get values(){return super.values}}g_.CronMinute=x_});var NK=f((qK)=>{Object.defineProperty(qK,"__esModule",{value:!0});class w8 extends Error{}class CA extends w8{constructor(D){super(`Invalid DateTime: ${D.toMessage()}`)}}class RA extends w8{constructor(D){super(`Invalid Interval: ${D.toMessage()}`)}}class EA extends w8{constructor(D){super(`Invalid Duration: ${D.toMessage()}`)}}class A1 extends w8{}class OJ extends w8{constructor(D){super(`Invalid unit ${D}`)}}class H0 extends w8{}class X8 extends w8{constructor(){super("Zone is an abstract class")}}var u="numeric",M2="short",b0="long",u4={year:u,month:u,day:u},MA={year:u,month:M2,day:u},iT={year:u,month:M2,day:u,weekday:M2},ZA={year:u,month:b0,day:u},qA={year:u,month:b0,day:u,weekday:b0},NA={hour:u,minute:u},PA={hour:u,minute:u,second:u},LA={hour:u,minute:u,second:u,timeZoneName:M2},jA={hour:u,minute:u,second:u,timeZoneName:b0},zA={hour:u,minute:u,hourCycle:"h23"},IA={hour:u,minute:u,second:u,hourCycle:"h23"},TA={hour:u,minute:u,second:u,hourCycle:"h23",timeZoneName:M2},wA={hour:u,minute:u,second:u,hourCycle:"h23",timeZoneName:b0},SA={year:u,month:u,day:u,hour:u,minute:u},bA={year:u,month:u,day:u,hour:u,minute:u,second:u},fA={year:u,month:M2,day:u,hour:u,minute:u},kA={year:u,month:M2,day:u,hour:u,minute:u,second:u},nT={year:u,month:M2,day:u,weekday:M2,hour:u,minute:u},vA={year:u,month:b0,day:u,hour:u,minute:u,timeZoneName:M2},hA={year:u,month:b0,day:u,hour:u,minute:u,second:u,timeZoneName:M2},xA={year:u,month:b0,day:u,weekday:b0,hour:u,minute:u,timeZoneName:b0},gA={year:u,month:b0,day:u,weekday:b0,hour:u,minute:u,second:u,timeZoneName:b0};class O1{get type(){throw new X8}get name(){throw new X8}get ianaName(){return this.name}get isUniversal(){throw new X8}offsetName(D,$){throw new X8}formatOffset(D,$){throw new X8}offset(D){throw new X8}equals(D){throw new X8}get isValid(){throw new X8}}var oX=null;class G9 extends O1{static get instance(){if(oX===null)oX=new G9;return oX}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(D,{format:$,locale:F}){return tA(D,$,F)}formatOffset(D,$){return J9(this.offset(D),$)}offset(D){return-new Date(D).getTimezoneOffset()}equals(D){return D.type==="system"}get isValid(){return!0}}var YJ=new Map;function sT(D){let $=YJ.get(D);if($===void 0)$=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:D,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"}),YJ.set(D,$);return $}var rT={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function oT(D,$){let F=D.format($).replace(/\u200E/g,""),X=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(F),[,J,G,Y,B,H,W,Q]=X;return[Y,J,G,B,H,W,Q]}function aT(D,$){let F=D.formatToParts($),X=[];for(let J=0;J<F.length;J++){let{type:G,value:Y}=F[J],B=rT[G];if(G==="era")X[B]=Y;else if(!t(B))X[B]=parseInt(Y,10)}return X}var aX=new Map;class v2 extends O1{static create(D){let $=aX.get(D);if($===void 0)aX.set(D,$=new v2(D));return $}static resetCache(){aX.clear(),YJ.clear()}static isValidSpecifier(D){return this.isValidZone(D)}static isValidZone(D){if(!D)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:D}).format(),!0}catch($){return!1}}constructor(D){super();this.zoneName=D,this.valid=v2.isValidZone(D)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(D,{format:$,locale:F}){return tA(D,$,F,this.name)}formatOffset(D,$){return J9(this.offset(D),$)}offset(D){if(!this.valid)return NaN;let $=new Date(D);if(isNaN($))return NaN;let F=sT(this.name),[X,J,G,Y,B,H,W]=F.formatToParts?aT(F,$):oT(F,$);if(Y==="BC")X=-Math.abs(X)+1;let U=l4({year:X,month:J,day:G,hour:B===24?0:B,minute:H,second:W,millisecond:0}),_=+$,A=_%1000;return _-=A>=0?A:1000+A,(U-_)/60000}equals(D){return D.type==="iana"&&D.name===this.name}get isValid(){return this.valid}}var m_={};function tT(D,$={}){let F=JSON.stringify([D,$]),X=m_[F];if(!X)X=new Intl.ListFormat(D,$),m_[F]=X;return X}var GJ=new Map;function BJ(D,$={}){let F=JSON.stringify([D,$]),X=GJ.get(F);if(X===void 0)X=new Intl.DateTimeFormat(D,$),GJ.set(F,X);return X}var HJ=new Map;function eT(D,$={}){let F=JSON.stringify([D,$]),X=HJ.get(F);if(X===void 0)X=new Intl.NumberFormat(D,$),HJ.set(F,X);return X}var WJ=new Map;function Dw(D,$={}){let{base:F,...X}=$,J=JSON.stringify([D,X]),G=WJ.get(J);if(G===void 0)G=new Intl.RelativeTimeFormat(D,$),WJ.set(J,G);return G}var $9=null;function $w(){if($9)return $9;else return $9=new Intl.DateTimeFormat().resolvedOptions().locale,$9}var VJ=new Map;function yA(D){let $=VJ.get(D);if($===void 0)$=new Intl.DateTimeFormat(D).resolvedOptions(),VJ.set(D,$);return $}var QJ=new Map;function Fw(D){let $=QJ.get(D);if(!$){let F=new Intl.Locale(D);if($="getWeekInfo"in F?F.getWeekInfo():F.weekInfo,!("minimalDays"in $))$={...cA,...$};QJ.set(D,$)}return $}function Xw(D){let $=D.indexOf("-x-");if($!==-1)D=D.substring(0,$);let F=D.indexOf("-u-");if(F===-1)return[D];else{let X,J;try{X=BJ(D).resolvedOptions(),J=D}catch(B){let H=D.substring(0,F);X=BJ(H).resolvedOptions(),J=H}let{numberingSystem:G,calendar:Y}=X;return[J,G,Y]}}function Jw(D,$,F){if(F||$){if(!D.includes("-u-"))D+="-u";if(F)D+=`-ca-${F}`;if($)D+=`-nu-${$}`;return D}else return D}function Yw(D){let $=[];for(let F=1;F<=12;F++){let X=DD.utc(2009,F,1);$.push(D(X))}return $}function Gw(D){let $=[];for(let F=1;F<=7;F++){let X=DD.utc(2016,11,13+F);$.push(D(X))}return $}function f4(D,$,F,X){let J=D.listingMode();if(J==="error")return null;else if(J==="en")return F($);else return X($)}function Bw(D){if(D.numberingSystem&&D.numberingSystem!=="latn")return!1;else return D.numberingSystem==="latn"||!D.locale||D.locale.startsWith("en")||yA(D.locale).numberingSystem==="latn"}class uA{constructor(D,$,F){this.padTo=F.padTo||0,this.floor=F.floor||!1;let{padTo:X,floor:J,...G}=F;if(!$||Object.keys(G).length>0){let Y={useGrouping:!1,...F};if(F.padTo>0)Y.minimumIntegerDigits=F.padTo;this.inf=eT(D,Y)}}format(D){if(this.inf){let $=this.floor?Math.floor(D):D;return this.inf.format($)}else{let $=this.floor?Math.floor(D):qJ(D,3);return dD($,this.padTo)}}}class mA{constructor(D,$,F){this.opts=F,this.originalZone=void 0;let X=void 0;if(this.opts.timeZone)this.dt=D;else if(D.zone.type==="fixed"){let G=-1*(D.offset/60),Y=G>=0?`Etc/GMT+${G}`:`Etc/GMT${G}`;if(D.offset!==0&&v2.create(Y).valid)X=Y,this.dt=D;else X="UTC",this.dt=D.offset===0?D:D.setZone("UTC").plus({minutes:D.offset}),this.originalZone=D.zone}else if(D.zone.type==="system")this.dt=D;else if(D.zone.type==="iana")this.dt=D,X=D.zone.name;else X="UTC",this.dt=D.setZone("UTC").plus({minutes:D.offset}),this.originalZone=D.zone;let J={...this.opts};J.timeZone=J.timeZone||X,this.dtf=BJ($,J)}format(){if(this.originalZone)return this.formatToParts().map(({value:D})=>D).join("");return this.dtf.format(this.dt.toJSDate())}formatToParts(){let D=this.dtf.formatToParts(this.dt.toJSDate());if(this.originalZone)return D.map(($)=>{if($.type==="timeZoneName"){let F=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...$,value:F}}else return $});return D}resolvedOptions(){return this.dtf.resolvedOptions()}}class pA{constructor(D,$,F){if(this.opts={style:"long",...F},!$&&oA())this.rtf=Dw(D,F)}format(D,$){if(this.rtf)return this.rtf.format(D,$);else return Iw($,D,this.opts.numeric,this.opts.style!=="long")}formatToParts(D,$){if(this.rtf)return this.rtf.formatToParts(D,$);else return[]}}var cA={firstDay:1,minimalDays:4,weekend:[6,7]};class CD{static fromOpts(D){return CD.create(D.locale,D.numberingSystem,D.outputCalendar,D.weekSettings,D.defaultToEN)}static create(D,$,F,X,J=!1){let G=D||SD.defaultLocale,Y=G||(J?"en-US":$w()),B=$||SD.defaultNumberingSystem,H=F||SD.defaultOutputCalendar,W=_J(X)||SD.defaultWeekSettings;return new CD(Y,B,H,W,G)}static resetCache(){$9=null,GJ.clear(),HJ.clear(),WJ.clear(),VJ.clear(),QJ.clear()}static fromObject({locale:D,numberingSystem:$,outputCalendar:F,weekSettings:X}={}){return CD.create(D,$,F,X)}constructor(D,$,F,X,J){let[G,Y,B]=Xw(D);this.locale=G,this.numberingSystem=$||Y||null,this.outputCalendar=F||B||null,this.weekSettings=X,this.intl=Jw(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=J,this.fastNumbersCached=null}get fastNumbers(){if(this.fastNumbersCached==null)this.fastNumbersCached=Bw(this);return this.fastNumbersCached}listingMode(){let D=this.isEnglish(),$=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return D&&$?"en":"intl"}clone(D){if(!D||Object.getOwnPropertyNames(D).length===0)return this;else return CD.create(D.locale||this.specifiedLocale,D.numberingSystem||this.numberingSystem,D.outputCalendar||this.outputCalendar,_J(D.weekSettings)||this.weekSettings,D.defaultToEN||!1)}redefaultToEN(D={}){return this.clone({...D,defaultToEN:!0})}redefaultToSystem(D={}){return this.clone({...D,defaultToEN:!1})}months(D,$=!1){return f4(this,D,$K,()=>{let F=this.intl==="ja"||this.intl.startsWith("ja-");$&=!F;let X=$?{month:D,day:"numeric"}:{month:D},J=$?"format":"standalone";if(!this.monthsCache[J][D]){let G=!F?(Y)=>this.extract(Y,X,"month"):(Y)=>this.dtFormatter(Y,X).format();this.monthsCache[J][D]=Yw(G)}return this.monthsCache[J][D]})}weekdays(D,$=!1){return f4(this,D,JK,()=>{let F=$?{weekday:D,year:"numeric",month:"long",day:"numeric"}:{weekday:D},X=$?"format":"standalone";if(!this.weekdaysCache[X][D])this.weekdaysCache[X][D]=Gw((J)=>this.extract(J,F,"weekday"));return this.weekdaysCache[X][D]})}meridiems(){return f4(this,void 0,()=>YK,()=>{if(!this.meridiemCache){let D={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[DD.utc(2016,11,13,9),DD.utc(2016,11,13,19)].map(($)=>this.extract($,D,"dayperiod"))}return this.meridiemCache})}eras(D){return f4(this,D,GK,()=>{let $={era:D};if(!this.eraCache[D])this.eraCache[D]=[DD.utc(-40,1,1),DD.utc(2017,1,1)].map((F)=>this.extract(F,$,"era"));return this.eraCache[D]})}extract(D,$,F){let X=this.dtFormatter(D,$),J=X.formatToParts(),G=J.find((Y)=>Y.type.toLowerCase()===F);return G?G.value:null}numberFormatter(D={}){return new uA(this.intl,D.forceSimple||this.fastNumbers,D)}dtFormatter(D,$={}){return new mA(D,this.intl,$)}relFormatter(D={}){return new pA(this.intl,this.isEnglish(),D)}listFormatter(D={}){return tT(this.intl,D)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||yA(this.intl).locale.startsWith("en-us")}getWeekSettings(){if(this.weekSettings)return this.weekSettings;else if(!aA())return cA;else return Fw(this.locale)}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(D){return this.locale===D.locale&&this.numberingSystem===D.numberingSystem&&this.outputCalendar===D.outputCalendar}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}}var tX=null;class K0 extends O1{static get utcInstance(){if(tX===null)tX=new K0(0);return tX}static instance(D){return D===0?K0.utcInstance:new K0(D)}static parseSpecifier(D){if(D){let $=D.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if($)return new K0(i4($[1],$[2]))}return null}constructor(D){super();this.fixed=D}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${J9(this.fixed,"narrow")}`}get ianaName(){if(this.fixed===0)return"Etc/UTC";else return`Etc/GMT${J9(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(D,$){return J9(this.fixed,$)}get isUniversal(){return!0}offset(){return this.fixed}equals(D){return D.type==="fixed"&&D.fixed===this.fixed}get isValid(){return!0}}class CJ extends O1{constructor(D){super();this.zoneName=D}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function I8(D,$){if(t(D)||D===null)return $;else if(D instanceof O1)return D;else if(_w(D)){let F=D.toLowerCase();if(F==="default")return $;else if(F==="local"||F==="system")return G9.instance;else if(F==="utc"||F==="gmt")return K0.utcInstance;else return K0.parseSpecifier(F)||v2.create(D)}else if(T8(D))return K0.instance(D);else if(typeof D==="object"&&"offset"in D&&typeof D.offset==="function")return D;else return new CJ(D)}var RJ={arab:"[\u0660-\u0669]",arabext:"[\u06F0-\u06F9]",bali:"[\u1B50-\u1B59]",beng:"[\u09E6-\u09EF]",deva:"[\u0966-\u096F]",fullwide:"[\uFF10-\uFF19]",gujr:"[\u0AE6-\u0AEF]",hanidec:"[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]",khmr:"[\u17E0-\u17E9]",knda:"[\u0CE6-\u0CEF]",laoo:"[\u0ED0-\u0ED9]",limb:"[\u1946-\u194F]",mlym:"[\u0D66-\u0D6F]",mong:"[\u1810-\u1819]",mymr:"[\u1040-\u1049]",orya:"[\u0B66-\u0B6F]",tamldec:"[\u0BE6-\u0BEF]",telu:"[\u0C66-\u0C6F]",thai:"[\u0E50-\u0E59]",tibt:"[\u0F20-\u0F29]",latn:"\\d"},p_={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},Hw=RJ.hanidec.replace(/[\[|\]]/g,"").split("");function Ww(D){let $=parseInt(D,10);if(isNaN($)){$="";for(let F=0;F<D.length;F++){let X=D.charCodeAt(F);if(D[F].search(RJ.hanidec)!==-1)$+=Hw.indexOf(D[F]);else for(let J in p_){let[G,Y]=p_[J];if(X>=G&&X<=Y)$+=X-G}}return parseInt($,10)}else return $}var UJ=new Map;function Vw(){UJ.clear()}function R2({numberingSystem:D},$=""){let F=D||"latn",X=UJ.get(F);if(X===void 0)X=new Map,UJ.set(F,X);let J=X.get($);if(J===void 0)J=new RegExp(`${RJ[F]}${$}`),X.set($,J);return J}var c_=()=>Date.now(),d_="system",l_=null,i_=null,n_=null,s_=60,r_,o_=null;class SD{static get now(){return c_}static set now(D){c_=D}static set defaultZone(D){d_=D}static get defaultZone(){return I8(d_,G9.instance)}static get defaultLocale(){return l_}static set defaultLocale(D){l_=D}static get defaultNumberingSystem(){return i_}static set defaultNumberingSystem(D){i_=D}static get defaultOutputCalendar(){return n_}static set defaultOutputCalendar(D){n_=D}static get defaultWeekSettings(){return o_}static set defaultWeekSettings(D){o_=_J(D)}static get twoDigitCutoffYear(){return s_}static set twoDigitCutoffYear(D){s_=D%100}static get throwOnInvalid(){return r_}static set throwOnInvalid(D){r_=D}static resetCaches(){CD.resetCache(),v2.resetCache(),DD.resetCache(),Vw()}}class m0{constructor(D,$){this.reason=D,this.explanation=$}toMessage(){if(this.explanation)return`${this.reason}: ${this.explanation}`;else return this.reason}}var dA=[0,31,59,90,120,151,181,212,243,273,304,334],lA=[0,31,60,91,121,152,182,213,244,274,305,335];function p0(D,$){return new m0("unit out of range",`you specified ${$} (of type ${typeof $}) as a ${D}, which is invalid`)}function EJ(D,$,F){let X=new Date(Date.UTC(D,$-1,F));if(D<100&&D>=0)X.setUTCFullYear(X.getUTCFullYear()-1900);let J=X.getUTCDay();return J===0?7:J}function iA(D,$,F){return F+(B9(D)?lA:dA)[$-1]}function nA(D,$){let F=B9(D)?lA:dA,X=F.findIndex((G)=>G<$),J=$-F[X];return{month:X+1,day:J}}function MJ(D,$){return(D-$+7)%7+1}function m4(D,$=4,F=1){let{year:X,month:J,day:G}=D,Y=iA(X,J,G),B=MJ(EJ(X,J,G),F),H=Math.floor((Y-B+14-$)/7),W;if(H<1)W=X-1,H=Y9(W,$,F);else if(H>Y9(X,$,F))W=X+1,H=1;else W=X;return{weekYear:W,weekNumber:H,weekday:B,...n4(D)}}function a_(D,$=4,F=1){let{weekYear:X,weekNumber:J,weekday:G}=D,Y=MJ(EJ(X,1,$),F),B=P6(X),H=J*7+G-Y-7+$,W;if(H<1)W=X-1,H+=P6(W);else if(H>B)W=X+1,H-=P6(X);else W=X;let{month:Q,day:U}=nA(W,H);return{year:W,month:Q,day:U,...n4(D)}}function eX(D){let{year:$,month:F,day:X}=D,J=iA($,F,X);return{year:$,ordinal:J,...n4(D)}}function t_(D){let{year:$,ordinal:F}=D,{month:X,day:J}=nA($,F);return{year:$,month:X,day:J,...n4(D)}}function e_(D,$){if(!t(D.localWeekday)||!t(D.localWeekNumber)||!t(D.localWeekYear)){if(!t(D.weekday)||!t(D.weekNumber)||!t(D.weekYear))throw new A1("Cannot mix locale-based week fields with ISO-based week fields");if(!t(D.localWeekday))D.weekday=D.localWeekday;if(!t(D.localWeekNumber))D.weekNumber=D.localWeekNumber;if(!t(D.localWeekYear))D.weekYear=D.localWeekYear;return delete D.localWeekday,delete D.localWeekNumber,delete D.localWeekYear,{minDaysInFirstWeek:$.getMinDaysInFirstWeek(),startOfWeek:$.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}function Qw(D,$=4,F=1){let X=d4(D.weekYear),J=c0(D.weekNumber,1,Y9(D.weekYear,$,F)),G=c0(D.weekday,1,7);if(!X)return p0("weekYear",D.weekYear);else if(!J)return p0("week",D.weekNumber);else if(!G)return p0("weekday",D.weekday);else return!1}function Uw(D){let $=d4(D.year),F=c0(D.ordinal,1,P6(D.year));if(!$)return p0("year",D.year);else if(!F)return p0("ordinal",D.ordinal);else return!1}function sA(D){let $=d4(D.year),F=c0(D.month,1,12),X=c0(D.day,1,p4(D.year,D.month));if(!$)return p0("year",D.year);else if(!F)return p0("month",D.month);else if(!X)return p0("day",D.day);else return!1}function rA(D){let{hour:$,minute:F,second:X,millisecond:J}=D,G=c0($,0,23)||$===24&&F===0&&X===0&&J===0,Y=c0(F,0,59),B=c0(X,0,59),H=c0(J,0,999);if(!G)return p0("hour",$);else if(!Y)return p0("minute",F);else if(!B)return p0("second",X);else if(!H)return p0("millisecond",J);else return!1}function t(D){return typeof D>"u"}function T8(D){return typeof D==="number"}function d4(D){return typeof D==="number"&&D%1===0}function _w(D){return typeof D==="string"}function Aw(D){return Object.prototype.toString.call(D)==="[object Date]"}function oA(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch(D){return!1}}function aA(){try{return typeof Intl<"u"&&!!Intl.Locale&&(("weekInfo"in Intl.Locale.prototype)||("getWeekInfo"in Intl.Locale.prototype))}catch(D){return!1}}function Kw(D){return Array.isArray(D)?D:[D]}function DA(D,$,F){if(D.length===0)return;return D.reduce((X,J)=>{let G=[$(J),J];if(!X)return G;else if(F(X[0],G[0])===X[0])return X;else return G},null)[1]}function Ow(D,$){return $.reduce((F,X)=>{return F[X]=D[X],F},{})}function j6(D,$){return Object.prototype.hasOwnProperty.call(D,$)}function _J(D){if(D==null)return null;else if(typeof D!=="object")throw new H0("Week settings must be an object");else{if(!c0(D.firstDay,1,7)||!c0(D.minimalDays,1,7)||!Array.isArray(D.weekend)||D.weekend.some(($)=>!c0($,1,7)))throw new H0("Invalid week settings");return{firstDay:D.firstDay,minimalDays:D.minimalDays,weekend:Array.from(D.weekend)}}}function c0(D,$,F){return d4(D)&&D>=$&&D<=F}function Cw(D,$){return D-$*Math.floor(D/$)}function dD(D,$=2){let F=D<0,X;if(F)X="-"+(""+-D).padStart($,"0");else X=(""+D).padStart($,"0");return X}function z8(D){if(t(D)||D===null||D==="")return;else return parseInt(D,10)}function U1(D){if(t(D)||D===null||D==="")return;else return parseFloat(D)}function ZJ(D){if(t(D)||D===null||D==="")return;else{let $=parseFloat("0."+D)*1000;return Math.floor($)}}function qJ(D,$,F="round"){let X=10**$;switch(F){case"expand":return D>0?Math.ceil(D*X)/X:Math.floor(D*X)/X;case"trunc":return Math.trunc(D*X)/X;case"round":return Math.round(D*X)/X;case"floor":return Math.floor(D*X)/X;case"ceil":return Math.ceil(D*X)/X;default:throw RangeError(`Value rounding ${F} is out of range`)}}function B9(D){return D%4===0&&(D%100!==0||D%400===0)}function P6(D){return B9(D)?366:365}function p4(D,$){let F=Cw($-1,12)+1,X=D+($-F)/12;if(F===2)return B9(X)?29:28;else return[31,null,31,30,31,30,31,31,30,31,30,31][F-1]}function l4(D){let $=Date.UTC(D.year,D.month-1,D.day,D.hour,D.minute,D.second,D.millisecond);if(D.year<100&&D.year>=0)$=new Date($),$.setUTCFullYear(D.year,D.month-1,D.day);return+$}function $A(D,$,F){return-MJ(EJ(D,1,$),F)+$-1}function Y9(D,$=4,F=1){let X=$A(D,$,F),J=$A(D+1,$,F);return(P6(D)-X+J)/7}function AJ(D){if(D>99)return D;else return D>SD.twoDigitCutoffYear?1900+D:2000+D}function tA(D,$,F,X=null){let J=new Date(D),G={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};if(X)G.timeZone=X;let Y={timeZoneName:$,...G},B=new Intl.DateTimeFormat(F,Y).formatToParts(J).find((H)=>H.type.toLowerCase()==="timezonename");return B?B.value:null}function i4(D,$){let F=parseInt(D,10);if(Number.isNaN(F))F=0;let X=parseInt($,10)||0,J=F<0||Object.is(F,-0)?-X:X;return F*60+J}function eA(D){let $=Number(D);if(typeof D==="boolean"||D===""||!Number.isFinite($))throw new H0(`Invalid unit value ${D}`);return $}function c4(D,$){let F={};for(let X in D)if(j6(D,X)){let J=D[X];if(J===void 0||J===null)continue;F[$(X)]=eA(J)}return F}function J9(D,$){let F=Math.trunc(Math.abs(D/60)),X=Math.trunc(Math.abs(D%60)),J=D>=0?"+":"-";switch($){case"short":return`${J}${dD(F,2)}:${dD(X,2)}`;case"narrow":return`${J}${F}${X>0?`:${X}`:""}`;case"techie":return`${J}${dD(F,2)}${dD(X,2)}`;default:throw RangeError(`Value format ${$} is out of range for property format`)}}function n4(D){return Ow(D,["hour","minute","second","millisecond"])}var Rw=["January","February","March","April","May","June","July","August","September","October","November","December"],DK=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Ew=["J","F","M","A","M","J","J","A","S","O","N","D"];function $K(D){switch(D){case"narrow":return[...Ew];case"short":return[...DK];case"long":return[...Rw];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}var FK=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],XK=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],Mw=["M","T","W","T","F","S","S"];function JK(D){switch(D){case"narrow":return[...Mw];case"short":return[...XK];case"long":return[...FK];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var YK=["AM","PM"],Zw=["Before Christ","Anno Domini"],qw=["BC","AD"],Nw=["B","A"];function GK(D){switch(D){case"narrow":return[...Nw];case"short":return[...qw];case"long":return[...Zw];default:return null}}function Pw(D){return YK[D.hour<12?0:1]}function Lw(D,$){return JK($)[D.weekday-1]}function jw(D,$){return $K($)[D.month-1]}function zw(D,$){return GK($)[D.year<0?0:1]}function Iw(D,$,F="always",X=!1){let J={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},G=["hours","minutes","seconds"].indexOf(D)===-1;if(F==="auto"&&G){let U=D==="days";switch($){case 1:return U?"tomorrow":`next ${J[D][0]}`;case-1:return U?"yesterday":`last ${J[D][0]}`;case 0:return U?"today":`this ${J[D][0]}`}}let Y=Object.is($,-0)||$<0,B=Math.abs($),H=B===1,W=J[D],Q=X?H?W[1]:W[2]||W[1]:H?J[D][0]:D;return Y?`${B} ${Q} ago`:`in ${B} ${Q}`}function FA(D,$){let F="";for(let X of D)if(X.literal)F+=X.val;else F+=$(X.val);return F}var Tw={D:u4,DD:MA,DDD:ZA,DDDD:qA,t:NA,tt:PA,ttt:LA,tttt:jA,T:zA,TT:IA,TTT:TA,TTTT:wA,f:SA,ff:fA,fff:vA,ffff:xA,F:bA,FF:kA,FFF:hA,FFFF:gA};class A0{static create(D,$={}){return new A0(D,$)}static parseFormat(D){let $=null,F="",X=!1,J=[];for(let G=0;G<D.length;G++){let Y=D.charAt(G);if(Y==="'"){if(F.length>0||X)J.push({literal:X||/^\s+$/.test(F),val:F===""?"'":F});$=null,F="",X=!X}else if(X)F+=Y;else if(Y===$)F+=Y;else{if(F.length>0)J.push({literal:/^\s+$/.test(F),val:F});F=Y,$=Y}}if(F.length>0)J.push({literal:X||/^\s+$/.test(F),val:F});return J}static macroTokenToFormatOpts(D){return Tw[D]}constructor(D,$){this.opts=$,this.loc=D,this.systemLoc=null}formatWithSystemDefault(D,$){if(this.systemLoc===null)this.systemLoc=this.loc.redefaultToSystem();return this.systemLoc.dtFormatter(D,{...this.opts,...$}).format()}dtFormatter(D,$={}){return this.loc.dtFormatter(D,{...this.opts,...$})}formatDateTime(D,$){return this.dtFormatter(D,$).format()}formatDateTimeParts(D,$){return this.dtFormatter(D,$).formatToParts()}formatInterval(D,$){return this.dtFormatter(D.start,$).dtf.formatRange(D.start.toJSDate(),D.end.toJSDate())}resolvedOptions(D,$){return this.dtFormatter(D,$).resolvedOptions()}num(D,$=0,F=void 0){if(this.opts.forceSimple)return dD(D,$);let X={...this.opts};if($>0)X.padTo=$;if(F)X.signDisplay=F;return this.loc.numberFormatter(X).format(D)}formatDateTimeFromString(D,$){let F=this.loc.listingMode()==="en",X=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",J=(_,A)=>this.loc.extract(D,_,A),G=(_)=>{if(D.isOffsetFixed&&D.offset===0&&_.allowZ)return"Z";return D.isValid?D.zone.formatOffset(D.ts,_.format):""},Y=()=>F?Pw(D):J({hour:"numeric",hourCycle:"h12"},"dayperiod"),B=(_,A)=>F?jw(D,_):J(A?{month:_}:{month:_,day:"numeric"},"month"),H=(_,A)=>F?Lw(D,_):J(A?{weekday:_}:{weekday:_,month:"long",day:"numeric"},"weekday"),W=(_)=>{let A=A0.macroTokenToFormatOpts(_);if(A)return this.formatWithSystemDefault(D,A);else return _},Q=(_)=>F?zw(D,_):J({era:_},"era"),U=(_)=>{switch(_){case"S":return this.num(D.millisecond);case"u":case"SSS":return this.num(D.millisecond,3);case"s":return this.num(D.second);case"ss":return this.num(D.second,2);case"uu":return this.num(Math.floor(D.millisecond/10),2);case"uuu":return this.num(Math.floor(D.millisecond/100));case"m":return this.num(D.minute);case"mm":return this.num(D.minute,2);case"h":return this.num(D.hour%12===0?12:D.hour%12);case"hh":return this.num(D.hour%12===0?12:D.hour%12,2);case"H":return this.num(D.hour);case"HH":return this.num(D.hour,2);case"Z":return G({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return G({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return G({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return D.zone.offsetName(D.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return D.zone.offsetName(D.ts,{format:"long",locale:this.loc.locale});case"z":return D.zoneName;case"a":return Y();case"d":return X?J({day:"numeric"},"day"):this.num(D.day);case"dd":return X?J({day:"2-digit"},"day"):this.num(D.day,2);case"c":return this.num(D.weekday);case"ccc":return H("short",!0);case"cccc":return H("long",!0);case"ccccc":return H("narrow",!0);case"E":return this.num(D.weekday);case"EEE":return H("short",!1);case"EEEE":return H("long",!1);case"EEEEE":return H("narrow",!1);case"L":return X?J({month:"numeric",day:"numeric"},"month"):this.num(D.month);case"LL":return X?J({month:"2-digit",day:"numeric"},"month"):this.num(D.month,2);case"LLL":return B("short",!0);case"LLLL":return B("long",!0);case"LLLLL":return B("narrow",!0);case"M":return X?J({month:"numeric"},"month"):this.num(D.month);case"MM":return X?J({month:"2-digit"},"month"):this.num(D.month,2);case"MMM":return B("short",!1);case"MMMM":return B("long",!1);case"MMMMM":return B("narrow",!1);case"y":return X?J({year:"numeric"},"year"):this.num(D.year);case"yy":return X?J({year:"2-digit"},"year"):this.num(D.year.toString().slice(-2),2);case"yyyy":return X?J({year:"numeric"},"year"):this.num(D.year,4);case"yyyyyy":return X?J({year:"numeric"},"year"):this.num(D.year,6);case"G":return Q("short");case"GG":return Q("long");case"GGGGG":return Q("narrow");case"kk":return this.num(D.weekYear.toString().slice(-2),2);case"kkkk":return this.num(D.weekYear,4);case"W":return this.num(D.weekNumber);case"WW":return this.num(D.weekNumber,2);case"n":return this.num(D.localWeekNumber);case"nn":return this.num(D.localWeekNumber,2);case"ii":return this.num(D.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(D.localWeekYear,4);case"o":return this.num(D.ordinal);case"ooo":return this.num(D.ordinal,3);case"q":return this.num(D.quarter);case"qq":return this.num(D.quarter,2);case"X":return this.num(Math.floor(D.ts/1000));case"x":return this.num(D.ts);default:return W(_)}};return FA(A0.parseFormat($),U)}formatDurationFromString(D,$){let F=this.opts.signMode==="negativeLargestOnly"?-1:1,X=(W)=>{switch(W[0]){case"S":return"milliseconds";case"s":return"seconds";case"m":return"minutes";case"h":return"hours";case"d":return"days";case"w":return"weeks";case"M":return"months";case"y":return"years";default:return null}},J=(W,Q)=>(U)=>{let _=X(U);if(_){let A=Q.isNegativeDuration&&_!==Q.largestUnit?F:1,C;if(this.opts.signMode==="negativeLargestOnly"&&_!==Q.largestUnit)C="never";else if(this.opts.signMode==="all")C="always";else C="auto";return this.num(W.get(_)*A,U.length,C)}else return U},G=A0.parseFormat($),Y=G.reduce((W,{literal:Q,val:U})=>Q?W:W.concat(U),[]),B=D.shiftTo(...Y.map(X).filter((W)=>W)),H={isNegativeDuration:B<0,largestUnit:Object.keys(B.values)[0]};return FA(G,J(B,H))}}var BK=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function z6(...D){let $=D.reduce((F,X)=>F+X.source,"");return RegExp(`^${$}$`)}function I6(...D){return($)=>D.reduce(([F,X,J],G)=>{let[Y,B,H]=G($,J);return[{...F,...Y},B||X,H]},[{},null,1]).slice(0,2)}function T6(D,...$){if(D==null)return[null,null];for(let[F,X]of $){let J=F.exec(D);if(J)return X(J)}return[null,null]}function HK(...D){return($,F)=>{let X={},J;for(J=0;J<D.length;J++)X[D[J]]=z8($[F+J]);return[X,null,F+J]}}var WK=/(?:([Zz])|([+-]\d\d)(?::?(\d\d))?)/,ww=`(?:${WK.source}?(?:\\[(${BK.source})\\])?)?`,NJ=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,VK=RegExp(`${NJ.source}${ww}`),PJ=RegExp(`(?:[Tt]${VK.source})?`),Sw=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,bw=/(\d{4})-?W(\d\d)(?:-?(\d))?/,fw=/(\d{4})-?(\d{3})/,kw=HK("weekYear","weekNumber","weekDay"),vw=HK("year","ordinal"),hw=/(\d{4})-(\d\d)-(\d\d)/,QK=RegExp(`${NJ.source} ?(?:${WK.source}|(${BK.source}))?`),xw=RegExp(`(?: ${QK.source})?`);function L6(D,$,F){let X=D[$];return t(X)?F:z8(X)}function gw(D,$){return[{year:L6(D,$),month:L6(D,$+1,1),day:L6(D,$+2,1)},null,$+3]}function w6(D,$){return[{hours:L6(D,$,0),minutes:L6(D,$+1,0),seconds:L6(D,$+2,0),milliseconds:ZJ(D[$+3])},null,$+4]}function H9(D,$){let F=!D[$]&&!D[$+1],X=i4(D[$+1],D[$+2]),J=F?null:K0.instance(X);return[{},J,$+3]}function W9(D,$){let F=D[$]?v2.create(D[$]):null;return[{},F,$+1]}var yw=RegExp(`^T?${NJ.source}$`),uw=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function mw(D){let[$,F,X,J,G,Y,B,H,W]=D,Q=$[0]==="-",U=H&&H[0]==="-",_=(A,C=!1)=>A!==void 0&&(C||A&&Q)?-A:A;return[{years:_(U1(F)),months:_(U1(X)),weeks:_(U1(J)),days:_(U1(G)),hours:_(U1(Y)),minutes:_(U1(B)),seconds:_(U1(H),H==="-0"),milliseconds:_(ZJ(W),U)}]}var pw={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function LJ(D,$,F,X,J,G,Y){let B={year:$.length===2?AJ(z8($)):z8($),month:DK.indexOf(F)+1,day:z8(X),hour:z8(J),minute:z8(G)};if(Y)B.second=z8(Y);if(D)B.weekday=D.length>3?FK.indexOf(D)+1:XK.indexOf(D)+1;return B}var cw=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function dw(D){let[,$,F,X,J,G,Y,B,H,W,Q,U]=D,_=LJ($,J,X,F,G,Y,B),A;if(H)A=pw[H];else if(W)A=0;else A=i4(Q,U);return[_,new K0(A)]}function lw(D){return D.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var iw=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,nw=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,sw=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function XA(D){let[,$,F,X,J,G,Y,B]=D;return[LJ($,J,X,F,G,Y,B),K0.utcInstance]}function rw(D){let[,$,F,X,J,G,Y,B]=D;return[LJ($,B,F,X,J,G,Y),K0.utcInstance]}var ow=z6(Sw,PJ),aw=z6(bw,PJ),tw=z6(fw,PJ),ew=z6(VK),UK=I6(gw,w6,H9,W9),DS=I6(kw,w6,H9,W9),$S=I6(vw,w6,H9,W9),FS=I6(w6,H9,W9);function XS(D){return T6(D,[ow,UK],[aw,DS],[tw,$S],[ew,FS])}function JS(D){return T6(lw(D),[cw,dw])}function YS(D){return T6(D,[iw,XA],[nw,XA],[sw,rw])}function GS(D){return T6(D,[uw,mw])}var BS=I6(w6);function HS(D){return T6(D,[yw,BS])}var WS=z6(hw,xw),VS=z6(QK),QS=I6(w6,H9,W9);function US(D){return T6(D,[WS,UK],[VS,QS])}var JA="Invalid Duration",_K={weeks:{days:7,hours:168,minutes:10080,seconds:604800,milliseconds:604800000},days:{hours:24,minutes:1440,seconds:86400,milliseconds:86400000},hours:{minutes:60,seconds:3600,milliseconds:3600000},minutes:{seconds:60,milliseconds:60000},seconds:{milliseconds:1000}},_S={years:{quarters:4,months:12,weeks:52,days:365,hours:8760,minutes:525600,seconds:31536000,milliseconds:31536000000},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:131040,seconds:7862400,milliseconds:7862400000},months:{weeks:4,days:30,hours:720,minutes:43200,seconds:2592000,milliseconds:2592000000},..._K},u0=365.2425,M6=30.436875,AS={years:{quarters:4,months:12,weeks:u0/7,days:u0,hours:u0*24,minutes:u0*24*60,seconds:u0*24*60*60,milliseconds:u0*24*60*60*1000},quarters:{months:3,weeks:u0/28,days:u0/4,hours:u0*24/4,minutes:u0*24*60/4,seconds:u0*24*60*60/4,milliseconds:u0*24*60*60*1000/4},months:{weeks:M6/7,days:M6,hours:M6*24,minutes:M6*24*60,seconds:M6*24*60*60,milliseconds:M6*24*60*60*1000},..._K},K1=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],KS=K1.slice(0).reverse();function F8(D,$,F=!1){let X={values:F?$.values:{...D.values,...$.values||{}},loc:D.loc.clone($.loc),conversionAccuracy:$.conversionAccuracy||D.conversionAccuracy,matrix:$.matrix||D.matrix};return new UD(X)}function AK(D,$){var F;let X=(F=$.milliseconds)!=null?F:0;for(let J of KS.slice(1))if($[J])X+=$[J]*D[J].milliseconds;return X}function YA(D,$){let F=AK(D,$)<0?-1:1;K1.reduceRight((X,J)=>{if(!t($[J])){if(X){let G=$[X]*F,Y=D[J][X],B=Math.floor(G/Y);$[J]+=B*F,$[X]-=B*Y*F}return J}else return X},null),K1.reduce((X,J)=>{if(!t($[J])){if(X){let G=$[X]%1;$[X]-=G,$[J]+=G*D[X][J]}return J}else return X},null)}function GA(D){let $={};for(let[F,X]of Object.entries(D))if(X!==0)$[F]=X;return $}class UD{constructor(D){let $=D.conversionAccuracy==="longterm"||!1,F=$?AS:_S;if(D.matrix)F=D.matrix;this.values=D.values,this.loc=D.loc||CD.create(),this.conversionAccuracy=$?"longterm":"casual",this.invalid=D.invalid||null,this.matrix=F,this.isLuxonDuration=!0}static fromMillis(D,$){return UD.fromObject({milliseconds:D},$)}static fromObject(D,$={}){if(D==null||typeof D!=="object")throw new H0(`Duration.fromObject: argument expected to be an object, got ${D===null?"null":typeof D}`);return new UD({values:c4(D,UD.normalizeUnit),loc:CD.fromObject($),conversionAccuracy:$.conversionAccuracy,matrix:$.matrix})}static fromDurationLike(D){if(T8(D))return UD.fromMillis(D);else if(UD.isDuration(D))return D;else if(typeof D==="object")return UD.fromObject(D);else throw new H0(`Unknown duration argument ${D} of type ${typeof D}`)}static fromISO(D,$){let[F]=GS(D);if(F)return UD.fromObject(F,$);else return UD.invalid("unparsable",`the input "${D}" can't be parsed as ISO 8601`)}static fromISOTime(D,$){let[F]=HS(D);if(F)return UD.fromObject(F,$);else return UD.invalid("unparsable",`the input "${D}" can't be parsed as ISO 8601`)}static invalid(D,$=null){if(!D)throw new H0("need to specify a reason the Duration is invalid");let F=D instanceof m0?D:new m0(D,$);if(SD.throwOnInvalid)throw new EA(F);else return new UD({invalid:F})}static normalizeUnit(D){let $={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[D?D.toLowerCase():D];if(!$)throw new OJ(D);return $}static isDuration(D){return D&&D.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(D,$={}){let F={...$,floor:$.round!==!1&&$.floor!==!1};return this.isValid?A0.create(this.loc,F).formatDurationFromString(this,D):JA}toHuman(D={}){if(!this.isValid)return JA;let $=D.showZeros!==!1,F=K1.map((X)=>{let J=this.values[X];if(t(J)||J===0&&!$)return null;return this.loc.numberFormatter({style:"unit",unitDisplay:"long",...D,unit:X.slice(0,-1)}).format(J)}).filter((X)=>X);return this.loc.listFormatter({type:"conjunction",style:D.listStyle||"narrow",...D}).format(F)}toObject(){if(!this.isValid)return{};return{...this.values}}toISO(){if(!this.isValid)return null;let D="P";if(this.years!==0)D+=this.years+"Y";if(this.months!==0||this.quarters!==0)D+=this.months+this.quarters*3+"M";if(this.weeks!==0)D+=this.weeks+"W";if(this.days!==0)D+=this.days+"D";if(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)D+="T";if(this.hours!==0)D+=this.hours+"H";if(this.minutes!==0)D+=this.minutes+"M";if(this.seconds!==0||this.milliseconds!==0)D+=qJ(this.seconds+this.milliseconds/1000,3)+"S";if(D==="P")D+="T0S";return D}toISOTime(D={}){if(!this.isValid)return null;let $=this.toMillis();if($<0||$>=86400000)return null;return D={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...D,includeOffset:!1},DD.fromMillis($,{zone:"UTC"}).toISOTime(D)}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){if(this.isValid)return`Duration { values: ${JSON.stringify(this.values)} }`;else return`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){if(!this.isValid)return NaN;return AK(this.matrix,this.values)}valueOf(){return this.toMillis()}plus(D){if(!this.isValid)return this;let $=UD.fromDurationLike(D),F={};for(let X of K1)if(j6($.values,X)||j6(this.values,X))F[X]=$.get(X)+this.get(X);return F8(this,{values:F},!0)}minus(D){if(!this.isValid)return this;let $=UD.fromDurationLike(D);return this.plus($.negate())}mapUnits(D){if(!this.isValid)return this;let $={};for(let F of Object.keys(this.values))$[F]=eA(D(this.values[F],F));return F8(this,{values:$},!0)}get(D){return this[UD.normalizeUnit(D)]}set(D){if(!this.isValid)return this;let $={...this.values,...c4(D,UD.normalizeUnit)};return F8(this,{values:$})}reconfigure({locale:D,numberingSystem:$,conversionAccuracy:F,matrix:X}={}){let G={loc:this.loc.clone({locale:D,numberingSystem:$}),matrix:X,conversionAccuracy:F};return F8(this,G)}as(D){return this.isValid?this.shiftTo(D).get(D):NaN}normalize(){if(!this.isValid)return this;let D=this.toObject();return YA(this.matrix,D),F8(this,{values:D},!0)}rescale(){if(!this.isValid)return this;let D=GA(this.normalize().shiftToAll().toObject());return F8(this,{values:D},!0)}shiftTo(...D){if(!this.isValid)return this;if(D.length===0)return this;D=D.map((G)=>UD.normalizeUnit(G));let $={},F={},X=this.toObject(),J;for(let G of K1)if(D.indexOf(G)>=0){J=G;let Y=0;for(let H in F)Y+=this.matrix[H][G]*F[H],F[H]=0;if(T8(X[G]))Y+=X[G];let B=Math.trunc(Y);$[G]=B,F[G]=(Y*1000-B*1000)/1000}else if(T8(X[G]))F[G]=X[G];for(let G in F)if(F[G]!==0)$[J]+=G===J?F[G]:F[G]/this.matrix[J][G];return YA(this.matrix,$),F8(this,{values:$},!0)}shiftToAll(){if(!this.isValid)return this;return this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds")}negate(){if(!this.isValid)return this;let D={};for(let $ of Object.keys(this.values))D[$]=this.values[$]===0?0:-this.values[$];return F8(this,{values:D},!0)}removeZeros(){if(!this.isValid)return this;let D=GA(this.values);return F8(this,{values:D},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(D){if(!this.isValid||!D.isValid)return!1;if(!this.loc.equals(D.loc))return!1;function $(F,X){if(F===void 0||F===0)return X===void 0||X===0;return F===X}for(let F of K1)if(!$(this.values[F],D.values[F]))return!1;return!0}}var Z6="Invalid Interval";function OS(D,$){if(!D||!D.isValid)return kD.invalid("missing or invalid start");else if(!$||!$.isValid)return kD.invalid("missing or invalid end");else if($<D)return kD.invalid("end before start",`The end of an interval must be after its start, but you had start=${D.toISO()} and end=${$.toISO()}`);else return null}class kD{constructor(D){this.s=D.start,this.e=D.end,this.invalid=D.invalid||null,this.isLuxonInterval=!0}static invalid(D,$=null){if(!D)throw new H0("need to specify a reason the Interval is invalid");let F=D instanceof m0?D:new m0(D,$);if(SD.throwOnInvalid)throw new RA(F);else return new kD({invalid:F})}static fromDateTimes(D,$){let F=D9(D),X=D9($),J=OS(F,X);if(J==null)return new kD({start:F,end:X});else return J}static after(D,$){let F=UD.fromDurationLike($),X=D9(D);return kD.fromDateTimes(X,X.plus(F))}static before(D,$){let F=UD.fromDurationLike($),X=D9(D);return kD.fromDateTimes(X.minus(F),X)}static fromISO(D,$){let[F,X]=(D||"").split("/",2);if(F&&X){let J,G;try{J=DD.fromISO(F,$),G=J.isValid}catch(H){G=!1}let Y,B;try{Y=DD.fromISO(X,$),B=Y.isValid}catch(H){B=!1}if(G&&B)return kD.fromDateTimes(J,Y);if(G){let H=UD.fromISO(X,$);if(H.isValid)return kD.after(J,H)}else if(B){let H=UD.fromISO(F,$);if(H.isValid)return kD.before(Y,H)}}return kD.invalid("unparsable",`the input "${D}" can't be parsed as ISO 8601`)}static isInterval(D){return D&&D.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get lastDateTime(){return this.isValid?this.e?this.e.minus(1):null:null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(D="milliseconds"){return this.isValid?this.toDuration(...[D]).get(D):NaN}count(D="milliseconds",$){if(!this.isValid)return NaN;let F=this.start.startOf(D,$),X;if($!=null&&$.useLocaleWeeks)X=this.end.reconfigure({locale:F.locale});else X=this.end;return X=X.startOf(D,$),Math.floor(X.diff(F,D).get(D))+(X.valueOf()!==this.end.valueOf())}hasSame(D){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,D):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(D){if(!this.isValid)return!1;return this.s>D}isBefore(D){if(!this.isValid)return!1;return this.e<=D}contains(D){if(!this.isValid)return!1;return this.s<=D&&this.e>D}set({start:D,end:$}={}){if(!this.isValid)return this;return kD.fromDateTimes(D||this.s,$||this.e)}splitAt(...D){if(!this.isValid)return[];let $=D.map(D9).filter((G)=>this.contains(G)).sort((G,Y)=>G.toMillis()-Y.toMillis()),F=[],{s:X}=this,J=0;while(X<this.e){let G=$[J]||this.e,Y=+G>+this.e?this.e:G;F.push(kD.fromDateTimes(X,Y)),X=Y,J+=1}return F}splitBy(D){let $=UD.fromDurationLike(D);if(!this.isValid||!$.isValid||$.as("milliseconds")===0)return[];let{s:F}=this,X=1,J,G=[];while(F<this.e){let Y=this.start.plus($.mapUnits((B)=>B*X));J=+Y>+this.e?this.e:Y,G.push(kD.fromDateTimes(F,J)),F=J,X+=1}return G}divideEqually(D){if(!this.isValid)return[];return this.splitBy(this.length()/D).slice(0,D)}overlaps(D){return this.e>D.s&&this.s<D.e}abutsStart(D){if(!this.isValid)return!1;return+this.e===+D.s}abutsEnd(D){if(!this.isValid)return!1;return+D.e===+this.s}engulfs(D){if(!this.isValid)return!1;return this.s<=D.s&&this.e>=D.e}equals(D){if(!this.isValid||!D.isValid)return!1;return this.s.equals(D.s)&&this.e.equals(D.e)}intersection(D){if(!this.isValid)return this;let $=this.s>D.s?this.s:D.s,F=this.e<D.e?this.e:D.e;if($>=F)return null;else return kD.fromDateTimes($,F)}union(D){if(!this.isValid)return this;let $=this.s<D.s?this.s:D.s,F=this.e>D.e?this.e:D.e;return kD.fromDateTimes($,F)}static merge(D){let[$,F]=D.sort((X,J)=>X.s-J.s).reduce(([X,J],G)=>{if(!J)return[X,G];else if(J.overlaps(G)||J.abutsStart(G))return[X,J.union(G)];else return[X.concat([J]),G]},[[],null]);if(F)$.push(F);return $}static xor(D){let $=null,F=0,X=[],J=D.map((B)=>[{time:B.s,type:"s"},{time:B.e,type:"e"}]),G=Array.prototype.concat(...J),Y=G.sort((B,H)=>B.time-H.time);for(let B of Y)if(F+=B.type==="s"?1:-1,F===1)$=B.time;else{if($&&+$!==+B.time)X.push(kD.fromDateTimes($,B.time));$=null}return kD.merge(X)}difference(...D){return kD.xor([this].concat(D)).map(($)=>this.intersection($)).filter(($)=>$&&!$.isEmpty())}toString(){if(!this.isValid)return Z6;return`[${this.s.toISO()} \u2013 ${this.e.toISO()})`}[Symbol.for("nodejs.util.inspect.custom")](){if(this.isValid)return`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`;else return`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(D=u4,$={}){return this.isValid?A0.create(this.s.loc.clone($),D).formatInterval(this):Z6}toISO(D){if(!this.isValid)return Z6;return`${this.s.toISO(D)}/${this.e.toISO(D)}`}toISODate(){if(!this.isValid)return Z6;return`${this.s.toISODate()}/${this.e.toISODate()}`}toISOTime(D){if(!this.isValid)return Z6;return`${this.s.toISOTime(D)}/${this.e.toISOTime(D)}`}toFormat(D,{separator:$=" \u2013 "}={}){if(!this.isValid)return Z6;return`${this.s.toFormat(D)}${$}${this.e.toFormat(D)}`}toDuration(D,$){if(!this.isValid)return UD.invalid(this.invalidReason);return this.e.diff(this.s,D,$)}mapEndpoints(D){return kD.fromDateTimes(D(this.s),D(this.e))}}class N6{static hasDST(D=SD.defaultZone){let $=DD.now().setZone(D).set({month:12});return!D.isUniversal&&$.offset!==$.set({month:6}).offset}static isValidIANAZone(D){return v2.isValidZone(D)}static normalizeZone(D){return I8(D,SD.defaultZone)}static getStartOfWeek({locale:D=null,locObj:$=null}={}){return($||CD.create(D)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:D=null,locObj:$=null}={}){return($||CD.create(D)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:D=null,locObj:$=null}={}){return($||CD.create(D)).getWeekendDays().slice()}static months(D="long",{locale:$=null,numberingSystem:F=null,locObj:X=null,outputCalendar:J="gregory"}={}){return(X||CD.create($,F,J)).months(D)}static monthsFormat(D="long",{locale:$=null,numberingSystem:F=null,locObj:X=null,outputCalendar:J="gregory"}={}){return(X||CD.create($,F,J)).months(D,!0)}static weekdays(D="long",{locale:$=null,numberingSystem:F=null,locObj:X=null}={}){return(X||CD.create($,F,null)).weekdays(D)}static weekdaysFormat(D="long",{locale:$=null,numberingSystem:F=null,locObj:X=null}={}){return(X||CD.create($,F,null)).weekdays(D,!0)}static meridiems({locale:D=null}={}){return CD.create(D).meridiems()}static eras(D="short",{locale:$=null}={}){return CD.create($,null,"gregory").eras(D)}static features(){return{relative:oA(),localeWeek:aA()}}}function BA(D,$){let F=(J)=>J.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),X=F($)-F(D);return Math.floor(UD.fromMillis(X).as("days"))}function CS(D,$,F){let X=[["years",(H,W)=>W.year-H.year],["quarters",(H,W)=>W.quarter-H.quarter+(W.year-H.year)*4],["months",(H,W)=>W.month-H.month+(W.year-H.year)*12],["weeks",(H,W)=>{let Q=BA(H,W);return(Q-Q%7)/7}],["days",BA]],J={},G=D,Y,B;for(let[H,W]of X)if(F.indexOf(H)>=0)if(Y=H,J[H]=W(D,$),B=G.plus(J),B>$){if(J[H]--,D=G.plus(J),D>$)B=D,J[H]--,D=G.plus(J)}else D=B;return[D,J,B,Y]}function RS(D,$,F,X){let[J,G,Y,B]=CS(D,$,F),H=$-J,W=F.filter((U)=>["hours","minutes","seconds","milliseconds"].indexOf(U)>=0);if(W.length===0){if(Y<$)Y=J.plus({[B]:1});if(Y!==J)G[B]=(G[B]||0)+H/(Y-J)}let Q=UD.fromObject(G,X);if(W.length>0)return UD.fromMillis(H,X).shiftTo(...W).plus(Q);else return Q}var ES="missing Intl.DateTimeFormat.formatToParts support";function AD(D,$=(F)=>F){return{regex:D,deser:([F])=>$(Ww(F))}}var MS=String.fromCharCode(160),KK=`[ ${MS}]`,OK=new RegExp(KK,"g");function ZS(D){return D.replace(/\./g,"\\.?").replace(OK,KK)}function HA(D){return D.replace(/\./g,"").replace(OK," ").toLowerCase()}function E2(D,$){if(D===null)return null;else return{regex:RegExp(D.map(ZS).join("|")),deser:([F])=>D.findIndex((X)=>HA(F)===HA(X))+$}}function WA(D,$){return{regex:D,deser:([,F,X])=>i4(F,X),groups:$}}function k4(D){return{regex:D,deser:([$])=>$}}function qS(D){return D.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function NS(D,$){let F=R2($),X=R2($,"{2}"),J=R2($,"{3}"),G=R2($,"{4}"),Y=R2($,"{6}"),B=R2($,"{1,2}"),H=R2($,"{1,3}"),W=R2($,"{1,6}"),Q=R2($,"{1,9}"),U=R2($,"{2,4}"),_=R2($,"{4,6}"),A=(K)=>({regex:RegExp(qS(K.val)),deser:([R])=>R,literal:!0}),O=((K)=>{if(D.literal)return A(K);switch(K.val){case"G":return E2($.eras("short"),0);case"GG":return E2($.eras("long"),0);case"y":return AD(W);case"yy":return AD(U,AJ);case"yyyy":return AD(G);case"yyyyy":return AD(_);case"yyyyyy":return AD(Y);case"M":return AD(B);case"MM":return AD(X);case"MMM":return E2($.months("short",!0),1);case"MMMM":return E2($.months("long",!0),1);case"L":return AD(B);case"LL":return AD(X);case"LLL":return E2($.months("short",!1),1);case"LLLL":return E2($.months("long",!1),1);case"d":return AD(B);case"dd":return AD(X);case"o":return AD(H);case"ooo":return AD(J);case"HH":return AD(X);case"H":return AD(B);case"hh":return AD(X);case"h":return AD(B);case"mm":return AD(X);case"m":return AD(B);case"q":return AD(B);case"qq":return AD(X);case"s":return AD(B);case"ss":return AD(X);case"S":return AD(H);case"SSS":return AD(J);case"u":return k4(Q);case"uu":return k4(B);case"uuu":return AD(F);case"a":return E2($.meridiems(),0);case"kkkk":return AD(G);case"kk":return AD(U,AJ);case"W":return AD(B);case"WW":return AD(X);case"E":case"c":return AD(F);case"EEE":return E2($.weekdays("short",!1),1);case"EEEE":return E2($.weekdays("long",!1),1);case"ccc":return E2($.weekdays("short",!0),1);case"cccc":return E2($.weekdays("long",!0),1);case"Z":case"ZZ":return WA(new RegExp(`([+-]${B.source})(?::(${X.source}))?`),2);case"ZZZ":return WA(new RegExp(`([+-]${B.source})(${X.source})?`),2);case"z":return k4(/[a-z_+-/]{1,256}?/i);case" ":return k4(/[^\S\n\r]/);default:return A(K)}})(D)||{invalidReason:ES};return O.token=D,O}var PS={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};function LS(D,$,F){let{type:X,value:J}=D;if(X==="literal"){let H=/^\s+$/.test(J);return{literal:!H,val:H?" ":J}}let G=$[X],Y=X;if(X==="hour")if($.hour12!=null)Y=$.hour12?"hour12":"hour24";else if($.hourCycle!=null)if($.hourCycle==="h11"||$.hourCycle==="h12")Y="hour12";else Y="hour24";else Y=F.hour12?"hour12":"hour24";let B=PS[Y];if(typeof B==="object")B=B[G];if(B)return{literal:!1,val:B};return}function jS(D){return[`^${D.map((F)=>F.regex).reduce((F,X)=>`${F}(${X.source})`,"")}$`,D]}function zS(D,$,F){let X=D.match($);if(X){let J={},G=1;for(let Y in F)if(j6(F,Y)){let B=F[Y],H=B.groups?B.groups+1:1;if(!B.literal&&B.token)J[B.token.val[0]]=B.deser(X.slice(G,G+H));G+=H}return[X,J]}else return[X,{}]}function IS(D){let $=(G)=>{switch(G){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}},F=null,X;if(!t(D.z))F=v2.create(D.z);if(!t(D.Z)){if(!F)F=new K0(D.Z);X=D.Z}if(!t(D.q))D.M=(D.q-1)*3+1;if(!t(D.h)){if(D.h<12&&D.a===1)D.h+=12;else if(D.h===12&&D.a===0)D.h=0}if(D.G===0&&D.y)D.y=-D.y;if(!t(D.u))D.S=ZJ(D.u);return[Object.keys(D).reduce((G,Y)=>{let B=$(Y);if(B)G[B]=D[Y];return G},{}),F,X]}var DJ=null;function TS(){if(!DJ)DJ=DD.fromMillis(1555555555555);return DJ}function wS(D,$){if(D.literal)return D;let F=A0.macroTokenToFormatOpts(D.val),X=EK(F,$);if(X==null||X.includes(void 0))return D;return X}function CK(D,$){return Array.prototype.concat(...D.map((F)=>wS(F,$)))}class jJ{constructor(D,$){if(this.locale=D,this.format=$,this.tokens=CK(A0.parseFormat($),D),this.units=this.tokens.map((F)=>NS(F,D)),this.disqualifyingUnit=this.units.find((F)=>F.invalidReason),!this.disqualifyingUnit){let[F,X]=jS(this.units);this.regex=RegExp(F,"i"),this.handlers=X}}explainFromTokens(D){if(!this.isValid)return{input:D,tokens:this.tokens,invalidReason:this.invalidReason};else{let[$,F]=zS(D,this.regex,this.handlers),[X,J,G]=F?IS(F):[null,null,void 0];if(j6(F,"a")&&j6(F,"H"))throw new A1("Can't include meridiem when specifying 24-hour format");return{input:D,tokens:this.tokens,regex:this.regex,rawMatches:$,matches:F,result:X,zone:J,specificOffset:G}}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}}function RK(D,$,F){return new jJ(D,F).explainFromTokens($)}function SS(D,$,F){let{result:X,zone:J,specificOffset:G,invalidReason:Y}=RK(D,$,F);return[X,J,G,Y]}function EK(D,$){if(!D)return null;let X=A0.create($,D).dtFormatter(TS()),J=X.formatToParts(),G=X.resolvedOptions();return J.map((Y)=>LS(Y,D,G))}var $J="Invalid DateTime",VA=8640000000000000;function F9(D){return new m0("unsupported zone",`the zone "${D.name}" is not supported`)}function FJ(D){if(D.weekData===null)D.weekData=m4(D.c);return D.weekData}function XJ(D){if(D.localWeekData===null)D.localWeekData=m4(D.c,D.loc.getMinDaysInFirstWeek(),D.loc.getStartOfWeek());return D.localWeekData}function _1(D,$){let F={ts:D.ts,zone:D.zone,c:D.c,o:D.o,loc:D.loc,invalid:D.invalid};return new DD({...F,...$,old:F})}function MK(D,$,F){let X=D-$*60*1000,J=F.offset(X);if($===J)return[X,$];X-=(J-$)*60*1000;let G=F.offset(X);if(J===G)return[X,J];return[D-Math.min(J,G)*60*1000,Math.max(J,G)]}function v4(D,$){D+=$*60*1000;let F=new Date(D);return{year:F.getUTCFullYear(),month:F.getUTCMonth()+1,day:F.getUTCDate(),hour:F.getUTCHours(),minute:F.getUTCMinutes(),second:F.getUTCSeconds(),millisecond:F.getUTCMilliseconds()}}function x4(D,$,F){return MK(l4(D),$,F)}function QA(D,$){let F=D.o,X=D.c.year+Math.trunc($.years),J=D.c.month+Math.trunc($.months)+Math.trunc($.quarters)*3,G={...D.c,year:X,month:J,day:Math.min(D.c.day,p4(X,J))+Math.trunc($.days)+Math.trunc($.weeks)*7},Y=UD.fromObject({years:$.years-Math.trunc($.years),quarters:$.quarters-Math.trunc($.quarters),months:$.months-Math.trunc($.months),weeks:$.weeks-Math.trunc($.weeks),days:$.days-Math.trunc($.days),hours:$.hours,minutes:$.minutes,seconds:$.seconds,milliseconds:$.milliseconds}).as("milliseconds"),B=l4(G),[H,W]=MK(B,F,D.zone);if(Y!==0)H+=Y,W=D.zone.offset(H);return{ts:H,o:W}}function q6(D,$,F,X,J,G){let{setZone:Y,zone:B}=F;if(D&&Object.keys(D).length!==0||$){let H=$||B,W=DD.fromObject(D,{...F,zone:H,specificOffset:G});return Y?W:W.setZone(B)}else return DD.invalid(new m0("unparsable",`the input "${J}" can't be parsed as ${X}`))}function h4(D,$,F=!0){return D.isValid?A0.create(CD.create("en-US"),{allowZ:F,forceSimple:!0}).formatDateTimeFromString(D,$):null}function JJ(D,$,F){let X=D.c.year>9999||D.c.year<0,J="";if(X&&D.c.year>=0)J+="+";if(J+=dD(D.c.year,X?6:4),F==="year")return J;if($){if(J+="-",J+=dD(D.c.month),F==="month")return J;J+="-"}else if(J+=dD(D.c.month),F==="month")return J;return J+=dD(D.c.day),J}function UA(D,$,F,X,J,G,Y){let B=!F||D.c.millisecond!==0||D.c.second!==0,H="";switch(Y){case"day":case"month":case"year":break;default:if(H+=dD(D.c.hour),Y==="hour")break;if($){if(H+=":",H+=dD(D.c.minute),Y==="minute")break;if(B)H+=":",H+=dD(D.c.second)}else{if(H+=dD(D.c.minute),Y==="minute")break;if(B)H+=dD(D.c.second)}if(Y==="second")break;if(B&&(!X||D.c.millisecond!==0))H+=".",H+=dD(D.c.millisecond,3)}if(J)if(D.isOffsetFixed&&D.offset===0&&!G)H+="Z";else if(D.o<0)H+="-",H+=dD(Math.trunc(-D.o/60)),H+=":",H+=dD(Math.trunc(-D.o%60));else H+="+",H+=dD(Math.trunc(D.o/60)),H+=":",H+=dD(Math.trunc(D.o%60));if(G)H+="["+D.zone.ianaName+"]";return H}var ZK={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},bS={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},fS={ordinal:1,hour:0,minute:0,second:0,millisecond:0},g4=["year","month","day","hour","minute","second","millisecond"],kS=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],vS=["year","ordinal","hour","minute","second","millisecond"];function y4(D){let $={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[D.toLowerCase()];if(!$)throw new OJ(D);return $}function _A(D){switch(D.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return y4(D)}}function hS(D){if(X9===void 0)X9=SD.now();if(D.type!=="iana")return D.offset(X9);let $=D.name,F=KJ.get($);if(F===void 0)F=D.offset(X9),KJ.set($,F);return F}function AA(D,$){let F=I8($.zone,SD.defaultZone);if(!F.isValid)return DD.invalid(F9(F));let X=CD.fromObject($),J,G;if(!t(D.year)){for(let H of g4)if(t(D[H]))D[H]=ZK[H];let Y=sA(D)||rA(D);if(Y)return DD.invalid(Y);let B=hS(F);[J,G]=x4(D,B,F)}else J=SD.now();return new DD({ts:J,zone:F,loc:X,o:G})}function KA(D,$,F){let X=t(F.round)?!0:F.round,J=t(F.rounding)?"trunc":F.rounding,G=(B,H)=>{return B=qJ(B,X||F.calendary?0:2,F.calendary?"round":J),$.loc.clone(F).relFormatter(F).format(B,H)},Y=(B)=>{if(F.calendary)if(!$.hasSame(D,B))return $.startOf(B).diff(D.startOf(B),B).get(B);else return 0;else return $.diff(D,B).get(B)};if(F.unit)return G(Y(F.unit),F.unit);for(let B of F.units){let H=Y(B);if(Math.abs(H)>=1)return G(H,B)}return G(D>$?-0:0,F.units[F.units.length-1])}function OA(D){let $={},F;if(D.length>0&&typeof D[D.length-1]==="object")$=D[D.length-1],F=Array.from(D).slice(0,D.length-1);else F=Array.from(D);return[$,F]}var X9,KJ=new Map;class DD{constructor(D){let $=D.zone||SD.defaultZone,F=D.invalid||(Number.isNaN(D.ts)?new m0("invalid input"):null)||(!$.isValid?F9($):null);this.ts=t(D.ts)?SD.now():D.ts;let X=null,J=null;if(!F)if(D.old&&D.old.ts===this.ts&&D.old.zone.equals($))[X,J]=[D.old.c,D.old.o];else{let Y=T8(D.o)&&!D.old?D.o:$.offset(this.ts);X=v4(this.ts,Y),F=Number.isNaN(X.year)?new m0("invalid input"):null,X=F?null:X,J=F?null:Y}this._zone=$,this.loc=D.loc||CD.create(),this.invalid=F,this.weekData=null,this.localWeekData=null,this.c=X,this.o=J,this.isLuxonDateTime=!0}static now(){return new DD({})}static local(){let[D,$]=OA(arguments),[F,X,J,G,Y,B,H]=$;return AA({year:F,month:X,day:J,hour:G,minute:Y,second:B,millisecond:H},D)}static utc(){let[D,$]=OA(arguments),[F,X,J,G,Y,B,H]=$;return D.zone=K0.utcInstance,AA({year:F,month:X,day:J,hour:G,minute:Y,second:B,millisecond:H},D)}static fromJSDate(D,$={}){let F=Aw(D)?D.valueOf():NaN;if(Number.isNaN(F))return DD.invalid("invalid input");let X=I8($.zone,SD.defaultZone);if(!X.isValid)return DD.invalid(F9(X));return new DD({ts:F,zone:X,loc:CD.fromObject($)})}static fromMillis(D,$={}){if(!T8(D))throw new H0(`fromMillis requires a numerical input, but received a ${typeof D} with value ${D}`);else if(D<-VA||D>VA)return DD.invalid("Timestamp out of range");else return new DD({ts:D,zone:I8($.zone,SD.defaultZone),loc:CD.fromObject($)})}static fromSeconds(D,$={}){if(!T8(D))throw new H0("fromSeconds requires a numerical input");else return new DD({ts:D*1000,zone:I8($.zone,SD.defaultZone),loc:CD.fromObject($)})}static fromObject(D,$={}){D=D||{};let F=I8($.zone,SD.defaultZone);if(!F.isValid)return DD.invalid(F9(F));let X=CD.fromObject($),J=c4(D,_A),{minDaysInFirstWeek:G,startOfWeek:Y}=e_(J,X),B=SD.now(),H=!t($.specificOffset)?$.specificOffset:F.offset(B),W=!t(J.ordinal),Q=!t(J.year),U=!t(J.month)||!t(J.day),_=Q||U,A=J.weekYear||J.weekNumber;if((_||W)&&A)throw new A1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(U&&W)throw new A1("Can't mix ordinal dates with month/day");let C=A||J.weekday&&!_,O,K,R=v4(B,H);if(C)O=kS,K=bS,R=m4(R,G,Y);else if(W)O=vS,K=fS,R=eX(R);else O=g4,K=ZK;let q=!1;for(let d of O){let VD=J[d];if(!t(VD))q=!0;else if(q)J[d]=K[d];else J[d]=R[d]}let N=C?Qw(J,G,Y):W?Uw(J):sA(J),S=N||rA(J);if(S)return DD.invalid(S);let b=C?a_(J,G,Y):W?t_(J):J,[L,z]=x4(b,H,F),j=new DD({ts:L,zone:F,o:z,loc:X});if(J.weekday&&_&&D.weekday!==j.weekday)return DD.invalid("mismatched weekday",`you can't specify both a weekday of ${J.weekday} and a date of ${j.toISO()}`);if(!j.isValid)return DD.invalid(j.invalid);return j}static fromISO(D,$={}){let[F,X]=XS(D);return q6(F,X,$,"ISO 8601",D)}static fromRFC2822(D,$={}){let[F,X]=JS(D);return q6(F,X,$,"RFC 2822",D)}static fromHTTP(D,$={}){let[F,X]=YS(D);return q6(F,X,$,"HTTP",$)}static fromFormat(D,$,F={}){if(t(D)||t($))throw new H0("fromFormat requires an input string and a format");let{locale:X=null,numberingSystem:J=null}=F,G=CD.fromOpts({locale:X,numberingSystem:J,defaultToEN:!0}),[Y,B,H,W]=SS(G,D,$);if(W)return DD.invalid(W);else return q6(Y,B,F,`format ${$}`,D,H)}static fromString(D,$,F={}){return DD.fromFormat(D,$,F)}static fromSQL(D,$={}){let[F,X]=US(D);return q6(F,X,$,"SQL",D)}static invalid(D,$=null){if(!D)throw new H0("need to specify a reason the DateTime is invalid");let F=D instanceof m0?D:new m0(D,$);if(SD.throwOnInvalid)throw new CA(F);else return new DD({invalid:F})}static isDateTime(D){return D&&D.isLuxonDateTime||!1}static parseFormatForOpts(D,$={}){let F=EK(D,CD.fromObject($));return!F?null:F.map((X)=>X?X.val:null).join("")}static expandFormat(D,$={}){return CK(A0.parseFormat(D),CD.fromObject($)).map((X)=>X.val).join("")}static resetCache(){X9=void 0,KJ.clear()}get(D){return this[D]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?FJ(this).weekYear:NaN}get weekNumber(){return this.isValid?FJ(this).weekNumber:NaN}get weekday(){return this.isValid?FJ(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?XJ(this).weekday:NaN}get localWeekNumber(){return this.isValid?XJ(this).weekNumber:NaN}get localWeekYear(){return this.isValid?XJ(this).weekYear:NaN}get ordinal(){return this.isValid?eX(this.c).ordinal:NaN}get monthShort(){return this.isValid?N6.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?N6.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?N6.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?N6.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){if(this.isValid)return this.zone.offsetName(this.ts,{format:"short",locale:this.locale});else return null}get offsetNameLong(){if(this.isValid)return this.zone.offsetName(this.ts,{format:"long",locale:this.locale});else return null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){if(this.isOffsetFixed)return!1;else return this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let D=86400000,$=60000,F=l4(this.c),X=this.zone.offset(F-D),J=this.zone.offset(F+D),G=this.zone.offset(F-X*$),Y=this.zone.offset(F-J*$);if(G===Y)return[this];let B=F-G*$,H=F-Y*$,W=v4(B,G),Q=v4(H,Y);if(W.hour===Q.hour&&W.minute===Q.minute&&W.second===Q.second&&W.millisecond===Q.millisecond)return[_1(this,{ts:B}),_1(this,{ts:H})];return[this]}get isInLeapYear(){return B9(this.year)}get daysInMonth(){return p4(this.year,this.month)}get daysInYear(){return this.isValid?P6(this.year):NaN}get weeksInWeekYear(){return this.isValid?Y9(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?Y9(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(D={}){let{locale:$,numberingSystem:F,calendar:X}=A0.create(this.loc.clone(D),D).resolvedOptions(this);return{locale:$,numberingSystem:F,outputCalendar:X}}toUTC(D=0,$={}){return this.setZone(K0.instance(D),$)}toLocal(){return this.setZone(SD.defaultZone)}setZone(D,{keepLocalTime:$=!1,keepCalendarTime:F=!1}={}){if(D=I8(D,SD.defaultZone),D.equals(this.zone))return this;else if(!D.isValid)return DD.invalid(F9(D));else{let X=this.ts;if($||F){let J=D.offset(this.ts),G=this.toObject();[X]=x4(G,J,D)}return _1(this,{ts:X,zone:D})}}reconfigure({locale:D,numberingSystem:$,outputCalendar:F}={}){let X=this.loc.clone({locale:D,numberingSystem:$,outputCalendar:F});return _1(this,{loc:X})}setLocale(D){return this.reconfigure({locale:D})}set(D){if(!this.isValid)return this;let $=c4(D,_A),{minDaysInFirstWeek:F,startOfWeek:X}=e_($,this.loc),J=!t($.weekYear)||!t($.weekNumber)||!t($.weekday),G=!t($.ordinal),Y=!t($.year),B=!t($.month)||!t($.day),H=Y||B,W=$.weekYear||$.weekNumber;if((H||G)&&W)throw new A1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(B&&G)throw new A1("Can't mix ordinal dates with month/day");let Q;if(J)Q=a_({...m4(this.c,F,X),...$},F,X);else if(!t($.ordinal))Q=t_({...eX(this.c),...$});else if(Q={...this.toObject(),...$},t($.day))Q.day=Math.min(p4(Q.year,Q.month),Q.day);let[U,_]=x4(Q,this.o,this.zone);return _1(this,{ts:U,o:_})}plus(D){if(!this.isValid)return this;let $=UD.fromDurationLike(D);return _1(this,QA(this,$))}minus(D){if(!this.isValid)return this;let $=UD.fromDurationLike(D).negate();return _1(this,QA(this,$))}startOf(D,{useLocaleWeeks:$=!1}={}){if(!this.isValid)return this;let F={},X=UD.normalizeUnit(D);switch(X){case"years":F.month=1;case"quarters":case"months":F.day=1;case"weeks":case"days":F.hour=0;case"hours":F.minute=0;case"minutes":F.second=0;case"seconds":F.millisecond=0;break}if(X==="weeks")if($){let J=this.loc.getStartOfWeek(),{weekday:G}=this;if(G<J)F.weekNumber=this.weekNumber-1;F.weekday=J}else F.weekday=1;if(X==="quarters"){let J=Math.ceil(this.month/3);F.month=(J-1)*3+1}return this.set(F)}endOf(D,$){return this.isValid?this.plus({[D]:1}).startOf(D,$).minus(1):this}toFormat(D,$={}){return this.isValid?A0.create(this.loc.redefaultToEN($)).formatDateTimeFromString(this,D):$J}toLocaleString(D=u4,$={}){return this.isValid?A0.create(this.loc.clone($),D).formatDateTime(this):$J}toLocaleParts(D={}){return this.isValid?A0.create(this.loc.clone(D),D).formatDateTimeParts(this):[]}toISO({format:D="extended",suppressSeconds:$=!1,suppressMilliseconds:F=!1,includeOffset:X=!0,extendedZone:J=!1,precision:G="milliseconds"}={}){if(!this.isValid)return null;G=y4(G);let Y=D==="extended",B=JJ(this,Y,G);if(g4.indexOf(G)>=3)B+="T";return B+=UA(this,Y,$,F,X,J,G),B}toISODate({format:D="extended",precision:$="day"}={}){if(!this.isValid)return null;return JJ(this,D==="extended",y4($))}toISOWeekDate(){return h4(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:D=!1,suppressSeconds:$=!1,includeOffset:F=!0,includePrefix:X=!1,extendedZone:J=!1,format:G="extended",precision:Y="milliseconds"}={}){if(!this.isValid)return null;return Y=y4(Y),(X&&g4.indexOf(Y)>=3?"T":"")+UA(this,G==="extended",$,D,F,J,Y)}toRFC2822(){return h4(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return h4(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){if(!this.isValid)return null;return JJ(this,!0)}toSQLTime({includeOffset:D=!0,includeZone:$=!1,includeOffsetSpace:F=!0}={}){let X="HH:mm:ss.SSS";if($||D){if(F)X+=" ";if($)X+="z";else if(D)X+="ZZ"}return h4(this,X,!0)}toSQL(D={}){if(!this.isValid)return null;return`${this.toSQLDate()} ${this.toSQLTime(D)}`}toString(){return this.isValid?this.toISO():$J}[Symbol.for("nodejs.util.inspect.custom")](){if(this.isValid)return`DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`;else return`DateTime { Invalid, reason: ${this.invalidReason} }`}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1000:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1000):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(D={}){if(!this.isValid)return{};let $={...this.c};if(D.includeConfig)$.outputCalendar=this.outputCalendar,$.numberingSystem=this.loc.numberingSystem,$.locale=this.loc.locale;return $}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(D,$="milliseconds",F={}){if(!this.isValid||!D.isValid)return UD.invalid("created by diffing an invalid DateTime");let X={locale:this.locale,numberingSystem:this.numberingSystem,...F},J=Kw($).map(UD.normalizeUnit),G=D.valueOf()>this.valueOf(),Y=G?this:D,B=G?D:this,H=RS(Y,B,J,X);return G?H.negate():H}diffNow(D="milliseconds",$={}){return this.diff(DD.now(),D,$)}until(D){return this.isValid?kD.fromDateTimes(this,D):this}hasSame(D,$,F){if(!this.isValid)return!1;let X=D.valueOf(),J=this.setZone(D.zone,{keepLocalTime:!0});return J.startOf($,F)<=X&&X<=J.endOf($,F)}equals(D){return this.isValid&&D.isValid&&this.valueOf()===D.valueOf()&&this.zone.equals(D.zone)&&this.loc.equals(D.loc)}toRelative(D={}){if(!this.isValid)return null;let $=D.base||DD.fromObject({},{zone:this.zone}),F=D.padding?this<$?-D.padding:D.padding:0,X=["years","months","days","hours","minutes","seconds"],J=D.unit;if(Array.isArray(D.unit))X=D.unit,J=void 0;return KA($,this.plus(F),{...D,numeric:"always",units:X,unit:J})}toRelativeCalendar(D={}){if(!this.isValid)return null;return KA(D.base||DD.fromObject({},{zone:this.zone}),this,{...D,numeric:"auto",units:["years","months","days"],calendary:!0})}static min(...D){if(!D.every(DD.isDateTime))throw new H0("min requires all arguments be DateTimes");return DA(D,($)=>$.valueOf(),Math.min)}static max(...D){if(!D.every(DD.isDateTime))throw new H0("max requires all arguments be DateTimes");return DA(D,($)=>$.valueOf(),Math.max)}static fromFormatExplain(D,$,F={}){let{locale:X=null,numberingSystem:J=null}=F,G=CD.fromOpts({locale:X,numberingSystem:J,defaultToEN:!0});return RK(G,D,$)}static fromStringExplain(D,$,F={}){return DD.fromFormatExplain(D,$,F)}static buildFormatParser(D,$={}){let{locale:F=null,numberingSystem:X=null}=$,J=CD.fromOpts({locale:F,numberingSystem:X,defaultToEN:!0});return new jJ(J,D)}static fromFormatParser(D,$,F={}){if(t(D)||t($))throw new H0("fromFormatParser requires an input string and a format parser");let{locale:X=null,numberingSystem:J=null}=F,G=CD.fromOpts({locale:X,numberingSystem:J,defaultToEN:!0});if(!G.equals($.locale))throw new H0(`fromFormatParser called with a locale of ${G}, but the format parser was created for ${$.locale}`);let{result:Y,zone:B,specificOffset:H,invalidReason:W}=$.explainFromTokens(D);if(W)return DD.invalid(W);else return q6(Y,B,F,`format ${$.format}`,D,H)}static get DATE_SHORT(){return u4}static get DATE_MED(){return MA}static get DATE_MED_WITH_WEEKDAY(){return iT}static get DATE_FULL(){return ZA}static get DATE_HUGE(){return qA}static get TIME_SIMPLE(){return NA}static get TIME_WITH_SECONDS(){return PA}static get TIME_WITH_SHORT_OFFSET(){return LA}static get TIME_WITH_LONG_OFFSET(){return jA}static get TIME_24_SIMPLE(){return zA}static get TIME_24_WITH_SECONDS(){return IA}static get TIME_24_WITH_SHORT_OFFSET(){return TA}static get TIME_24_WITH_LONG_OFFSET(){return wA}static get DATETIME_SHORT(){return SA}static get DATETIME_SHORT_WITH_SECONDS(){return bA}static get DATETIME_MED(){return fA}static get DATETIME_MED_WITH_SECONDS(){return kA}static get DATETIME_MED_WITH_WEEKDAY(){return nT}static get DATETIME_FULL(){return vA}static get DATETIME_FULL_WITH_SECONDS(){return hA}static get DATETIME_HUGE(){return xA}static get DATETIME_HUGE_WITH_SECONDS(){return gA}}function D9(D){if(DD.isDateTime(D))return D;else if(D&&D.valueOf&&T8(D.valueOf()))return DD.fromJSDate(D);else if(D&&typeof D==="object")return DD.fromObject(D);else throw new H0(`Unknown datetime argument: ${D}, of type ${typeof D}`)}var xS="3.7.2";qK.DateTime=DD;qK.Duration=UD;qK.FixedOffsetZone=K0;qK.IANAZone=v2;qK.Info=N6;qK.Interval=kD;qK.InvalidZone=CJ;qK.Settings=SD;qK.SystemZone=G9;qK.VERSION=xS;qK.Zone=O1});var r4=f((PK)=>{Object.defineProperty(PK,"__esModule",{value:!0});PK.CronDate=PK.DAYS_IN_MONTH=PK.DateMathOp=PK.TimeUnit=void 0;var C1=NK(),O0;(function(D){D.Second="Second",D.Minute="Minute",D.Hour="Hour",D.Day="Day",D.Month="Month",D.Year="Year"})(O0||(PK.TimeUnit=O0={}));var s4;(function(D){D.Add="Add",D.Subtract="Subtract"})(s4||(PK.DateMathOp=s4={}));PK.DAYS_IN_MONTH=Object.freeze([31,29,31,30,31,30,31,31,30,31,30,31]);class S6{#D;#$=null;#X=null;#Y={add:{[O0.Year]:this.addYear.bind(this),[O0.Month]:this.addMonth.bind(this),[O0.Day]:this.addDay.bind(this),[O0.Hour]:this.addHour.bind(this),[O0.Minute]:this.addMinute.bind(this),[O0.Second]:this.addSecond.bind(this)},subtract:{[O0.Year]:this.subtractYear.bind(this),[O0.Month]:this.subtractMonth.bind(this),[O0.Day]:this.subtractDay.bind(this),[O0.Hour]:this.subtractHour.bind(this),[O0.Minute]:this.subtractMinute.bind(this),[O0.Second]:this.subtractSecond.bind(this)}};constructor(D,$){let F={zone:$};if(!D)this.#D=C1.DateTime.local();else if(D instanceof S6)this.#D=D.#D,this.#$=D.#$,this.#X=D.#X;else if(D instanceof Date)this.#D=C1.DateTime.fromJSDate(D,F);else if(typeof D==="number")this.#D=C1.DateTime.fromMillis(D,F);else this.#D=C1.DateTime.fromISO(D,F),this.#D.isValid||(this.#D=C1.DateTime.fromRFC2822(D,F)),this.#D.isValid||(this.#D=C1.DateTime.fromSQL(D,F)),this.#D.isValid||(this.#D=C1.DateTime.fromFormat(D,"EEE, d MMM yyyy HH:mm:ss",F));if(!this.#D.isValid)throw Error(`CronDate: unhandled timestamp: ${D}`);if($&&$!==this.#D.zoneName)this.#D=this.#D.setZone($)}static#J(D){return D%4===0&&D%100!==0||D%400===0}get dstStart(){return this.#$}set dstStart(D){this.#$=D}get dstEnd(){return this.#X}set dstEnd(D){this.#X=D}addYear(){this.#D=this.#D.plus({years:1})}addMonth(){this.#D=this.#D.plus({months:1}).startOf("month")}addDay(){this.#D=this.#D.plus({days:1}).startOf("day")}addHour(){this.#D=this.#D.plus({hours:1}).startOf("hour")}addMinute(){this.#D=this.#D.plus({minutes:1}).startOf("minute")}addSecond(){this.#D=this.#D.plus({seconds:1})}subtractYear(){this.#D=this.#D.minus({years:1})}subtractMonth(){this.#D=this.#D.minus({months:1}).endOf("month").startOf("second")}subtractDay(){this.#D=this.#D.minus({days:1}).endOf("day").startOf("second")}subtractHour(){this.#D=this.#D.minus({hours:1}).endOf("hour").startOf("second")}subtractMinute(){this.#D=this.#D.minus({minutes:1}).endOf("minute").startOf("second")}subtractSecond(){this.#D=this.#D.minus({seconds:1})}addUnit(D){this.#Y.add[D]()}subtractUnit(D){this.#Y.subtract[D]()}invokeDateOperation(D,$){if(D===s4.Add){this.addUnit($);return}if(D===s4.Subtract){this.subtractUnit($);return}throw Error(`Invalid verb: ${D}`)}getDate(){return this.#D.day}getFullYear(){return this.#D.year}getDay(){let D=this.#D.weekday;return D===7?0:D}getMonth(){return this.#D.month-1}getHours(){return this.#D.hour}getMinutes(){return this.#D.minute}getSeconds(){return this.#D.second}getMilliseconds(){return this.#D.millisecond}getUTCOffset(){return this.#D.offset}setStartOfDay(){this.#D=this.#D.startOf("day")}setEndOfDay(){this.#D=this.#D.endOf("day")}getTime(){return this.#D.valueOf()}getUTCDate(){return this.#F().day}getUTCFullYear(){return this.#F().year}getUTCDay(){let D=this.#F().weekday;return D===7?0:D}getUTCMonth(){return this.#F().month-1}getUTCHours(){return this.#F().hour}getUTCMinutes(){return this.#F().minute}getUTCSeconds(){return this.#F().second}toISOString(){return this.#D.toUTC().toISO()}toJSON(){return this.#D.toJSON()}setDate(D){this.#D=this.#D.set({day:D})}setFullYear(D){this.#D=this.#D.set({year:D})}setDay(D){this.#D=this.#D.set({weekday:D})}setMonth(D){this.#D=this.#D.set({month:D+1})}setHours(D){this.#D=this.#D.set({hour:D})}setMinutes(D){this.#D=this.#D.set({minute:D})}setSeconds(D){this.#D=this.#D.set({second:D})}setMilliseconds(D){this.#D=this.#D.set({millisecond:D})}toString(){return this.toDate().toString()}toDate(){return this.#D.toJSDate()}isLastDayOfMonth(){let{day:D,month:$}=this.#D;if($===2){let F=S6.#J(this.#D.year);return D===PK.DAYS_IN_MONTH[$-1]-(F?0:1)}return D===PK.DAYS_IN_MONTH[$-1]}isLastWeekdayOfMonth(){let{day:D,month:$}=this.#D,F;if($===2)F=PK.DAYS_IN_MONTH[$-1]-(S6.#J(this.#D.year)?0:1);else F=PK.DAYS_IN_MONTH[$-1];return D>F-7}applyDateOperation(D,$,F){if($===O0.Month||$===O0.Day){this.invokeDateOperation(D,$);return}let X=this.getHours();this.invokeDateOperation(D,$);let J=this.getHours(),G=J-X;if(G===2){if(F!==24)this.dstStart=J}else if(G===0&&this.getMinutes()===0&&this.getSeconds()===0){if(F!==24)this.dstEnd=J}}#F(){return this.#D.toUTC()}}PK.CronDate=S6;PK.default=S6});var TK=f((zK)=>{Object.defineProperty(zK,"__esModule",{value:!0});zK.CronMonth=void 0;var tS=r4(),eS=j8(),Db=1,$b=12,Fb=Object.freeze([]);class jK extends eS.CronField{static get min(){return Db}static get max(){return $b}static get chars(){return Fb}static get daysInMonth(){return tS.DAYS_IN_MONTH}constructor(D,$){super(D,$);this.validate()}get values(){return super.values}}zK.CronMonth=jK});var fK=f((SK)=>{Object.defineProperty(SK,"__esModule",{value:!0});SK.CronSecond=void 0;var Xb=j8(),Jb=0,Yb=59,Gb=Object.freeze([]);class wK extends Xb.CronField{static get min(){return Jb}static get max(){return Yb}static get chars(){return Gb}constructor(D,$){super(D,$);this.validate()}get values(){return super.values}}SK.CronSecond=wK});var o4=f((P0)=>{var Bb=P0&&P0.__createBinding||(Object.create?function(D,$,F,X){if(X===void 0)X=F;var J=Object.getOwnPropertyDescriptor($,F);if(!J||("get"in J?!$.__esModule:J.writable||J.configurable))J={enumerable:!0,get:function(){return $[F]}};Object.defineProperty(D,X,J)}:function(D,$,F,X){if(X===void 0)X=F;D[X]=$[F]}),S8=P0&&P0.__exportStar||function(D,$){for(var F in D)if(F!=="default"&&!Object.prototype.hasOwnProperty.call($,F))Bb($,D,F)};Object.defineProperty(P0,"__esModule",{value:!0});S8(q_(),P0);S8(I_(),P0);S8(b_(),P0);S8(j8(),P0);S8(h_(),P0);S8(u_(),P0);S8(TK(),P0);S8(fK(),P0)});var zJ=f((kK)=>{Object.defineProperty(kK,"__esModule",{value:!0});kK.CronFieldCollection=void 0;var d0=o4();class b6{#D;#$;#X;#Y;#J;#F;static from(D,$){return new b6({second:this.resolveField(d0.CronSecond,D.second,$.second),minute:this.resolveField(d0.CronMinute,D.minute,$.minute),hour:this.resolveField(d0.CronHour,D.hour,$.hour),dayOfMonth:this.resolveField(d0.CronDayOfMonth,D.dayOfMonth,$.dayOfMonth),month:this.resolveField(d0.CronMonth,D.month,$.month),dayOfWeek:this.resolveField(d0.CronDayOfWeek,D.dayOfWeek,$.dayOfWeek)})}static resolveField(D,$,F){if(!F)return $;if(F instanceof d0.CronField)return F;return new D(F)}constructor({second:D,minute:$,hour:F,dayOfMonth:X,month:J,dayOfWeek:G}){if(!D)throw Error("Validation error, Field second is missing");if(!$)throw Error("Validation error, Field minute is missing");if(!F)throw Error("Validation error, Field hour is missing");if(!X)throw Error("Validation error, Field dayOfMonth is missing");if(!J)throw Error("Validation error, Field month is missing");if(!G)throw Error("Validation error, Field dayOfWeek is missing");if(J.values.length===1&&!X.hasLastChar){if(!(parseInt(X.values[0],10)<=d0.CronMonth.daysInMonth[J.values[0]-1]))throw Error("Invalid explicit day of month definition")}this.#D=D,this.#$=$,this.#X=F,this.#J=J,this.#F=G,this.#Y=X}get second(){return this.#D}get minute(){return this.#$}get hour(){return this.#X}get dayOfMonth(){return this.#Y}get month(){return this.#J}get dayOfWeek(){return this.#F}static compactField(D){if(D.length===0)return[];let $=[],F=void 0;if(D.forEach((X,J,G)=>{if(F===void 0){F={start:X,count:1};return}let Y=G[J-1]||F.start,B=G[J+1];if(X==="L"||X==="W"){$.push(F),$.push({start:X,count:1}),F=void 0;return}if(F.step===void 0&&B!==void 0){let H=X-Y,W=B-X;if(H<=W){F={...F,count:2,end:X,step:H};return}F.step=1}if(X-(F.end??0)===F.step)F.count++,F.end=X;else{if(F.count===1)$.push({start:F.start,count:1});else if(F.count===2)$.push({start:F.start,count:1}),$.push({start:F.end??Y,count:1});else $.push(F);F={start:X,count:1}}}),F)$.push(F);return $}static#W(D,$,F){let X=$.step;if(!X)return null;if(X===1&&$.start===D.min&&$.end&&$.end>=F)return D.hasQuestionMarkChar?"?":"*";if(X!==1&&$.start===D.min&&$.end&&$.end>=F-X+1)return`*/${X}`;return null}static#H(D,$){let F=D.step;if(F===1)return`${D.start}-${D.end}`;let X=D.start===0?D.count-1:D.count;if(!F)throw Error("Unexpected range step");if(!D.end)throw Error("Unexpected range end");if(F*X>D.end){let J=(Y,B)=>{if(typeof D.start!=="number")throw Error("Unexpected range start");return B%F===0?D.start+B:null};if(typeof D.start!=="number")throw Error("Unexpected range start");let G={length:D.end-D.start+1};return Array.from(G,J).filter((Y)=>Y!==null).join(",")}return D.end===$-F+1?`${D.start}/${F}`:`${D.start}-${D.end}/${F}`}stringifyField(D){let{max:$,values:F}=D;if(D instanceof d0.CronDayOfWeek){$=6;let J=this.#F.values;F=J[J.length-1]===7?J.slice(0,-1):J}if(D instanceof d0.CronDayOfMonth)$=this.#J.values.length===1?d0.CronMonth.daysInMonth[this.#J.values[0]-1]:D.max;let X=b6.compactField(F);if(X.length===1){let J=b6.#W(D,X[0],$);if(J)return J}return X.map((J)=>{let G=J.count===1?J.start.toString():b6.#H(J,$);if(D instanceof d0.CronDayOfWeek&&D.nthDay>0)return`${G}#${D.nthDay}`;return G}).join(",")}stringify(D=!1){let $=[];if(D)$.push(this.stringifyField(this.#D));return $.push(this.stringifyField(this.#$),this.stringifyField(this.#X),this.stringifyField(this.#Y),this.stringifyField(this.#J),this.stringifyField(this.#F)),$.join(" ")}serialize(){return{second:this.#D.serialize(),minute:this.#$.serialize(),hour:this.#X.serialize(),dayOfMonth:this.#Y.serialize(),month:this.#J.serialize(),dayOfWeek:this.#F.serialize()}}}kK.CronFieldCollection=b6});var TJ=f((xK)=>{Object.defineProperty(xK,"__esModule",{value:!0});xK.CronExpression=xK.LOOPS_LIMIT_EXCEEDED_ERROR_MESSAGE=xK.TIME_SPAN_OUT_OF_BOUNDS_ERROR_MESSAGE=void 0;var gD=r4();xK.TIME_SPAN_OUT_OF_BOUNDS_ERROR_MESSAGE="Out of the time span range";xK.LOOPS_LIMIT_EXCEEDED_ERROR_MESSAGE="Invalid expression, loop limit exceeded";var hK=1e4;class l0{#D;#$;#X;#Y;#J;#F;#W=null;#H=!1;constructor(D,$){this.#D=$,this.#$=$.tz,this.#Y=$.startDate?new gD.CronDate($.startDate,this.#$):null,this.#J=$.endDate?new gD.CronDate($.endDate,this.#$):null;let F=$.currentDate??$.startDate;if(F){let X=new gD.CronDate(F,this.#$);if(this.#Y&&X.getTime()<this.#Y.getTime())F=this.#Y;else if(this.#J&&X.getTime()>this.#J.getTime())F=this.#J}this.#X=new gD.CronDate(F,this.#$),this.#F=D}get fields(){return this.#F}static fieldsToExpression(D,$){return new l0(D,$||{})}static#B(D,$){return $.some((F)=>F===D)}#G(D,$){return D[$?D.length-1:0]}#Q(D){let $=`${D.getFullYear()}-${D.getMonth()+1}-${D.getDate()}`;if(this.#W===$)return this.#H;let F=new gD.CronDate(D);F.setStartOfDay();let X=new gD.CronDate(D);return X.setEndOfDay(),this.#W=$,this.#H=F.getUTCOffset()!==X.getUTCOffset(),this.#H}#U(D,$,F){let X=this.#F.second.values,J=D.getSeconds(),G=this.#F.second.findNearestValue(J,F);if(G!==null){D.setSeconds(G);return}D.applyDateOperation($,gD.TimeUnit.Minute,this.#F.hour.values.length),D.setSeconds(this.#G(X,F))}#V(D,$,F){let X=this.#F.minute.values,J=this.#F.second.values,G=D.getMinutes(),Y=this.#F.minute.findNearestValue(G,F);if(Y!==null){D.setMinutes(Y),D.setSeconds(this.#G(J,F));return}D.applyDateOperation($,gD.TimeUnit.Hour,this.#F.hour.values.length),D.setMinutes(this.#G(X,F)),D.setSeconds(this.#G(J,F))}static#K(D,$){let F=$.isLastWeekdayOfMonth();return D.some((X)=>{let J=parseInt(X.toString().charAt(0),10)%7;if(Number.isNaN(J))throw Error(`Invalid last weekday of the month expression: ${X}`);return $.getDay()===J&&F})}next(){return this.#_()}prev(){return this.#_(!0)}hasNext(){let D=this.#X;try{return this.#_(),!0}catch{return!1}finally{this.#X=D}}hasPrev(){let D=this.#X;try{return this.#_(!0),!0}catch{return!1}finally{this.#X=D}}take(D){let $=[];if(D>=0)for(let F=0;F<D;F++)try{$.push(this.next())}catch{return $}else for(let F=0;F>D;F--)try{$.push(this.prev())}catch{return $}return $}reset(D){this.#X=new gD.CronDate(D||this.#D.currentDate)}stringify(D=!1){return this.#F.stringify(D)}includesDate(D){let{second:$,minute:F,hour:X,month:J}=this.#F,G=new gD.CronDate(D,this.#$);if(!$.values.includes(G.getSeconds())||!F.values.includes(G.getMinutes())||!X.values.includes(G.getHours())||!J.values.includes(G.getMonth()+1))return!1;if(!this.#A(G))return!1;if(this.#F.dayOfWeek.nthDay>0){if(Math.ceil(G.getDate()/7)!==this.#F.dayOfWeek.nthDay)return!1}return!0}toString(){return this.#D.expression||this.stringify(!0)}#A(D){let $=this.#F.dayOfMonth.isWildcard,F=!$,X=this.#F.dayOfWeek.isWildcard,J=!X,G=l0.#B(D.getDate(),this.#F.dayOfMonth.values)||this.#F.dayOfMonth.hasLastChar&&D.isLastDayOfMonth(),Y=l0.#B(D.getDay(),this.#F.dayOfWeek.values)||this.#F.dayOfWeek.hasLastChar&&l0.#K(this.#F.dayOfWeek.values,D);if(F&&J&&(G||Y))return!0;if(G&&!J)return!0;if($&&!X&&Y)return!0;return!1}#O(D,$,F){let X=this.#F.hour.values,J=X,G=D.getHours(),Y=l0.#B(G,X),B=D.dstStart===G,H=D.dstEnd===G;if(B){if(l0.#B(G-1,X))return!0;return D.invokeDateOperation($,gD.TimeUnit.Hour),!1}if(H&&!F)return D.dstEnd=null,D.applyDateOperation(gD.DateMathOp.Add,gD.TimeUnit.Hour,J.length),!1;if(Y)return!0;D.dstStart=null;let W=this.#F.hour.findNearestValue(G,F);if(W===null)return D.applyDateOperation($,gD.TimeUnit.Day,J.length),!1;if(this.#Q(D)){let Q=F?G-W:W-G;for(let U=0;U<Q;U++)D.applyDateOperation($,gD.TimeUnit.Hour,J.length)}else D.setHours(W);return D.setMinutes(this.#G(this.#F.minute.values,F)),D.setSeconds(this.#G(this.#F.second.values,F)),!1}#C(D){if(!this.#Y&&!this.#J)return;let $=D.getTime();if(this.#Y&&$<this.#Y.getTime())throw Error(xK.TIME_SPAN_OUT_OF_BOUNDS_ERROR_MESSAGE);if(this.#J&&$>this.#J.getTime())throw Error(xK.TIME_SPAN_OUT_OF_BOUNDS_ERROR_MESSAGE)}#_(D=!1){let $=D?gD.DateMathOp.Subtract:gD.DateMathOp.Add,F=new gD.CronDate(this.#X),X=F.getTime(),J=0;while(++J<hK){if(this.#C(F),!this.#A(F)){F.applyDateOperation($,gD.TimeUnit.Day,this.#F.hour.values.length);continue}if(!(this.#F.dayOfWeek.nthDay<=0||Math.ceil(F.getDate()/7)===this.#F.dayOfWeek.nthDay)){F.applyDateOperation($,gD.TimeUnit.Day,this.#F.hour.values.length);continue}if(!l0.#B(F.getMonth()+1,this.#F.month.values)){F.applyDateOperation($,gD.TimeUnit.Month,this.#F.hour.values.length);continue}if(!this.#O(F,$,D))continue;if(!l0.#B(F.getMinutes(),this.#F.minute.values)){this.#V(F,$,D);continue}if(!l0.#B(F.getSeconds(),this.#F.second.values)){this.#U(F,$,D);continue}if(X===F.getTime()){if($==="Add"||F.getMilliseconds()===0)F.applyDateOperation($,gD.TimeUnit.Second,this.#F.hour.values.length);continue}break}if(J>hK)throw Error(xK.LOOPS_LIMIT_EXCEEDED_ERROR_MESSAGE);if(F.getMilliseconds()!==0)F.setMilliseconds(0);return this.#X=F,F}[Symbol.iterator](){return{next:()=>{return{value:this.#_(),done:!this.hasNext()}}}}}xK.CronExpression=l0;xK.default=l0});var mK=f((uK)=>{Object.defineProperty(uK,"__esModule",{value:!0});uK.seededRandom=Qb;function Wb(D){let $=2166136261;for(let F=0;F<D.length;F++)$^=D.charCodeAt(F),$=Math.imul($,16777619);return()=>$>>>0}function Vb(D){return()=>{let $=D+=1831565813;return $=Math.imul($^$>>>15,$|1),$^=$+Math.imul($^$>>>7,$|61),(($^$>>>14)>>>0)/4294967296}}function Qb(D){let $=D?Wb(D)():Math.floor(Math.random()*10000000000);return Vb($)}});var a4=f((pK)=>{Object.defineProperty(pK,"__esModule",{value:!0});pK.CronExpressionParser=pK.DayOfWeek=pK.Months=pK.CronUnit=pK.PredefinedExpressions=void 0;var _b=zJ(),Ab=TJ(),Kb=mK(),i0=o4(),wJ;(function(D){D["@yearly"]="0 0 0 1 1 *",D["@annually"]="0 0 0 1 1 *",D["@monthly"]="0 0 0 1 * *",D["@weekly"]="0 0 0 * * 0",D["@daily"]="0 0 0 * * *",D["@hourly"]="0 0 * * * *",D["@minutely"]="0 * * * * *",D["@secondly"]="* * * * * *",D["@weekdays"]="0 0 0 * * 1-5",D["@weekends"]="0 0 0 * * 0,6"})(wJ||(pK.PredefinedExpressions=wJ={}));var n0;(function(D){D.Second="Second",D.Minute="Minute",D.Hour="Hour",D.DayOfMonth="DayOfMonth",D.Month="Month",D.DayOfWeek="DayOfWeek"})(n0||(pK.CronUnit=n0={}));var SJ;(function(D){D[D.jan=1]="jan",D[D.feb=2]="feb",D[D.mar=3]="mar",D[D.apr=4]="apr",D[D.may=5]="may",D[D.jun=6]="jun",D[D.jul=7]="jul",D[D.aug=8]="aug",D[D.sep=9]="sep",D[D.oct=10]="oct",D[D.nov=11]="nov",D[D.dec=12]="dec"})(SJ||(pK.Months=SJ={}));var bJ;(function(D){D[D.sun=0]="sun",D[D.mon=1]="mon",D[D.tue=2]="tue",D[D.wed=3]="wed",D[D.thu=4]="thu",D[D.fri=5]="fri",D[D.sat=6]="sat"})(bJ||(pK.DayOfWeek=bJ={}));class L0{static parse(D,$={}){let{strict:F=!1,hashSeed:X}=$,J=(0,Kb.seededRandom)(X);D=wJ[D]||D;let G=L0.#D(D,F);if(!(G.dayOfMonth==="*"||G.dayOfWeek==="*"||!F))throw Error("Cannot use both dayOfMonth and dayOfWeek together in strict mode!");let Y=L0.#$(n0.Second,G.second,i0.CronSecond.constraints,J),B=L0.#$(n0.Minute,G.minute,i0.CronMinute.constraints,J),H=L0.#$(n0.Hour,G.hour,i0.CronHour.constraints,J),W=L0.#$(n0.Month,G.month,i0.CronMonth.constraints,J),Q=L0.#$(n0.DayOfMonth,G.dayOfMonth,i0.CronDayOfMonth.constraints,J),{dayOfWeek:U,nthDayOfWeek:_}=L0.#Q(G.dayOfWeek),A=L0.#$(n0.DayOfWeek,U,i0.CronDayOfWeek.constraints,J),C=new _b.CronFieldCollection({second:new i0.CronSecond(Y,{rawValue:G.second}),minute:new i0.CronMinute(B,{rawValue:G.minute}),hour:new i0.CronHour(H,{rawValue:G.hour}),dayOfMonth:new i0.CronDayOfMonth(Q,{rawValue:G.dayOfMonth}),month:new i0.CronMonth(W,{rawValue:G.month}),dayOfWeek:new i0.CronDayOfWeek(A,{rawValue:G.dayOfWeek,nthDayOfWeek:_})});return new Ab.CronExpression(C,{...$,expression:D})}static#D(D,$){if($&&!D.length)throw Error("Invalid cron expression");D=D||"0 * * * * *";let F=D.trim().split(/\s+/);if($&&F.length<6)throw Error("Invalid cron expression, expected 6 fields");if(F.length>6)throw Error("Invalid cron expression, too many fields");let X=["*","*","*","*","*","0"];if(F.length<X.length)F.unshift(...X.slice(F.length));let[J,G,Y,B,H,W]=F;return{second:J,minute:G,hour:Y,dayOfMonth:B,month:H,dayOfWeek:W}}static#$(D,$,F,X){if(D===n0.Month||D===n0.DayOfWeek)$=$.replace(/[a-z]{3}/gi,(J)=>{J=J.toLowerCase();let G=SJ[J]||bJ[J];if(G===void 0)throw Error(`Validation error, cannot resolve alias "${J}"`);return G.toString()});if(!F.validChars.test($))throw Error(`Invalid characters, got value: ${$}`);return $=this.#X($,F),$=this.#Y($,F,X),this.#J(D,$,F)}static#X(D,$){return D.replace(/[*?]/g,$.min+"-"+$.max)}static#Y(D,$,F){let X=F();return D.replace(/H(?:\((\d+)-(\d+)\))?(?:\/(\d+))?/g,(J,G,Y,B)=>{if(G&&Y&&B){let H=parseInt(G,10),W=parseInt(Y,10),Q=parseInt(B,10);if(H>W)throw Error(`Invalid range: ${H}-${W}, min > max`);if(Q<=0)throw Error(`Invalid step: ${Q}, must be positive`);let U=Math.max(H,$.min),_=Math.floor(X*Q),A=[];for(let C=Math.floor(U/Q)*Q+_;C<=W;C+=Q)if(C>=U)A.push(C);return A.join(",")}else if(G&&Y){let H=parseInt(G,10),W=parseInt(Y,10);if(H>W)throw Error(`Invalid range: ${H}-${W}, min > max`);return String(Math.floor(X*(W-H+1))+H)}else if(B){let H=parseInt(B,10);if(H<=0)throw Error(`Invalid step: ${H}, must be positive`);let W=Math.floor(X*H),Q=[];for(let U=Math.floor($.min/H)*H+W;U<=$.max;U+=H)if(U>=$.min)Q.push(U);return Q.join(",")}else return String(Math.floor(X*($.max-$.min+1)+$.min))})}static#J(D,$,F){let X=[];function J(Y,B){if(Array.isArray(Y))X.push(...Y);else if(L0.#U(B,Y))X.push(Y);else{let H=parseInt(Y.toString(),10);if(!(H>=B.min&&H<=B.max))throw Error(`Constraint error, got value ${Y} expected range ${B.min}-${B.max}`);X.push(D===n0.DayOfWeek?H%7:Y)}}return $.split(",").forEach((Y)=>{if(!(Y.length>0))throw Error("Invalid list value format");J(L0.#F(D,Y,F),F)}),X}static#F(D,$,F){let X=$.split("/");if(X.length>2)throw Error(`Invalid repeat: ${$}`);if(X.length===2){if(!isNaN(parseInt(X[0],10)))X[0]=`${X[0]}-${F.max}`;return L0.#G(D,X[0],parseInt(X[1],10),F)}return L0.#G(D,$,1,F)}static#W(D,$,F){if(!(!isNaN(D)&&!isNaN($)&&D>=F.min&&$<=F.max))throw Error(`Constraint error, got range ${D}-${$} expected range ${F.min}-${F.max}`);if(D>$)throw Error(`Invalid range: ${D}-${$}, min(${D}) > max(${$})`)}static#H(D){if(!(!isNaN(D)&&D>0))throw Error(`Constraint error, cannot repeat at every ${D} time.`)}static#B(D,$,F,X){let J=[];if(D===n0.DayOfWeek&&F%7===0)J.push(0);for(let G=$;G<=F;G+=X)if(J.indexOf(G)===-1)J.push(G);return J}static#G(D,$,F,X){let J=$.split("-");if(J.length<=1)return isNaN(+$)?$:+$;let[G,Y]=J.map((B)=>parseInt(B,10));return this.#W(G,Y,X),this.#H(F),this.#B(D,G,Y,F)}static#Q(D){let $=D.split("#");if($.length<=1)return{dayOfWeek:$[0]};let F=+$[$.length-1],X=D.match(/([,-/])/);if(X!==null)throw Error(`Constraint error, invalid dayOfWeek \`#\` and \`${X?.[0]}\` special characters are incompatible`);if(!($.length<=2&&!isNaN(F)&&F>=1&&F<=5))throw Error("Constraint error, invalid dayOfWeek occurrence number (#)");return{dayOfWeek:$[0],nthDayOfWeek:F}}static#U(D,$){return D.chars.some((F)=>$.toString().includes(F))}}pK.CronExpressionParser=L0});var dK=f((h2)=>{var Mb=h2&&h2.__createBinding||(Object.create?function(D,$,F,X){if(X===void 0)X=F;var J=Object.getOwnPropertyDescriptor($,F);if(!J||("get"in J?!$.__esModule:J.writable||J.configurable))J={enumerable:!0,get:function(){return $[F]}};Object.defineProperty(D,X,J)}:function(D,$,F,X){if(X===void 0)X=F;D[X]=$[F]}),Zb=h2&&h2.__setModuleDefault||(Object.create?function(D,$){Object.defineProperty(D,"default",{enumerable:!0,value:$})}:function(D,$){D.default=$}),qb=h2&&h2.__importStar||function(){var D=function($){return D=Object.getOwnPropertyNames||function(F){var X=[];for(var J in F)if(Object.prototype.hasOwnProperty.call(F,J))X[X.length]=J;return X},D($)};return function($){if($&&$.__esModule)return $;var F={};if($!=null){for(var X=D($),J=0;J<X.length;J++)if(X[J]!=="default")Mb(F,$,X[J])}return Zb(F,$),F}}();Object.defineProperty(h2,"__esModule",{value:!0});h2.CronFileParser=void 0;var Nb=a4();class Q9{static async parseFile(D){let{readFile:$}=await Promise.resolve().then(()=>qb(B8("fs/promises"))),F=await $(D,"utf8");return Q9.#D(F)}static parseFileSync(D){let{readFileSync:$}=B8("fs"),F=$(D,"utf8");return Q9.#D(F)}static#D(D){let $=D.split(`
|
|
122
|
-
`),F={variables:{},expressions:[],errors:{}};for(let X of $){let J=X.trim();if(J.length===0||J.startsWith("#"))continue;let G=J.match(/^(.*)=(.*)$/);if(G){let[,Y,B]=G;F.variables[Y]=B.replace(/["']/g,"");continue}try{let Y=Q9.#$(J);F.expressions.push(Y.interval)}catch(Y){F.errors[J]=Y}}return F}static#$(D){let $=D.split(" ");return{interval:Nb.CronExpressionParser.parse($.slice(0,5).join(" ")),command:$.slice(5,$.length)}}}h2.CronFileParser=Q9});var lK=f((X0)=>{var Pb=X0&&X0.__createBinding||(Object.create?function(D,$,F,X){if(X===void 0)X=F;var J=Object.getOwnPropertyDescriptor($,F);if(!J||("get"in J?!$.__esModule:J.writable||J.configurable))J={enumerable:!0,get:function(){return $[F]}};Object.defineProperty(D,X,J)}:function(D,$,F,X){if(X===void 0)X=F;D[X]=$[F]}),Lb=X0&&X0.__exportStar||function(D,$){for(var F in D)if(F!=="default"&&!Object.prototype.hasOwnProperty.call($,F))Pb($,D,F)};Object.defineProperty(X0,"__esModule",{value:!0});X0.CronFileParser=X0.CronExpressionParser=X0.CronExpression=X0.CronFieldCollection=X0.CronDate=void 0;var jb=a4(),zb=r4();Object.defineProperty(X0,"CronDate",{enumerable:!0,get:function(){return zb.CronDate}});var Ib=zJ();Object.defineProperty(X0,"CronFieldCollection",{enumerable:!0,get:function(){return Ib.CronFieldCollection}});var Tb=TJ();Object.defineProperty(X0,"CronExpression",{enumerable:!0,get:function(){return Tb.CronExpression}});var wb=a4();Object.defineProperty(X0,"CronExpressionParser",{enumerable:!0,get:function(){return wb.CronExpressionParser}});var Sb=dK();Object.defineProperty(X0,"CronFileParser",{enumerable:!0,get:function(){return Sb.CronFileParser}});Lb(o4(),X0);X0.default=jb.CronExpressionParser});class U9{deps;handle=null;ticking=!1;constructor(D){this.deps=D}start(D=bb){if(this.handle!==null)return;this.handle=setInterval(()=>{this.tick().catch(($)=>E.warn(`[cron ${this.deps.workerId}] tick failed: ${String($)}`))},D)}stop(){if(this.handle===null)return;clearInterval(this.handle),this.handle=null}async addJob(D){let $=t4(D.expression,new Date),F=crypto.randomUUID(),X=new Date().toISOString(),J=D.enabled??!0,G=D.accountId??fb;if(G.length===0)throw Error("cron job accountId \u4E0D\u80FD\u4E3A\u7A7A\u5B57\u7B26\u4E32");let Y={id:F,expression:D.expression,prompt:D.prompt,channel:D.channel,chatId:D.chatId,accountId:G,enabled:J,lastRunAt:null,nextRunAt:J?$.toISOString():null,createdAt:X,updatedAt:X};y().insert(PD).values(Y).run();let B=y().select().from(PD).where(v(PD.id,F)).get();return e4(B)}async listJobs(){return y().select().from(PD).all().map(e4)}async getJob(D){let $=y().select().from(PD).where(v(PD.id,D)).get();return $?e4($):null}async removeJob(D){let $=y();if(!$.select({id:PD.id}).from(PD).where(v(PD.id,D)).get())return{removed:!1};return $.delete(PD).where(v(PD.id,D)).run(),{removed:!0}}async updateJob(D,$){let F=y().select().from(PD).where(v(PD.id,D)).get();if(!F)return null;let X={updatedAt:new Date().toISOString()},J=!1;if($.expression!==void 0)t4($.expression,new Date),X.expression=$.expression,J=!0;if($.prompt!==void 0)X.prompt=$.prompt;if($.channel!==void 0)X.channel=$.channel;if($.chatId!==void 0)X.chatId=$.chatId;if($.accountId!==void 0){if($.accountId.length===0)throw Error("cron job accountId \u4E0D\u80FD\u4E3A\u7A7A\u5B57\u7B26\u4E32");X.accountId=$.accountId}if($.enabled!==void 0)X.enabled=$.enabled,J=!0;if(J){let Y=$.enabled??F.enabled,B=$.expression??F.expression;X.nextRunAt=Y?t4(B,new Date).toISOString():null}y().update(PD).set(X).where(v(PD.id,D)).run();let G=y().select().from(PD).where(v(PD.id,D)).get();return e4(G)}async tick(D=new Date){if(this.ticking)return;this.ticking=!0;try{let $=D.toISOString(),F=y().select().from(PD).where(uD(v(PD.enabled,!0),s7(PD.nextRunAt,$))).all();for(let X of F)await this.fireJob(X,D)}finally{this.ticking=!1}}async fireJob(D,$){let F={workerId:this.deps.workerId,channel:D.channel,accountId:D.accountId,chatId:D.chatId,text:D.prompt,receivedAt:$.toISOString(),raw:{source:"cron",jobId:D.id}},X=null;try{X=t4(D.expression,$).toISOString()}catch(G){E.warn(`[cron ${D.id}] expression "${D.expression}" \u5F02\u5E38\uFF0C\u505C\u6B62\u540E\u7EED\u89E6\u53D1: ${String(G)}`)}let J=$.toISOString();y().update(PD).set({lastRunAt:J,nextRunAt:X,updatedAt:J}).where(v(PD.id,D.id)).run();try{await this.deps.getOrchestrator().ingest(F)}catch(G){E.warn(`[cron ${D.id}] orchestrator.ingest \u5931\u8D25: ${String(G)}`)}}}function t4(D,$){return iK.CronExpressionParser.parse(D,{currentDate:$}).next().toDate()}function e4(D){return{id:D.id,expression:D.expression,prompt:D.prompt,channel:D.channel,chatId:D.chatId,accountId:D.accountId,enabled:D.enabled,lastRunAt:D.lastRunAt,nextRunAt:D.nextRunAt,createdAt:D.createdAt,updatedAt:D.updatedAt}}var iK,bb=60000,fb="sys:cron";var fJ=Z(()=>{wD();JD();U0();iK=Mq(lK(),1)});class _9{listeners=new Set;emit(D,$){let F={type:D,payload:$,at:new Date().toISOString()};for(let X of this.listeners)try{X(F)}catch(J){E.warn(`[bus] listener for ${F.type} threw:`,J)}}on(D){return this.listeners.add(D),()=>{this.listeners.delete(D)}}}var kJ=Z(()=>{JD()});import rK from"fs/promises";import kb from"os";import s0 from"path";import D5 from"process";function aK(D=oK){let $=new Map;async function F(H){let W=new Date(D.now()).toISOString(),Q=await D.resolveBinary(H.binaryName),U={kind:H.kind,status:"not-found",checkedAt:W};if(H.agent)U.agent=H.agent;if(!Q)return{...U,authHint:"binary-not-on-path"};let _=D.homedir();for(let A of H.authPaths(_))if(await D.pathExists(A))return{...U,status:"ready",binaryPath:Q,authHint:"auth-file-present"};return{...U,status:"login-required",binaryPath:Q,authHint:"auth-file-missing"}}async function X(H,W){let Q=$.get(H.key);if(!W&&Q&&Q.expiresAt>D.now())return Q.value;let U=await F(H);return $.set(H.key,{value:U,expiresAt:D.now()+vb}),U}function J(H){return{kind:H,status:"ready",checkedAt:new Date(D.now()).toISOString(),authHint:"no-cli-required"}}async function G(H={}){let W=H.refresh??!1,Q=[];for(let U of nK)Q.push(J(U));for(let U of sK)Q.push(await X(U,W));return Q}async function Y(H,W={}){let Q=W.refresh??!1;if(nK.includes(H))return J(H);let U=sK.filter((A)=>A.kind===H);if(U.length===0)return{kind:H,status:"not-found",checkedAt:new Date(D.now()).toISOString(),authHint:"unknown-engine"};let _=W.agent?U.find((A)=>A.agent===W.agent)??U[0]:U[0];return X(_,Q)}function B(){$.clear()}return{probe:Y,probeAll:G,clearCache:B}}function $5(){if(!A9)A9=aK();return A9}function tK(D){return A9=aK(D),A9}function vJ(D,$){let F=new Date().toISOString();if(D==="login")return{status:"LoginDetected",checkedAt:F,detail:$};if(D==="install")return{status:"InstallationFound",checkedAt:F,detail:$};return{status:"NotFound",checkedAt:F,detail:$}}async function eK(D,$=oK){let F=$.homedir(),X=D==="gemini"?".gemini":".qwen",J=s0.join(F,X,"oauth_creds.json"),G=s0.join(F,X,"settings.json");if(await $.pathExists(J))return vJ("login","oauth_creds.json present");if(await $.pathExists(G))return vJ("install","settings.json present, login pending");return vJ("none",`~/${X} not present`)}function DO(){return eK("gemini")}function $O(){return eK("qwen")}async function hb(D){let $=D5.env.PATH??"",F=D5.platform==="win32"?";":":",X=D5.platform==="win32"?(D5.env.PATHEXT??".EXE").split(";"):[""];for(let J of $.split(F)){if(!J)continue;for(let G of X){let Y=s0.join(J,`${D}${G.toLowerCase()}`);try{if((await rK.stat(Y)).isFile())return Y}catch{}}}return null}async function xb(D){try{return await rK.stat(D),!0}catch{return!1}}var vb=600000,oK,nK,sK,A9=null;var F5=Z(()=>{oK={resolveBinary:hb,pathExists:xb,homedir:()=>kb.homedir(),now:()=>Date.now()},nK=["http","mcp","cli"],sK=[{key:"claude-code",kind:"claude-code",binaryName:"claude",authPaths:(D)=>[s0.join(D,".claude.json"),s0.join(D,".claude","config.json")]},{key:"acp:gemini",kind:"acp",agent:"gemini",binaryName:"gemini",authPaths:(D)=>[s0.join(D,".gemini","oauth_creds.json")]},{key:"acp:qwen",kind:"acp",agent:"qwen",binaryName:"qwen",authPaths:(D)=>[s0.join(D,".qwen","oauth_creds.json"),s0.join(D,".qwen","settings.json")]},{key:"codex",kind:"codex",binaryName:"codex",authPaths:(D)=>[s0.join(D,".codex","auth.json")]},{key:"cursor",kind:"cursor",binaryName:"cursor-agent",authPaths:(D)=>[s0.join(D,".cursor","cli-config.json"),s0.join(D,".cursor-agent","auth.json"),s0.join(D,".cursor","auth.json")]}]});class hJ{deps;ws=null;reconnectDelay;reconnectTimer=null;stopped=!1;WebSocketCtor;enrolledViaOtp=!1;constructor(D){this.deps=D;this.reconnectDelay=D.options.initialReconnectDelayMs;let $=globalThis.WebSocket,F=D.webSocketCtor??$;if(!F)throw Error("gateway-client: no WebSocket implementation available (set deps.webSocketCtor)");this.WebSocketCtor=F}start(){this.openSocket()}async stop(){if(this.stopped=!0,this.reconnectTimer)clearTimeout(this.reconnectTimer),this.reconnectTimer=null;let D=this.ws;if(this.ws=null,!D)return;return new Promise(($)=>{let F=setTimeout(()=>$(),2000);D.onclose=()=>{clearTimeout(F),$()};try{D.close(1000,"node-shutdown")}catch{clearTimeout(F),$()}})}send(D){let $=this.ws;if(!$||$.readyState!==gb){E.warn(`[gateway-client ${this.deps.options.workerId}] send dropped: socket not open`);return}try{$.send(ND(D))}catch(F){E.warn(`[gateway-client ${this.deps.options.workerId}] send failed: ${String(F)}`)}}openSocket(){let{url:D,workerId:$}=this.deps.options;E.info(`[gateway-client ${$}] connecting to ${D}`);let F;try{F=new this.WebSocketCtor(D)}catch(X){E.warn(`[gateway-client ${$}] ws ctor threw: ${String(X)}`),this.scheduleReconnect();return}this.ws=F,F.onopen=()=>{let X=this.deps.options.enroll,J=X===void 0||this.enrolledViaOtp?void 0:X.mode==="otp"?{mode:"otp",apiToken:X.apiToken,...X.displayName?{displayName:X.displayName}:{}}:{apiToken:X.apiToken,joinToken:X.joinToken,...X.displayName?{displayName:X.displayName}:{}},G={type:"connect",role:t8.NODE,agentId:this.deps.options.workerId,deviceId:this.deps.options.deviceId,auth:{token:this.deps.options.token},...this.deps.options.displayName?{meta:{displayName:this.deps.options.displayName}}:{},...J?{enroll:J}:{}};try{F.send(ND(G))}catch(Y){E.warn(`[gateway-client ${$}] connect frame send failed: ${String(Y)}`);return}this.reconnectDelay=this.deps.options.initialReconnectDelayMs,E.success(`[gateway-client ${$}] connected, node=${this.deps.options.deviceId}`),this.deps.onConnected()},F.onmessage=(X)=>{let J=typeof X.data==="string"?X.data:String(X.data),G=i2(J);if(!G.ok){E.warn(`[gateway-client ${$}] drop malformed frame: ${G.error}`);return}let Y=G.frame;if(Y.type==="event"&&Y.name===e.ENROLLMENT_OTP){let B=L7.safeParse(Y.payload);if(!B.success){E.warn(`[gateway-client ${$}] enrollment.otp payload invalid: ${B.error.message}`);return}try{this.deps.onEnrollmentOtp?.(B.data)}catch(H){E.error(`[gateway-client ${$}] onEnrollmentOtp threw: ${String(H)}`)}return}if(Y.type==="event"&&Y.name===e.ENROLLMENT_APPROVED){let B=j7.safeParse(Y.payload);if(!B.success){E.warn(`[gateway-client ${$}] enrollment.approved payload invalid: ${B.error.message}`);return}this.enrolledViaOtp=!0;try{this.deps.onEnrollmentApproved?.(B.data)}catch(H){E.error(`[gateway-client ${$}] onEnrollmentApproved threw: ${String(H)}`)}return}try{this.deps.onFrame(Y)}catch(B){E.error(`[gateway-client ${$}] onFrame threw: ${String(B)}`)}},F.onerror=(X)=>{E.warn(`[gateway-client ${$}] ws error: ${String(X?.message??X)}`)},F.onclose=(X)=>{if(this.ws===F)this.ws=null;let J=`code=${X.code} reason=${X.reason||"n/a"}`;if(this.deps.onDisconnected(J),this.stopped)return;this.scheduleReconnect()}}scheduleReconnect(){if(this.stopped)return;if(!this.deps.options.reconnect){E.info(`[gateway-client ${this.deps.options.workerId}] reconnect disabled, giving up`);return}let D=Math.min(this.reconnectDelay,this.deps.options.maxReconnectDelayMs);E.info(`[gateway-client ${this.deps.options.workerId}] reconnect in ${D}ms`),this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.openSocket()},D),this.reconnectDelay=Math.min(this.reconnectDelay*2,this.deps.options.maxReconnectDelayMs)}}var gb=1;var FO=Z(()=>{eD();JD()});function XO(D){if(!D.url||D.url.length===0)throw Error("gateway-client: url is required");if(!D.workerId||D.workerId.length===0)throw Error("gateway-client: workerId is required");return{url:D.url,token:D.token,workerId:D.workerId,deviceId:D.deviceId??D.workerId,displayName:D.displayName,reconnect:D.reconnect??!0,initialReconnectDelayMs:D.initialReconnectDelayMs??1000,maxReconnectDelayMs:D.maxReconnectDelayMs??16000,enroll:D.enroll}}var _D=f((ib)=>{var xJ=Symbol.for("yaml.alias"),JO=Symbol.for("yaml.document"),X5=Symbol.for("yaml.map"),YO=Symbol.for("yaml.pair"),gJ=Symbol.for("yaml.scalar"),J5=Symbol.for("yaml.seq"),J8=Symbol.for("yaml.node.type"),yb=(D)=>!!D&&typeof D==="object"&&D[J8]===xJ,ub=(D)=>!!D&&typeof D==="object"&&D[J8]===JO,mb=(D)=>!!D&&typeof D==="object"&&D[J8]===X5,pb=(D)=>!!D&&typeof D==="object"&&D[J8]===YO,GO=(D)=>!!D&&typeof D==="object"&&D[J8]===gJ,cb=(D)=>!!D&&typeof D==="object"&&D[J8]===J5;function BO(D){if(D&&typeof D==="object")switch(D[J8]){case X5:case J5:return!0}return!1}function db(D){if(D&&typeof D==="object")switch(D[J8]){case xJ:case X5:case gJ:case J5:return!0}return!1}var lb=(D)=>(GO(D)||BO(D))&&!!D.anchor;ib.ALIAS=xJ;ib.DOC=JO;ib.MAP=X5;ib.NODE_TYPE=J8;ib.PAIR=YO;ib.SCALAR=gJ;ib.SEQ=J5;ib.hasAnchor=lb;ib.isAlias=yb;ib.isCollection=BO;ib.isDocument=ub;ib.isMap=mb;ib.isNode=db;ib.isPair=pb;ib.isScalar=GO;ib.isSeq=cb});var K9=f((Wf)=>{var sD=_D(),j0=Symbol("break visit"),HO=Symbol("skip children"),x2=Symbol("remove node");function Y5(D,$){let F=WO($);if(sD.isDocument(D)){if(f6(null,D.contents,F,Object.freeze([D]))===x2)D.contents=null}else f6(null,D,F,Object.freeze([]))}Y5.BREAK=j0;Y5.SKIP=HO;Y5.REMOVE=x2;function f6(D,$,F,X){let J=VO(D,$,F,X);if(sD.isNode(J)||sD.isPair(J))return QO(D,X,J),f6(D,J,F,X);if(typeof J!=="symbol"){if(sD.isCollection($)){X=Object.freeze(X.concat($));for(let G=0;G<$.items.length;++G){let Y=f6(G,$.items[G],F,X);if(typeof Y==="number")G=Y-1;else if(Y===j0)return j0;else if(Y===x2)$.items.splice(G,1),G-=1}}else if(sD.isPair($)){X=Object.freeze(X.concat($));let G=f6("key",$.key,F,X);if(G===j0)return j0;else if(G===x2)$.key=null;let Y=f6("value",$.value,F,X);if(Y===j0)return j0;else if(Y===x2)$.value=null}}return J}async function G5(D,$){let F=WO($);if(sD.isDocument(D)){if(await k6(null,D.contents,F,Object.freeze([D]))===x2)D.contents=null}else await k6(null,D,F,Object.freeze([]))}G5.BREAK=j0;G5.SKIP=HO;G5.REMOVE=x2;async function k6(D,$,F,X){let J=await VO(D,$,F,X);if(sD.isNode(J)||sD.isPair(J))return QO(D,X,J),k6(D,J,F,X);if(typeof J!=="symbol"){if(sD.isCollection($)){X=Object.freeze(X.concat($));for(let G=0;G<$.items.length;++G){let Y=await k6(G,$.items[G],F,X);if(typeof Y==="number")G=Y-1;else if(Y===j0)return j0;else if(Y===x2)$.items.splice(G,1),G-=1}}else if(sD.isPair($)){X=Object.freeze(X.concat($));let G=await k6("key",$.key,F,X);if(G===j0)return j0;else if(G===x2)$.key=null;let Y=await k6("value",$.value,F,X);if(Y===j0)return j0;else if(Y===x2)$.value=null}}return J}function WO(D){if(typeof D==="object"&&(D.Collection||D.Node||D.Value))return Object.assign({Alias:D.Node,Map:D.Node,Scalar:D.Node,Seq:D.Node},D.Value&&{Map:D.Value,Scalar:D.Value,Seq:D.Value},D.Collection&&{Map:D.Collection,Seq:D.Collection},D);return D}function VO(D,$,F,X){if(typeof F==="function")return F(D,$,X);if(sD.isMap($))return F.Map?.(D,$,X);if(sD.isSeq($))return F.Seq?.(D,$,X);if(sD.isPair($))return F.Pair?.(D,$,X);if(sD.isScalar($))return F.Scalar?.(D,$,X);if(sD.isAlias($))return F.Alias?.(D,$,X);return}function QO(D,$,F){let X=$[$.length-1];if(sD.isCollection(X))X.items[D]=F;else if(sD.isPair(X))if(D==="key")X.key=F;else X.value=F;else if(sD.isDocument(X))X.contents=F;else{let J=sD.isAlias(X)?"alias":"scalar";throw Error(`Cannot replace node with ${J} parent`)}}Wf.visit=Y5;Wf.visitAsync=G5});var yJ=f((Kf)=>{var UO=_D(),Uf=K9(),_f={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},Af=(D)=>D.replace(/[!,[\]{}]/g,($)=>_f[$]);class r0{constructor(D,$){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},r0.defaultYaml,D),this.tags=Object.assign({},r0.defaultTags,$)}clone(){let D=new r0(this.yaml,this.tags);return D.docStart=this.docStart,D}atDocument(){let D=new r0(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:r0.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},r0.defaultTags);break}return D}add(D,$){if(this.atNextDocument)this.yaml={explicit:r0.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},r0.defaultTags),this.atNextDocument=!1;let F=D.trim().split(/[ \t]+/),X=F.shift();switch(X){case"%TAG":{if(F.length!==2){if($(0,"%TAG directive should contain exactly two parts"),F.length<2)return!1}let[J,G]=F;return this.tags[J]=G,!0}case"%YAML":{if(this.yaml.explicit=!0,F.length!==1)return $(0,"%YAML directive should contain exactly one part"),!1;let[J]=F;if(J==="1.1"||J==="1.2")return this.yaml.version=J,!0;else{let G=/^\d+\.\d+$/.test(J);return $(6,`Unsupported YAML version ${J}`,G),!1}}default:return $(0,`Unknown directive ${X}`,!0),!1}}tagName(D,$){if(D==="!")return"!";if(D[0]!=="!")return $(`Not a valid tag: ${D}`),null;if(D[1]==="<"){let G=D.slice(2,-1);if(G==="!"||G==="!!")return $(`Verbatim tags aren't resolved, so ${D} is invalid.`),null;if(D[D.length-1]!==">")$("Verbatim tags must end with a >");return G}let[,F,X]=D.match(/^(.*!)([^!]*)$/s);if(!X)$(`The ${D} tag has no suffix`);let J=this.tags[F];if(J)try{return J+decodeURIComponent(X)}catch(G){return $(String(G)),null}if(F==="!")return D;return $(`Could not resolve tag: ${D}`),null}tagString(D){for(let[$,F]of Object.entries(this.tags))if(D.startsWith(F))return $+Af(D.substring(F.length));return D[0]==="!"?D:`!<${D}>`}toString(D){let $=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],F=Object.entries(this.tags),X;if(D&&F.length>0&&UO.isNode(D.contents)){let J={};Uf.visit(D.contents,(G,Y)=>{if(UO.isNode(Y)&&Y.tag)J[Y.tag]=!0}),X=Object.keys(J)}else X=[];for(let[J,G]of F){if(J==="!!"&&G==="tag:yaml.org,2002:")continue;if(!D||X.some((Y)=>Y.startsWith(G)))$.push(`%TAG ${J} ${G}`)}return $.join(`
|
|
123
|
-
`)}}r0.defaultYaml={explicit:!1,version:"1.2"};r0.defaultTags={"!!":"tag:yaml.org,2002:"};Kf.Directives=r0});var B5=f((Mf)=>{var _O=_D(),Cf=K9();function Rf(D){if(/[\x00-\x19\s,[\]{}]/.test(D)){let F=`Anchor must not contain whitespace or control characters: ${JSON.stringify(D)}`;throw Error(F)}return!0}function AO(D){let $=new Set;return Cf.visit(D,{Value(F,X){if(X.anchor)$.add(X.anchor)}}),$}function KO(D,$){for(let F=1;;++F){let X=`${D}${F}`;if(!$.has(X))return X}}function Ef(D,$){let F=[],X=new Map,J=null;return{onAnchor:(G)=>{F.push(G),J??(J=AO(D));let Y=KO($,J);return J.add(Y),Y},setAnchors:()=>{for(let G of F){let Y=X.get(G);if(typeof Y==="object"&&Y.anchor&&(_O.isScalar(Y.node)||_O.isCollection(Y.node)))Y.node.anchor=Y.anchor;else{let B=Error("Failed to resolve repeated object (this should not happen)");throw B.source=G,B}}},sourceObjects:X}}Mf.anchorIsValid=Rf;Mf.anchorNames=AO;Mf.createNodeAnchors=Ef;Mf.findNewAnchor=KO});var uJ=f((Lf)=>{function O9(D,$,F,X){if(X&&typeof X==="object")if(Array.isArray(X))for(let J=0,G=X.length;J<G;++J){let Y=X[J],B=O9(D,X,String(J),Y);if(B===void 0)delete X[J];else if(B!==Y)X[J]=B}else if(X instanceof Map)for(let J of Array.from(X.keys())){let G=X.get(J),Y=O9(D,X,J,G);if(Y===void 0)X.delete(J);else if(Y!==G)X.set(J,Y)}else if(X instanceof Set)for(let J of Array.from(X)){let G=O9(D,X,J,J);if(G===void 0)X.delete(J);else if(G!==J)X.delete(J),X.add(G)}else for(let[J,G]of Object.entries(X)){let Y=O9(D,X,J,G);if(Y===void 0)delete X[J];else if(Y!==G)X[J]=Y}return D.call($,F,X)}Lf.applyReviver=O9});var b8=f((If)=>{var zf=_D();function OO(D,$,F){if(Array.isArray(D))return D.map((X,J)=>OO(X,String(J),F));if(D&&typeof D.toJSON==="function"){if(!F||!zf.hasAnchor(D))return D.toJSON($,F);let X={aliasCount:0,count:1,res:void 0};F.anchors.set(D,X),F.onCreate=(G)=>{X.res=G,delete F.onCreate};let J=D.toJSON($,F);if(F.onCreate)F.onCreate(J);return J}if(typeof D==="bigint"&&!F?.keep)return Number(D);return D}If.toJS=OO});var H5=f((bf)=>{var wf=uJ(),CO=_D(),Sf=b8();class RO{constructor(D){Object.defineProperty(this,CO.NODE_TYPE,{value:D})}clone(){let D=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));if(this.range)D.range=this.range.slice();return D}toJS(D,{mapAsMap:$,maxAliasCount:F,onAnchor:X,reviver:J}={}){if(!CO.isDocument(D))throw TypeError("A document argument is required");let G={anchors:new Map,doc:D,keep:!0,mapAsMap:$===!0,mapKeyWarned:!1,maxAliasCount:typeof F==="number"?F:100},Y=Sf.toJS(this,"",G);if(typeof X==="function")for(let{count:B,res:H}of G.anchors.values())X(H,B);return typeof J==="function"?wf.applyReviver(J,{"":Y},"",Y):Y}}bf.NodeBase=RO});var C9=f((gf)=>{var kf=B5(),vf=K9(),v6=_D(),hf=H5(),xf=b8();class EO extends hf.NodeBase{constructor(D){super(v6.ALIAS);this.source=D,Object.defineProperty(this,"tag",{set(){throw Error("Alias nodes cannot have tags")}})}resolve(D,$){let F;if($?.aliasResolveCache)F=$.aliasResolveCache;else if(F=[],vf.visit(D,{Node:(J,G)=>{if(v6.isAlias(G)||v6.hasAnchor(G))F.push(G)}}),$)$.aliasResolveCache=F;let X=void 0;for(let J of F){if(J===this)break;if(J.anchor===this.source)X=J}return X}toJSON(D,$){if(!$)return{source:this.source};let{anchors:F,doc:X,maxAliasCount:J}=$,G=this.resolve(X,$);if(!G){let B=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw ReferenceError(B)}let Y=F.get(G);if(!Y)xf.toJS(G,null,$),Y=F.get(G);if(Y?.res===void 0)throw ReferenceError("This should not happen: Alias anchor was not resolved?");if(J>=0){if(Y.count+=1,Y.aliasCount===0)Y.aliasCount=W5(X,G,F);if(Y.count*Y.aliasCount>J)throw ReferenceError("Excessive alias count indicates a resource exhaustion attack")}return Y.res}toString(D,$,F){let X=`*${this.source}`;if(D){if(kf.anchorIsValid(this.source),D.options.verifyAliasOrder&&!D.anchors.has(this.source)){let J=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw Error(J)}if(D.implicitKey)return`${X} `}return X}}function W5(D,$,F){if(v6.isAlias($)){let X=$.resolve(D),J=F&&X&&F.get(X);return J?J.count*J.aliasCount:0}else if(v6.isCollection($)){let X=0;for(let J of $.items){let G=W5(D,J,F);if(G>X)X=G}return X}else if(v6.isPair($)){let X=W5(D,$.key,F),J=W5(D,$.value,F);return Math.max(X,J)}return 1}gf.Alias=EO});var lD=f((df)=>{var uf=_D(),mf=H5(),pf=b8(),cf=(D)=>!D||typeof D!=="function"&&typeof D!=="object";class R1 extends mf.NodeBase{constructor(D){super(uf.SCALAR);this.value=D}toJSON(D,$){return $?.keep?this.value:pf.toJS(this.value,D,$)}toString(){return String(this.value)}}R1.BLOCK_FOLDED="BLOCK_FOLDED";R1.BLOCK_LITERAL="BLOCK_LITERAL";R1.PLAIN="PLAIN";R1.QUOTE_DOUBLE="QUOTE_DOUBLE";R1.QUOTE_SINGLE="QUOTE_SINGLE";df.Scalar=R1;df.isScalarValue=cf});var R9=f((tf)=>{var sf=C9(),E1=_D(),MO=lD(),rf="tag:yaml.org,2002:";function of(D,$,F){if($){let X=F.filter((G)=>G.tag===$),J=X.find((G)=>!G.format)??X[0];if(!J)throw Error(`Tag ${$} not found`);return J}return F.find((X)=>X.identify?.(D)&&!X.format)}function af(D,$,F){if(E1.isDocument(D))D=D.contents;if(E1.isNode(D))return D;if(E1.isPair(D)){let U=F.schema[E1.MAP].createNode?.(F.schema,null,F);return U.items.push(D),U}if(D instanceof String||D instanceof Number||D instanceof Boolean||typeof BigInt<"u"&&D instanceof BigInt)D=D.valueOf();let{aliasDuplicateObjects:X,onAnchor:J,onTagObj:G,schema:Y,sourceObjects:B}=F,H=void 0;if(X&&D&&typeof D==="object")if(H=B.get(D),H)return H.anchor??(H.anchor=J(D)),new sf.Alias(H.anchor);else H={anchor:null,node:null},B.set(D,H);if($?.startsWith("!!"))$=rf+$.slice(2);let W=of(D,$,Y.tags);if(!W){if(D&&typeof D.toJSON==="function")D=D.toJSON();if(!D||typeof D!=="object"){let U=new MO.Scalar(D);if(H)H.node=U;return U}W=D instanceof Map?Y[E1.MAP]:(Symbol.iterator in Object(D))?Y[E1.SEQ]:Y[E1.MAP]}if(G)G(W),delete F.onTagObj;let Q=W?.createNode?W.createNode(F.schema,D,F):typeof W?.nodeClass?.from==="function"?W.nodeClass.from(F.schema,D,F):new MO.Scalar(D);if($)Q.tag=$;else if(!W.default)Q.tag=W.tag;if(H)H.node=Q;return Q}tf.createNode=af});var V5=f((Fk)=>{var Dk=R9(),g2=_D(),$k=H5();function mJ(D,$,F){let X=F;for(let J=$.length-1;J>=0;--J){let G=$[J];if(typeof G==="number"&&Number.isInteger(G)&&G>=0){let Y=[];Y[G]=X,X=Y}else X=new Map([[G,X]])}return Dk.createNode(X,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error("This should not happen, please report a bug.")},schema:D,sourceObjects:new Map})}var ZO=(D)=>D==null||typeof D==="object"&&!!D[Symbol.iterator]().next().done;class qO extends $k.NodeBase{constructor(D,$){super(D);Object.defineProperty(this,"schema",{value:$,configurable:!0,enumerable:!1,writable:!0})}clone(D){let $=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));if(D)$.schema=D;if($.items=$.items.map((F)=>g2.isNode(F)||g2.isPair(F)?F.clone(D):F),this.range)$.range=this.range.slice();return $}addIn(D,$){if(ZO(D))this.add($);else{let[F,...X]=D,J=this.get(F,!0);if(g2.isCollection(J))J.addIn(X,$);else if(J===void 0&&this.schema)this.set(F,mJ(this.schema,X,$));else throw Error(`Expected YAML collection at ${F}. Remaining path: ${X}`)}}deleteIn(D){let[$,...F]=D;if(F.length===0)return this.delete($);let X=this.get($,!0);if(g2.isCollection(X))return X.deleteIn(F);else throw Error(`Expected YAML collection at ${$}. Remaining path: ${F}`)}getIn(D,$){let[F,...X]=D,J=this.get(F,!0);if(X.length===0)return!$&&g2.isScalar(J)?J.value:J;else return g2.isCollection(J)?J.getIn(X,$):void 0}hasAllNullValues(D){return this.items.every(($)=>{if(!g2.isPair($))return!1;let F=$.value;return F==null||D&&g2.isScalar(F)&&F.value==null&&!F.commentBefore&&!F.comment&&!F.tag})}hasIn(D){let[$,...F]=D;if(F.length===0)return this.has($);let X=this.get($,!0);return g2.isCollection(X)?X.hasIn(F):!1}setIn(D,$){let[F,...X]=D;if(X.length===0)this.set(F,$);else{let J=this.get(F,!0);if(g2.isCollection(J))J.setIn(X,$);else if(J===void 0&&this.schema)this.set(F,mJ(this.schema,X,$));else throw Error(`Expected YAML collection at ${F}. Remaining path: ${X}`)}}}Fk.Collection=qO;Fk.collectionFromPath=mJ;Fk.isEmptyPath=ZO});var E9=f((Hk)=>{var Gk=(D)=>D.replace(/^(?!$)(?: $)?/gm,"#");function pJ(D,$){if(/^\n+$/.test(D))return D.substring(1);return $?D.replace(/^(?! *$)/gm,$):D}var Bk=(D,$,F)=>D.endsWith(`
|
|
124
|
-
`)?pJ(F,$):F.includes(`
|
|
125
|
-
`)?`
|
|
126
|
-
`+pJ(F,$):(D.endsWith(" ")?"":" ")+F;Hk.indentComment=pJ;Hk.lineComment=Bk;Hk.stringifyComment=Gk});var PO=f((_k)=>{function Uk(D,$,F="flow",{indentAtStart:X,lineWidth:J=80,minContentWidth:G=20,onFold:Y,onOverflow:B}={}){if(!J||J<0)return D;if(J<G)G=0;let H=Math.max(1+G,1+J-$.length);if(D.length<=H)return D;let W=[],Q={},U=J-$.length;if(typeof X==="number")if(X>J-Math.max(2,G))W.push(0);else U=J-X;let _=void 0,A=void 0,C=!1,O=-1,K=-1,R=-1;if(F==="block"){if(O=NO(D,O,$.length),O!==-1)U=O+H}for(let N;N=D[O+=1];){if(F==="quoted"&&N==="\\"){switch(K=O,D[O+1]){case"x":O+=3;break;case"u":O+=5;break;case"U":O+=9;break;default:O+=1}R=O}if(N===`
|
|
127
|
-
`){if(F==="block")O=NO(D,O,$.length);U=O+$.length+H,_=void 0}else{if(N===" "&&A&&A!==" "&&A!==`
|
|
128
|
-
`&&A!=="\t"){let S=D[O+1];if(S&&S!==" "&&S!==`
|
|
129
|
-
`&&S!=="\t")_=O}if(O>=U)if(_)W.push(_),U=_+H,_=void 0;else if(F==="quoted"){while(A===" "||A==="\t")A=N,N=D[O+=1],C=!0;let S=O>R+1?O-2:K-1;if(Q[S])return D;W.push(S),Q[S]=!0,U=S+H,_=void 0}else C=!0}A=N}if(C&&B)B();if(W.length===0)return D;if(Y)Y();let q=D.slice(0,W[0]);for(let N=0;N<W.length;++N){let S=W[N],b=W[N+1]||D.length;if(S===0)q=`
|
|
130
|
-
${$}${D.slice(0,b)}`;else{if(F==="quoted"&&Q[S])q+=`${D[S]}\\`;q+=`
|
|
131
|
-
${$}${D.slice(S+1,b)}`}}return q}function NO(D,$,F){let X=$,J=$+1,G=D[J];while(G===" "||G==="\t")if($<J+F)G=D[++$];else{do G=D[++$];while(G&&G!==`
|
|
132
|
-
`);X=$,J=$+1,G=D[J]}return X}_k.FOLD_BLOCK="block";_k.FOLD_FLOW="flow";_k.FOLD_QUOTED="quoted";_k.foldFlowLines=Uk});var Z9=f((Zk)=>{var Z2=lD(),f8=PO(),U5=(D,$)=>({indentAtStart:$?D.indent.length:D.indentAtStart,lineWidth:D.options.lineWidth,minContentWidth:D.options.minContentWidth}),_5=(D)=>/^(%|---|\.\.\.)/m.test(D);function Rk(D,$,F){if(!$||$<0)return!1;let X=$-F,J=D.length;if(J<=X)return!1;for(let G=0,Y=0;G<J;++G)if(D[G]===`
|
|
133
|
-
`){if(G-Y>X)return!0;if(Y=G+1,J-Y<=X)return!1}return!0}function M9(D,$){let F=JSON.stringify(D);if($.options.doubleQuotedAsJSON)return F;let{implicitKey:X}=$,J=$.options.doubleQuotedMinMultiLineLength,G=$.indent||(_5(D)?" ":""),Y="",B=0;for(let H=0,W=F[H];W;W=F[++H]){if(W===" "&&F[H+1]==="\\"&&F[H+2]==="n")Y+=F.slice(B,H)+"\\ ",H+=1,B=H,W="\\";if(W==="\\")switch(F[H+1]){case"u":{Y+=F.slice(B,H);let Q=F.substr(H+2,4);switch(Q){case"0000":Y+="\\0";break;case"0007":Y+="\\a";break;case"000b":Y+="\\v";break;case"001b":Y+="\\e";break;case"0085":Y+="\\N";break;case"00a0":Y+="\\_";break;case"2028":Y+="\\L";break;case"2029":Y+="\\P";break;default:if(Q.substr(0,2)==="00")Y+="\\x"+Q.substr(2);else Y+=F.substr(H,6)}H+=5,B=H+1}break;case"n":if(X||F[H+2]==='"'||F.length<J)H+=1;else{Y+=F.slice(B,H)+`
|
|
134
|
-
|
|
135
|
-
`;while(F[H+2]==="\\"&&F[H+3]==="n"&&F[H+4]!=='"')Y+=`
|
|
136
|
-
`,H+=2;if(Y+=G,F[H+2]===" ")Y+="\\";H+=1,B=H+1}break;default:H+=1}}return Y=B?Y+F.slice(B):F,X?Y:f8.foldFlowLines(Y,G,f8.FOLD_QUOTED,U5($,!1))}function cJ(D,$){if($.options.singleQuote===!1||$.implicitKey&&D.includes(`
|
|
137
|
-
`)||/[ \t]\n|\n[ \t]/.test(D))return M9(D,$);let F=$.indent||(_5(D)?" ":""),X="'"+D.replace(/'/g,"''").replace(/\n+/g,`$&
|
|
138
|
-
${F}`)+"'";return $.implicitKey?X:f8.foldFlowLines(X,F,f8.FOLD_FLOW,U5($,!1))}function h6(D,$){let{singleQuote:F}=$.options,X;if(F===!1)X=M9;else{let J=D.includes('"'),G=D.includes("'");if(J&&!G)X=cJ;else if(G&&!J)X=M9;else X=F?cJ:M9}return X(D,$)}var dJ;try{dJ=new RegExp(`(^|(?<!
|
|
139
|
-
))
|
|
140
|
-
+(?!
|
|
141
|
-
|$)`,"g")}catch{dJ=/\n+(?!\n|$)/g}function Q5({comment:D,type:$,value:F},X,J,G){let{blockQuote:Y,commentString:B,lineWidth:H}=X.options;if(!Y||/\n[\t ]+$/.test(F))return h6(F,X);let W=X.indent||(X.forceBlockIndent||_5(F)?" ":""),Q=Y==="literal"?!0:Y==="folded"||$===Z2.Scalar.BLOCK_FOLDED?!1:$===Z2.Scalar.BLOCK_LITERAL?!0:!Rk(F,H,W.length);if(!F)return Q?`|
|
|
142
|
-
`:`>
|
|
143
|
-
`;let U,_;for(_=F.length;_>0;--_){let b=F[_-1];if(b!==`
|
|
144
|
-
`&&b!=="\t"&&b!==" ")break}let A=F.substring(_),C=A.indexOf(`
|
|
145
|
-
`);if(C===-1)U="-";else if(F===A||C!==A.length-1){if(U="+",G)G()}else U="";if(A){if(F=F.slice(0,-A.length),A[A.length-1]===`
|
|
146
|
-
`)A=A.slice(0,-1);A=A.replace(dJ,`$&${W}`)}let O=!1,K,R=-1;for(K=0;K<F.length;++K){let b=F[K];if(b===" ")O=!0;else if(b===`
|
|
147
|
-
`)R=K;else break}let q=F.substring(0,R<K?R+1:K);if(q)F=F.substring(q.length),q=q.replace(/\n+/g,`$&${W}`);let S=(O?W?"2":"1":"")+U;if(D){if(S+=" "+B(D.replace(/ ?[\r\n]+/g," ")),J)J()}if(!Q){let b=F.replace(/\n+/g,`
|
|
148
|
-
$&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${W}`),L=!1,z=U5(X,!0);if(Y!=="folded"&&$!==Z2.Scalar.BLOCK_FOLDED)z.onOverflow=()=>{L=!0};let j=f8.foldFlowLines(`${q}${b}${A}`,W,f8.FOLD_BLOCK,z);if(!L)return`>${S}
|
|
149
|
-
${W}${j}`}return F=F.replace(/\n+/g,`$&${W}`),`|${S}
|
|
150
|
-
${W}${q}${F}${A}`}function Ek(D,$,F,X){let{type:J,value:G}=D,{actualString:Y,implicitKey:B,indent:H,indentStep:W,inFlow:Q}=$;if(B&&G.includes(`
|
|
151
|
-
`)||Q&&/[[\]{},]/.test(G))return h6(G,$);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(G))return B||Q||!G.includes(`
|
|
152
|
-
`)?h6(G,$):Q5(D,$,F,X);if(!B&&!Q&&J!==Z2.Scalar.PLAIN&&G.includes(`
|
|
153
|
-
`))return Q5(D,$,F,X);if(_5(G)){if(H==="")return $.forceBlockIndent=!0,Q5(D,$,F,X);else if(B&&H===W)return h6(G,$)}let U=G.replace(/\n+/g,`$&
|
|
154
|
-
${H}`);if(Y){let _=(O)=>O.default&&O.tag!=="tag:yaml.org,2002:str"&&O.test?.test(U),{compat:A,tags:C}=$.doc.schema;if(C.some(_)||A?.some(_))return h6(G,$)}return B?U:f8.foldFlowLines(U,H,f8.FOLD_FLOW,U5($,!1))}function Mk(D,$,F,X){let{implicitKey:J,inFlow:G}=$,Y=typeof D.value==="string"?D:Object.assign({},D,{value:String(D.value)}),{type:B}=D;if(B!==Z2.Scalar.QUOTE_DOUBLE){if(/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(Y.value))B=Z2.Scalar.QUOTE_DOUBLE}let H=(Q)=>{switch(Q){case Z2.Scalar.BLOCK_FOLDED:case Z2.Scalar.BLOCK_LITERAL:return J||G?h6(Y.value,$):Q5(Y,$,F,X);case Z2.Scalar.QUOTE_DOUBLE:return M9(Y.value,$);case Z2.Scalar.QUOTE_SINGLE:return cJ(Y.value,$);case Z2.Scalar.PLAIN:return Ek(Y,$,F,X);default:return null}},W=H(B);if(W===null){let{defaultKeyType:Q,defaultStringType:U}=$.options,_=J&&Q||U;if(W=H(_),W===null)throw Error(`Unsupported default string type ${_}`)}return W}Zk.stringifyString=Mk});var q9=f((wk)=>{var Nk=B5(),k8=_D(),Pk=E9(),Lk=Z9();function jk(D,$){let F=Object.assign({blockQuote:!0,commentString:Pk.stringifyComment,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trailingComma:!1,trueStr:"true",verifyAliasOrder:!0},D.schema.toStringOptions,$),X;switch(F.collectionStyle){case"block":X=!1;break;case"flow":X=!0;break;default:X=null}return{anchors:new Set,doc:D,flowCollectionPadding:F.flowCollectionPadding?" ":"",indent:"",indentStep:typeof F.indent==="number"?" ".repeat(F.indent):" ",inFlow:X,options:F}}function zk(D,$){if($.tag){let J=D.filter((G)=>G.tag===$.tag);if(J.length>0)return J.find((G)=>G.format===$.format)??J[0]}let F=void 0,X;if(k8.isScalar($)){X=$.value;let J=D.filter((G)=>G.identify?.(X));if(J.length>1){let G=J.filter((Y)=>Y.test);if(G.length>0)J=G}F=J.find((G)=>G.format===$.format)??J.find((G)=>!G.format)}else X=$,F=D.find((J)=>J.nodeClass&&X instanceof J.nodeClass);if(!F){let J=X?.constructor?.name??(X===null?"null":typeof X);throw Error(`Tag not resolved for ${J} value`)}return F}function Ik(D,$,{anchors:F,doc:X}){if(!X.directives)return"";let J=[],G=(k8.isScalar(D)||k8.isCollection(D))&&D.anchor;if(G&&Nk.anchorIsValid(G))F.add(G),J.push(`&${G}`);let Y=D.tag??($.default?null:$.tag);if(Y)J.push(X.directives.tagString(Y));return J.join(" ")}function Tk(D,$,F,X){if(k8.isPair(D))return D.toString($,F,X);if(k8.isAlias(D)){if($.doc.directives)return D.toString($);if($.resolvedAliases?.has(D))throw TypeError("Cannot stringify circular structure without alias nodes");else{if($.resolvedAliases)$.resolvedAliases.add(D);else $.resolvedAliases=new Set([D]);D=D.resolve($.doc)}}let J=void 0,G=k8.isNode(D)?D:$.doc.createNode(D,{onTagObj:(H)=>J=H});J??(J=zk($.doc.schema.tags,G));let Y=Ik(G,J,$);if(Y.length>0)$.indentAtStart=($.indentAtStart??0)+Y.length+1;let B=typeof J.stringify==="function"?J.stringify(G,$,F,X):k8.isScalar(G)?Lk.stringifyString(G,$,F,X):G.toString($,F,X);if(!Y)return B;return k8.isScalar(G)||B[0]==="{"||B[0]==="["?`${Y} ${B}`:`${Y}
|
|
155
|
-
${$.indent}${B}`}wk.createStringifyContext=jk;wk.stringify=Tk});var zO=f((kk)=>{var Y8=_D(),LO=lD(),jO=q9(),N9=E9();function fk({key:D,value:$},F,X,J){let{allNullValues:G,doc:Y,indent:B,indentStep:H,options:{commentString:W,indentSeq:Q,simpleKeys:U}}=F,_=Y8.isNode(D)&&D.comment||null;if(U){if(_)throw Error("With simple keys, key nodes cannot have comments");if(Y8.isCollection(D)||!Y8.isNode(D)&&typeof D==="object")throw Error("With simple keys, collection cannot be used as a key value")}let A=!U&&(!D||_&&$==null&&!F.inFlow||Y8.isCollection(D)||(Y8.isScalar(D)?D.type===LO.Scalar.BLOCK_FOLDED||D.type===LO.Scalar.BLOCK_LITERAL:typeof D==="object"));F=Object.assign({},F,{allNullValues:!1,implicitKey:!A&&(U||!G),indent:B+H});let C=!1,O=!1,K=jO.stringify(D,F,()=>C=!0,()=>O=!0);if(!A&&!F.inFlow&&K.length>1024){if(U)throw Error("With simple keys, single line scalar must not span more than 1024 characters");A=!0}if(F.inFlow){if(G||$==null){if(C&&X)X();return K===""?"?":A?`? ${K}`:K}}else if(G&&!U||$==null&&A){if(K=`? ${K}`,_&&!C)K+=N9.lineComment(K,F.indent,W(_));else if(O&&J)J();return K}if(C)_=null;if(A){if(_)K+=N9.lineComment(K,F.indent,W(_));K=`? ${K}
|
|
156
|
-
${B}:`}else if(K=`${K}:`,_)K+=N9.lineComment(K,F.indent,W(_));let R,q,N;if(Y8.isNode($))R=!!$.spaceBefore,q=$.commentBefore,N=$.comment;else if(R=!1,q=null,N=null,$&&typeof $==="object")$=Y.createNode($);if(F.implicitKey=!1,!A&&!_&&Y8.isScalar($))F.indentAtStart=K.length+1;if(O=!1,!Q&&H.length>=2&&!F.inFlow&&!A&&Y8.isSeq($)&&!$.flow&&!$.tag&&!$.anchor)F.indent=F.indent.substring(2);let S=!1,b=jO.stringify($,F,()=>S=!0,()=>O=!0),L=" ";if(_||R||q){if(L=R?`
|
|
157
|
-
`:"",q){let z=W(q);L+=`
|
|
158
|
-
${N9.indentComment(z,F.indent)}`}if(b===""&&!F.inFlow){if(L===`
|
|
159
|
-
`&&N)L=`
|
|
160
|
-
|
|
161
|
-
`}else L+=`
|
|
162
|
-
${F.indent}`}else if(!A&&Y8.isCollection($)){let z=b[0],j=b.indexOf(`
|
|
163
|
-
`),d=j!==-1,VD=F.inFlow??$.flow??$.items.length===0;if(d||!VD){let QD=!1;if(d&&(z==="&"||z==="!")){let $D=b.indexOf(" ");if(z==="&"&&$D!==-1&&$D<j&&b[$D+1]==="!")$D=b.indexOf(" ",$D+1);if($D===-1||j<$D)QD=!0}if(!QD)L=`
|
|
164
|
-
${F.indent}`}}else if(b===""||b[0]===`
|
|
165
|
-
`)L="";if(K+=L+b,F.inFlow){if(S&&X)X()}else if(N&&!S)K+=N9.lineComment(K,F.indent,W(N));else if(O&&J)J();return K}kk.stringifyPair=fk});var lJ=f((gk)=>{var IO=B8("process");function hk(D,...$){if(D==="debug")console.log(...$)}function xk(D,$){if(D==="debug"||D==="warn")if(typeof IO.emitWarning==="function")IO.emitWarning($);else console.warn($)}gk.debug=hk;gk.warn=xk});var O5=f((pk)=>{var P9=_D(),TO=lD(),A5="<<",K5={identify:(D)=>D===A5||typeof D==="symbol"&&D.description===A5,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new TO.Scalar(Symbol(A5)),{addToJSMap:wO}),stringify:()=>A5},mk=(D,$)=>(K5.identify($)||P9.isScalar($)&&(!$.type||$.type===TO.Scalar.PLAIN)&&K5.identify($.value))&&D?.doc.schema.tags.some((F)=>F.tag===K5.tag&&F.default);function wO(D,$,F){if(F=D&&P9.isAlias(F)?F.resolve(D.doc):F,P9.isSeq(F))for(let X of F.items)iJ(D,$,X);else if(Array.isArray(F))for(let X of F)iJ(D,$,X);else iJ(D,$,F)}function iJ(D,$,F){let X=D&&P9.isAlias(F)?F.resolve(D.doc):F;if(!P9.isMap(X))throw Error("Merge sources must be maps or map aliases");let J=X.toJSON(null,D,Map);for(let[G,Y]of J)if($ instanceof Map){if(!$.has(G))$.set(G,Y)}else if($ instanceof Set)$.add(G);else if(!Object.prototype.hasOwnProperty.call($,G))Object.defineProperty($,G,{value:Y,writable:!0,enumerable:!0,configurable:!0});return $}pk.addMergeToJSMap=wO;pk.isMergeKey=mk;pk.merge=K5});var sJ=f((ok)=>{var ik=lJ(),SO=O5(),nk=q9(),bO=_D(),nJ=b8();function sk(D,$,{key:F,value:X}){if(bO.isNode(F)&&F.addToJSMap)F.addToJSMap(D,$,X);else if(SO.isMergeKey(D,F))SO.addMergeToJSMap(D,$,X);else{let J=nJ.toJS(F,"",D);if($ instanceof Map)$.set(J,nJ.toJS(X,J,D));else if($ instanceof Set)$.add(J);else{let G=rk(F,J,D),Y=nJ.toJS(X,G,D);if(G in $)Object.defineProperty($,G,{value:Y,writable:!0,enumerable:!0,configurable:!0});else $[G]=Y}}return $}function rk(D,$,F){if($===null)return"";if(typeof $!=="object")return String($);if(bO.isNode(D)&&F?.doc){let X=nk.createStringifyContext(F.doc,{});X.anchors=new Set;for(let G of F.anchors.keys())X.anchors.add(G.anchor);X.inFlow=!0,X.inStringifyKey=!0;let J=D.toString(X);if(!F.mapKeyWarned){let G=JSON.stringify(J);if(G.length>40)G=G.substring(0,36)+'..."';ik.warn(F.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${G}. Set mapAsMap: true to use object keys.`),F.mapKeyWarned=!0}return J}return JSON.stringify($)}ok.addPairToJSMap=sk});var v8=f(($v)=>{var fO=R9(),tk=zO(),ek=sJ(),C5=_D();function Dv(D,$,F){let X=fO.createNode(D,void 0,F),J=fO.createNode($,void 0,F);return new R5(X,J)}class R5{constructor(D,$=null){Object.defineProperty(this,C5.NODE_TYPE,{value:C5.PAIR}),this.key=D,this.value=$}clone(D){let{key:$,value:F}=this;if(C5.isNode($))$=$.clone(D);if(C5.isNode(F))F=F.clone(D);return new R5($,F)}toJSON(D,$){let F=$?.mapAsMap?new Map:{};return ek.addPairToJSMap($,F,this)}toString(D,$,F){return D?.doc?tk.stringifyPair(this,D,$,F):JSON.stringify(this)}}$v.Pair=R5;$v.createPair=Dv});var rJ=f((Bv)=>{var M1=_D(),kO=q9(),E5=E9();function Jv(D,$,F){return($.inFlow??D.flow?Gv:Yv)(D,$,F)}function Yv({comment:D,items:$},F,{blockItemPrefix:X,flowChars:J,itemIndent:G,onChompKeep:Y,onComment:B}){let{indent:H,options:{commentString:W}}=F,Q=Object.assign({},F,{indent:G,type:null}),U=!1,_=[];for(let C=0;C<$.length;++C){let O=$[C],K=null;if(M1.isNode(O)){if(!U&&O.spaceBefore)_.push("");if(M5(F,_,O.commentBefore,U),O.comment)K=O.comment}else if(M1.isPair(O)){let q=M1.isNode(O.key)?O.key:null;if(q){if(!U&&q.spaceBefore)_.push("");M5(F,_,q.commentBefore,U)}}U=!1;let R=kO.stringify(O,Q,()=>K=null,()=>U=!0);if(K)R+=E5.lineComment(R,G,W(K));if(U&&K)U=!1;_.push(X+R)}let A;if(_.length===0)A=J.start+J.end;else{A=_[0];for(let C=1;C<_.length;++C){let O=_[C];A+=O?`
|
|
166
|
-
${H}${O}`:`
|
|
167
|
-
`}}if(D){if(A+=`
|
|
168
|
-
`+E5.indentComment(W(D),H),B)B()}else if(U&&Y)Y();return A}function Gv({items:D},$,{flowChars:F,itemIndent:X}){let{indent:J,indentStep:G,flowCollectionPadding:Y,options:{commentString:B}}=$;X+=G;let H=Object.assign({},$,{indent:X,inFlow:!0,type:null}),W=!1,Q=0,U=[];for(let C=0;C<D.length;++C){let O=D[C],K=null;if(M1.isNode(O)){if(O.spaceBefore)U.push("");if(M5($,U,O.commentBefore,!1),O.comment)K=O.comment}else if(M1.isPair(O)){let q=M1.isNode(O.key)?O.key:null;if(q){if(q.spaceBefore)U.push("");if(M5($,U,q.commentBefore,!1),q.comment)W=!0}let N=M1.isNode(O.value)?O.value:null;if(N){if(N.comment)K=N.comment;if(N.commentBefore)W=!0}else if(O.value==null&&q?.comment)K=q.comment}if(K)W=!0;let R=kO.stringify(O,H,()=>K=null);if(W||(W=U.length>Q||R.includes(`
|
|
169
|
-
`)),C<D.length-1)R+=",";else if($.options.trailingComma){if($.options.lineWidth>0)W||(W=U.reduce((q,N)=>q+N.length+2,2)+(R.length+2)>$.options.lineWidth);if(W)R+=","}if(K)R+=E5.lineComment(R,X,B(K));U.push(R),Q=U.length}let{start:_,end:A}=F;if(U.length===0)return _+A;else{if(!W){let C=U.reduce((O,K)=>O+K.length+2,2);W=$.options.lineWidth>0&&C>$.options.lineWidth}if(W){let C=_;for(let O of U)C+=O?`
|
|
170
|
-
${G}${J}${O}`:`
|
|
171
|
-
`;return`${C}
|
|
172
|
-
${J}${A}`}else return`${_}${Y}${U.join(" ")}${Y}${A}`}}function M5({indent:D,options:{commentString:$}},F,X,J){if(X&&J)X=X.replace(/^\n+/,"");if(X){let G=E5.indentComment($(X),D);F.push(G.trimStart())}}Bv.stringifyCollection=Jv});var x8=f((_v)=>{var Wv=rJ(),Vv=sJ(),Qv=V5(),h8=_D(),Z5=v8(),Uv=lD();function L9(D,$){let F=h8.isScalar($)?$.value:$;for(let X of D)if(h8.isPair(X)){if(X.key===$||X.key===F)return X;if(h8.isScalar(X.key)&&X.key.value===F)return X}return}class vO extends Qv.Collection{static get tagName(){return"tag:yaml.org,2002:map"}constructor(D){super(h8.MAP,D);this.items=[]}static from(D,$,F){let{keepUndefined:X,replacer:J}=F,G=new this(D),Y=(B,H)=>{if(typeof J==="function")H=J.call($,B,H);else if(Array.isArray(J)&&!J.includes(B))return;if(H!==void 0||X)G.items.push(Z5.createPair(B,H,F))};if($ instanceof Map)for(let[B,H]of $)Y(B,H);else if($&&typeof $==="object")for(let B of Object.keys($))Y(B,$[B]);if(typeof D.sortMapEntries==="function")G.items.sort(D.sortMapEntries);return G}add(D,$){let F;if(h8.isPair(D))F=D;else if(!D||typeof D!=="object"||!("key"in D))F=new Z5.Pair(D,D?.value);else F=new Z5.Pair(D.key,D.value);let X=L9(this.items,F.key),J=this.schema?.sortMapEntries;if(X){if(!$)throw Error(`Key ${F.key} already set`);if(h8.isScalar(X.value)&&Uv.isScalarValue(F.value))X.value.value=F.value;else X.value=F.value}else if(J){let G=this.items.findIndex((Y)=>J(F,Y)<0);if(G===-1)this.items.push(F);else this.items.splice(G,0,F)}else this.items.push(F)}delete(D){let $=L9(this.items,D);if(!$)return!1;return this.items.splice(this.items.indexOf($),1).length>0}get(D,$){let X=L9(this.items,D)?.value;return(!$&&h8.isScalar(X)?X.value:X)??void 0}has(D){return!!L9(this.items,D)}set(D,$){this.add(new Z5.Pair(D,$),!0)}toJSON(D,$,F){let X=F?new F:$?.mapAsMap?new Map:{};if($?.onCreate)$.onCreate(X);for(let J of this.items)Vv.addPairToJSMap($,X,J);return X}toString(D,$,F){if(!D)return JSON.stringify(this);for(let X of this.items)if(!h8.isPair(X))throw Error(`Map items must all be pairs; found ${JSON.stringify(X)} instead`);if(!D.allNullValues&&this.hasAllNullValues(!1))D=Object.assign({},D,{allNullValues:!0});return Wv.stringifyCollection(this,D,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:D.indent||"",onChompKeep:F,onComment:$})}}_v.YAMLMap=vO;_v.findPair=L9});var x6=f((Rv)=>{var Ov=_D(),hO=x8(),Cv={collection:"map",default:!0,nodeClass:hO.YAMLMap,tag:"tag:yaml.org,2002:map",resolve(D,$){if(!Ov.isMap(D))$("Expected a mapping for this tag");return D},createNode:(D,$,F)=>hO.YAMLMap.from(D,$,F)};Rv.map=Cv});var g8=f((Lv)=>{var Mv=R9(),Zv=rJ(),qv=V5(),N5=_D(),Nv=lD(),Pv=b8();class xO extends qv.Collection{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(D){super(N5.SEQ,D);this.items=[]}add(D){this.items.push(D)}delete(D){let $=q5(D);if(typeof $!=="number")return!1;return this.items.splice($,1).length>0}get(D,$){let F=q5(D);if(typeof F!=="number")return;let X=this.items[F];return!$&&N5.isScalar(X)?X.value:X}has(D){let $=q5(D);return typeof $==="number"&&$<this.items.length}set(D,$){let F=q5(D);if(typeof F!=="number")throw Error(`Expected a valid index, not ${D}.`);let X=this.items[F];if(N5.isScalar(X)&&Nv.isScalarValue($))X.value=$;else this.items[F]=$}toJSON(D,$){let F=[];if($?.onCreate)$.onCreate(F);let X=0;for(let J of this.items)F.push(Pv.toJS(J,String(X++),$));return F}toString(D,$,F){if(!D)return JSON.stringify(this);return Zv.stringifyCollection(this,D,{blockItemPrefix:"- ",flowChars:{start:"[",end:"]"},itemIndent:(D.indent||"")+" ",onChompKeep:F,onComment:$})}static from(D,$,F){let{replacer:X}=F,J=new this(D);if($&&Symbol.iterator in Object($)){let G=0;for(let Y of $){if(typeof X==="function"){let B=$ instanceof Set?Y:String(G++);Y=X.call($,B,Y)}J.items.push(Mv.createNode(Y,void 0,F))}}return J}}function q5(D){let $=N5.isScalar(D)?D.value:D;if($&&typeof $==="string")$=Number($);return typeof $==="number"&&Number.isInteger($)&&$>=0?$:null}Lv.YAMLSeq=xO});var g6=f((Tv)=>{var zv=_D(),gO=g8(),Iv={collection:"seq",default:!0,nodeClass:gO.YAMLSeq,tag:"tag:yaml.org,2002:seq",resolve(D,$){if(!zv.isSeq(D))$("Expected a sequence for this tag");return D},createNode:(D,$,F)=>gO.YAMLSeq.from(D,$,F)};Tv.seq=Iv});var j9=f((fv)=>{var Sv=Z9(),bv={identify:(D)=>typeof D==="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:(D)=>D,stringify(D,$,F,X){return $=Object.assign({actualString:!0},$),Sv.stringifyString(D,$,F,X)}};fv.string=bv});var P5=f((vv)=>{var yO=lD(),uO={identify:(D)=>D==null,createNode:()=>new yO.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new yO.Scalar(null),stringify:({source:D},$)=>typeof D==="string"&&uO.test.test(D)?D:$.options.nullStr};vv.nullTag=uO});var oJ=f((gv)=>{var xv=lD(),mO={identify:(D)=>typeof D==="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:(D)=>new xv.Scalar(D[0]==="t"||D[0]==="T"),stringify({source:D,value:$},F){if(D&&mO.test.test(D)){let X=D[0]==="t"||D[0]==="T";if($===X)return D}return $?F.options.trueStr:F.options.falseStr}};gv.boolTag=mO});var y6=f((mv)=>{function uv({format:D,minFractionDigits:$,tag:F,value:X}){if(typeof X==="bigint")return String(X);let J=typeof X==="number"?X:Number(X);if(!isFinite(J))return isNaN(J)?".nan":J<0?"-.inf":".inf";let G=Object.is(X,-0)?"-0":JSON.stringify(X);if(!D&&$&&(!F||F==="tag:yaml.org,2002:float")&&/^\d/.test(G)){let Y=G.indexOf(".");if(Y<0)Y=G.length,G+=".";let B=$-(G.length-Y-1);while(B-- >0)G+="0"}return G}mv.stringifyNumber=uv});var tJ=f((nv)=>{var cv=lD(),aJ=y6(),dv={identify:(D)=>typeof D==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:(D)=>D.slice(-3).toLowerCase()==="nan"?NaN:D[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:aJ.stringifyNumber},lv={identify:(D)=>typeof D==="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:(D)=>parseFloat(D),stringify(D){let $=Number(D.value);return isFinite($)?$.toExponential():aJ.stringifyNumber(D)}},iv={identify:(D)=>typeof D==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(D){let $=new cv.Scalar(parseFloat(D)),F=D.indexOf(".");if(F!==-1&&D[D.length-1]==="0")$.minFractionDigits=D.length-F-1;return $},stringify:aJ.stringifyNumber};nv.float=iv;nv.floatExp=lv;nv.floatNaN=dv});var DY=f((Dh)=>{var pO=y6(),L5=(D)=>typeof D==="bigint"||Number.isInteger(D),eJ=(D,$,F,{intAsBigInt:X})=>X?BigInt(D):parseInt(D.substring($),F);function cO(D,$,F){let{value:X}=D;if(L5(X)&&X>=0)return F+X.toString($);return pO.stringifyNumber(D)}var av={identify:(D)=>L5(D)&&D>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(D,$,F)=>eJ(D,2,8,F),stringify:(D)=>cO(D,8,"0o")},tv={identify:L5,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(D,$,F)=>eJ(D,0,10,F),stringify:pO.stringifyNumber},ev={identify:(D)=>L5(D)&&D>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(D,$,F)=>eJ(D,2,16,F),stringify:(D)=>cO(D,16,"0x")};Dh.int=tv;Dh.intHex=ev;Dh.intOct=av});var dO=f((Vh)=>{var Jh=x6(),Yh=P5(),Gh=g6(),Bh=j9(),Hh=oJ(),$Y=tJ(),FY=DY(),Wh=[Jh.map,Gh.seq,Bh.string,Yh.nullTag,Hh.boolTag,FY.intOct,FY.int,FY.intHex,$Y.floatNaN,$Y.floatExp,$Y.float];Vh.schema=Wh});var iO=f((Rh)=>{var Uh=lD(),_h=x6(),Ah=g6();function lO(D){return typeof D==="bigint"||Number.isInteger(D)}var j5=({value:D})=>JSON.stringify(D),Kh=[{identify:(D)=>typeof D==="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:(D)=>D,stringify:j5},{identify:(D)=>D==null,createNode:()=>new Uh.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:j5},{identify:(D)=>typeof D==="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:(D)=>D==="true",stringify:j5},{identify:lO,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(D,$,{intAsBigInt:F})=>F?BigInt(D):parseInt(D,10),stringify:({value:D})=>lO(D)?D.toString():JSON.stringify(D)},{identify:(D)=>typeof D==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:(D)=>parseFloat(D),stringify:j5}],Oh={default:!0,tag:"",test:/^/,resolve(D,$){return $(`Unresolved plain scalar ${JSON.stringify(D)}`),D}},Ch=[_h.map,Ah.seq].concat(Kh,Oh);Rh.schema=Ch});var JY=f((qh)=>{var z9=B8("buffer"),XY=lD(),Mh=Z9(),Zh={identify:(D)=>D instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(D,$){if(typeof z9.Buffer==="function")return z9.Buffer.from(D,"base64");else if(typeof atob==="function"){let F=atob(D.replace(/[\n\r]/g,"")),X=new Uint8Array(F.length);for(let J=0;J<F.length;++J)X[J]=F.charCodeAt(J);return X}else return $("This environment does not support reading binary tags; either Buffer or atob is required"),D},stringify({comment:D,type:$,value:F},X,J,G){if(!F)return"";let Y=F,B;if(typeof z9.Buffer==="function")B=Y instanceof z9.Buffer?Y.toString("base64"):z9.Buffer.from(Y.buffer).toString("base64");else if(typeof btoa==="function"){let H="";for(let W=0;W<Y.length;++W)H+=String.fromCharCode(Y[W]);B=btoa(H)}else throw Error("This environment does not support writing binary tags; either Buffer or btoa is required");if($??($=XY.Scalar.BLOCK_LITERAL),$!==XY.Scalar.QUOTE_DOUBLE){let H=Math.max(X.options.lineWidth-X.indent.length,X.options.minContentWidth),W=Math.ceil(B.length/H),Q=Array(W);for(let U=0,_=0;U<W;++U,_+=H)Q[U]=B.substr(_,H);B=Q.join($===XY.Scalar.BLOCK_LITERAL?`
|
|
173
|
-
`:" ")}return Mh.stringifyString({comment:D,type:$,value:B},X,J,G)}};qh.binary=Zh});var I5=f((zh)=>{var z5=_D(),YY=v8(),Ph=lD(),Lh=g8();function nO(D,$){if(z5.isSeq(D))for(let F=0;F<D.items.length;++F){let X=D.items[F];if(z5.isPair(X))continue;else if(z5.isMap(X)){if(X.items.length>1)$("Each pair must have its own sequence indicator");let J=X.items[0]||new YY.Pair(new Ph.Scalar(null));if(X.commentBefore)J.key.commentBefore=J.key.commentBefore?`${X.commentBefore}
|
|
174
|
-
${J.key.commentBefore}`:X.commentBefore;if(X.comment){let G=J.value??J.key;G.comment=G.comment?`${X.comment}
|
|
175
|
-
${G.comment}`:X.comment}X=J}D.items[F]=z5.isPair(X)?X:new YY.Pair(X)}else $("Expected a sequence for this tag");return D}function sO(D,$,F){let{replacer:X}=F,J=new Lh.YAMLSeq(D);J.tag="tag:yaml.org,2002:pairs";let G=0;if($&&Symbol.iterator in Object($))for(let Y of $){if(typeof X==="function")Y=X.call($,String(G++),Y);let B,H;if(Array.isArray(Y))if(Y.length===2)B=Y[0],H=Y[1];else throw TypeError(`Expected [key, value] tuple: ${Y}`);else if(Y&&Y instanceof Object){let W=Object.keys(Y);if(W.length===1)B=W[0],H=Y[B];else throw TypeError(`Expected tuple with one key, not ${W.length} keys`)}else B=Y;J.items.push(YY.createPair(B,H,F))}return J}var jh={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:nO,createNode:sO};zh.createPairs=sO;zh.pairs=jh;zh.resolvePairs=nO});var BY=f((fh)=>{var rO=_D(),GY=b8(),I9=x8(),Sh=g8(),oO=I5();class Z1 extends Sh.YAMLSeq{constructor(){super();this.add=I9.YAMLMap.prototype.add.bind(this),this.delete=I9.YAMLMap.prototype.delete.bind(this),this.get=I9.YAMLMap.prototype.get.bind(this),this.has=I9.YAMLMap.prototype.has.bind(this),this.set=I9.YAMLMap.prototype.set.bind(this),this.tag=Z1.tag}toJSON(D,$){if(!$)return super.toJSON(D);let F=new Map;if($?.onCreate)$.onCreate(F);for(let X of this.items){let J,G;if(rO.isPair(X))J=GY.toJS(X.key,"",$),G=GY.toJS(X.value,J,$);else J=GY.toJS(X,"",$);if(F.has(J))throw Error("Ordered maps must not include duplicate keys");F.set(J,G)}return F}static from(D,$,F){let X=oO.createPairs(D,$,F),J=new this;return J.items=X.items,J}}Z1.tag="tag:yaml.org,2002:omap";var bh={collection:"seq",identify:(D)=>D instanceof Map,nodeClass:Z1,default:!1,tag:"tag:yaml.org,2002:omap",resolve(D,$){let F=oO.resolvePairs(D,$),X=[];for(let{key:J}of F.items)if(rO.isScalar(J))if(X.includes(J.value))$(`Ordered maps must not include duplicate keys: ${J.value}`);else X.push(J.value);return Object.assign(new Z1,F)},createNode:(D,$,F)=>Z1.from(D,$,F)};fh.YAMLOMap=Z1;fh.omap=bh});var $C=f((hh)=>{var aO=lD();function tO({value:D,source:$},F){if($&&(D?eO:DC).test.test($))return $;return D?F.options.trueStr:F.options.falseStr}var eO={identify:(D)=>D===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new aO.Scalar(!0),stringify:tO},DC={identify:(D)=>D===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new aO.Scalar(!1),stringify:tO};hh.falseTag=DC;hh.trueTag=eO});var FC=f((ch)=>{var yh=lD(),HY=y6(),uh={identify:(D)=>typeof D==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:(D)=>D.slice(-3).toLowerCase()==="nan"?NaN:D[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:HY.stringifyNumber},mh={identify:(D)=>typeof D==="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:(D)=>parseFloat(D.replace(/_/g,"")),stringify(D){let $=Number(D.value);return isFinite($)?$.toExponential():HY.stringifyNumber(D)}},ph={identify:(D)=>typeof D==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(D){let $=new yh.Scalar(parseFloat(D.replace(/_/g,""))),F=D.indexOf(".");if(F!==-1){let X=D.substring(F+1).replace(/_/g,"");if(X[X.length-1]==="0")$.minFractionDigits=X.length}return $},stringify:HY.stringifyNumber};ch.float=ph;ch.floatExp=mh;ch.floatNaN=uh});var JC=f((ah)=>{var XC=y6(),T9=(D)=>typeof D==="bigint"||Number.isInteger(D);function T5(D,$,F,{intAsBigInt:X}){let J=D[0];if(J==="-"||J==="+")$+=1;if(D=D.substring($).replace(/_/g,""),X){switch(F){case 2:D=`0b${D}`;break;case 8:D=`0o${D}`;break;case 16:D=`0x${D}`;break}let Y=BigInt(D);return J==="-"?BigInt(-1)*Y:Y}let G=parseInt(D,F);return J==="-"?-1*G:G}function WY(D,$,F){let{value:X}=D;if(T9(X)){let J=X.toString($);return X<0?"-"+F+J.substr(1):F+J}return XC.stringifyNumber(D)}var nh={identify:T9,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(D,$,F)=>T5(D,2,2,F),stringify:(D)=>WY(D,2,"0b")},sh={identify:T9,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(D,$,F)=>T5(D,1,8,F),stringify:(D)=>WY(D,8,"0")},rh={identify:T9,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(D,$,F)=>T5(D,0,10,F),stringify:XC.stringifyNumber},oh={identify:T9,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(D,$,F)=>T5(D,2,16,F),stringify:(D)=>WY(D,16,"0x")};ah.int=rh;ah.intBin=nh;ah.intHex=oh;ah.intOct=sh});var VY=f((Xx)=>{var b5=_D(),w5=v8(),S5=x8();class q1 extends S5.YAMLMap{constructor(D){super(D);this.tag=q1.tag}add(D){let $;if(b5.isPair(D))$=D;else if(D&&typeof D==="object"&&"key"in D&&"value"in D&&D.value===null)$=new w5.Pair(D.key,null);else $=new w5.Pair(D,null);if(!S5.findPair(this.items,$.key))this.items.push($)}get(D,$){let F=S5.findPair(this.items,D);return!$&&b5.isPair(F)?b5.isScalar(F.key)?F.key.value:F.key:F}set(D,$){if(typeof $!=="boolean")throw Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof $}`);let F=S5.findPair(this.items,D);if(F&&!$)this.items.splice(this.items.indexOf(F),1);else if(!F&&$)this.items.push(new w5.Pair(D))}toJSON(D,$){return super.toJSON(D,$,Set)}toString(D,$,F){if(!D)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},D,{allNullValues:!0}),$,F);else throw Error("Set items must all have null values")}static from(D,$,F){let{replacer:X}=F,J=new this(D);if($&&Symbol.iterator in Object($))for(let G of $){if(typeof X==="function")G=X.call($,G,G);J.items.push(w5.createPair(G,null,F))}return J}}q1.tag="tag:yaml.org,2002:set";var Fx={collection:"map",identify:(D)=>D instanceof Set,nodeClass:q1,default:!1,tag:"tag:yaml.org,2002:set",createNode:(D,$,F)=>q1.from(D,$,F),resolve(D,$){if(b5.isMap(D))if(D.hasAllNullValues(!0))return Object.assign(new q1,D);else $("Set items must all have null values");else $("Expected a mapping for this tag");return D}};Xx.YAMLSet=q1;Xx.set=Fx});var UY=f((Wx)=>{var Gx=y6();function QY(D,$){let F=D[0],X=F==="-"||F==="+"?D.substring(1):D,J=(Y)=>$?BigInt(Y):Number(Y),G=X.replace(/_/g,"").split(":").reduce((Y,B)=>Y*J(60)+J(B),J(0));return F==="-"?J(-1)*G:G}function YC(D){let{value:$}=D,F=(Y)=>Y;if(typeof $==="bigint")F=(Y)=>BigInt(Y);else if(isNaN($)||!isFinite($))return Gx.stringifyNumber(D);let X="";if($<0)X="-",$*=F(-1);let J=F(60),G=[$%J];if($<60)G.unshift(0);else if($=($-G[0])/J,G.unshift($%J),$>=60)$=($-G[0])/J,G.unshift($);return X+G.map((Y)=>String(Y).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var Bx={identify:(D)=>typeof D==="bigint"||Number.isInteger(D),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(D,$,{intAsBigInt:F})=>QY(D,F),stringify:YC},Hx={identify:(D)=>typeof D==="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:(D)=>QY(D,!1),stringify:YC},GC={identify:(D)=>D instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(D){let $=D.match(GC.test);if(!$)throw Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,F,X,J,G,Y,B]=$.map(Number),H=$[7]?Number(($[7]+"00").substr(1,3)):0,W=Date.UTC(F,X-1,J,G||0,Y||0,B||0,H),Q=$[8];if(Q&&Q!=="Z"){let U=QY(Q,!1);if(Math.abs(U)<30)U*=60;W-=60000*U}return new Date(W)},stringify:({value:D})=>D?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""};Wx.floatTime=Hx;Wx.intTime=Bx;Wx.timestamp=GC});var HC=f((Nx)=>{var _x=x6(),Ax=P5(),Kx=g6(),Ox=j9(),Cx=JY(),BC=$C(),_Y=FC(),f5=JC(),Rx=O5(),Ex=BY(),Mx=I5(),Zx=VY(),AY=UY(),qx=[_x.map,Kx.seq,Ox.string,Ax.nullTag,BC.trueTag,BC.falseTag,f5.intBin,f5.intOct,f5.int,f5.intHex,_Y.floatNaN,_Y.floatExp,_Y.float,Cx.binary,Rx.merge,Ex.omap,Mx.pairs,Zx.set,AY.intTime,AY.floatTime,AY.timestamp];Nx.schema=qx});var RC=f((bx)=>{var UC=x6(),Lx=P5(),_C=g6(),jx=j9(),zx=oJ(),KY=tJ(),OY=DY(),Ix=dO(),Tx=iO(),AC=JY(),w9=O5(),KC=BY(),OC=I5(),WC=HC(),CC=VY(),k5=UY(),VC=new Map([["core",Ix.schema],["failsafe",[UC.map,_C.seq,jx.string]],["json",Tx.schema],["yaml11",WC.schema],["yaml-1.1",WC.schema]]),QC={binary:AC.binary,bool:zx.boolTag,float:KY.float,floatExp:KY.floatExp,floatNaN:KY.floatNaN,floatTime:k5.floatTime,int:OY.int,intHex:OY.intHex,intOct:OY.intOct,intTime:k5.intTime,map:UC.map,merge:w9.merge,null:Lx.nullTag,omap:KC.omap,pairs:OC.pairs,seq:_C.seq,set:CC.set,timestamp:k5.timestamp},wx={"tag:yaml.org,2002:binary":AC.binary,"tag:yaml.org,2002:merge":w9.merge,"tag:yaml.org,2002:omap":KC.omap,"tag:yaml.org,2002:pairs":OC.pairs,"tag:yaml.org,2002:set":CC.set,"tag:yaml.org,2002:timestamp":k5.timestamp};function Sx(D,$,F){let X=VC.get($);if(X&&!D)return F&&!X.includes(w9.merge)?X.concat(w9.merge):X.slice();let J=X;if(!J)if(Array.isArray(D))J=[];else{let G=Array.from(VC.keys()).filter((Y)=>Y!=="yaml11").map((Y)=>JSON.stringify(Y)).join(", ");throw Error(`Unknown schema "${$}"; use one of ${G} or define customTags array`)}if(Array.isArray(D))for(let G of D)J=J.concat(G);else if(typeof D==="function")J=D(J.slice());if(F)J=J.concat(w9.merge);return J.reduce((G,Y)=>{let B=typeof Y==="string"?QC[Y]:Y;if(!B){let H=JSON.stringify(Y),W=Object.keys(QC).map((Q)=>JSON.stringify(Q)).join(", ");throw Error(`Unknown custom tag ${H}; use one of ${W}`)}if(!G.includes(B))G.push(B);return G},[])}bx.coreKnownTags=wx;bx.getTags=Sx});var EY=f((yx)=>{var CY=_D(),vx=x6(),hx=g6(),xx=j9(),v5=RC(),gx=(D,$)=>D.key<$.key?-1:D.key>$.key?1:0;class RY{constructor({compat:D,customTags:$,merge:F,resolveKnownTags:X,schema:J,sortMapEntries:G,toStringDefaults:Y}){this.compat=Array.isArray(D)?v5.getTags(D,"compat"):D?v5.getTags(null,D):null,this.name=typeof J==="string"&&J||"core",this.knownTags=X?v5.coreKnownTags:{},this.tags=v5.getTags($,this.name,F),this.toStringOptions=Y??null,Object.defineProperty(this,CY.MAP,{value:vx.map}),Object.defineProperty(this,CY.SCALAR,{value:xx.string}),Object.defineProperty(this,CY.SEQ,{value:hx.seq}),this.sortMapEntries=typeof G==="function"?G:G===!0?gx:null}clone(){let D=Object.create(RY.prototype,Object.getOwnPropertyDescriptors(this));return D.tags=this.tags.slice(),D}}yx.Schema=RY});var EC=f((cx)=>{var mx=_D(),MY=q9(),S9=E9();function px(D,$){let F=[],X=$.directives===!0;if($.directives!==!1&&D.directives){let H=D.directives.toString(D);if(H)F.push(H),X=!0;else if(D.directives.docStart)X=!0}if(X)F.push("---");let J=MY.createStringifyContext(D,$),{commentString:G}=J.options;if(D.commentBefore){if(F.length!==1)F.unshift("");let H=G(D.commentBefore);F.unshift(S9.indentComment(H,""))}let Y=!1,B=null;if(D.contents){if(mx.isNode(D.contents)){if(D.contents.spaceBefore&&X)F.push("");if(D.contents.commentBefore){let Q=G(D.contents.commentBefore);F.push(S9.indentComment(Q,""))}J.forceBlockIndent=!!D.comment,B=D.contents.comment}let H=B?void 0:()=>Y=!0,W=MY.stringify(D.contents,J,()=>B=null,H);if(B)W+=S9.lineComment(W,"",G(B));if((W[0]==="|"||W[0]===">")&&F[F.length-1]==="---")F[F.length-1]=`--- ${W}`;else F.push(W)}else F.push(MY.stringify(D.contents,J));if(D.directives?.docEnd)if(D.comment){let H=G(D.comment);if(H.includes(`
|
|
176
|
-
`))F.push("..."),F.push(S9.indentComment(H,""));else F.push(`... ${H}`)}else F.push("...");else{let H=D.comment;if(H&&Y)H=H.replace(/^\n+/,"");if(H){if((!Y||B)&&F[F.length-1]!=="")F.push("");F.push(S9.indentComment(G(H),""))}}return F.join(`
|
|
177
|
-
`)+`
|
|
178
|
-
`}cx.stringifyDocument=px});var b9=f((tx)=>{var lx=C9(),u6=V5(),o0=_D(),ix=v8(),nx=b8(),sx=EY(),rx=EC(),ZY=B5(),ox=uJ(),ax=R9(),qY=yJ();class NY{constructor(D,$,F){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,o0.NODE_TYPE,{value:o0.DOC});let X=null;if(typeof $==="function"||Array.isArray($))X=$;else if(F===void 0&&$)F=$,$=void 0;let J=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},F);this.options=J;let{version:G}=J;if(F?._directives){if(this.directives=F._directives.atDocument(),this.directives.yaml.explicit)G=this.directives.yaml.version}else this.directives=new qY.Directives({version:G});this.setSchema(G,F),this.contents=D===void 0?null:this.createNode(D,X,F)}clone(){let D=Object.create(NY.prototype,{[o0.NODE_TYPE]:{value:o0.DOC}});if(D.commentBefore=this.commentBefore,D.comment=this.comment,D.errors=this.errors.slice(),D.warnings=this.warnings.slice(),D.options=Object.assign({},this.options),this.directives)D.directives=this.directives.clone();if(D.schema=this.schema.clone(),D.contents=o0.isNode(this.contents)?this.contents.clone(D.schema):this.contents,this.range)D.range=this.range.slice();return D}add(D){if(m6(this.contents))this.contents.add(D)}addIn(D,$){if(m6(this.contents))this.contents.addIn(D,$)}createAlias(D,$){if(!D.anchor){let F=ZY.anchorNames(this);D.anchor=!$||F.has($)?ZY.findNewAnchor($||"a",F):$}return new lx.Alias(D.anchor)}createNode(D,$,F){let X=void 0;if(typeof $==="function")D=$.call({"":D},"",D),X=$;else if(Array.isArray($)){let O=(R)=>typeof R==="number"||R instanceof String||R instanceof Number,K=$.filter(O).map(String);if(K.length>0)$=$.concat(K);X=$}else if(F===void 0&&$)F=$,$=void 0;let{aliasDuplicateObjects:J,anchorPrefix:G,flow:Y,keepUndefined:B,onTagObj:H,tag:W}=F??{},{onAnchor:Q,setAnchors:U,sourceObjects:_}=ZY.createNodeAnchors(this,G||"a"),A={aliasDuplicateObjects:J??!0,keepUndefined:B??!1,onAnchor:Q,onTagObj:H,replacer:X,schema:this.schema,sourceObjects:_},C=ax.createNode(D,W,A);if(Y&&o0.isCollection(C))C.flow=!0;return U(),C}createPair(D,$,F={}){let X=this.createNode(D,null,F),J=this.createNode($,null,F);return new ix.Pair(X,J)}delete(D){return m6(this.contents)?this.contents.delete(D):!1}deleteIn(D){if(u6.isEmptyPath(D)){if(this.contents==null)return!1;return this.contents=null,!0}return m6(this.contents)?this.contents.deleteIn(D):!1}get(D,$){return o0.isCollection(this.contents)?this.contents.get(D,$):void 0}getIn(D,$){if(u6.isEmptyPath(D))return!$&&o0.isScalar(this.contents)?this.contents.value:this.contents;return o0.isCollection(this.contents)?this.contents.getIn(D,$):void 0}has(D){return o0.isCollection(this.contents)?this.contents.has(D):!1}hasIn(D){if(u6.isEmptyPath(D))return this.contents!==void 0;return o0.isCollection(this.contents)?this.contents.hasIn(D):!1}set(D,$){if(this.contents==null)this.contents=u6.collectionFromPath(this.schema,[D],$);else if(m6(this.contents))this.contents.set(D,$)}setIn(D,$){if(u6.isEmptyPath(D))this.contents=$;else if(this.contents==null)this.contents=u6.collectionFromPath(this.schema,Array.from(D),$);else if(m6(this.contents))this.contents.setIn(D,$)}setSchema(D,$={}){if(typeof D==="number")D=String(D);let F;switch(D){case"1.1":if(this.directives)this.directives.yaml.version="1.1";else this.directives=new qY.Directives({version:"1.1"});F={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":if(this.directives)this.directives.yaml.version=D;else this.directives=new qY.Directives({version:D});F={resolveKnownTags:!0,schema:"core"};break;case null:if(this.directives)delete this.directives;F=null;break;default:{let X=JSON.stringify(D);throw Error(`Expected '1.1', '1.2' or null as first argument, but found: ${X}`)}}if($.schema instanceof Object)this.schema=$.schema;else if(F)this.schema=new sx.Schema(Object.assign(F,$));else throw Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:D,jsonArg:$,mapAsMap:F,maxAliasCount:X,onAnchor:J,reviver:G}={}){let Y={anchors:new Map,doc:this,keep:!D,mapAsMap:F===!0,mapKeyWarned:!1,maxAliasCount:typeof X==="number"?X:100},B=nx.toJS(this.contents,$??"",Y);if(typeof J==="function")for(let{count:H,res:W}of Y.anchors.values())J(W,H);return typeof G==="function"?ox.applyReviver(G,{"":B},"",B):B}toJSON(D,$){return this.toJS({json:!0,jsonArg:D,mapAsMap:!1,onAnchor:$})}toString(D={}){if(this.errors.length>0)throw Error("Document with errors cannot be stringified");if("indent"in D&&(!Number.isInteger(D.indent)||Number(D.indent)<=0)){let $=JSON.stringify(D.indent);throw Error(`"indent" option must be a positive integer, not ${$}`)}return rx.stringifyDocument(this,D)}}function m6(D){if(o0.isCollection(D))return!0;throw Error("Expected a YAML collection as document contents")}tx.Document=NY});var f9=f(($g)=>{class h5 extends Error{constructor(D,$,F,X){super();this.name=D,this.code=F,this.message=X,this.pos=$}}class MC extends h5{constructor(D,$,F){super("YAMLParseError",D,$,F)}}class ZC extends h5{constructor(D,$,F){super("YAMLWarning",D,$,F)}}var Dg=(D,$)=>(F)=>{if(F.pos[0]===-1)return;F.linePos=F.pos.map((B)=>$.linePos(B));let{line:X,col:J}=F.linePos[0];F.message+=` at line ${X}, column ${J}`;let G=J-1,Y=D.substring($.lineStarts[X-1],$.lineStarts[X]).replace(/[\n\r]+$/,"");if(G>=60&&Y.length>80){let B=Math.min(G-39,Y.length-79);Y="\u2026"+Y.substring(B),G-=B-1}if(Y.length>80)Y=Y.substring(0,79)+"\u2026";if(X>1&&/^ *$/.test(Y.substring(0,G))){let B=D.substring($.lineStarts[X-2],$.lineStarts[X-1]);if(B.length>80)B=B.substring(0,79)+`\u2026
|
|
179
|
-
`;Y=B+Y}if(/[^ ]/.test(Y)){let B=1,H=F.linePos[1];if(H?.line===X&&H.col>J)B=Math.max(1,Math.min(H.col-J,80-G));let W=" ".repeat(G)+"^".repeat(B);F.message+=`:
|
|
180
|
-
|
|
181
|
-
${Y}
|
|
182
|
-
${W}
|
|
183
|
-
`}};$g.YAMLError=h5;$g.YAMLParseError=MC;$g.YAMLWarning=ZC;$g.prettifyError=Dg});var k9=f((Bg)=>{function Gg(D,{flow:$,indicator:F,next:X,offset:J,onError:G,parentIndent:Y,startOnNewline:B}){let H=!1,W=B,Q=B,U="",_="",A=!1,C=!1,O=null,K=null,R=null,q=null,N=null,S=null,b=null;for(let j of D){if(C){if(j.type!=="space"&&j.type!=="newline"&&j.type!=="comma")G(j.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space");C=!1}if(O){if(W&&j.type!=="comment"&&j.type!=="newline")G(O,"TAB_AS_INDENT","Tabs are not allowed as indentation");O=null}switch(j.type){case"space":if(!$&&(F!=="doc-start"||X?.type!=="flow-collection")&&j.source.includes("\t"))O=j;Q=!0;break;case"comment":{if(!Q)G(j,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let d=j.source.substring(1)||" ";if(!U)U=d;else U+=_+d;_="",W=!1;break}case"newline":if(W){if(U)U+=j.source;else if(!S||F!=="seq-item-ind")H=!0}else _+=j.source;if(W=!0,A=!0,K||R)q=j;Q=!0;break;case"anchor":if(K)G(j,"MULTIPLE_ANCHORS","A node can have at most one anchor");if(j.source.endsWith(":"))G(j.offset+j.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0);K=j,b??(b=j.offset),W=!1,Q=!1,C=!0;break;case"tag":{if(R)G(j,"MULTIPLE_TAGS","A node can have at most one tag");R=j,b??(b=j.offset),W=!1,Q=!1,C=!0;break}case F:if(K||R)G(j,"BAD_PROP_ORDER",`Anchors and tags must be after the ${j.source} indicator`);if(S)G(j,"UNEXPECTED_TOKEN",`Unexpected ${j.source} in ${$??"collection"}`);S=j,W=F==="seq-item-ind"||F==="explicit-key-ind",Q=!1;break;case"comma":if($){if(N)G(j,"UNEXPECTED_TOKEN",`Unexpected , in ${$}`);N=j,W=!1,Q=!1;break}default:G(j,"UNEXPECTED_TOKEN",`Unexpected ${j.type} token`),W=!1,Q=!1}}let L=D[D.length-1],z=L?L.offset+L.source.length:J;if(C&&X&&X.type!=="space"&&X.type!=="newline"&&X.type!=="comma"&&(X.type!=="scalar"||X.source!==""))G(X.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space");if(O&&(W&&O.indent<=Y||X?.type==="block-map"||X?.type==="block-seq"))G(O,"TAB_AS_INDENT","Tabs are not allowed as indentation");return{comma:N,found:S,spaceBefore:H,comment:U,hasNewline:A,anchor:K,tag:R,newlineAfterProp:q,end:z,start:b??z}}Bg.resolveProps=Gg});var x5=f((Wg)=>{function PY(D){if(!D)return null;switch(D.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(D.source.includes(`
|
|
184
|
-
`))return!0;if(D.end){for(let $ of D.end)if($.type==="newline")return!0}return!1;case"flow-collection":for(let $ of D.items){for(let F of $.start)if(F.type==="newline")return!0;if($.sep){for(let F of $.sep)if(F.type==="newline")return!0}if(PY($.key)||PY($.value))return!0}return!1;default:return!0}}Wg.containsNewline=PY});var LY=f((_g)=>{var Qg=x5();function Ug(D,$,F){if($?.type==="flow-collection"){let X=$.end[0];if(X.indent===D&&(X.source==="]"||X.source==="}")&&Qg.containsNewline($))F(X,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}_g.flowIndentCheck=Ug});var jY=f((Og)=>{var qC=_D();function Kg(D,$,F){let{uniqueKeys:X}=D.options;if(X===!1)return!1;let J=typeof X==="function"?X:(G,Y)=>G===Y||qC.isScalar(G)&&qC.isScalar(Y)&&G.value===Y.value;return $.some((G)=>J(G.key,F))}Og.mapIncludes=Kg});var zC=f((qg)=>{var NC=v8(),Rg=x8(),PC=k9(),Eg=x5(),LC=LY(),Mg=jY(),jC="All mapping items must start at the same column";function Zg({composeNode:D,composeEmptyNode:$},F,X,J,G){let B=new(G?.nodeClass??Rg.YAMLMap)(F.schema);if(F.atRoot)F.atRoot=!1;let H=X.offset,W=null;for(let Q of X.items){let{start:U,key:_,sep:A,value:C}=Q,O=PC.resolveProps(U,{indicator:"explicit-key-ind",next:_??A?.[0],offset:H,onError:J,parentIndent:X.indent,startOnNewline:!0}),K=!O.found;if(K){if(_){if(_.type==="block-seq")J(H,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key");else if("indent"in _&&_.indent!==X.indent)J(H,"BAD_INDENT",jC)}if(!O.anchor&&!O.tag&&!A){if(W=O.end,O.comment)if(B.comment)B.comment+=`
|
|
185
|
-
`+O.comment;else B.comment=O.comment;continue}if(O.newlineAfterProp||Eg.containsNewline(_))J(_??U[U.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else if(O.found?.indent!==X.indent)J(H,"BAD_INDENT",jC);F.atKey=!0;let R=O.end,q=_?D(F,_,O,J):$(F,R,U,null,O,J);if(F.schema.compat)LC.flowIndentCheck(X.indent,_,J);if(F.atKey=!1,Mg.mapIncludes(F,B.items,q))J(R,"DUPLICATE_KEY","Map keys must be unique");let N=PC.resolveProps(A??[],{indicator:"map-value-ind",next:C,offset:q.range[2],onError:J,parentIndent:X.indent,startOnNewline:!_||_.type==="block-scalar"});if(H=N.end,N.found){if(K){if(C?.type==="block-map"&&!N.hasNewline)J(H,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings");if(F.options.strict&&O.start<N.found.offset-1024)J(q.range,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit block mapping key")}let S=C?D(F,C,N,J):$(F,H,A,null,N,J);if(F.schema.compat)LC.flowIndentCheck(X.indent,C,J);H=S.range[2];let b=new NC.Pair(q,S);if(F.options.keepSourceTokens)b.srcToken=Q;B.items.push(b)}else{if(K)J(q.range,"MISSING_CHAR","Implicit map keys need to be followed by map values");if(N.comment)if(q.comment)q.comment+=`
|
|
186
|
-
`+N.comment;else q.comment=N.comment;let S=new NC.Pair(q);if(F.options.keepSourceTokens)S.srcToken=Q;B.items.push(S)}}if(W&&W<H)J(W,"IMPOSSIBLE","Map comment with trailing content");return B.range=[X.offset,H,W??H],B}qg.resolveBlockMap=Zg});var IC=f((Ig)=>{var Pg=g8(),Lg=k9(),jg=LY();function zg({composeNode:D,composeEmptyNode:$},F,X,J,G){let B=new(G?.nodeClass??Pg.YAMLSeq)(F.schema);if(F.atRoot)F.atRoot=!1;if(F.atKey)F.atKey=!1;let H=X.offset,W=null;for(let{start:Q,value:U}of X.items){let _=Lg.resolveProps(Q,{indicator:"seq-item-ind",next:U,offset:H,onError:J,parentIndent:X.indent,startOnNewline:!0});if(!_.found)if(_.anchor||_.tag||U)if(U?.type==="block-seq")J(_.end,"BAD_INDENT","All sequence items must start at the same column");else J(H,"MISSING_CHAR","Sequence item without - indicator");else{if(W=_.end,_.comment)B.comment=_.comment;continue}let A=U?D(F,U,_,J):$(F,_.end,Q,null,_,J);if(F.schema.compat)jg.flowIndentCheck(X.indent,U,J);H=A.range[2],B.items.push(A)}return B.range=[X.offset,H,W??H],B}Ig.resolveBlockSeq=zg});var p6=f((Sg)=>{function wg(D,$,F,X){let J="";if(D){let G=!1,Y="";for(let B of D){let{source:H,type:W}=B;switch(W){case"space":G=!0;break;case"comment":{if(F&&!G)X(B,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let Q=H.substring(1)||" ";if(!J)J=Q;else J+=Y+Q;Y="";break}case"newline":if(J)Y+=H;G=!0;break;default:X(B,"UNEXPECTED_TOKEN",`Unexpected ${W} at node end`)}$+=H.length}}return{comment:J,offset:$}}Sg.resolveEnd=wg});var SC=f((ug)=>{var fg=_D(),kg=v8(),TC=x8(),vg=g8(),hg=p6(),wC=k9(),xg=x5(),gg=jY(),zY="Block collections are not allowed within flow collections",IY=(D)=>D&&(D.type==="block-map"||D.type==="block-seq");function yg({composeNode:D,composeEmptyNode:$},F,X,J,G){let Y=X.start.source==="{",B=Y?"flow map":"flow sequence",W=new(G?.nodeClass??(Y?TC.YAMLMap:vg.YAMLSeq))(F.schema);W.flow=!0;let Q=F.atRoot;if(Q)F.atRoot=!1;if(F.atKey)F.atKey=!1;let U=X.offset+X.start.source.length;for(let K=0;K<X.items.length;++K){let R=X.items[K],{start:q,key:N,sep:S,value:b}=R,L=wC.resolveProps(q,{flow:B,indicator:"explicit-key-ind",next:N??S?.[0],offset:U,onError:J,parentIndent:X.indent,startOnNewline:!1});if(!L.found){if(!L.anchor&&!L.tag&&!S&&!b){if(K===0&&L.comma)J(L.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${B}`);else if(K<X.items.length-1)J(L.start,"UNEXPECTED_TOKEN",`Unexpected empty item in ${B}`);if(L.comment)if(W.comment)W.comment+=`
|
|
187
|
-
`+L.comment;else W.comment=L.comment;U=L.end;continue}if(!Y&&F.options.strict&&xg.containsNewline(N))J(N,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line")}if(K===0){if(L.comma)J(L.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${B}`)}else{if(!L.comma)J(L.start,"MISSING_CHAR",`Missing , between ${B} items`);if(L.comment){let z="";D:for(let j of q)switch(j.type){case"comma":case"space":break;case"comment":z=j.source.substring(1);break D;default:break D}if(z){let j=W.items[W.items.length-1];if(fg.isPair(j))j=j.value??j.key;if(j.comment)j.comment+=`
|
|
188
|
-
`+z;else j.comment=z;L.comment=L.comment.substring(z.length+1)}}}if(!Y&&!S&&!L.found){let z=b?D(F,b,L,J):$(F,L.end,S,null,L,J);if(W.items.push(z),U=z.range[2],IY(b))J(z.range,"BLOCK_IN_FLOW",zY)}else{F.atKey=!0;let z=L.end,j=N?D(F,N,L,J):$(F,z,q,null,L,J);if(IY(N))J(j.range,"BLOCK_IN_FLOW",zY);F.atKey=!1;let d=wC.resolveProps(S??[],{flow:B,indicator:"map-value-ind",next:b,offset:j.range[2],onError:J,parentIndent:X.indent,startOnNewline:!1});if(d.found){if(!Y&&!L.found&&F.options.strict){if(S)for(let $D of S){if($D===d.found)break;if($D.type==="newline"){J($D,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line");break}}if(L.start<d.found.offset-1024)J(d.found,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit flow sequence key")}}else if(b)if("source"in b&&b.source?.[0]===":")J(b,"MISSING_CHAR",`Missing space after : in ${B}`);else J(d.start,"MISSING_CHAR",`Missing , or : between ${B} items`);let VD=b?D(F,b,d,J):d.found?$(F,d.end,S,null,d,J):null;if(VD){if(IY(b))J(VD.range,"BLOCK_IN_FLOW",zY)}else if(d.comment)if(j.comment)j.comment+=`
|
|
189
|
-
`+d.comment;else j.comment=d.comment;let QD=new kg.Pair(j,VD);if(F.options.keepSourceTokens)QD.srcToken=R;if(Y){let $D=W;if(gg.mapIncludes(F,$D.items,j))J(z,"DUPLICATE_KEY","Map keys must be unique");$D.items.push(QD)}else{let $D=new TC.YAMLMap(F.schema);$D.flow=!0,$D.items.push(QD);let rD=(VD??j).range;$D.range=[j.range[0],rD[1],rD[2]],W.items.push($D)}U=VD?VD.range[2]:d.end}}let _=Y?"}":"]",[A,...C]=X.end,O=U;if(A?.source===_)O=A.offset+A.source.length;else{let K=B[0].toUpperCase()+B.substring(1),R=Q?`${K} must end with a ${_}`:`${K} in block collection must be sufficiently indented and end with a ${_}`;if(J(U,Q?"MISSING_CHAR":"BAD_INDENT",R),A&&A.source.length!==1)C.unshift(A)}if(C.length>0){let K=hg.resolveEnd(C,O,F.options.strict,J);if(K.comment)if(W.comment)W.comment+=`
|
|
190
|
-
`+K.comment;else W.comment=K.comment;W.range=[X.offset,O,K.offset]}else W.range=[X.offset,O,O];return W}ug.resolveFlowCollection=yg});var bC=f((og)=>{var pg=_D(),cg=lD(),dg=x8(),lg=g8(),ig=zC(),ng=IC(),sg=SC();function TY(D,$,F,X,J,G){let Y=F.type==="block-map"?ig.resolveBlockMap(D,$,F,X,G):F.type==="block-seq"?ng.resolveBlockSeq(D,$,F,X,G):sg.resolveFlowCollection(D,$,F,X,G),B=Y.constructor;if(J==="!"||J===B.tagName)return Y.tag=B.tagName,Y;if(J)Y.tag=J;return Y}function rg(D,$,F,X,J){let G=X.tag,Y=!G?null:$.directives.tagName(G.source,(_)=>J(G,"TAG_RESOLVE_FAILED",_));if(F.type==="block-seq"){let{anchor:_,newlineAfterProp:A}=X,C=_&&G?_.offset>G.offset?_:G:_??G;if(C&&(!A||A.offset<C.offset))J(C,"MISSING_CHAR","Missing newline after block sequence props")}let B=F.type==="block-map"?"map":F.type==="block-seq"?"seq":F.start.source==="{"?"map":"seq";if(!G||!Y||Y==="!"||Y===dg.YAMLMap.tagName&&B==="map"||Y===lg.YAMLSeq.tagName&&B==="seq")return TY(D,$,F,J,Y);let H=$.schema.tags.find((_)=>_.tag===Y&&_.collection===B);if(!H){let _=$.schema.knownTags[Y];if(_?.collection===B)$.schema.tags.push(Object.assign({},_,{default:!1})),H=_;else{if(_)J(G,"BAD_COLLECTION_TYPE",`${_.tag} used for ${B} collection, but expects ${_.collection??"scalar"}`,!0);else J(G,"TAG_RESOLVE_FAILED",`Unresolved tag: ${Y}`,!0);return TY(D,$,F,J,Y)}}let W=TY(D,$,F,J,Y,H),Q=H.resolve?.(W,(_)=>J(G,"TAG_RESOLVE_FAILED",_),$.options)??W,U=pg.isNode(Q)?Q:new cg.Scalar(Q);if(U.range=W.range,U.tag=Y,H?.format)U.format=H.format;return U}og.composeCollection=rg});var SY=f(($y)=>{var wY=lD();function tg(D,$,F){let X=$.offset,J=eg($,D.options.strict,F);if(!J)return{value:"",type:null,comment:"",range:[X,X,X]};let G=J.mode===">"?wY.Scalar.BLOCK_FOLDED:wY.Scalar.BLOCK_LITERAL,Y=$.source?Dy($.source):[],B=Y.length;for(let O=Y.length-1;O>=0;--O){let K=Y[O][1];if(K===""||K==="\r")B=O;else break}if(B===0){let O=J.chomp==="+"&&Y.length>0?`
|
|
191
|
-
`.repeat(Math.max(1,Y.length-1)):"",K=X+J.length;if($.source)K+=$.source.length;return{value:O,type:G,comment:J.comment,range:[X,K,K]}}let H=$.indent+J.indent,W=$.offset+J.length,Q=0;for(let O=0;O<B;++O){let[K,R]=Y[O];if(R===""||R==="\r"){if(J.indent===0&&K.length>H)H=K.length}else{if(K.length<H)F(W+K.length,"MISSING_CHAR","Block scalars with more-indented leading empty lines must use an explicit indentation indicator");if(J.indent===0)H=K.length;if(Q=O,H===0&&!D.atRoot)F(W,"BAD_INDENT","Block scalar values in collections must be indented");break}W+=K.length+R.length+1}for(let O=Y.length-1;O>=B;--O)if(Y[O][0].length>H)B=O+1;let U="",_="",A=!1;for(let O=0;O<Q;++O)U+=Y[O][0].slice(H)+`
|
|
192
|
-
`;for(let O=Q;O<B;++O){let[K,R]=Y[O];W+=K.length+R.length+1;let q=R[R.length-1]==="\r";if(q)R=R.slice(0,-1);if(R&&K.length<H){let S=`Block scalar lines must not be less indented than their ${J.indent?"explicit indentation indicator":"first line"}`;F(W-R.length-(q?2:1),"BAD_INDENT",S),K=""}if(G===wY.Scalar.BLOCK_LITERAL)U+=_+K.slice(H)+R,_=`
|
|
193
|
-
`;else if(K.length>H||R[0]==="\t"){if(_===" ")_=`
|
|
194
|
-
`;else if(!A&&_===`
|
|
195
|
-
`)_=`
|
|
196
|
-
|
|
197
|
-
`;U+=_+K.slice(H)+R,_=`
|
|
198
|
-
`,A=!0}else if(R==="")if(_===`
|
|
199
|
-
`)U+=`
|
|
200
|
-
`;else _=`
|
|
201
|
-
`;else U+=_+R,_=" ",A=!1}switch(J.chomp){case"-":break;case"+":for(let O=B;O<Y.length;++O)U+=`
|
|
202
|
-
`+Y[O][0].slice(H);if(U[U.length-1]!==`
|
|
203
|
-
`)U+=`
|
|
204
|
-
`;break;default:U+=`
|
|
205
|
-
`}let C=X+J.length+$.source.length;return{value:U,type:G,comment:J.comment,range:[X,C,C]}}function eg({offset:D,props:$},F,X){if($[0].type!=="block-scalar-header")return X($[0],"IMPOSSIBLE","Block scalar header not found"),null;let{source:J}=$[0],G=J[0],Y=0,B="",H=-1;for(let _=1;_<J.length;++_){let A=J[_];if(!B&&(A==="-"||A==="+"))B=A;else{let C=Number(A);if(!Y&&C)Y=C;else if(H===-1)H=D+_}}if(H!==-1)X(H,"UNEXPECTED_TOKEN",`Block scalar header includes extra characters: ${J}`);let W=!1,Q="",U=J.length;for(let _=1;_<$.length;++_){let A=$[_];switch(A.type){case"space":W=!0;case"newline":U+=A.source.length;break;case"comment":if(F&&!W)X(A,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");U+=A.source.length,Q=A.source.substring(1);break;case"error":X(A,"UNEXPECTED_TOKEN",A.message),U+=A.source.length;break;default:{let C=`Unexpected token in block scalar header: ${A.type}`;X(A,"UNEXPECTED_TOKEN",C);let O=A.source;if(O&&typeof O==="string")U+=O.length}}}return{mode:G,indent:Y,chomp:B,comment:Q,length:U}}function Dy(D){let $=D.split(/\n( *)/),F=$[0],X=F.match(/^( *)/),G=[X?.[1]?[X[1],F.slice(X[1].length)]:["",F]];for(let Y=1;Y<$.length;Y+=2)G.push([$[Y],$[Y+1]]);return G}$y.resolveBlockScalar=tg});var fY=f((Qy)=>{var bY=lD(),Xy=p6();function Jy(D,$,F){let{offset:X,type:J,source:G,end:Y}=D,B,H,W=(_,A,C)=>F(X+_,A,C);switch(J){case"scalar":B=bY.Scalar.PLAIN,H=Yy(G,W);break;case"single-quoted-scalar":B=bY.Scalar.QUOTE_SINGLE,H=Gy(G,W);break;case"double-quoted-scalar":B=bY.Scalar.QUOTE_DOUBLE,H=By(G,W);break;default:return F(D,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${J}`),{value:"",type:null,comment:"",range:[X,X+G.length,X+G.length]}}let Q=X+G.length,U=Xy.resolveEnd(Y,Q,$,F);return{value:H,type:B,comment:U.comment,range:[X,Q,U.offset]}}function Yy(D,$){let F="";switch(D[0]){case"\t":F="a tab character";break;case",":F="flow indicator character ,";break;case"%":F="directive indicator character %";break;case"|":case">":{F=`block scalar indicator ${D[0]}`;break}case"@":case"`":{F=`reserved character ${D[0]}`;break}}if(F)$(0,"BAD_SCALAR_START",`Plain value cannot start with ${F}`);return fC(D)}function Gy(D,$){if(D[D.length-1]!=="'"||D.length===1)$(D.length,"MISSING_CHAR","Missing closing 'quote");return fC(D.slice(1,-1)).replace(/''/g,"'")}function fC(D){let $,F;try{$=new RegExp(`(.*?)(?<![ ])[ ]*\r?
|
|
206
|
-
`,"sy"),F=new RegExp(`[ ]*(.*?)(?:(?<![ ])[ ]*)?\r?
|
|
207
|
-
`,"sy")}catch{$=/(.*?)[ \t]*\r?\n/sy,F=/[ \t]*(.*?)[ \t]*\r?\n/sy}let X=$.exec(D);if(!X)return D;let J=X[1],G=" ",Y=$.lastIndex;F.lastIndex=Y;while(X=F.exec(D)){if(X[1]==="")if(G===`
|
|
208
|
-
`)J+=G;else G=`
|
|
209
|
-
`;else J+=G+X[1],G=" ";Y=F.lastIndex}let B=/[ \t]*(.*)/sy;return B.lastIndex=Y,X=B.exec(D),J+G+(X?.[1]??"")}function By(D,$){let F="";for(let X=1;X<D.length-1;++X){let J=D[X];if(J==="\r"&&D[X+1]===`
|
|
210
|
-
`)continue;if(J===`
|
|
211
|
-
`){let{fold:G,offset:Y}=Hy(D,X);F+=G,X=Y}else if(J==="\\"){let G=D[++X],Y=Wy[G];if(Y)F+=Y;else if(G===`
|
|
212
|
-
`){G=D[X+1];while(G===" "||G==="\t")G=D[++X+1]}else if(G==="\r"&&D[X+1]===`
|
|
213
|
-
`){G=D[++X+1];while(G===" "||G==="\t")G=D[++X+1]}else if(G==="x"||G==="u"||G==="U"){let B={x:2,u:4,U:8}[G];F+=Vy(D,X+1,B,$),X+=B}else{let B=D.substr(X-1,2);$(X-1,"BAD_DQ_ESCAPE",`Invalid escape sequence ${B}`),F+=B}}else if(J===" "||J==="\t"){let G=X,Y=D[X+1];while(Y===" "||Y==="\t")Y=D[++X+1];if(Y!==`
|
|
214
|
-
`&&!(Y==="\r"&&D[X+2]===`
|
|
215
|
-
`))F+=X>G?D.slice(G,X+1):J}else F+=J}if(D[D.length-1]!=='"'||D.length===1)$(D.length,"MISSING_CHAR",'Missing closing "quote');return F}function Hy(D,$){let F="",X=D[$+1];while(X===" "||X==="\t"||X===`
|
|
216
|
-
`||X==="\r"){if(X==="\r"&&D[$+2]!==`
|
|
217
|
-
`)break;if(X===`
|
|
218
|
-
`)F+=`
|
|
219
|
-
`;$+=1,X=D[$+1]}if(!F)F=" ";return{fold:F,offset:$}}var Wy={"0":"\x00",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:`
|
|
220
|
-
`,r:"\r",t:"\t",v:"\v",N:"\x85",_:"\xA0",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\","\t":"\t"};function Vy(D,$,F,X){let J=D.substr($,F),Y=J.length===F&&/^[0-9a-fA-F]+$/.test(J)?parseInt(J,16):NaN;if(isNaN(Y)){let B=D.substr($-2,F+2);return X($-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${B}`),B}return String.fromCodePoint(Y)}Qy.resolveFlowScalar=Jy});var vC=f((Ry)=>{var N1=_D(),kC=lD(),_y=SY(),Ay=fY();function Ky(D,$,F,X){let{value:J,type:G,comment:Y,range:B}=$.type==="block-scalar"?_y.resolveBlockScalar(D,$,X):Ay.resolveFlowScalar($,D.options.strict,X),H=F?D.directives.tagName(F.source,(U)=>X(F,"TAG_RESOLVE_FAILED",U)):null,W;if(D.options.stringKeys&&D.atKey)W=D.schema[N1.SCALAR];else if(H)W=Oy(D.schema,J,H,F,X);else if($.type==="scalar")W=Cy(D,J,$,X);else W=D.schema[N1.SCALAR];let Q;try{let U=W.resolve(J,(_)=>X(F??$,"TAG_RESOLVE_FAILED",_),D.options);Q=N1.isScalar(U)?U:new kC.Scalar(U)}catch(U){let _=U instanceof Error?U.message:String(U);X(F??$,"TAG_RESOLVE_FAILED",_),Q=new kC.Scalar(J)}if(Q.range=B,Q.source=J,G)Q.type=G;if(H)Q.tag=H;if(W.format)Q.format=W.format;if(Y)Q.comment=Y;return Q}function Oy(D,$,F,X,J){if(F==="!")return D[N1.SCALAR];let G=[];for(let B of D.tags)if(!B.collection&&B.tag===F)if(B.default&&B.test)G.push(B);else return B;for(let B of G)if(B.test?.test($))return B;let Y=D.knownTags[F];if(Y&&!Y.collection)return D.tags.push(Object.assign({},Y,{default:!1,test:void 0})),Y;return J(X,"TAG_RESOLVE_FAILED",`Unresolved tag: ${F}`,F!=="tag:yaml.org,2002:str"),D[N1.SCALAR]}function Cy({atKey:D,directives:$,schema:F},X,J,G){let Y=F.tags.find((B)=>(B.default===!0||D&&B.default==="key")&&B.test?.test(X))||F[N1.SCALAR];if(F.compat){let B=F.compat.find((H)=>H.default&&H.test?.test(X))??F[N1.SCALAR];if(Y.tag!==B.tag){let H=$.tagString(Y.tag),W=$.tagString(B.tag),Q=`Value may be parsed as either ${H} or ${W}`;G(J,"TAG_RESOLVE_FAILED",Q,!0)}}return Y}Ry.composeScalar=Ky});var hC=f((Zy)=>{function My(D,$,F){if($){F??(F=$.length);for(let X=F-1;X>=0;--X){let J=$[X];switch(J.type){case"space":case"comment":case"newline":D-=J.source.length;continue}J=$[++X];while(J?.type==="space")D+=J.source.length,J=$[++X];break}}return D}Zy.emptyScalarPosition=My});var yC=f((wy)=>{var Ny=C9(),Py=_D(),Ly=bC(),xC=vC(),jy=p6(),zy=hC(),Iy={composeNode:gC,composeEmptyNode:kY};function gC(D,$,F,X){let J=D.atKey,{spaceBefore:G,comment:Y,anchor:B,tag:H}=F,W,Q=!0;switch($.type){case"alias":if(W=Ty(D,$,X),B||H)X($,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":if(W=xC.composeScalar(D,$,H,X),B)W.anchor=B.source.substring(1);break;case"block-map":case"block-seq":case"flow-collection":try{if(W=Ly.composeCollection(Iy,D,$,F,X),B)W.anchor=B.source.substring(1)}catch(U){let _=U instanceof Error?U.message:String(U);X($,"RESOURCE_EXHAUSTION",_)}break;default:{let U=$.type==="error"?$.message:`Unsupported token (type: ${$.type})`;X($,"UNEXPECTED_TOKEN",U),Q=!1}}if(W??(W=kY(D,$.offset,void 0,null,F,X)),B&&W.anchor==="")X(B,"BAD_ALIAS","Anchor cannot be an empty string");if(J&&D.options.stringKeys&&(!Py.isScalar(W)||typeof W.value!=="string"||W.tag&&W.tag!=="tag:yaml.org,2002:str"))X(H??$,"NON_STRING_KEY","With stringKeys, all keys must be strings");if(G)W.spaceBefore=!0;if(Y)if($.type==="scalar"&&$.source==="")W.comment=Y;else W.commentBefore=Y;if(D.options.keepSourceTokens&&Q)W.srcToken=$;return W}function kY(D,$,F,X,{spaceBefore:J,comment:G,anchor:Y,tag:B,end:H},W){let Q={type:"scalar",offset:zy.emptyScalarPosition($,F,X),indent:-1,source:""},U=xC.composeScalar(D,Q,B,W);if(Y){if(U.anchor=Y.source.substring(1),U.anchor==="")W(Y,"BAD_ALIAS","Anchor cannot be an empty string")}if(J)U.spaceBefore=!0;if(G)U.comment=G,U.range[2]=H;return U}function Ty({options:D},{offset:$,source:F,end:X},J){let G=new Ny.Alias(F.substring(1));if(G.source==="")J($,"BAD_ALIAS","Alias cannot be an empty string");if(G.source.endsWith(":"))J($+F.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let Y=$+F.length,B=jy.resolveEnd(X,Y,D.strict,J);if(G.range=[$,Y,B.offset],B.comment)G.comment=B.comment;return G}wy.composeEmptyNode=kY;wy.composeNode=gC});var mC=f((xy)=>{var fy=b9(),uC=yC(),ky=p6(),vy=k9();function hy(D,$,{offset:F,start:X,value:J,end:G},Y){let B=Object.assign({_directives:$},D),H=new fy.Document(void 0,B),W={atKey:!1,atRoot:!0,directives:H.directives,options:H.options,schema:H.schema},Q=vy.resolveProps(X,{indicator:"doc-start",next:J??G?.[0],offset:F,onError:Y,parentIndent:0,startOnNewline:!0});if(Q.found){if(H.directives.docStart=!0,J&&(J.type==="block-map"||J.type==="block-seq")&&!Q.hasNewline)Y(Q.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")}H.contents=J?uC.composeNode(W,J,Q,Y):uC.composeEmptyNode(W,Q.end,X,null,Q,Y);let U=H.contents.range[2],_=ky.resolveEnd(G,U,!1,Y);if(_.comment)H.comment=_.comment;return H.range=[F,U,_.offset],H}xy.composeDoc=hy});var vY=f((dy)=>{var yy=B8("process"),uy=yJ(),my=b9(),v9=f9(),pC=_D(),py=mC(),cy=p6();function h9(D){if(typeof D==="number")return[D,D+1];if(Array.isArray(D))return D.length===2?D:[D[0],D[1]];let{offset:$,source:F}=D;return[$,$+(typeof F==="string"?F.length:1)]}function cC(D){let $="",F=!1,X=!1;for(let J=0;J<D.length;++J){let G=D[J];switch(G[0]){case"#":$+=($===""?"":X?`
|
|
221
|
-
|
|
222
|
-
`:`
|
|
223
|
-
`)+(G.substring(1)||" "),F=!0,X=!1;break;case"%":if(D[J+1]?.[0]!=="#")J+=1;F=!1;break;default:if(!F)X=!0;F=!1}}return{comment:$,afterEmptyLine:X}}class dC{constructor(D={}){this.doc=null,this.atDirectives=!1,this.prelude=[],this.errors=[],this.warnings=[],this.onError=($,F,X,J)=>{let G=h9($);if(J)this.warnings.push(new v9.YAMLWarning(G,F,X));else this.errors.push(new v9.YAMLParseError(G,F,X))},this.directives=new uy.Directives({version:D.version||"1.2"}),this.options=D}decorate(D,$){let{comment:F,afterEmptyLine:X}=cC(this.prelude);if(F){let J=D.contents;if($)D.comment=D.comment?`${D.comment}
|
|
224
|
-
${F}`:F;else if(X||D.directives.docStart||!J)D.commentBefore=F;else if(pC.isCollection(J)&&!J.flow&&J.items.length>0){let G=J.items[0];if(pC.isPair(G))G=G.key;let Y=G.commentBefore;G.commentBefore=Y?`${F}
|
|
225
|
-
${Y}`:F}else{let G=J.commentBefore;J.commentBefore=G?`${F}
|
|
226
|
-
${G}`:F}}if($)Array.prototype.push.apply(D.errors,this.errors),Array.prototype.push.apply(D.warnings,this.warnings);else D.errors=this.errors,D.warnings=this.warnings;this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:cC(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(D,$=!1,F=-1){for(let X of D)yield*this.next(X);yield*this.end($,F)}*next(D){if(yy.env.LOG_STREAM)console.dir(D,{depth:null});switch(D.type){case"directive":this.directives.add(D.source,($,F,X)=>{let J=h9(D);J[0]+=$,this.onError(J,"BAD_DIRECTIVE",F,X)}),this.prelude.push(D.source),this.atDirectives=!0;break;case"document":{let $=py.composeDoc(this.options,this.directives,D,this.onError);if(this.atDirectives&&!$.directives.docStart)this.onError(D,"MISSING_CHAR","Missing directives-end/doc-start indicator line");if(this.decorate($,!1),this.doc)yield this.doc;this.doc=$,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(D.source);break;case"error":{let $=D.source?`${D.message}: ${JSON.stringify(D.source)}`:D.message,F=new v9.YAMLParseError(h9(D),"UNEXPECTED_TOKEN",$);if(this.atDirectives||!this.doc)this.errors.push(F);else this.doc.errors.push(F);break}case"doc-end":{if(!this.doc){this.errors.push(new v9.YAMLParseError(h9(D),"UNEXPECTED_TOKEN","Unexpected doc-end without preceding document"));break}this.doc.directives.docEnd=!0;let $=cy.resolveEnd(D.end,D.offset+D.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),$.comment){let F=this.doc.comment;this.doc.comment=F?`${F}
|
|
227
|
-
${$.comment}`:$.comment}this.doc.range[2]=$.offset;break}default:this.errors.push(new v9.YAMLParseError(h9(D),"UNEXPECTED_TOKEN",`Unsupported token ${D.type}`))}}*end(D=!1,$=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(D){let F=Object.assign({_directives:this.directives},this.options),X=new my.Document(void 0,F);if(this.atDirectives)this.onError($,"MISSING_CHAR","Missing directives-end indicator line");X.range=[0,$,$],this.decorate(X,!1),yield X}}}dy.Composer=dC});var nC=f((ey)=>{var iy=SY(),ny=fY(),sy=f9(),lC=Z9();function ry(D,$=!0,F){if(D){let X=(J,G,Y)=>{let B=typeof J==="number"?J:Array.isArray(J)?J[0]:J.offset;if(F)F(B,G,Y);else throw new sy.YAMLParseError([B,B+1],G,Y)};switch(D.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return ny.resolveFlowScalar(D,$,X);case"block-scalar":return iy.resolveBlockScalar({options:{strict:$}},D,X)}}return null}function oy(D,$){let{implicitKey:F=!1,indent:X,inFlow:J=!1,offset:G=-1,type:Y="PLAIN"}=$,B=lC.stringifyString({type:Y,value:D},{implicitKey:F,indent:X>0?" ".repeat(X):"",inFlow:J,options:{blockQuote:!0,lineWidth:-1}}),H=$.end??[{type:"newline",offset:-1,indent:X,source:`
|
|
228
|
-
`}];switch(B[0]){case"|":case">":{let W=B.indexOf(`
|
|
229
|
-
`),Q=B.substring(0,W),U=B.substring(W+1)+`
|
|
230
|
-
`,_=[{type:"block-scalar-header",offset:G,indent:X,source:Q}];if(!iC(_,H))_.push({type:"newline",offset:-1,indent:X,source:`
|
|
231
|
-
`});return{type:"block-scalar",offset:G,indent:X,props:_,source:U}}case'"':return{type:"double-quoted-scalar",offset:G,indent:X,source:B,end:H};case"'":return{type:"single-quoted-scalar",offset:G,indent:X,source:B,end:H};default:return{type:"scalar",offset:G,indent:X,source:B,end:H}}}function ay(D,$,F={}){let{afterKey:X=!1,implicitKey:J=!1,inFlow:G=!1,type:Y}=F,B="indent"in D?D.indent:null;if(X&&typeof B==="number")B+=2;if(!Y)switch(D.type){case"single-quoted-scalar":Y="QUOTE_SINGLE";break;case"double-quoted-scalar":Y="QUOTE_DOUBLE";break;case"block-scalar":{let W=D.props[0];if(W.type!=="block-scalar-header")throw Error("Invalid block scalar header");Y=W.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:Y="PLAIN"}let H=lC.stringifyString({type:Y,value:$},{implicitKey:J||B===null,indent:B!==null&&B>0?" ".repeat(B):"",inFlow:G,options:{blockQuote:!0,lineWidth:-1}});switch(H[0]){case"|":case">":ty(D,H);break;case'"':hY(D,H,"double-quoted-scalar");break;case"'":hY(D,H,"single-quoted-scalar");break;default:hY(D,H,"scalar")}}function ty(D,$){let F=$.indexOf(`
|
|
232
|
-
`),X=$.substring(0,F),J=$.substring(F+1)+`
|
|
233
|
-
`;if(D.type==="block-scalar"){let G=D.props[0];if(G.type!=="block-scalar-header")throw Error("Invalid block scalar header");G.source=X,D.source=J}else{let{offset:G}=D,Y="indent"in D?D.indent:-1,B=[{type:"block-scalar-header",offset:G,indent:Y,source:X}];if(!iC(B,"end"in D?D.end:void 0))B.push({type:"newline",offset:-1,indent:Y,source:`
|
|
234
|
-
`});for(let H of Object.keys(D))if(H!=="type"&&H!=="offset")delete D[H];Object.assign(D,{type:"block-scalar",indent:Y,props:B,source:J})}}function iC(D,$){if($)for(let F of $)switch(F.type){case"space":case"comment":D.push(F);break;case"newline":return D.push(F),!0}return!1}function hY(D,$,F){switch(D.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":D.type=F,D.source=$;break;case"block-scalar":{let X=D.props.slice(1),J=$.length;if(D.props[0].type==="block-scalar-header")J-=D.props[0].source.length;for(let G of X)G.offset+=J;delete D.props,Object.assign(D,{type:F,source:$,end:X});break}case"block-map":case"block-seq":{let J={type:"newline",offset:D.offset+$.length,indent:D.indent,source:`
|
|
235
|
-
`};delete D.items,Object.assign(D,{type:F,source:$,end:[J]});break}default:{let X="indent"in D?D.indent:-1,J="end"in D&&Array.isArray(D.end)?D.end.filter((G)=>G.type==="space"||G.type==="comment"||G.type==="newline"):[];for(let G of Object.keys(D))if(G!=="type"&&G!=="offset")delete D[G];Object.assign(D,{type:F,indent:X,source:$,end:J})}}}ey.createScalarToken=oy;ey.resolveAsScalar=ry;ey.setScalarValue=ay});var sC=f((Ju)=>{var Xu=(D)=>("type"in D)?y5(D):g5(D);function y5(D){switch(D.type){case"block-scalar":{let $="";for(let F of D.props)$+=y5(F);return $+D.source}case"block-map":case"block-seq":{let $="";for(let F of D.items)$+=g5(F);return $}case"flow-collection":{let $=D.start.source;for(let F of D.items)$+=g5(F);for(let F of D.end)$+=F.source;return $}case"document":{let $=g5(D);if(D.end)for(let F of D.end)$+=F.source;return $}default:{let $=D.source;if("end"in D&&D.end)for(let F of D.end)$+=F.source;return $}}}function g5({start:D,key:$,sep:F,value:X}){let J="";for(let G of D)J+=G.source;if($)J+=y5($);if(F)for(let G of F)J+=G.source;if(X)J+=y5(X);return J}Ju.stringify=Xu});var aC=f((Bu)=>{var xY=Symbol("break visit"),Gu=Symbol("skip children"),rC=Symbol("remove item");function P1(D,$){if("type"in D&&D.type==="document")D={start:D.start,value:D.value};oC(Object.freeze([]),D,$)}P1.BREAK=xY;P1.SKIP=Gu;P1.REMOVE=rC;P1.itemAtPath=(D,$)=>{let F=D;for(let[X,J]of $){let G=F?.[X];if(G&&"items"in G)F=G.items[J];else return}return F};P1.parentCollection=(D,$)=>{let F=P1.itemAtPath(D,$.slice(0,-1)),X=$[$.length-1][0],J=F?.[X];if(J&&"items"in J)return J;throw Error("Parent collection not found")};function oC(D,$,F){let X=F($,D);if(typeof X==="symbol")return X;for(let J of["key","value"]){let G=$[J];if(G&&"items"in G){for(let Y=0;Y<G.items.length;++Y){let B=oC(Object.freeze(D.concat([[J,Y]])),G.items[Y],F);if(typeof B==="number")Y=B-1;else if(B===xY)return xY;else if(B===rC)G.items.splice(Y,1),Y-=1}if(typeof X==="function"&&J==="key")X=X($,D)}}return typeof X==="function"?X($,D):X}Bu.visit=P1});var u5=f((Ku)=>{var gY=nC(),Wu=sC(),Vu=aC(),yY="\uFEFF",uY="\x02",mY="\x18",pY="\x1F",Qu=(D)=>!!D&&("items"in D),Uu=(D)=>!!D&&(D.type==="scalar"||D.type==="single-quoted-scalar"||D.type==="double-quoted-scalar"||D.type==="block-scalar");function _u(D){switch(D){case yY:return"<BOM>";case uY:return"<DOC>";case mY:return"<FLOW_END>";case pY:return"<SCALAR>";default:return JSON.stringify(D)}}function Au(D){switch(D){case yY:return"byte-order-mark";case uY:return"doc-mode";case mY:return"flow-error-end";case pY:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case`
|
|
236
|
-
`:case`\r
|
|
237
|
-
`:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(D[0]){case" ":case"\t":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}Ku.createScalarToken=gY.createScalarToken;Ku.resolveAsScalar=gY.resolveAsScalar;Ku.setScalarValue=gY.setScalarValue;Ku.stringify=Wu.stringify;Ku.visit=Vu.visit;Ku.BOM=yY;Ku.DOCUMENT=uY;Ku.FLOW_END=mY;Ku.SCALAR=pY;Ku.isCollection=Qu;Ku.isScalar=Uu;Ku.prettyToken=_u;Ku.tokenType=Au});var dY=f((Su)=>{var x9=u5();function q2(D){switch(D){case void 0:case" ":case`
|
|
238
|
-
`:case"\r":case"\t":return!0;default:return!1}}var tC=new Set("0123456789ABCDEFabcdef"),Tu=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),m5=new Set(",[]{}"),wu=new Set(` ,[]{}
|
|
239
|
-
\r `),cY=(D)=>!D||wu.has(D);class eC{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(D,$=!1){if(D){if(typeof D!=="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+D:D,this.lineEndPos=null}this.atEnd=!$;let F=this.next??"stream";while(F&&($||this.hasChars(1)))F=yield*this.parseNext(F)}atLineEnd(){let D=this.pos,$=this.buffer[D];while($===" "||$==="\t")$=this.buffer[++D];if(!$||$==="#"||$===`
|
|
240
|
-
`)return!0;if($==="\r")return this.buffer[D+1]===`
|
|
241
|
-
`;return!1}charAt(D){return this.buffer[this.pos+D]}continueScalar(D){let $=this.buffer[D];if(this.indentNext>0){let F=0;while($===" ")$=this.buffer[++F+D];if($==="\r"){let X=this.buffer[F+D+1];if(X===`
|
|
242
|
-
`||!X&&!this.atEnd)return D+F+1}return $===`
|
|
243
|
-
`||F>=this.indentNext||!$&&!this.atEnd?D+F:-1}if($==="-"||$==="."){let F=this.buffer.substr(D,3);if((F==="---"||F==="...")&&q2(this.buffer[D+3]))return-1}return D}getLine(){let D=this.lineEndPos;if(typeof D!=="number"||D!==-1&&D<this.pos)D=this.buffer.indexOf(`
|
|
244
|
-
`,this.pos),this.lineEndPos=D;if(D===-1)return this.atEnd?this.buffer.substring(this.pos):null;if(this.buffer[D-1]==="\r")D-=1;return this.buffer.substring(this.pos,D)}hasChars(D){return this.pos+D<=this.buffer.length}setNext(D){return this.buffer=this.buffer.substring(this.pos),this.pos=0,this.lineEndPos=null,this.next=D,null}peek(D){return this.buffer.substr(this.pos,D)}*parseNext(D){switch(D){case"stream":return yield*this.parseStream();case"line-start":return yield*this.parseLineStart();case"block-start":return yield*this.parseBlockStart();case"doc":return yield*this.parseDocument();case"flow":return yield*this.parseFlowCollection();case"quoted-scalar":return yield*this.parseQuotedScalar();case"block-scalar":return yield*this.parseBlockScalar();case"plain-scalar":return yield*this.parsePlainScalar()}}*parseStream(){let D=this.getLine();if(D===null)return this.setNext("stream");if(D[0]===x9.BOM)yield*this.pushCount(1),D=D.substring(1);if(D[0]==="%"){let $=D.length,F=D.indexOf("#");while(F!==-1){let J=D[F-1];if(J===" "||J==="\t"){$=F-1;break}else F=D.indexOf("#",F+1)}while(!0){let J=D[$-1];if(J===" "||J==="\t")$-=1;else break}let X=(yield*this.pushCount($))+(yield*this.pushSpaces(!0));return yield*this.pushCount(D.length-X),this.pushNewline(),"stream"}if(this.atLineEnd()){let $=yield*this.pushSpaces(!0);return yield*this.pushCount(D.length-$),yield*this.pushNewline(),"stream"}return yield x9.DOCUMENT,yield*this.parseLineStart()}*parseLineStart(){let D=this.charAt(0);if(!D&&!this.atEnd)return this.setNext("line-start");if(D==="-"||D==="."){if(!this.atEnd&&!this.hasChars(4))return this.setNext("line-start");let $=this.peek(3);if(($==="---"||$==="...")&&q2(this.charAt(3)))return yield*this.pushCount(3),this.indentValue=0,this.indentNext=0,$==="---"?"doc":"stream"}if(this.indentValue=yield*this.pushSpaces(!1),this.indentNext>this.indentValue&&!q2(this.charAt(1)))this.indentNext=this.indentValue;return yield*this.parseBlockStart()}*parseBlockStart(){let[D,$]=this.peek(2);if(!$&&!this.atEnd)return this.setNext("block-start");if((D==="-"||D==="?"||D===":")&&q2($)){let F=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=F,yield*this.parseBlockStart()}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let D=this.getLine();if(D===null)return this.setNext("doc");let $=yield*this.pushIndicators();switch(D[$]){case"#":yield*this.pushCount(D.length-$);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil(cY),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return $+=yield*this.parseBlockScalarHeader(),$+=yield*this.pushSpaces(!0),yield*this.pushCount(D.length-$),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let D,$,F=-1;do{if(D=yield*this.pushNewline(),D>0)$=yield*this.pushSpaces(!1),this.indentValue=F=$;else $=0;$+=yield*this.pushSpaces(!0)}while(D+$>0);let X=this.getLine();if(X===null)return this.setNext("flow");if(F!==-1&&F<this.indentNext&&X[0]!=="#"||F===0&&(X.startsWith("---")||X.startsWith("..."))&&q2(X[3])){if(!(F===this.indentNext-1&&this.flowLevel===1&&(X[0]==="]"||X[0]==="}")))return this.flowLevel=0,yield x9.FLOW_END,yield*this.parseLineStart()}let J=0;while(X[J]===",")J+=yield*this.pushCount(1),J+=yield*this.pushSpaces(!0),this.flowKey=!1;switch(J+=yield*this.pushIndicators(),X[J]){case void 0:return"flow";case"#":return yield*this.pushCount(X.length-J),"flow";case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel+=1,"flow";case"}":case"]":return yield*this.pushCount(1),this.flowKey=!0,this.flowLevel-=1,this.flowLevel?"flow":"doc";case"*":return yield*this.pushUntil(cY),"flow";case'"':case"'":return this.flowKey=!0,yield*this.parseQuotedScalar();case":":{let G=this.charAt(1);if(this.flowKey||q2(G)||G===",")return this.flowKey=!1,yield*this.pushCount(1),yield*this.pushSpaces(!0),"flow"}default:return this.flowKey=!1,yield*this.parsePlainScalar()}}*parseQuotedScalar(){let D=this.charAt(0),$=this.buffer.indexOf(D,this.pos+1);if(D==="'")while($!==-1&&this.buffer[$+1]==="'")$=this.buffer.indexOf("'",$+2);else while($!==-1){let J=0;while(this.buffer[$-1-J]==="\\")J+=1;if(J%2===0)break;$=this.buffer.indexOf('"',$+1)}let F=this.buffer.substring(0,$),X=F.indexOf(`
|
|
245
|
-
`,this.pos);if(X!==-1){while(X!==-1){let J=this.continueScalar(X+1);if(J===-1)break;X=F.indexOf(`
|
|
246
|
-
`,J)}if(X!==-1)$=X-(F[X-1]==="\r"?2:1)}if($===-1){if(!this.atEnd)return this.setNext("quoted-scalar");$=this.buffer.length}return yield*this.pushToIndex($+1,!1),this.flowLevel?"flow":"doc"}*parseBlockScalarHeader(){this.blockScalarIndent=-1,this.blockScalarKeep=!1;let D=this.pos;while(!0){let $=this.buffer[++D];if($==="+")this.blockScalarKeep=!0;else if($>"0"&&$<="9")this.blockScalarIndent=Number($)-1;else if($!=="-")break}return yield*this.pushUntil(($)=>q2($)||$==="#")}*parseBlockScalar(){let D=this.pos-1,$=0,F;D:for(let J=this.pos;F=this.buffer[J];++J)switch(F){case" ":$+=1;break;case`
|
|
247
|
-
`:D=J,$=0;break;case"\r":{let G=this.buffer[J+1];if(!G&&!this.atEnd)return this.setNext("block-scalar");if(G===`
|
|
248
|
-
`)break}default:break D}if(!F&&!this.atEnd)return this.setNext("block-scalar");if($>=this.indentNext){if(this.blockScalarIndent===-1)this.indentNext=$;else this.indentNext=this.blockScalarIndent+(this.indentNext===0?1:this.indentNext);do{let J=this.continueScalar(D+1);if(J===-1)break;D=this.buffer.indexOf(`
|
|
249
|
-
`,J)}while(D!==-1);if(D===-1){if(!this.atEnd)return this.setNext("block-scalar");D=this.buffer.length}}let X=D+1;F=this.buffer[X];while(F===" ")F=this.buffer[++X];if(F==="\t"){while(F==="\t"||F===" "||F==="\r"||F===`
|
|
250
|
-
`)F=this.buffer[++X];D=X-1}else if(!this.blockScalarKeep)do{let J=D-1,G=this.buffer[J];if(G==="\r")G=this.buffer[--J];let Y=J;while(G===" ")G=this.buffer[--J];if(G===`
|
|
251
|
-
`&&J>=this.pos&&J+1+$>Y)D=J;else break}while(!0);return yield x9.SCALAR,yield*this.pushToIndex(D+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let D=this.flowLevel>0,$=this.pos-1,F=this.pos-1,X;while(X=this.buffer[++F])if(X===":"){let J=this.buffer[F+1];if(q2(J)||D&&m5.has(J))break;$=F}else if(q2(X)){let J=this.buffer[F+1];if(X==="\r")if(J===`
|
|
252
|
-
`)F+=1,X=`
|
|
253
|
-
`,J=this.buffer[F+1];else $=F;if(J==="#"||D&&m5.has(J))break;if(X===`
|
|
254
|
-
`){let G=this.continueScalar(F+1);if(G===-1)break;F=Math.max(F,G-2)}}else{if(D&&m5.has(X))break;$=F}if(!X&&!this.atEnd)return this.setNext("plain-scalar");return yield x9.SCALAR,yield*this.pushToIndex($+1,!0),D?"flow":"doc"}*pushCount(D){if(D>0)return yield this.buffer.substr(this.pos,D),this.pos+=D,D;return 0}*pushToIndex(D,$){let F=this.buffer.slice(this.pos,D);if(F)return yield F,this.pos+=F.length,F.length;else if($)yield"";return 0}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"&":return(yield*this.pushUntil(cY))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"-":case"?":case":":{let D=this.flowLevel>0,$=this.charAt(1);if(q2($)||D&&m5.has($)){if(!D)this.indentNext=this.indentValue+1;else if(this.flowKey)this.flowKey=!1;return(yield*this.pushCount(1))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators())}}}return 0}*pushTag(){if(this.charAt(1)==="<"){let D=this.pos+2,$=this.buffer[D];while(!q2($)&&$!==">")$=this.buffer[++D];return yield*this.pushToIndex($===">"?D+1:D,!1)}else{let D=this.pos+1,$=this.buffer[D];while($)if(Tu.has($))$=this.buffer[++D];else if($==="%"&&tC.has(this.buffer[D+1])&&tC.has(this.buffer[D+2]))$=this.buffer[D+=3];else break;return yield*this.pushToIndex(D,!1)}}*pushNewline(){let D=this.buffer[this.pos];if(D===`
|
|
255
|
-
`)return yield*this.pushCount(1);else if(D==="\r"&&this.charAt(1)===`
|
|
256
|
-
`)return yield*this.pushCount(2);else return 0}*pushSpaces(D){let $=this.pos-1,F;do F=this.buffer[++$];while(F===" "||D&&F==="\t");let X=$-this.pos;if(X>0)yield this.buffer.substr(this.pos,X),this.pos=$;return X}*pushUntil(D){let $=this.pos,F=this.buffer[$];while(!D(F))F=this.buffer[++$];return yield*this.pushToIndex($,!1)}}Su.Lexer=eC});var lY=f((fu)=>{class DR{constructor(){this.lineStarts=[],this.addNewLine=(D)=>this.lineStarts.push(D),this.linePos=(D)=>{let $=0,F=this.lineStarts.length;while($<F){let J=$+F>>1;if(this.lineStarts[J]<D)$=J+1;else F=J}if(this.lineStarts[$]===D)return{line:$+1,col:1};if($===0)return{line:0,col:D};let X=this.lineStarts[$-1];return{line:$,col:D-X+1}}}}fu.LineCounter=DR});var iY=f((xu)=>{var vu=B8("process"),$R=u5(),hu=dY();function y8(D,$){for(let F=0;F<D.length;++F)if(D[F].type===$)return!0;return!1}function FR(D){for(let $=0;$<D.length;++$)switch(D[$].type){case"space":case"comment":case"newline":break;default:return $}return-1}function JR(D){switch(D?.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"flow-collection":return!0;default:return!1}}function p5(D){switch(D.type){case"document":return D.start;case"block-map":{let $=D.items[D.items.length-1];return $.sep??$.start}case"block-seq":return D.items[D.items.length-1].start;default:return[]}}function c6(D){if(D.length===0)return[];let $=D.length;D:while(--$>=0)switch(D[$].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break D}while(D[++$]?.type==="space");return D.splice($,D.length)}function XR(D){if(D.start.type==="flow-seq-start"){for(let $ of D.items)if($.sep&&!$.value&&!y8($.start,"explicit-key-ind")&&!y8($.sep,"map-value-ind")){if($.key)$.value=$.key;if(delete $.key,JR($.value))if($.value.end)Array.prototype.push.apply($.value.end,$.sep);else $.value.end=$.sep;else Array.prototype.push.apply($.start,$.sep);delete $.sep}}}class YR{constructor(D){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new hu.Lexer,this.onNewLine=D}*parse(D,$=!1){if(this.onNewLine&&this.offset===0)this.onNewLine(0);for(let F of this.lexer.lex(D,$))yield*this.next(F);if(!$)yield*this.end()}*next(D){if(this.source=D,vu.env.LOG_TOKENS)console.log("|",$R.prettyToken(D));if(this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=D.length;return}let $=$R.tokenType(D);if(!$){let F=`Not a YAML token: ${D}`;yield*this.pop({type:"error",offset:this.offset,message:F,source:D}),this.offset+=D.length}else if($==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=$,yield*this.step(),$){case"newline":if(this.atNewLine=!0,this.indent=0,this.onNewLine)this.onNewLine(this.offset+D.length);break;case"space":if(this.atNewLine&&D[0]===" ")this.indent+=D.length;break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":if(this.atNewLine)this.indent+=D.length;break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=D.length}}*end(){while(this.stack.length>0)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let D=this.peek(1);if(this.type==="doc-end"&&D?.type!=="doc-end"){while(this.stack.length>0)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!D)return yield*this.stream();switch(D.type){case"document":return yield*this.document(D);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(D);case"block-scalar":return yield*this.blockScalar(D);case"block-map":return yield*this.blockMap(D);case"block-seq":return yield*this.blockSequence(D);case"flow-collection":return yield*this.flowCollection(D);case"doc-end":return yield*this.documentEnd(D)}yield*this.pop()}peek(D){return this.stack[this.stack.length-D]}*pop(D){let $=D??this.stack.pop();if(!$)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield $;else{let F=this.peek(1);if($.type==="block-scalar")$.indent="indent"in F?F.indent:0;else if($.type==="flow-collection"&&F.type==="document")$.indent=0;if($.type==="flow-collection")XR($);switch(F.type){case"document":F.value=$;break;case"block-scalar":F.props.push($);break;case"block-map":{let X=F.items[F.items.length-1];if(X.value){F.items.push({start:[],key:$,sep:[]}),this.onKeyLine=!0;return}else if(X.sep)X.value=$;else{Object.assign(X,{key:$,sep:[]}),this.onKeyLine=!X.explicitKey;return}break}case"block-seq":{let X=F.items[F.items.length-1];if(X.value)F.items.push({start:[],value:$});else X.value=$;break}case"flow-collection":{let X=F.items[F.items.length-1];if(!X||X.value)F.items.push({start:[],key:$,sep:[]});else if(X.sep)X.value=$;else Object.assign(X,{key:$,sep:[]});return}default:yield*this.pop(),yield*this.pop($)}if((F.type==="document"||F.type==="block-map"||F.type==="block-seq")&&($.type==="block-map"||$.type==="block-seq")){let X=$.items[$.items.length-1];if(X&&!X.sep&&!X.value&&X.start.length>0&&FR(X.start)===-1&&($.indent===0||X.start.every((J)=>J.type!=="comment"||J.indent<$.indent))){if(F.type==="document")F.end=X.start;else F.items.push({start:X.start});$.items.splice(-1,1)}}}}*stream(){switch(this.type){case"directive-line":yield{type:"directive",offset:this.offset,source:this.source};return;case"byte-order-mark":case"space":case"comment":case"newline":yield this.sourceToken;return;case"doc-mode":case"doc-start":{let D={type:"document",offset:this.offset,start:[]};if(this.type==="doc-start")D.start.push(this.sourceToken);this.stack.push(D);return}}yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML stream`,source:this.source}}*document(D){if(D.value)return yield*this.lineEnd(D);switch(this.type){case"doc-start":{if(FR(D.start)!==-1)yield*this.pop(),yield*this.step();else D.start.push(this.sourceToken);return}case"anchor":case"tag":case"space":case"comment":case"newline":D.start.push(this.sourceToken);return}let $=this.startBlockValue(D);if($)this.stack.push($);else yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML document`,source:this.source}}*scalar(D){if(this.type==="map-value-ind"){let $=p5(this.peek(2)),F=c6($),X;if(D.end)X=D.end,X.push(this.sourceToken),delete D.end;else X=[this.sourceToken];let J={type:"block-map",offset:D.offset,indent:D.indent,items:[{start:F,key:D,sep:X}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=J}else yield*this.lineEnd(D)}*blockScalar(D){switch(this.type){case"space":case"comment":case"newline":D.props.push(this.sourceToken);return;case"scalar":if(D.source=this.source,this.atNewLine=!0,this.indent=0,this.onNewLine){let $=this.source.indexOf(`
|
|
257
|
-
`)+1;while($!==0)this.onNewLine(this.offset+$),$=this.source.indexOf(`
|
|
258
|
-
`,$)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(D){let $=D.items[D.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,$.value){let F="end"in $.value?$.value.end:void 0;if((Array.isArray(F)?F[F.length-1]:void 0)?.type==="comment")F?.push(this.sourceToken);else D.items.push({start:[this.sourceToken]})}else if($.sep)$.sep.push(this.sourceToken);else $.start.push(this.sourceToken);return;case"space":case"comment":if($.value)D.items.push({start:[this.sourceToken]});else if($.sep)$.sep.push(this.sourceToken);else{if(this.atIndentedComment($.start,D.indent)){let X=D.items[D.items.length-2]?.value?.end;if(Array.isArray(X)){Array.prototype.push.apply(X,$.start),X.push(this.sourceToken),D.items.pop();return}}$.start.push(this.sourceToken)}return}if(this.indent>=D.indent){let F=!this.onKeyLine&&this.indent===D.indent,X=F&&($.sep||$.explicitKey)&&this.type!=="seq-item-ind",J=[];if(X&&$.sep&&!$.value){let G=[];for(let Y=0;Y<$.sep.length;++Y){let B=$.sep[Y];switch(B.type){case"newline":G.push(Y);break;case"space":break;case"comment":if(B.indent>D.indent)G.length=0;break;default:G.length=0}}if(G.length>=2)J=$.sep.splice(G[1])}switch(this.type){case"anchor":case"tag":if(X||$.value)J.push(this.sourceToken),D.items.push({start:J}),this.onKeyLine=!0;else if($.sep)$.sep.push(this.sourceToken);else $.start.push(this.sourceToken);return;case"explicit-key-ind":if(!$.sep&&!$.explicitKey)$.start.push(this.sourceToken),$.explicitKey=!0;else if(X||$.value)J.push(this.sourceToken),D.items.push({start:J,explicitKey:!0});else this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]});this.onKeyLine=!0;return;case"map-value-ind":if($.explicitKey)if(!$.sep)if(y8($.start,"newline"))Object.assign($,{key:null,sep:[this.sourceToken]});else{let G=c6($.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:G,key:null,sep:[this.sourceToken]}]})}else if($.value)D.items.push({start:[],key:null,sep:[this.sourceToken]});else if(y8($.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:J,key:null,sep:[this.sourceToken]}]});else if(JR($.key)&&!y8($.sep,"newline")){let G=c6($.start),Y=$.key,B=$.sep;B.push(this.sourceToken),delete $.key,delete $.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:G,key:Y,sep:B}]})}else if(J.length>0)$.sep=$.sep.concat(J,this.sourceToken);else $.sep.push(this.sourceToken);else if(!$.sep)Object.assign($,{key:null,sep:[this.sourceToken]});else if($.value||X)D.items.push({start:J,key:null,sep:[this.sourceToken]});else if(y8($.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]});else $.sep.push(this.sourceToken);this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let G=this.flowScalar(this.type);if(X||$.value)D.items.push({start:J,key:G,sep:[]}),this.onKeyLine=!0;else if($.sep)this.stack.push(G);else Object.assign($,{key:G,sep:[]}),this.onKeyLine=!0;return}default:{let G=this.startBlockValue(D);if(G){if(G.type==="block-seq"){if(!$.explicitKey&&$.sep&&!y8($.sep,"newline")){yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source});return}}else if(F)D.items.push({start:J});this.stack.push(G);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(D){let $=D.items[D.items.length-1];switch(this.type){case"newline":if($.value){let F="end"in $.value?$.value.end:void 0;if((Array.isArray(F)?F[F.length-1]:void 0)?.type==="comment")F?.push(this.sourceToken);else D.items.push({start:[this.sourceToken]})}else $.start.push(this.sourceToken);return;case"space":case"comment":if($.value)D.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment($.start,D.indent)){let X=D.items[D.items.length-2]?.value?.end;if(Array.isArray(X)){Array.prototype.push.apply(X,$.start),X.push(this.sourceToken),D.items.pop();return}}$.start.push(this.sourceToken)}return;case"anchor":case"tag":if($.value||this.indent<=D.indent)break;$.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==D.indent)break;if($.value||y8($.start,"seq-item-ind"))D.items.push({start:[this.sourceToken]});else $.start.push(this.sourceToken);return}if(this.indent>D.indent){let F=this.startBlockValue(D);if(F){this.stack.push(F);return}}yield*this.pop(),yield*this.step()}*flowCollection(D){let $=D.items[D.items.length-1];if(this.type==="flow-error-end"){let F;do yield*this.pop(),F=this.peek(1);while(F?.type==="flow-collection")}else if(D.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":if(!$||$.sep)D.items.push({start:[this.sourceToken]});else $.start.push(this.sourceToken);return;case"map-value-ind":if(!$||$.value)D.items.push({start:[],key:null,sep:[this.sourceToken]});else if($.sep)$.sep.push(this.sourceToken);else Object.assign($,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":if(!$||$.value)D.items.push({start:[this.sourceToken]});else if($.sep)$.sep.push(this.sourceToken);else $.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let X=this.flowScalar(this.type);if(!$||$.value)D.items.push({start:[],key:X,sep:[]});else if($.sep)this.stack.push(X);else Object.assign($,{key:X,sep:[]});return}case"flow-map-end":case"flow-seq-end":D.end.push(this.sourceToken);return}let F=this.startBlockValue(D);if(F)this.stack.push(F);else yield*this.pop(),yield*this.step()}else{let F=this.peek(2);if(F.type==="block-map"&&(this.type==="map-value-ind"&&F.indent===D.indent||this.type==="newline"&&!F.items[F.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&F.type!=="flow-collection"){let X=p5(F),J=c6(X);XR(D);let G=D.end.splice(1,D.end.length);G.push(this.sourceToken);let Y={type:"block-map",offset:D.offset,indent:D.indent,items:[{start:J,key:D,sep:G}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=Y}else yield*this.lineEnd(D)}}flowScalar(D){if(this.onNewLine){let $=this.source.indexOf(`
|
|
259
|
-
`)+1;while($!==0)this.onNewLine(this.offset+$),$=this.source.indexOf(`
|
|
260
|
-
`,$)+1}return{type:D,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(D){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let $=p5(D),F=c6($);return F.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:F,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let $=p5(D),F=c6($);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:F,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(D,$){if(this.type!=="comment")return!1;if(this.indent<=$)return!1;return D.every((F)=>F.type==="newline"||F.type==="space")}*documentEnd(D){if(this.type!=="doc-mode"){if(D.end)D.end.push(this.sourceToken);else D.end=[this.sourceToken];if(this.type==="newline")yield*this.pop()}}*lineEnd(D){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;case"space":case"comment":default:if(D.end)D.end.push(this.sourceToken);else D.end=[this.sourceToken];if(this.type==="newline")yield*this.pop()}}}xu.Parser=YR});var VR=f((iu)=>{var GR=vY(),yu=b9(),g9=f9(),uu=lJ(),mu=_D(),pu=lY(),BR=iY();function HR(D){let $=D.prettyErrors!==!1;return{lineCounter:D.lineCounter||$&&new pu.LineCounter||null,prettyErrors:$}}function cu(D,$={}){let{lineCounter:F,prettyErrors:X}=HR($),J=new BR.Parser(F?.addNewLine),G=new GR.Composer($),Y=Array.from(G.compose(J.parse(D)));if(X&&F)for(let B of Y)B.errors.forEach(g9.prettifyError(D,F)),B.warnings.forEach(g9.prettifyError(D,F));if(Y.length>0)return Y;return Object.assign([],{empty:!0},G.streamInfo())}function WR(D,$={}){let{lineCounter:F,prettyErrors:X}=HR($),J=new BR.Parser(F?.addNewLine),G=new GR.Composer($),Y=null;for(let B of G.compose(J.parse(D),!0,D.length))if(!Y)Y=B;else if(Y.options.logLevel!=="silent"){Y.errors.push(new g9.YAMLParseError(B.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}if(X&&F)Y.errors.forEach(g9.prettifyError(D,F)),Y.warnings.forEach(g9.prettifyError(D,F));return Y}function du(D,$,F){let X=void 0;if(typeof $==="function")X=$;else if(F===void 0&&$&&typeof $==="object")F=$;let J=WR(D,F);if(!J)return null;if(J.warnings.forEach((G)=>uu.warn(J.options.logLevel,G)),J.errors.length>0)if(J.options.logLevel!=="silent")throw J.errors[0];else J.errors=[];return J.toJS(Object.assign({reviver:X},F))}function lu(D,$,F){let X=null;if(typeof $==="function"||Array.isArray($))X=$;else if(F===void 0&&$)F=$;if(typeof F==="string")F=F.length;if(typeof F==="number"){let J=Math.round(F);F=J<1?void 0:J>8?{indent:8}:{indent:J}}if(D===void 0){let{keepUndefined:J}=F??$??{};if(!J)return}if(mu.isDocument(D)&&!X)return D.toString(F);return new yu.Document(D,X,F).toString(F)}iu.parse=du;iu.parseAllDocuments=cu;iu.parseDocument=WR;iu.stringify=lu});var au,tu,eu,nY,Dm,u8,$m,Fm,Xm,Jm,G9D,Ym,Gm,Bm,c5,QR,Hm,Wm,Vm,Qm,Um,_m,Am,Km,Om,Cm,Rm,Em,Mm,Zm,qm,Nm,Pm,Lm,jm,zm,Im,Tm,d5,wm,Sm,sY,bm,fm;var rY=Z(()=>{au=vY(),tu=b9(),eu=EY(),nY=f9(),Dm=C9(),u8=_D(),$m=v8(),Fm=lD(),Xm=x8(),Jm=g8(),G9D=u5(),Ym=dY(),Gm=lY(),Bm=iY(),c5=VR(),QR=K9();Hm=au.Composer,Wm=tu.Document,Vm=eu.Schema,Qm=nY.YAMLError,Um=nY.YAMLParseError,_m=nY.YAMLWarning,Am=Dm.Alias,Km=u8.isAlias,Om=u8.isCollection,Cm=u8.isDocument,Rm=u8.isMap,Em=u8.isNode,Mm=u8.isPair,Zm=u8.isScalar,qm=u8.isSeq,Nm=$m.Pair,Pm=Fm.Scalar,Lm=Xm.YAMLMap,jm=Jm.YAMLSeq,zm=Ym.Lexer,Im=Gm.LineCounter,Tm=Bm.Parser,d5=c5.parse,wm=c5.parseAllDocuments,Sm=c5.parseDocument,sY=c5.stringify,bm=QR.visit,fm=QR.visitAsync});var km,vm,hm,xm,gm,ym,_R,um,mm,UR,pm,cm,dm,AR;var KR=Z(()=>{yD();km=V.object({id:V.string().min(1),type:V.literal("filesystem"),priority:V.number().int(),readOnly:V.boolean(),config:V.object({home:V.string().min(1).optional()})}),vm=V.object({id:V.string().min(1),type:V.literal("cloud-gateway"),priority:V.number().int(),readOnly:V.boolean(),config:V.object({url:V.string().min(1),token:V.string(),defaultCategory:V.string().optional(),defaultTypeId:V.string().optional()})}),hm=V.discriminatedUnion("type",[km,vm]),xm=V.object({binary:V.string().min(1).optional(),extraArgs:V.array(V.string()).optional(),env:V.record(V.string()).optional(),cliVersion:V.string().min(1).optional()}).strict(),gm=V.record(V.unknown()).and(V.object({cmd:xm.optional()}).partial()),ym=V.enum(["rate-limit","timeout","auth","network","server-5xx","unknown"]),_R=V.lazy(()=>V.object({engine:V.enum(["http","mcp","cli","claude-code","acp","codex","cursor"]),variant:V.string().min(1),overrides:gm.optional(),modelId:V.string().min(1).optional(),reasoningId:V.string().min(1).optional(),permissionPolicy:V.enum(["auto","supervised","plan"]).optional(),fallbacks:V.array(V.object({executor:_R,onErrorKinds:V.array(ym).min(1),maxRetries:V.number().int().min(1).optional()})).optional()})),um=V.discriminatedUnion("channel",[V.object({channel:V.literal("web"),inboundToken:V.string().optional()}),V.object({channel:V.literal("line"),channelSecret:V.string(),channelAccessToken:V.string()}),V.object({channel:V.literal("telegram"),botToken:V.string(),webhookSecretToken:V.string().optional()}),V.object({channel:V.literal("lark"),appId:V.string(),appSecret:V.string(),encryptKey:V.string(),verificationToken:V.string()}),V.object({channel:V.literal("whatsapp"),phoneNumberId:V.string(),accessToken:V.string(),appSecret:V.string(),verifyToken:V.string()})]),mm=V.object({channel:V.enum(["web","line","telegram","lark","whatsapp"]),enabled:V.boolean(),credentials:um,profile:V.object({displayName:V.string().optional(),avatarUrl:V.string().optional()}).optional()}).refine((D)=>D.channel===D.credentials.channel,{message:"channel and credentials.channel must match",path:["credentials","channel"]}),UR=V.enum(["auto","ask","deny"]),pm=V.object({default:UR,rules:V.array(V.object({pattern:V.string().min(1),action:UR}))}),cm=V.object({enabled:V.boolean().optional(),triggerTokens:V.number().int().min(1).max(2000000).optional(),maxSummaryMessages:V.number().int().min(1).max(500).optional(),memoryFlush:V.object({enabled:V.boolean().optional()}).optional()}),dm=V.object({contextWindowTokens:V.number().int().min(512).max(2000000).optional(),reserveTokens:V.number().int().min(0).max(1e6).optional(),keepRecentTokens:V.number().int().min(1).max(2000000).optional(),maxHistoryMessages:V.number().int().min(1).max(200).optional(),compaction:cm.optional()}).superRefine((D,$)=>{if(D.contextWindowTokens!==void 0&&D.reserveTokens!==void 0&&D.reserveTokens>=D.contextWindowTokens)$.addIssue({code:V.ZodIssueCode.custom,path:["reserveTokens"],message:"reserveTokens must be lower than contextWindowTokens"});if(D.contextWindowTokens!==void 0&&D.compaction?.triggerTokens!==void 0&&D.compaction.triggerTokens>D.contextWindowTokens)$.addIssue({code:V.ZodIssueCode.custom,path:["compaction","triggerTokens"],message:"compaction.triggerTokens must not exceed contextWindowTokens"})}),AR=V.object({brains:V.array(hm),brainWriteTarget:V.string(),brainRetrieval:V.enum(["merge-by-priority","first-match"]),executor:_R,channels:V.array(mm),evolution:V.object({enabled:V.boolean(),observationRetentionDays:V.number().int().nonnegative()}),toolPolicy:pm.optional(),orchestrator:dm.optional()})});import{writeFile as lm}from"fs/promises";async function z0(D){let $=await D.select().from(C2).where(v(C2.pk,"default")).get();if(!$)throw Error("worker_config row missing \u2014 bootstrap did not run");return{config:$.configJson,version:$.version}}async function y9(D,$,F,X={}){let J=AR.safeParse(F);if(!J.success)throw new y2(J.error.issues);let G=await z0(D);if(X.ifMatchVersion!==void 0&&X.ifMatchVersion!==G.version)throw new u2(X.ifMatchVersion,G.version);let Y=J.data,B=new Set($8(G.config).map((A)=>A.path)),H=$8(Y),W=new Set(H.map((A)=>A.path));for(let{path:A,value:C}of H)if(C.length>0)await $.put(A,C);for(let A of B)if(!W.has(A))await $.remove(A);let Q=b4(Y),U=G.version+1,_=new Date().toISOString();return await D.update(C2).set({configJson:Q,version:U,updatedAt:_,updatedBy:"api"}).where(v(C2.pk,"default")).run(),{config:Q,version:U}}async function u9(D,$,F){let X=EW(D),J=sY({version:F,config:$});try{await lm(X,J,{encoding:"utf8"})}catch(G){E.warn(`[mirror-config] failed to write ${X}: ${String(G)}`)}}async function d6(D){let $=await y9(D.db,D.vault,D.raw,D.ifMatchVersion===void 0?{}:{ifMatchVersion:D.ifMatchVersion});await u9(D.workerId,$.config,$.version);let F="ok";try{await D.reloadRuntime($.config,$.version)}catch(X){F="failed",E.error("[applyConfigUpdate] runtime reload failed",X)}return{...$,runtimeReload:F}}var y2,u2;var oY=Z(()=>{V2();wD();JD();U0();rY();KR();y2=class y2 extends Error{issues;constructor(D,$="invalid worker config"){super($);this.issues=D;this.name="InvalidConfigError"}};u2=class u2 extends Error{expected;actual;constructor(D,$){super(`config version ${D} does not match current version ${$}`);this.expected=D;this.actual=$;this.name="ConfigVersionConflictError"}}});function l5(D){return{cronList:async()=>{return{jobs:await D().listJobs()}},cronAdd:async($)=>{return{job:await D().addJob($.job)}},cronRemove:async($)=>{return await D().removeJob($.jobId)},cronUpdate:async($)=>{let F=await D().updateJob($.jobId,$.patch);if(!F)throw new i5($.jobId);return{job:F}}}}var i5;var aY=Z(()=>{i5=class i5 extends Error{jobId;constructor(D){super(`cron job ${D} \u4E0D\u5B58\u5728`);this.jobId=D;this.name="CronJobNotFoundError"}}});class tY{deps;constructor(D){this.deps=D}async handleRequest(D){let{id:$,method:F,params:X}=D;try{let J=E3(F);if(!J){this.replyError($,"unknown_method",`unknown method: ${F}`);return}if(J.routing!=="operator-to-node"){this.replyError($,"wrong_routing",`method ${F} should be handled by gateway, not node`);return}let G=J.params.safeParse(X??{});if(!G.success){this.replyError($,"invalid_params",`params schema mismatch for ${F}`,G.error.issues);return}let Y=G.data;switch(F){case tD["chat.send"].method:await this.handleChatSend($,Y);break;case tD["config.get"].method:await this.handleConfigGet($);break;case tD["config.put"].method:await this.handleConfigPut($,Y);break;case tD["token.rotate"].method:await this.handleTokenRotate($);break;case tD["logs.tail"].method:await this.handleLogsTail($,Y);break;case tD["approval.list"].method:this.handleApprovalList($);break;case tD["approval.grant"].method:this.handleApprovalGrant($,Y);break;case tD["cron.list"].method:await this.handleCronList($,Y);break;case tD["cron.add"].method:await this.handleCronAdd($,Y);break;case tD["cron.remove"].method:await this.handleCronRemove($,Y);break;case tD["cron.update"].method:await this.handleCronUpdate($,Y);break;case tD["workers.info"].method:await this.handleWorkersInfo($,Y);break;case tD["workers.stop"].method:await this.handleWorkersStop($,Y);break;default:this.replyError($,"method_not_implemented",`${F} not routed`)}}catch(J){E.error(`[gateway-dispatcher ${this.deps.workerId}] handler threw: ${String(J)}`),this.replyError($,"internal_error",J instanceof Error?J.message:String(J))}}async handleChatSend(D,$){let F=String($.workerId);if(F!==this.deps.workerId){this.replyError(D,"worker_mismatch",`chat.send targeted workerId=${F}, this node is ${this.deps.workerId}`);return}let X=im(String($.content)),J=X?.body&&X.body.length>0?X.body:X?"A new session has started. Reply briefly to confirm.":String($.content),G=typeof $.conversationId==="string"?$.conversationId:void 0,Y=nm(this.deps.workerId,G),B={workerId:this.deps.workerId,channel:"web",accountId:"sys:gateway",chatId:Y,text:J,receivedAt:new Date().toISOString(),raw:{source:"gateway",...X?{sessionReset:!0,resetCommand:X.command}:{},...$.metadata!==void 0?{metadata:$.metadata}:{}}};this.deps.getRuntime().orchestrator.ingest(B).catch((H)=>{E.warn(`[gateway-dispatcher ${this.deps.workerId}] orchestrator.ingest failed: ${String(H)}`)}),this.replyOk(D,{conversationId:Y,accepted:!0})}async handleWorkersInfo(D,$){if(!this.ensureWorkerMatch(D,$))return;if(!this.deps.handlers?.workersInfo){this.replyError(D,"method_not_implemented","workers.info handler not wired");return}let F=await this.deps.handlers.workersInfo();this.replyOk(D,F)}async handleWorkersStop(D,$){if(!this.ensureWorkerMatch(D,$))return;if(!this.deps.handlers?.workersStop){this.replyError(D,"method_not_implemented","workers.stop handler not wired");return}await this.deps.handlers.workersStop(),this.replyOk(D,{stopped:!0})}async handleConfigGet(D){if(!this.deps.handlers?.configGet){this.replyError(D,"method_not_implemented","config.get handler not wired");return}let $=await this.deps.handlers.configGet();this.replyOk(D,$)}async handleConfigPut(D,$){if(!this.deps.handlers?.configPut){this.replyError(D,"method_not_implemented","config.put handler not wired");return}let F=Number($.ifMatch),X=$.config;try{let J=await this.deps.handlers.configPut({ifMatch:F,config:X});this.replyOk(D,J)}catch(J){if(J instanceof y2){this.replyError(D,"invalid_config",J.message,{issues:J.issues});return}if(J instanceof u2){this.replyError(D,"version_conflict",J.message,{expected:J.expected,actual:J.actual});return}throw J}}async handleTokenRotate(D){if(!this.deps.handlers?.tokenRotate){this.replyError(D,"method_not_implemented","token.rotate handler not wired");return}let $=await this.deps.handlers.tokenRotate();this.replyOk(D,$)}async handleLogsTail(D,$){if(!this.deps.handlers?.logsTail){this.replyOk(D,{subscribed:!1});return}let F={};if(typeof $.follow==="boolean")F.follow=$.follow;if(typeof $.lines==="number")F.lines=$.lines;let X=await this.deps.handlers.logsTail(F);this.replyOk(D,X)}handleApprovalList(D){let $=this.deps.getRuntime().approvals;if(!$){this.replyError(D,"method_not_implemented","approval store not wired");return}let F=$.list().map((X)=>({workerId:this.deps.workerId,taskId:X.taskId,toolCallId:X.toolCallId,toolName:X.toolName,params:X.params,expiresAt:X.expiresAt}));this.replyOk(D,{approvals:F})}handleApprovalGrant(D,$){let F=this.deps.getRuntime().approvals;if(!F){this.replyError(D,"method_not_implemented","approval store not wired");return}let X=String($.taskId),J=String($.toolCallId),G=$.decision==="allow"?"allow":"deny",Y=F.grant(X,J,G);this.replyOk(D,{granted:Y})}ensureWorkerMatch(D,$){let F=String($.workerId);if(F!==this.deps.workerId)return this.replyError(D,"worker_mismatch",`targeted workerId=${F}, this node is ${this.deps.workerId}`),!1;return!0}async handleCronList(D,$){if(!this.deps.handlers?.cronList){this.replyError(D,"method_not_implemented","cron.list handler not wired");return}if(!this.ensureWorkerMatch(D,$))return;let F=await this.deps.handlers.cronList();this.replyOk(D,F)}async handleCronAdd(D,$){if(!this.deps.handlers?.cronAdd){this.replyError(D,"method_not_implemented","cron.add handler not wired");return}if(!this.ensureWorkerMatch(D,$))return;try{let F=await this.deps.handlers.cronAdd({job:$.job});this.replyOk(D,F)}catch(F){this.replyError(D,"invalid_cron",F instanceof Error?F.message:String(F))}}async handleCronRemove(D,$){if(!this.deps.handlers?.cronRemove){this.replyError(D,"method_not_implemented","cron.remove handler not wired");return}if(!this.ensureWorkerMatch(D,$))return;let F=await this.deps.handlers.cronRemove({jobId:String($.jobId)});this.replyOk(D,F)}async handleCronUpdate(D,$){if(!this.deps.handlers?.cronUpdate){this.replyError(D,"method_not_implemented","cron.update handler not wired");return}if(!this.ensureWorkerMatch(D,$))return;try{let F=await this.deps.handlers.cronUpdate({jobId:String($.jobId),patch:$.patch});this.replyOk(D,F)}catch(F){if(F instanceof i5){this.replyError(D,"not_found",F.message,{jobId:F.jobId});return}this.replyError(D,"invalid_cron",F instanceof Error?F.message:String(F))}}replyOk(D,$){this.deps.sendResponse({type:"response",id:D,ok:!0,result:$})}replyError(D,$,F,X){this.deps.sendResponse({type:"response",id:D,ok:!1,error:X===void 0?{code:$,message:F}:{code:$,message:F,details:X}})}}function im(D){let $=D.trim(),F=$.toLowerCase();for(let X of["/new","/reset"]){if(F===X)return{command:X,body:""};if(F.startsWith(X)&&/\s/.test($.charAt(X.length)))return{command:X,body:$.slice(X.length).trimStart()}}return null}function nm(D,$){if($===void 0)return`gw:${D}:${crypto.randomUUID()}`;if($.startsWith("gw:"))return $;return`gw:conv:${$}`}var OR=Z(()=>{eD();JD();oY();aY()});class eY{deps;unsub=null;constructor(D){this.deps=D}start(){this.stop();let D=this.deps.getBus();this.unsub=D.on(($)=>this.handle($))}stop(){if(this.unsub)this.unsub(),this.unsub=null}emit(D,$){let F={type:"event",name:D,payload:{workerId:this.deps.workerId,...$},ts:Date.now()};this.deps.sendEvent(F)}handle(D){let $=this.map(D);if(!$)return;this.deps.sendEvent({type:"event",name:$.name,payload:{workerId:this.deps.workerId,...$.payload},ts:Date.parse(D.at)||Date.now()})}map(D){let $=D.payload;switch(D.type){case"orchestrator.text":{let F=m9($);if(!F)return null;let X=typeof $.delta==="string"?$.delta:"";return{name:e.AGENT_THINKING,payload:{conversationId:F,chunk:X}}}case"orchestrator.tool_call":{let F=m9($),X=$.call??{},J=m8(X.id),G=m8(X.name);if(!F||!J||!G)return null;return{name:e.AGENT_TOOL_CALL,payload:{conversationId:F,toolCallId:J,toolName:G,status:"pending",...X.arguments!==void 0?{args:X.arguments}:{}}}}case"orchestrator.finished":{let F=m9($);if(!F)return null;return{name:e.AGENT_DONE,payload:{conversationId:F,finishReason:"stop"}}}case"orchestrator.error":{let F=m9($);if(!F)return null;return{name:e.AGENT_DONE,payload:{conversationId:F,finishReason:"error"}}}case"conversation.message":{let F=m9($),X=m8($.role);if(!F||!X)return null;if(X!=="user"&&X!=="assistant"&&X!=="system")return null;return{name:e.CHAT_MESSAGE,payload:{conversationId:F,role:X,content:typeof $.content==="string"?$.content:"",createdAt:Date.parse(D.at)||Date.now()}}}case"approval.requested":{let F=m8($.taskId),X=m8($.toolCallId),J=m8($.toolName),G=typeof $.expiresAt==="number"?$.expiresAt:null;if(!F||!X||!J||G===null)return null;let Y=typeof $.params==="object"&&$.params!==null?$.params:{};return{name:e.APPROVAL_REQUESTED,payload:{taskId:F,toolCallId:X,toolName:J,params:Y,expiresAt:G}}}default:return null}}}function m8(D){return typeof D==="string"&&D.length>0?D:null}function m9(D){return m8(D.gatewayConversationId)??m8(D.conversationId)}var CR=Z(()=>{eD()});function n5(D){let $=XO(D),F=!1,X=null,J=new eY({workerId:$.workerId,getBus:()=>D.getRuntime().bus,sendEvent:(Y)=>X?.send(Y)}),G=new tY({workerId:$.workerId,getRuntime:D.getRuntime,...D.handlers?{handlers:D.handlers}:{},sendResponse:(Y)=>X?.send(Y)});return X=new hJ({options:$,onConnected:()=>{F=!0,J.start()},onDisconnected:(Y)=>{F=!1,J.stop(),E.info(`[gateway-client ${$.workerId}] disconnected: ${Y}`)},onFrame:(Y)=>{if(Y.type==="request"){G.handleRequest(Y);return}E.warn(`[gateway-client ${$.workerId}] unexpected inbound frame type=${Y.type}`)},...D.onEnrollmentOtp?{onEnrollmentOtp:D.onEnrollmentOtp}:{},...D.onEnrollmentApproved?{onEnrollmentApproved:D.onEnrollmentApproved}:{},...D.webSocketCtor?{webSocketCtor:D.webSocketCtor}:{}}),X.start(),{async stop(){if(J.stop(),X)await X.stop(),X=null},isConnected(){return F},notifyRuntimeReloaded(){if(F)J.start()}}}async function RR(D){await D.stop()}var ER=Z(()=>{JD();FO();OR();CR()});function sm(D){if(D instanceof Error)return D.message;return String(D)}async function s5(D,$){let F=$.brains;try{let X=await D.runtime.brain.health();if(F.length===1){let J=F[0];return{brains:[{id:J.id,type:J.type,status:X.status}]}}return{brains:[{id:"aggregate",type:"multi",status:X.status}]}}catch(X){return{brains:[{id:F.length===1?F[0].id:"aggregate",type:F.length===1?F[0].type:"multi",status:"down",errorMessage:sm(X)}]}}}function om(D){return rm.has(D)}function am(D){if(D instanceof Error)return D.message;return String(D)}async function r5(D,$,F={}){if(!om($))throw zD.notFound(`unknown channel '${$}'`);let X=D.runtime.channels.get($);if(!X)throw zD.notFound(`channel '${$}' is not bound or not enabled`);let J=Q1($);if(F.chatId===void 0||F.text===void 0)return{sent:!1,platformResponse:{dryRun:!0,channel:$,enabled:X.enabled}};let G={channel:$,chatId:F.chatId,text:F.text};try{return await J.send(X,G),{sent:!0,platformResponse:{ok:!0}}}catch(Y){return{sent:!1,error:am(Y)}}}var rm;var MR=Z(()=>{aD();e3();rm=new Set(["web","line","telegram","lark","whatsapp"])});function tm(D){if(D instanceof Error)return D.message;return String(D)}async function em(D){let $=performance.now(),F=new AbortController,X=setTimeout(()=>F.abort(),5000);try{let J=D.runtime.executor.run({messages:[{role:"user",content:"ping"}],signal:F.signal}),G="";for await(let Y of J)if(Y.type==="assistant_message_delta"){if(G+=Y.delta,G.length>=100)break}else if(Y.type==="error")return{ok:!1,latencyMs:Math.round(performance.now()-$),error:Y.error};else if(Y.type==="finish")break;return{ok:!0,latencyMs:Math.round(performance.now()-$),output:G.slice(0,100)}}catch(J){return{ok:!1,latencyMs:Math.round(performance.now()-$),error:tm(J)}}finally{clearTimeout(X)}}async function o5(D,$,F={}){let X=$.executor.engine,J="unknown";try{J=(await D.runtime.executor.health()).status}catch{J="unknown"}if(!F.probe)return{executor:{type:X,status:J}};let G=await em(D);if(!G.ok)return{executor:{type:X,status:"degraded",tinyProbe:{ok:!1,latencyMs:G.latencyMs},...G.error===void 0?{}:{probeError:G.error}}};return{executor:{type:X,status:J,tinyProbe:{ok:!0,latencyMs:G.latencyMs,...G.output===void 0?{}:{output:G.output}}}}}function $p(D){if(!D)return"unknown";return D.status}async function ZR(D){try{let $=await D();return $p($??null)}catch{return"unknown"}}function Fp(D){let $=Xp(D);if(!$)return;if($.modelId!==void 0)return $.modelId;let F=$.body;if(typeof F.model==="string"&&F.model.length>0)return F.model;if(typeof F.defaultModel==="string"&&F.defaultModel.length>0)return F.defaultModel;return}function Xp(D){try{return D8(D)}catch{return null}}function Jp(D,$){if(!D)return;return`${D.replace(/\/+$/,"")}/${$}/webhook`}async function l6(D,$,F){let{runtime:X}=D,J=await ZR(()=>X.executor.health()),G=await ZR(()=>X.brain.health()),Y=$.brains.map((Q)=>({id:Q.id,type:Q.type,status:G})),B=Fp($.executor),H={type:$.executor.engine,...B===void 0?{}:{model:B},status:J},W=$.channels.map((Q)=>{let U=Jp(F.advertisedBaseUrl,Q.channel);return{channel:Q.channel,enabled:Q.enabled,...U?{webhookUrl:U}:{}}});return{workerId:D.workerId,runtimeVersion:Dp,configVersion:D.configVersion,brains:Y,executor:H,channels:W,evolutionEnabled:$.evolution.enabled,startedAt:D.startedAt,...F.advertisedBaseUrl?{advertisedBaseUrl:F.advertisedBaseUrl}:{}}}var Dp="0.2.0";var qR=Z(()=>{B1()});async function p8(D,$,F){let X=C6(),{ciphertext:J,nonce:G,authTag:Y}=$.encryptString(X),B=new Date().toISOString();return await D.update(y0).set({apiTokenEnc:J,nonce:G,authTag:Y,rotatedAt:B}).where(v(y0.pk,"default")).run(),F.tokenPlaintext=X,{newToken:X}}var NR=Z(()=>{wD();U0();iX()});async function a5(D){return D.list()}async function t5(D,$,F){if(!$||!$.trim())throw zD.badRequest("secret key is required");if(F.length===0)throw zD.badRequest("secret value must be a non-empty string");await D.put($,F)}async function e5(D,$){if(!$||!$.trim())throw zD.badRequest("secret key is required");if(await D.get($)===null)throw zD.notFound(`secret '${$}' not found`);await D.remove($)}var PR=Z(()=>{aD()});class L1{pending=new Map;disposed=!1;wait(D){if(this.disposed)return Promise.reject(new LR);let $=D.timeoutMs??DG,F=Date.now()+$,X=L1.key(D.taskId,D.toolCallId);return new Promise((J)=>{let G=setTimeout(()=>{let B=this.pending.get(X);if(!B)return;this.pending.delete(X),B.resolve("deny")},$);G.unref?.(),this.pending.set(X,{taskId:D.taskId,toolCallId:D.toolCallId,toolName:D.toolName,params:D.params,expiresAt:F,resolve:J,timer:G})})}grant(D,$,F){let X=L1.key(D,$),J=this.pending.get(X);if(!J)return!1;return clearTimeout(J.timer),this.pending.delete(X),J.resolve(F),!0}list(){let D=[];for(let $ of this.pending.values())D.push({taskId:$.taskId,toolCallId:$.toolCallId,toolName:$.toolName,params:$.params,expiresAt:$.expiresAt});return D}size(){return this.pending.size}dispose(){if(this.disposed)return;this.disposed=!0;for(let D of this.pending.values())clearTimeout(D.timer),D.resolve("deny");this.pending.clear()}static key(D,$){return`${D}:${$}`}}var LR,DG=60000;var D$=Z(()=>{LR=class LR extends Error{name="ApprovalDisposedError";constructor(){super("approval store disposed")}}});class zR{items=[];enqueue(D){this.items.push(D)}head(){return this.items[0]}shift(){return this.items.shift()}drain(){let D=this.items;return this.items=[],D}isEmpty(){return this.items.length===0}remove(D){let $=this.items.findIndex((X)=>X.handle.id===D);if($<0)return;let[F]=this.items.splice($,1);return F}values(){return this.items}}function $$(){return Date.now()}function j1(){return new Date().toISOString()}function $G(D){if(D===null||typeof D!=="object"||!("unref"in D))return;try{D.unref()}catch{}}class z1{opts;handles=new Map;groups=new Map;running=new Map;runningGroups=new Set;runningByEngine=new Map;terminalLog=[];gcTimer=null;disposed=!1;enqueueSeq=0;constructor(D){this.opts=D;this.startGcLoop()}setLimits(D){if(D.maxConcurrentTotal!==void 0&&D.maxConcurrentTotal>0)this.opts.maxConcurrentTotal=D.maxConcurrentTotal;if(D.perEngineLimits!==void 0){for(let[$,F]of Object.entries(D.perEngineLimits))if(F===void 0)delete this.opts.perEngineLimits[$];else if(F>0)this.opts.perEngineLimits[$]=F}this.kick()}run(D){if(this.disposed)return Promise.reject(Error("ProcessManager disposed"));return new Promise(($,F)=>{let X=`proc_${crypto.randomUUID()}`,J={id:X,class:D.class??"default",group:D.group,engine:D.engine,state:"queued",meta:D.meta??null,startedAt:null,updatedAt:j1(),lastActivityAt:j1(),cancel:async()=>this.cancelHandle(X)};this.handles.set(X,J);let G={handle:J,req:D,enqueuedAt:$$(),enqueueSeq:++this.enqueueSeq,resolve:$,reject:F,cancelledBeforeStart:!1},Y=this.groups.get(D.group);if(!Y)Y=new zR,this.groups.set(D.group,Y);if(Y.enqueue(G),D.signal)if(D.signal.aborted)this.cancelHandle(X).catch(()=>{return});else{let B=()=>{D.signal?.removeEventListener("abort",B),this.cancelHandle(X).catch(()=>{return})};D.signal.addEventListener("abort",B,{once:!0})}this.kick()})}async cancelGroup(D){let $=this.groups.get(D);if($)for(let X of $.drain())this.markCancelledBeforeStart(X);let F=[];for(let[,X]of this.running.entries())if(X.handle.group===D)F.push(this.cancelRunning(X));await Promise.allSettled(F),this.kick()}async cancelAll(){for(let $ of this.groups.values())for(let F of $.drain())this.markCancelledBeforeStart(F);let D=[];for(let $ of this.running.values())D.push(this.cancelRunning($));await Promise.allSettled(D),this.kick()}snapshot(){let D={queued:0,spawning:0,running:0,completed:0,failed:0,cancelled:0};for(let Y of this.handles.values())D[Y.state]+=1;let $=new Map,F=0;for(let Y of this.groups.values())for(let B of Y.values())F+=1,$.set(B.handle.engine,($.get(B.handle.engine)??0)+1);let X=new Set([...Object.keys(this.opts.perEngineLimits),...this.runningByEngine.keys(),...$.keys()]),J={};for(let Y of X){let B=this.opts.perEngineLimits[Y]??this.opts.maxConcurrentTotal,H=this.runningByEngine.get(Y)??0,W=$.get(Y)??0,Q=Math.max(0,B-H),U=Math.max(0,this.opts.maxConcurrentTotal-this.totalActive());J[Y]={limit:B,active:H,queued:W,available:Math.min(Q,U)}}let G=this.terminalLog.slice(-10).map((Y)=>({id:Y.handle.id,engine:Y.handle.engine,group:Y.handle.group,state:Y.handle.state,terminatedAt:Y.handle.updatedAt})).reverse();return{maxConcurrentTotal:this.opts.maxConcurrentTotal,totalActive:this.totalActive(),totalQueued:F,availableSlots:Math.max(0,this.opts.maxConcurrentTotal-this.totalActive()),perEngine:J,byState:D,recentTerminal:G}}dispose(){if(this.disposed=!0,this.gcTimer)clearInterval(this.gcTimer),this.gcTimer=null;for(let D of this.running.values()){if(D.stallTimer)clearTimeout(D.stallTimer);if(D.killTimer)clearTimeout(D.killTimer)}}totalActive(){return this.running.size}startGcLoop(){if(this.opts.gcIntervalMs<=0)return;this.gcTimer=setInterval(()=>this.gcTerminal(),this.opts.gcIntervalMs),$G(this.gcTimer)}gcTerminal(){let D=$$()-this.opts.autoCleanupDelayMs,$=[];for(let F of this.terminalLog)if(F.recordedAt>=D)$.push(F);else this.handles.delete(F.handle.id);this.terminalLog=$}async cancelHandle(D){let $=this.handles.get(D);if(!$)return;let X=this.groups.get($.group)?.remove(D);if(X){this.markCancelledBeforeStart(X),this.kick();return}let J=this.running.get(D);if(J)await this.cancelRunning(J)}markCancelledBeforeStart(D){if(D.cancelledBeforeStart)return;D.cancelledBeforeStart=!0,D.handle.state="cancelled",D.handle.updatedAt=j1(),this.terminalLog.push({handle:D.handle,recordedAt:$$()}),D.reject(Error("cancelled"))}async cancelRunning(D){if(D.cancelRequested&&!D.killEscalated){this.escalateKill(D);return}if(D.cancelRequested=!0,D.spawned)try{await D.spawned.cancel()}catch($){E.warn(`[process-manager] cancel for ${D.handle.id} failed: ${String($)}`)}if(!D.killTimer&&this.opts.killTimeoutMs>0)D.killTimer=setTimeout(()=>this.escalateKill(D),this.opts.killTimeoutMs),$G(D.killTimer)}escalateKill(D){if(D.killEscalated)return;if(D.killEscalated=!0,D.killTimer)clearTimeout(D.killTimer),D.killTimer=null;if(D.spawned)D.spawned.cancel().catch(($)=>E.warn(`[process-manager] hard kill for ${D.handle.id} failed: ${String($)}`))}kick(){if(this.disposed)return;while(!0){let D=this.pickNext();if(!D)return;this.startCandidate(D)}}pickNext(){let D=null,$=-1,F=Number.POSITIVE_INFINITY;for(let[X,J]of this.groups.entries()){if(J.isEmpty())continue;if(this.runningGroups.has(X))continue;let G=J.head();if(!this.canStart(G.handle))continue;let Y=Yp[G.handle.class];if(Y>$||Y===$&&G.enqueueSeq<F)D=G,$=Y,F=G.enqueueSeq}return D}canStart(D){if(this.totalActive()>=this.opts.maxConcurrentTotal)return!1;let $=this.opts.perEngineLimits[D.engine]??this.opts.maxConcurrentTotal;if((this.runningByEngine.get(D.engine)??0)>=$)return!1;return!0}startCandidate(D){let $=this.groups.get(D.handle.group);if($?.shift(),$&&$.isEmpty())this.groups.delete(D.handle.group);let F={handle:D.handle,spawned:null,stallTimer:null,killTimer:null,cancelRequested:!1,killEscalated:!1};this.running.set(D.handle.id,F),this.runningGroups.add(D.handle.group),this.runningByEngine.set(D.handle.engine,(this.runningByEngine.get(D.handle.engine)??0)+1),D.handle.state="spawning",D.handle.startedAt=j1(),D.handle.lastActivityAt=D.handle.startedAt,D.handle.updatedAt=D.handle.startedAt,this.driveJob(F,D)}async driveJob(D,$){let{handle:F,req:X,resolve:J,reject:G}=$,Y=null;try{let B=await X.onSpawn();if(D.spawned=B,D.cancelRequested){try{await B.cancel()}catch{}throw Error("cancelled")}if(F.state="running",F.updatedAt=j1(),this.armStallTimer(D),Y=B.onActivity(()=>this.onActivity(D)),await X.job(),D.cancelRequested)F.state="cancelled",G(Error("cancelled"));else F.state="completed",J()}catch(B){F.state=D.cancelRequested?"cancelled":"failed",G(B)}finally{if(F.updatedAt=j1(),D.stallTimer)clearTimeout(D.stallTimer),D.stallTimer=null;if(D.killTimer)clearTimeout(D.killTimer),D.killTimer=null;if(Y)try{Y()}catch{}this.terminalLog.push({handle:F,recordedAt:$$()}),this.running.delete(F.id),this.runningGroups.delete(F.group);let B=this.runningByEngine.get(F.engine)??0;if(B<=1)this.runningByEngine.delete(F.engine);else this.runningByEngine.set(F.engine,B-1);if(!this.disposed)this.kick()}}armStallTimer(D){if(this.opts.stallTimeoutMs<=0)return;if(D.stallTimer)clearTimeout(D.stallTimer);D.stallTimer=setTimeout(()=>this.onStall(D),this.opts.stallTimeoutMs),$G(D.stallTimer)}onActivity(D){if(jR.has(D.handle.state))return;D.handle.lastActivityAt=j1(),this.armStallTimer(D)}onStall(D){if(jR.has(D.handle.state))return;if(D.cancelRequested)return;E.warn(`[process-manager] stall detected for ${D.handle.id} (engine=${D.handle.engine}, group=${D.handle.group})`),this.cancelRunning(D)}}var jR,Yp;var IR=Z(()=>{JD();jR=new Set(["completed","failed","cancelled"]),Yp={interactive:3,default:2,background:1}});class i6{url;token;clientName;clientVersion;timeoutMs;sessionId=null;idCounter=0;initPromise=null;constructor(D){this.url=D.url,this.token=D.token,this.clientName=D.clientName??"aiworker",this.clientVersion=D.clientVersion??"0.1.0",this.timeoutMs=D.timeoutMs??Gp}nextId(){return this.idCounter+=1,this.idCounter}headers(D){let $={"Content-Type":"application/json",Accept:"application/json, text/event-stream"};if(this.token)$.Authorization=`Bearer ${this.token}`;if(D&&this.sessionId)$["mcp-session-id"]=this.sessionId;return $}async postJson(D,$){let F=new AbortController,X=setTimeout(()=>F.abort(),this.timeoutMs);try{let J=await fetch(this.url,{method:"POST",headers:this.headers($),body:JSON.stringify(D),signal:F.signal});clearTimeout(X);let G=await J.text(),Y=null;if(G.length>0)try{Y=JSON.parse(G)}catch{Y=null}return{response:J,parsed:Y}}catch(J){throw clearTimeout(X),J instanceof Error?J:Error(String(J))}}async initialize(){let D={jsonrpc:"2.0",id:this.nextId(),method:"initialize",params:{protocolVersion:"2025-03-26",capabilities:{},clientInfo:{name:this.clientName,version:this.clientVersion}}},{response:$,parsed:F}=await this.postJson(D,!1);if(!$.ok)throw Error(`MCP initialize failed: HTTP ${$.status}`);if(F?.error)throw Error(`MCP initialize error: ${F.error.message}`);let X=$.headers.get("mcp-session-id");if(!X)throw Error("MCP initialize response missing mcp-session-id header");this.sessionId=X,await this.postJson({jsonrpc:"2.0",method:"notifications/initialized"},!0)}async ensureSession(){if(this.sessionId)return;if(!this.initPromise)this.initPromise=this.initialize().catch((D)=>{throw this.initPromise=null,D});await this.initPromise,this.initPromise=null}async invoke(D,$){await this.ensureSession();let F={jsonrpc:"2.0",id:this.nextId(),method:D,params:$},{response:X,parsed:J}=await this.postJson(F,!0);if(X.status===404||J?.error&&/session/i.test(J.error.message)){this.sessionId=null,await this.ensureSession();let G=await this.postJson({...F,id:this.nextId()},!0);X=G.response,J=G.parsed}if(!X.ok)throw Error(`MCP ${D} failed: HTTP ${X.status}`);if(!J)throw Error(`MCP ${D} returned non-JSON body`);if(J.error)throw Error(`MCP ${D} error: ${J.error.message}`);if(J.result===void 0)throw Error(`MCP ${D} response missing 'result'`);return J.result}async listTools(){return(await this.invoke("tools/list")).tools??[]}async callTool(D,$={}){return this.invoke("tools/call",{name:D,arguments:$})}async callToolJson(D,$={}){let X=(await this.callTool(D,$)).content.find((J)=>J.type==="text");if(!X)throw Error(`MCP tool '${D}' returned no text content`);try{return JSON.parse(X.text)}catch{return E.warn(`[mcp] tool '${D}' text is not JSON, returning raw string`),X.text}}}var Gp=30000;var TR=Z(()=>{JD()});var FG=Z(()=>{TR()});function wR(D){if(Array.isArray(D))return D.map(String);if(typeof D==="string"&&D.length>0)return D.split(",").map(($)=>$.trim()).filter(Boolean);return[]}function XG(D){let $=D.created_at??new Date().toISOString(),F=D.updated_at??$,{content:X,id:J,score:G,...Y}=D,B={id:J,content:X??"",metadata:{...Y,tags:wR(D.tags)},createdAt:$,updatedAt:F};if(typeof G==="number")B.score=G;return B}function Bp(D){return{id:D.id,name:D.name,description:D.description??"",version:D.default_ttl?String(D.default_ttl):"0",tags:D.is_public?["public"]:[]}}class JG{name="cloud-gateway";client;defaultCategory;defaultTypeId;constructor(D){this.client=new i6({url:D.url,token:D.token,clientName:"aiworker-brain",timeoutMs:D.timeoutMs}),this.defaultCategory=D.defaultCategory,this.defaultTypeId=D.defaultTypeId}async health(){let D=new Date().toISOString();try{return await this.client.ensureSession(),{name:this.name,status:"healthy",lastChecked:D}}catch{return{name:this.name,status:"down",lastChecked:D}}}async listSkills(){let D=await this.client.callToolJson("knowledge_types");if(!Array.isArray(D))return[];return D.filter(($)=>$.enabled!==!1).map(Bp)}async listMemories(D){let $={per_page:Math.min(Math.max(D?.limit??50,1),100),page:1},F=D?.tags?.find((G)=>G.startsWith("type:"));if(F)$.type_id=F.slice(5);let J=(await this.client.callToolJson("knowledge_query",$)).entries??[];if(D?.since)J=J.filter((G)=>!G.created_at||G.created_at>=D.since);if(D?.until)J=J.filter((G)=>!G.created_at||G.created_at<=D.until);return J.map(XG)}async searchMemories(D){let $=await this.client.callToolJson("knowledge_search",{query:D,limit:20});if(!Array.isArray($))return[];return $.map(XG)}async writeMemory(D){let $=D.metadata??{},F={content:D.content},X=typeof $.title==="string"?$.title:typeof $.name==="string"?$.name:void 0;if(X)F.title=X;let J=typeof $.type_id==="string"?$.type_id:this.defaultTypeId,G=typeof $.category==="string"?$.category:this.defaultCategory;if(J)F.type_id=J;else if(G)F.category=G;let Y=D.tags??wR($.tags);if(Y.length>0)F.tags=Y.join(",");let B=typeof $.source_type==="string"?$.source_type:"aiworker";if(F.source_type=B,typeof $.source_ref==="string")F.source_ref=$.source_ref;F.skip_compile=!0;let H=await this.client.callToolJson("knowledge_write",F);return XG(H)}}var SR=Z(()=>{FG()});import{join as F$}from"path";async function bR(D){let $=new Bun.CryptoHasher("sha256");return $.update(D),$.digest("hex")}function fR(D){let $=D.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);if(!$)return{metadata:{},content:D};try{return{metadata:d5($[1]??"")??{},content:$[2]??""}}catch{return{metadata:{},content:D}}}function Hp(D,$){let F=$.split(".").pop()?.toLowerCase();if(F==="yaml"||F==="yml")try{let X=d5(D);return{name:String(X.name??""),description:String(X.description??""),version:String(X.version??"0.0.0"),capabilities:Array.isArray(X.capabilities)?X.capabilities.map(String):[],filePath:$}}catch{return null}if(F==="md"){let{metadata:X,content:J}=fR(D);return{name:String(X.name??$.split("/").pop()?.replace(/\.md$/,"")??""),description:String(X.description??J.split(`
|
|
261
|
-
`)[0]??""),version:String(X.version??"0.0.0"),capabilities:Array.isArray(X.capabilities)?X.capabilities.map(String):[],filePath:$}}return null}async function kR(D){let $=F$(D,"skills");try{await(await import("fs/promises")).access($);let X=new Bun.Glob("**/*.{yaml,yml,md}"),J=[];for await(let G of X.scan({cwd:$})){let Y=F$($,G);try{let H=await Bun.file(Y).text(),W=Hp(H,Y);if(W){let Q=await bR(H);J.push({...W,hash:Q})}}catch{}}return J}catch{return[]}}async function YG(D){let $=F$(D,"memories");try{await(await import("fs/promises")).access($);let X=new Bun.Glob("**/*.md"),J=[];for await(let G of X.scan({cwd:$})){let Y=F$($,G);try{let H=await Bun.file(Y).text(),W=await bR(H),{metadata:Q,content:U}=fR(H),_=G.replace(/\.md$/,"");J.push({id:String(Q.id??_),title:String(Q.title??_),content:U,metadata:Q,filePath:Y,hash:W,createdAt:Q.createdAt?String(Q.createdAt):void 0,updatedAt:Q.updatedAt?String(Q.updatedAt):void 0})}catch{}}return J}catch{return[]}}var vR=Z(()=>{rY()});import{watch as Wp}from"fs";import{join as GG}from"path";function Vp(D){return D.includes("/skills/")||D.includes("\\skills\\")?"skill":"memory"}class BG{watchers=[];handlers=[];debounceTimers=new Map;debounceMs;home;running=!1;constructor(D){this.home=D.home,this.debounceMs=D.debounceMs??100}on(D){return this.handlers.push(D),()=>{let $=this.handlers.indexOf(D);if($!==-1)this.handlers.splice($,1)}}emit(D){for(let $ of this.handlers)try{$(D)}catch{}}watchDir(D){try{return Wp(D,{recursive:!0},(F,X)=>{if(!X)return;let J=GG(D,X),G=J,Y=this.debounceTimers.get(G);if(Y)clearTimeout(Y);let B=setTimeout(()=>{this.debounceTimers.delete(G);let H=F==="rename"?"add":"modify";this.emit({type:H,path:J,kind:Vp(J),timestamp:Date.now()})},this.debounceMs);this.debounceTimers.set(G,B)})}catch{return null}}async start(){if(this.running)return;this.running=!0;let D=GG(this.home,"skills"),$=GG(this.home,"memories"),F=this.watchDir(D),X=this.watchDir($);if(F)this.watchers.push(F);if(X)this.watchers.push(X)}stop(){this.running=!1;for(let D of this.watchers)try{D.close()}catch{}this.watchers=[];for(let D of this.debounceTimers.values())clearTimeout(D);this.debounceTimers.clear()}get isRunning(){return this.running}}var hR=()=>{};import{existsSync as Qp,mkdirSync as Up}from"fs";import{access as _p,stat as Ap}from"fs/promises";import{join as HG}from"path";function Kp(D){return{id:D.filePath,name:D.name,description:D.description,version:D.version,tags:D.capabilities}}async function xR(D,$){let{createdAt:F,updatedAt:X}=D;if(!F||!X)try{let Y=await Ap(D.filePath);F=F??Y.birthtime.toISOString(),X=X??Y.mtime.toISOString()}catch{let Y=new Date(0).toISOString();F=F??Y,X=X??Y}let J={...D.metadata,title:D.title,filePath:D.filePath,hash:D.hash},G={id:D.id,content:D.content,metadata:J,createdAt:F,updatedAt:X};if($!==void 0)G.score=$;return G}function Op(D){let $=new Date(D.timestamp).toISOString(),F={path:D.path,kind:D.kind};if(D.kind==="skill")return{type:"skill:changed",payload:F,timestamp:$};switch(D.type){case"add":return{type:"memory:created",payload:F,timestamp:$};case"modify":return{type:"memory:updated",payload:F,timestamp:$};case"delete":return{type:"memory:deleted",payload:F,timestamp:$};default:return null}}function Cp(D,$){if(!$)return D;let F=D;if($.tags&&$.tags.length>0){let X=$.tags;F=F.filter((J)=>{let G=Array.isArray(J.metadata.tags)?J.metadata.tags.map(String):[];return X.every((Y)=>G.includes(Y))})}if($.since){let X=$.since;F=F.filter((J)=>J.createdAt>=X)}if($.until){let X=$.until;F=F.filter((J)=>J.createdAt<=X)}if(typeof $.limit==="number")F=F.slice(0,$.limit);return F}function Rp(D){if(D==="feedback"||D==="project"||D==="reference"||D==="user")return D;return"user"}function Ep(D){return D.toLowerCase().replace(/[^a-z0-9_\- ]/g,"").replace(/\s+/g,"_").replace(/_+/g,"_").replace(/^_|_$/g,"").slice(0,64)}async function Mp(D,$,F,X){let J=HG(D,"..","MEMORY.md"),G=`- [${$}](memories/${F}) \u2014 ${X}`,Y=Bun.file(J);if(await Y.exists()){let H=(await Y.text()).trimEnd(),W=H?`${H}
|
|
262
|
-
${G}
|
|
263
|
-
`:`${G}
|
|
264
|
-
`;await Bun.write(J,W)}else await Bun.write(J,`# Memory index
|
|
265
|
-
|
|
266
|
-
${G}
|
|
267
|
-
`)}class WG{name="filesystem";home;watcher;watcherStarted=!1;constructor(D){this.home=D.home,this.watcher=new BG({home:D.home})}async health(){let D=new Date().toISOString();try{return await _p(this.home),{name:this.name,status:"healthy",lastChecked:D}}catch{return{name:this.name,status:"down",lastChecked:D}}}async listSkills(){return(await kR(this.home)).map(Kp)}async listMemories(D){let $=await YG(this.home),F=await Promise.all($.map((X)=>xR(X)));return Cp(F,D)}async searchMemories(D){let $=await YG(this.home),F=D.toLowerCase(),X=$.filter((J)=>J.content.toLowerCase().includes(F)||J.title.toLowerCase().includes(F)||J.metadata.name!==void 0&&String(J.metadata.name).toLowerCase().includes(F)||J.metadata.description!==void 0&&String(J.metadata.description).toLowerCase().includes(F));return Promise.all(X.map((J)=>xR(J,1)))}async writeMemory(D){let $=D.metadata??{},F=typeof $.name==="string"&&$.name.length>0?$.name:`memory-${Date.now()}`,X=typeof $.description==="string"?$.description:"",J=Rp($.type),G=HG(this.home,"memories");if(!Qp(G))Up(G,{recursive:!0});let Y=Ep(F),B=`${Y}.md`,H=HG(G,B),W=`---
|
|
268
|
-
name: ${F}
|
|
269
|
-
description: ${X}
|
|
270
|
-
type: ${J}
|
|
271
|
-
---
|
|
272
|
-
`;await Bun.write(H,`${W}${D.content}
|
|
273
|
-
`),await Mp(G,F,B,X);let Q=new Date().toISOString();return{id:Y,content:D.content,metadata:{...$,name:F,description:X,type:J,filePath:H,...D.tags?{tags:D.tags}:{}},createdAt:Q,updatedAt:Q}}watch(D){if(!this.watcherStarted)this.watcherStarted=!0,this.watcher.start();return this.watcher.on(($)=>{let F=Op($);if(F)D(F)})}}var gR=Z(()=>{vR();hR()});class VG{name="multi";sources;writeTargetId;retrieval;constructor(D){this.sources=[...D.sources].sort(($,F)=>F.priority-$.priority),this.writeTargetId=D.writeTargetId,this.retrieval=D.retrieval}async health(){let $=(await Promise.all(this.sources.map((F)=>F.health().catch(()=>({name:F.id,status:"down",lastChecked:new Date().toISOString()}))))).some((F)=>F.status==="down");return{name:this.name,status:$?"degraded":"healthy",lastChecked:new Date().toISOString()}}async listSkills(){return(await Promise.all(this.sources.map(($)=>$.listSkills().catch(()=>[])))).flat()}async listMemories(D){if(this.retrieval==="first-match"){for(let F of this.sources){let X=await F.listMemories(D).catch(()=>[]);if(X.length>0)return X}return[]}return(await Promise.all(this.sources.map((F)=>F.listMemories(D).catch(()=>[])))).flat()}async searchMemories(D){if(this.retrieval==="first-match"){for(let F of this.sources){let X=await F.searchMemories(D).catch(()=>[]);if(X.length>0)return X}return[]}return(await Promise.all(this.sources.map((F)=>F.searchMemories(D).catch(()=>[])))).flat()}async writeMemory(D){let $=this.sources.find((F)=>F.id===this.writeTargetId&&!F.readOnly)??this.sources.find((F)=>!F.readOnly);if(!$)throw Error("MultiBrainProvider: no writable brain source configured");return $.writeMemory(D)}watch(D){let $=this.sources.map((F)=>F.watch?F.watch(D):()=>{return});return()=>$.forEach((F)=>F())}}function Zp(D,$){let F;if($.type==="filesystem"){let X=$.config.home??J6(D);F=new WG({home:X})}else F=new JG({url:$.config.url,token:$.config.token,...$.config.defaultCategory===void 0?{}:{defaultCategory:$.config.defaultCategory},...$.config.defaultTypeId===void 0?{}:{defaultTypeId:$.config.defaultTypeId}});return Object.assign(F,{id:$.id,priority:$.priority,readOnly:$.readOnly})}function yR(D,$){let F=$.brains.map((X)=>Zp(D,X));return new VG({sources:F,writeTargetId:$.brainWriteTarget,retrieval:$.brainRetrieval})}var uR=Z(()=>{V2();SR();gR()});function mR(D){return D.on((F)=>{try{qp(F)}catch(X){E.warn(`[evolution] observer failed to persist: ${String(X)}`)}})}function qp(D){if(!(D.type==="orchestrator.tool_call"||D.type==="orchestrator.finished"))return;y().insert(O2).values({conversationId:typeof D.payload.conversationId==="string"?D.payload.conversationId:null,kind:D.type,payload:D.payload}).run()}var pR=Z(()=>{wD();JD()});function dR(D,$=QG){let F=Math.max(1,$.nGramMin),X=Math.max(F,$.nGramMax),J=new Map;for(let[B,H]of D){if(!B||H.length===0)continue;for(let W=F;W<=X;W++){if(H.length<W)break;for(let Q=0;Q+W<=H.length;Q++){let U=H.slice(Q,Q+W),_=Lp(U),A=J.get(_);if(A)A.occurrences+=1,A.conversations.add(B);else J.set(_,{toolSequence:U,occurrences:1,conversations:new Set([B])})}}}let G=Math.max(1,$.windowSize),Y=[];for(let B of J.values()){if(B.occurrences<$.minOccurrences)continue;if(B.conversations.size<$.minConversations)continue;let H=jp(B.occurrences/G);Y.push({toolSequence:B.toolSequence,occurrences:B.occurrences,uniqueConversations:B.conversations.size,confidence:H,rationale:Pp(B.toolSequence,B.occurrences,B.conversations.size,H)})}return Y.sort((B,H)=>{if(H.occurrences!==B.occurrences)return H.occurrences-B.occurrences;return H.toolSequence.length-B.toolSequence.length}),Np(Y)}function Np(D){let $=[];for(let F of D){if($.find((G)=>cR(F.toolSequence,G.toolSequence)))continue;let J=$.findIndex((G)=>cR(G.toolSequence,F.toolSequence));if(J>=0)$.splice(J,1);$.push(F)}return $}function cR(D,$){if(D.length>=$.length)return!1;for(let F=0;F<D.length;F++)if(D[F]!==$[F])return!1;return!0}function Pp(D,$,F,X){let J=D.join(" \u2192 "),G=(X*100).toFixed(1);return`Observed tool sequence ${J} ${$}\xD7 across ${F} conversation(s); window confidence ${G}%.`}function Lp(D){return D.join("|")}function jp(D){if(!Number.isFinite(D))return 0;if(D<0)return 0;if(D>1)return 1;return D}var QG;var lR=Z(()=>{QG={nGramMin:2,nGramMax:4,minOccurrences:3,minConversations:2,windowSize:500}});import{createHash as zp}from"crypto";import Ip from"process";function Sp(D){return{windowSize:D?.windowSize??X$("EVOLUTION_PROPOSER_WINDOW",Tp),maxDraftsPerRun:D?.maxDraftsPerRun??X$("EVOLUTION_PROPOSER_MAX_DRAFTS_PER_RUN",wp),intervalMs:D?.intervalMs??X$("EVOLUTION_PROPOSER_INTERVAL_MS",nR)}}async function bp(D){let $=Sp(D),F=y(),X=F.select({conversationId:O2.conversationId}).from(O2).orderBy(hD(O2.noticedAt)).limit($.windowSize).all(),J=Array.from(new Set(X.map((Q)=>Q.conversationId).filter((Q)=>typeof Q==="string"&&Q.length>0)));if(J.length===0)return E.info("[evolution/proposer] no conversations in window; skipping"),{drafts:0};let G=F.select({conversationId:e2.conversationId,toolName:e2.toolName}).from(e2).where(E8(e2.conversationId,J)).orderBy(b2(e2.conversationId),b2(e2.id)).all(),Y=new Map;for(let Q of G){if(!Q.conversationId)continue;let U=Y.get(Q.conversationId);if(U)U.push(Q.toolName);else Y.set(Q.conversationId,[Q.toolName])}let B=dR(Y,{...QG,windowSize:$.windowSize}),H=kp(F),W=0;for(let Q of B){if(W>=$.maxDraftsPerRun)break;let U=Q.toolSequence.join("|");if(H.has(U))continue;let _=vp(Q);F.insert(N0).values(_).run(),H.add(U),W+=1,E.info(`[evolution/proposer] wrote draft ${_.proposedName} (occurrences=${Q.occurrences}, convs=${Q.uniqueConversations})`)}return E.info(`[evolution/proposer] ${W}/${B.length} candidate(s) written; window=${$.windowSize}, conversations=${J.length}`),{drafts:W}}function sR(D){let $=D??X$("EVOLUTION_PROPOSER_INTERVAL_MS",nR),F=setInterval(()=>{bp().catch((X)=>E.warn(`[evolution/proposer] loop run failed: ${String(X)}`))},$);return()=>clearInterval(F)}function fp(D){let $=D.match(/<!--\s*evolution-meta:\s*(\{[\s\S]*?\})\s*-->/);if(!$?.[1])return null;try{let F=JSON.parse($[1]);if(!Array.isArray(F.allowedTools)||!F.allowedTools.every((X)=>typeof X==="string"))return null;return{allowedTools:F.allowedTools,confidence:typeof F.confidence==="number"?F.confidence:0,sequenceKey:typeof F.sequenceKey==="string"?F.sequenceKey:F.allowedTools.join("|")}}catch{return null}}function kp(D){let $=new Set,F=D.select({bodyMarkdown:N0.bodyMarkdown}).from(N0).all();for(let J of F){let G=fp(J.bodyMarkdown);if(G)$.add(G.allowedTools.join("|"))}let X=D.select({config:i3.config}).from(i3).all();for(let J of X){let G=J.config;if(!G||typeof G!=="object")continue;let Y=G.allowedTools;if(Array.isArray(Y)&&Y.every((B)=>typeof B==="string"))$.add(Y.join("|"))}return $}function vp(D){let $=D.toolSequence.join("|"),F=zp("sha256").update($).digest("hex").slice(0,6),X=iR(D.toolSequence[0]??"tool"),J=iR(D.toolSequence[D.toolSequence.length-1]??"tool"),G=`auto-${X}-${J}-${F}`,Y=D.toolSequence.join(" \u2192 "),B=D.toolSequence.map((U)=>`\`${U}\``).join(", "),H={allowedTools:D.toolSequence,confidence:D.confidence,sequenceKey:$},W=`When the agent runs \`${Y}\` (seen ${D.occurrences}\xD7 across ${D.uniqueConversations} conversation(s))`,Q=[`<!-- evolution-meta: ${JSON.stringify(H)} -->`,"",`# ${G}`,"","## Trigger","",W,"","## Allowed tools","",B,"","## Prompt template","","```",`You are extending the skill \`${G}\`. Invoke the following tools in order: ${B}.`,"```",""].join(`
|
|
274
|
-
`);return{proposedName:G,source:"evolution",bodyMarkdown:Q,rationale:D.rationale,status:"pending"}}function iR(D){return D.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"tool"}function X$(D,$){let F=Ip.env[D];if(F===void 0||F==="")return $;let X=Number(F);return Number.isFinite(X)&&X>0?X:$}var nR=21600000,Tp=500,wp=5;var rR=Z(()=>{wD();JD();U0();lR()});var UG;var _G=Z(()=>{F5();UG={id:"gemini",label:"Gemini CLI",commandName:"gemini",versionEnvVar:"GEMINI_CLI_VERSION",defaultVersion:"0.9.0",npxPackage:"@google/gemini-cli",buildArgs:({model:D,yolo:$,extraArgs:F})=>{let X=["--experimental-acp"];if(D&&D.length>0)X.push("--model",D);if($)X.push("--yolo","--allowed-tools","run_shell_command");if(F&&F.length>0)X.push(...F);return X},authProbe:()=>DO()}});var AG;var KG=Z(()=>{F5();AG={id:"qwen",label:"Qwen Code",commandName:"qwen",versionEnvVar:"QWEN_CLI_VERSION",defaultVersion:"0.0.14",npxPackage:"@qwen-code/qwen-code",buildArgs:({model:D,yolo:$,extraArgs:F})=>{let X=[];if(D&&D.length>0)X.push("--model",D);if($)X.push("--yolo");if(X.push("--acp"),F&&F.length>0)X.push(...F);return X},authProbe:()=>$O()}});function OG(D){let $=hp[D];if(!$)throw Error(`unknown ACP agent: ${D}`);return $}var hp;var oR=Z(()=>{_G();KG();hp={gemini:UG,qwen:AG}});import aR from"process";function cp(D,$,F){if($.has(D))return!0;return F.some((X)=>D.startsWith(X))}function dp(D){if(mp.some(($)=>D.startsWith($)))return!0;if(pp.some(($)=>D.endsWith($)))return!0;return!1}function tR(D,$,F){let X={};for(let[J,G]of Object.entries(D)){if(G===void 0)continue;if(dp(J))continue;if(!cp(J,$,F))continue;X[J]=G}return X}function N2(D,$=aR.env){let F=tR($,xp,gp);if(D)for(let[X,J]of Object.entries(D))F[X]=J;return F}function eR(D=aR.env){return tR(D,yp,up)}var xp,gp,yp,up,mp,pp;var I1=Z(()=>{xp=new Set(["PATH","HOME","USER","LOGNAME","SHELL","PWD","LANG","TZ","TERM","TMPDIR","TMP","TEMP"]),gp=["LC_","NODE_","NPM_CONFIG_","XDG_","CLAUDE_","CODEX_","CURSOR_","GEMINI_","QWEN_"],yp=new Set(["PATH","HOME","USER","LOGNAME","SHELL","PWD","LANG","TZ","TERM","TMPDIR","TMP","TEMP","EMAIL","DISPLAY","SSH_AUTH_SOCK","SSH_AGENT_PID","SSH_ASKPASS","GIT_ASKPASS","GIT_SSH","GIT_SSH_COMMAND","GIT_TERMINAL_PROMPT","GIT_CONFIG_GLOBAL","GIT_CONFIG_NOSYSTEM","GIT_CONFIG_SYSTEM","GIT_SSL_CAINFO","GIT_SSL_CAPATH","SSL_CERT_FILE","SSL_CERT_DIR"]),up=["LC_","XDG_","GIT_AUTHOR_","GIT_COMMITTER_"],mp=["AIWORKER_","INTERNAL_","WORKER_"],pp=["_TOKEN","_SECRET","_API_KEY","_PRIVATE_KEY","_PASSWORD"]});function RG(D){let $=D.sessionUpdate,F=D;switch($){case"agent_message_chunk":{let X=CG(F.content);if(!X)return[];return[{type:"assistant_message_delta",delta:X}]}case"agent_thinking_chunk":{let X=CG(F.content);if(!X)return[];return[{type:"thinking_delta",delta:X}]}case"user_message_chunk":return[];case"tool_call":return lp(F);case"tool_call_update":return ip(F);case"plan":return np(F.entries);case"available_commands_update":case"current_mode_update":return[];default:return[]}}function DE(D,$,F){let X=F??{};switch(D){case"read":return{kind:"file_read",path:p9(X,["file_path","path","absolute_path","filePath"])};case"edit":case"delete":case"move":{let J=p9(X,["file_path","path","absolute_path","filePath"]),G=rp(X);return{kind:"file_edit",path:J,...G?{diff:G}:{}}}case"execute":return{kind:"command_run",command:p9(X,["command","cmd","shell_command","script"])};case"search":return{kind:"search",query:p9(X,["query","pattern","q","search"])};case"fetch":return{kind:"web_fetch",url:p9(X,["url","uri","href"])};case"think":return{kind:"task_plan",summary:$??"thinking"};case"other":case void 0:default:return{kind:"tool",toolName:$??"acp.tool",...Object.keys(X).length>0?{arguments:X}:{}}}}function EG(D){switch(D){case"end_turn":return"stop";case"max_tokens":case"max_turn_requests":return"length";case"refusal":return"error";case"cancelled":return"cancelled";default:return"stop"}}function lp(D){let $=[],F=D.toolCallId;if(!F)return $;let X=D.rawInput??{},J=DE(D.kind,D.title,X),G=D.title??D.kind??"acp.tool";if($.push({type:"tool_use",id:F,name:G,arguments:X,action:J,...D.status?{status:sp(D.status)}:{}}),FE(D.status)){let Y=$E(D.content);$.push({type:"tool_result",id:F,name:G,content:Y,...D.status==="failed"||D.status==="cancelled"?{isError:!0}:{}})}return $}function ip(D){let $=D.toolCallId;if(!$||!FE(D.status))return[];let F=$E(D.content),X=D.title??D.kind??"";return[{type:"tool_result",id:$,name:X,content:F,...D.status==="failed"||D.status==="cancelled"?{isError:!0}:{}}]}function np(D){if(!Array.isArray(D)||D.length===0)return[];let $=D.map((F,X)=>`${X+1}. [${F.status??"pending"}] ${F.content}`).join(`
|
|
275
|
-
`);return[{type:"tool_use",id:`plan-${op($)}`,name:"plan",arguments:{entries:D},action:{kind:"task_plan",summary:$}}]}function CG(D){if(!D)return"";if(D.type==="text"&&typeof D.text==="string")return D.text;return""}function $E(D){if(!D||D.length===0)return"";let $=[];for(let F of D){if(!F||typeof F!=="object")continue;if(F.type==="content"){let X=F.content,J=CG(X);if(J)$.push(J)}else if(F.type==="diff"){let X=F,J=X.oldText??"",G=X.newText??"";$.push(`--- ${X.path??""}
|
|
276
|
-
- ${J}
|
|
277
|
-
+ ${G}`)}else if(F.type==="terminal"){let X=F;$.push(`[terminal:${X.terminalId??""}]`)}}return $.join(`
|
|
278
|
-
`)}function sp(D){switch(D){case"pending":return"pending";case"in_progress":return"running";case"completed":return"success";case"failed":return"failed";case"cancelled":return"denied";default:return"pending"}}function FE(D){return D==="completed"||D==="failed"||D==="cancelled"}function p9(D,$){for(let F of $){let X=D[F];if(typeof X==="string"&&X.length>0)return X}return""}function rp(D){let $=typeof D.old_string==="string"?D.old_string:typeof D.oldText==="string"?D.oldText:void 0,F=typeof D.new_string==="string"?D.new_string:typeof D.newText==="string"?D.newText:typeof D.content==="string"?D.content:void 0;if($!==void 0&&F!==void 0)return`- ${$}
|
|
279
|
-
+ ${F}`;if(F!==void 0)return F;return}function op(D){let $=5381;for(let F=0;F<D.length;F++)$=($<<5)+$+D.charCodeAt(F)>>>0;return $.toString(36)}class c8{options;nextId=1;pending=new Map;disposed=!1;constructor(D){this.options=D}async request(D,$,F){if(this.disposed)throw Error("json-rpc peer disposed");if(F?.aborted)throw Error(`json-rpc request ${D} aborted before send`);let X=this.nextId++,J=$===void 0?{jsonrpc:"2.0",id:X,method:D}:{jsonrpc:"2.0",id:X,method:D,params:$};return new Promise((G,Y)=>{let B=this.options.requestTimeoutMs,H=B&&B>0?setTimeout(()=>{this.rejectPending(X,Error(`json-rpc request ${D} timed out after ${B}ms`))},B):null,W=F?()=>this.rejectPending(X,Error(`json-rpc request ${D} aborted`)):null;if(this.pending.set(X,{resolve:(Q)=>G(Q),reject:Y,timer:H,abortHandler:W,signal:F??null}),W&&F)F.addEventListener("abort",W,{once:!0});try{this.options.writeLine(`${JSON.stringify(J)}
|
|
280
|
-
`)}catch(Q){this.rejectPending(X,Q instanceof Error?Q:Error(String(Q)))}})}notify(D,$){if(this.disposed)return;let F=$===void 0?{jsonrpc:"2.0",method:D}:{jsonrpc:"2.0",method:D,params:$};try{this.options.writeLine(`${JSON.stringify(F)}
|
|
281
|
-
`)}catch(X){this.options.onError?.(X instanceof Error?X:Error(String(X)))}}handleLine(D){if(this.disposed)return;let $=D.trim();if($.length===0)return;let F;try{F=JSON.parse($)}catch(J){this.options.onError?.(Error(`json-rpc parse error: ${J instanceof Error?J.message:String(J)}`));return}if(!F||typeof F!=="object"||Array.isArray(F))return;let X=F;if("id"in X&&(("result"in X)||("error"in X))){this.handleResponse(X);return}if("id"in X&&"method"in X){this.handleRequest(X);return}if("method"in X)this.options.onNotification?.(X)}dispose(D){if(this.disposed)return;this.disposed=!0;let $=Error(D??"json-rpc peer disposed"),F=Array.from(this.pending.entries());this.pending.clear();for(let[,X]of F){if(X.timer)clearTimeout(X.timer);if(X.signal&&X.abortHandler)X.signal.removeEventListener("abort",X.abortHandler);X.reject($)}}rejectPending(D,$){let F=this.pending.get(D);if(!F)return;if(this.pending.delete(D),F.timer)clearTimeout(F.timer);if(F.signal&&F.abortHandler)F.signal.removeEventListener("abort",F.abortHandler);F.reject($)}handleResponse(D){let $=this.pending.get(D.id);if(!$)return;if(this.pending.delete(D.id),$.timer)clearTimeout($.timer);if($.signal&&$.abortHandler)$.signal.removeEventListener("abort",$.abortHandler);if("error"in D){let F=D.error;$.reject(Error(`json-rpc error ${F.code}: ${F.message}`));return}$.resolve(D.result)}async handleRequest(D){let $=this.options.onRequest;if(!$){this.writeResponse(D.id,void 0,{code:-32601,message:`Method not found: ${D.method}`});return}try{let F=await $(D);this.writeResponse(D.id,F)}catch(F){let X=F instanceof Error?F.message:String(F);this.writeResponse(D.id,void 0,{code:-32000,message:X})}}writeResponse(D,$,F){let X=F?{jsonrpc:"2.0",id:D,error:F}:{jsonrpc:"2.0",id:D,result:$??null};try{this.options.writeLine(`${JSON.stringify(X)}
|
|
282
|
-
`)}catch(J){this.options.onError?.(J instanceof Error?J:Error(String(J)))}}}function T1(D,$){let X=(D+$).split(/\r?\n/),J=X.pop()??"";return{lines:X.filter((G)=>G.trim().length>0),remainder:J}}import{spawn as ap}from"child_process";import{once as tp}from"events";import ep from"fs/promises";import Dc from"path";import n6 from"process";function YE(D,$){let F=$?.trim();if(F&&F.length>0)return F;let X=n6.env[D.versionEnvVar]?.trim();if(X&&X.length>0)return X;return D.defaultVersion}class J${options;name;cachedAvailability=null;constructor(D){this.options=D;this.name=`acp:${D.agent.id}`}async health(){let D=new Date().toISOString();return{name:this.name,status:"healthy",lastChecked:D}}async listTools(){return[]}run(D){return this.runIterable(D)}async getAvailability(D=!1){if(!D&&this.cachedAvailability&&this.cachedAvailability.expiresAt>Date.now())return this.cachedAvailability.info;let $=this.options.authProbe??this.options.agent.authProbe,F=$?await $().catch((X)=>({status:"NotFound",checkedAt:new Date().toISOString(),detail:X instanceof Error?X.message:String(X)})):{status:"NotFound",checkedAt:new Date().toISOString(),detail:"no probe configured"};return this.cachedAvailability={expiresAt:Date.now()+Fc,info:F},F}async*runIterable(D){let $=Yc(D.messages);if(!$){yield{type:"error",error:`${this.name} executor requires a user message`},yield{type:"finish",reason:"error"};return}let F=D.workspacePath??this.options.fallbackWorkspacePath??n6.cwd(),X;try{X=await this.resolveCommand(D.model)}catch(K){yield{type:"error",error:K instanceof Error?K.message:String(K)},yield{type:"finish",reason:"error"};return}let G=(this.options.spawn??ap)(X.cmd,X.args,{cwd:F,env:N2(this.options.env)}),Y=new GE,B=new c8({writeLine:(K)=>{try{G.stdin.write(K)}catch{}},onNotification:(K)=>this.handleNotification(K,Y),onRequest:(K)=>this.handleInboundRequest(K),onError:(K)=>{Y.push({type:"error",error:K.message})},requestTimeoutMs:this.options.timeoutMs??XE}),H="",W=(K)=>{let{lines:R,remainder:q}=T1(H,K.toString("utf8"));H=q;for(let N of R)B.handleLine(N)};G.stdout.on("data",W);let Q=null;G.on("error",(K)=>{Q=K.message});let U=tp(G,"exit").then((K)=>K[0]??null).catch((K)=>{return Q=K instanceof Error?K.message:String(K),null});U.then((K)=>{if(K===0)return;let R=Q??(K===null?"acp child exited unexpectedly":`acp child exited with code ${K}`);Y.close({kind:"error",message:R}),B.dispose(R)});let _=setTimeout(()=>JE(G,"SIGKILL"),this.options.timeoutMs??XE),A="",C=!1,O=()=>{if(C=!0,A)B.notify("session/cancel",{sessionId:A});setTimeout(()=>JE(G,"SIGTERM"),200)};D.signal?.addEventListener("abort",O,{once:!0});try{if(await B.request("initialize",{protocolVersion:$c,clientCapabilities:{},clientInfo:{name:"aiworker",version:"0.2.0"}}),A=(await B.request("session/new",{cwd:F,mcpServers:[]})).sessionId,!A){yield{type:"error",error:"ACP session/new returned no sessionId"},yield{type:"finish",reason:"error"};return}B.request("session/prompt",{sessionId:A,prompt:[{type:"text",text:$}]}).then((N)=>Y.close({kind:"finish",stopReason:N.stopReason}),(N)=>Y.close({kind:"error",message:N instanceof Error?N.message:String(N)}));for await(let N of Y.iter())yield N;let q=Y.terminal;if(q?.kind==="finish")yield{type:"finish",reason:EG(q.stopReason)};else if(q?.kind==="error")yield{type:"error",error:q.message},yield{type:"finish",reason:C?"cancelled":"error"};else yield{type:"finish",reason:C?"cancelled":"stop"}}catch(K){yield{type:"error",error:K instanceof Error?K.message:String(K)},yield{type:"finish",reason:C?"cancelled":"error"}}finally{clearTimeout(_),D.signal?.removeEventListener("abort",O),B.dispose("run ended"),G.stdout.off("data",W),Jc(G),await U.catch(()=>null)}}handleNotification(D,$){if(D.method!=="session/update")return;let F=D.params;if(!F||!F.update)return;for(let X of RG(F.update))$.push(X)}async handleInboundRequest(D){if(D.method==="session/request_permission"){if(!(this.options.autoApprove??!0))return{outcome:{outcome:"cancelled"}};let F=D.params??{},X=Array.isArray(F.options)?F.options:[];return{outcome:{outcome:"selected",optionId:(X.find((G)=>G.kind==="allow_always")??X.find((G)=>G.kind==="allow_once")??X.find((G)=>G.kind==="allow")??X[0])?.optionId??"allow"}}}throw Error(`unsupported acp client method: ${D.method}`)}async resolveCommand(D){let $=this.options.agent,F=this.options.autoApprove??!0,X=$.buildArgs({yolo:F,...D??this.options.model?{model:D??this.options.model}:{},...this.options.extraArgs===void 0?{}:{extraArgs:this.options.extraArgs}}),G=await(this.options.resolveBinary??Xc)($.commandName);if(G)return{cmd:G,args:X};let Y=YE($,this.options.cliVersion);return{cmd:"npx",args:["-y",`${$.npxPackage}@${Y}`,...X]}}}class GE{buffer=[];resolver=null;closed=!1;terminal=null;push(D){if(this.closed)return;if(this.resolver){let $=this.resolver;this.resolver=null,$({value:D,done:!1});return}this.buffer.push(D)}close(D){if(this.closed)return;if(this.closed=!0,D)this.terminal=D;if(this.resolver){let $=this.resolver;this.resolver=null,$({value:void 0,done:!0})}}async*iter(){while(!0){if(this.buffer.length>0){yield this.buffer.shift();continue}if(this.closed)return;let D=await new Promise(($)=>{this.resolver=$});if(D.done)return;yield D.value}}}async function Xc(D){let $=n6.env.PATH??"",F=n6.platform==="win32"?";":":",X=n6.platform==="win32"?(n6.env.PATHEXT??".EXE").split(";"):[""];for(let J of $.split(F)){if(!J)continue;for(let G of X){let Y=Dc.join(J,`${D}${G.toLowerCase()}`);try{if((await ep.stat(Y)).isFile())return Y}catch{}}}return null}function JE(D,$){try{D.kill($)}catch{}}function Jc(D){try{D.stdin.end()}catch{}}function Yc(D){for(let $=D.length-1;$>=0;$--){let F=D[$];if(F&&F.role==="user"&&typeof F.content==="string"&&F.content.length>0)return F.content}return null}var XE=120000,$c=1,Fc=600000;var BE=Z(()=>{I1()});var HE=Z(()=>{_G();oR();KG();BE()});function MG(D){switch(D.type){case"assistant":return Gc(D);case"user":return Bc(D);case"result":return Hc(D);case"stream_event":return Wc(D);default:return[]}}function Gc(D){let $=[],F=D.message??{};for(let X of F.content??[]){let J=Vc(X);if(J)$.push(J)}return Uc($,F),$}function Bc(D){let $=[],F=D.message??{};for(let X of F.content??[])if(X.type==="tool_result")$.push(WE(X));return $}function Hc(D){let $=[];if(D.usage){let J=D.usage.input_tokens??0,G=D.usage.output_tokens??0;$.push({type:"token_usage",usage:{inputTokens:J,outputTokens:G}})}if(D.is_error||D.subtype==="error"){let J=typeof D.error==="string"&&D.error.length>0?D.error:D.result??"Claude Code run failed";return $.push({type:"error",error:J}),$.push({type:"finish",reason:"error"}),$}let F=Ac(D.subtype),X=D.usage?{inputTokens:D.usage.input_tokens??0,outputTokens:D.usage.output_tokens??0}:void 0;return $.push({type:"finish",reason:F,...X?{usage:X}:{}}),$}function Wc(D){let $=D.event?.delta;if(!$)return[];if($.type==="text_delta"&&typeof $.text==="string"&&$.text.length>0)return[{type:"assistant_message_delta",delta:$.text}];if($.type==="thinking_delta"&&typeof $.thinking==="string"&&$.thinking.length>0)return[{type:"thinking_delta",delta:$.thinking}];return[]}function Vc(D){switch(D.type){case"text":if(typeof D.text==="string"&&D.text.length>0)return{type:"assistant_message_delta",delta:D.text};return null;case"thinking":{let $=typeof D.thinking==="string"?D.thinking:typeof D.text==="string"?D.text:"";if($.length===0)return null;return{type:"thinking_delta",delta:$}}case"tool_use":{let $=typeof D.id==="string"?D.id:"",F=typeof D.name==="string"?D.name:"",X=D.input??{};if(!$||!F)return null;return{type:"tool_use",id:$,name:F,arguments:X,action:VE(F,X)}}case"tool_result":return WE(D);default:return null}}function WE(D){let $=typeof D.tool_use_id==="string"?D.tool_use_id:"",F=D.is_error===!0,X=Qc(D.content);return{type:"tool_result",id:$,name:"",content:X,...F?{isError:!0}:{}}}function Qc(D){if(typeof D==="string")return D;if(Array.isArray(D)){let $=[];for(let F of D)if(F&&typeof F==="object"){let X=F;if(X.type==="text"&&typeof X.text==="string")$.push(X.text);else $.push(JSON.stringify(X))}return $.join(`
|
|
283
|
-
`)}if(D===void 0||D===null)return"";return JSON.stringify(D)}function Uc(D,$){if(!$.usage)return;let F=$.usage.input_tokens,X=$.usage.output_tokens;if(typeof F!=="number"&&typeof X!=="number")return;D.push({type:"token_usage",usage:{inputTokens:F??0,outputTokens:X??0}})}function VE(D,$){switch(D){case"Read":case"View":case"NotebookRead":return{kind:"file_read",path:typeof $.file_path==="string"?$.file_path:typeof $.path==="string"?$.path:""};case"Edit":case"Write":case"MultiEdit":case"NotebookEdit":{let F=typeof $.file_path==="string"?$.file_path:typeof $.path==="string"?$.path:"",X=_c($);return{kind:"file_edit",path:F,...X?{diff:X}:{}}}case"Bash":case"Shell":return{kind:"command_run",command:typeof $.command==="string"?$.command:""};case"Grep":case"Glob":case"WebSearch":return{kind:"search",query:typeof $.query==="string"?$.query:typeof $.pattern==="string"?$.pattern:""};case"WebFetch":return{kind:"web_fetch",url:typeof $.url==="string"?$.url:""};case"TodoWrite":{let F=$.todos;return{kind:"task_plan",summary:Array.isArray(F)?`${F.length} todos`:"todo update"}}default:return{kind:"tool",toolName:D,arguments:$}}}function _c(D){if(typeof D.old_string==="string"&&typeof D.new_string==="string")return`- ${D.old_string}
|
|
284
|
-
+ ${D.new_string}`;if(typeof D.content==="string")return D.content;return}function Ac(D){switch(D){case"success":case"completion":return"stop";case"error":return"error";default:return"stop"}}function w1(D,$){let X=(D+$).split(/\r?\n/),J=X.pop()??"";return{lines:X.filter((G)=>G.trim().length>0),remainder:J}}function ZG(D){try{let $=JSON.parse(D);if($&&typeof $==="object"&&"type"in $)return $;return null}catch{return null}}class G${policy;writeLine;constructor(D){this.policy=D.policy??Y$,this.writeLine=D.writeLine}async handleLine(D){if(D.type!=="control_request")return[];let $=D,F=await this.policy.decide($).catch((J)=>({decision:"deny",reason:`policy error: ${J instanceof Error?J.message:String(J)}`})),X=Kc($,F);if(this.writeLine(`${JSON.stringify(X)}
|
|
285
|
-
`),F.decision==="ask"){let J=Oc($);return[{type:"permission_request",id:$.request_id,reason:F.reason??"Claude Code requested approval",...J?{toolUseId:J}:{}}]}return[]}sendUserMessage(D){let $={type:"user",message:{role:"user",content:[{type:"text",text:D}]}};this.writeLine(`${JSON.stringify($)}
|
|
286
|
-
`)}}function Kc(D,$){if($.decision==="deny")return{type:"control_response",response:{request_id:D.request_id,subtype:"error",error:$.reason??"denied by host policy"}};let F={permissionDecision:$.decision};if($.updatedInput)F.updatedInput=$.updatedInput;return{type:"control_response",response:{request_id:D.request_id,subtype:"success",response:{hookSpecificOutput:F,...$.reason?{systemMessage:$.reason}:{}}}}}function Oc(D){let $=D.request;if(typeof $.tool_use_id==="string")return $.tool_use_id;if(typeof $.toolUseId==="string")return $.toolUseId;return}var Y$;var qG=Z(()=>{Y$={decide:async(D)=>({decision:"allow"})}});import{spawn as Cc}from"child_process";import{once as Rc}from"events";import Ec from"fs/promises";import Mc from"path";import B$ from"process";class V${name="claude-code";options;constructor(D){this.options=D}async health(){let D=new Date().toISOString();return{name:this.name,status:"healthy",lastChecked:D}}async listTools(){return[]}run(D){return this.runIterable(D)}async*runIterable(D){let $=Pc(D.messages);if(!$){yield{type:"error",error:"Claude Code executor requires a user message"},yield{type:"finish",reason:"error"};return}let F=D.workspacePath??this.options.fallbackWorkspacePath;if(!F){yield{type:"error",error:"Claude Code executor requires a workspace path"},yield{type:"finish",reason:"error"};return}let X=this.options.spawn??Cc,J=Lc(D.engineBinding);if(D.engineBinding!==void 0&&J===void 0)yield{type:"engine_binding",engine:H$,binding:null};let G,Y;try{({cmd:G,args:Y}=await this.resolveCommand(D.model,J))}catch(q){yield{type:"error",error:q instanceof Error?q.message:String(q)},yield{type:"finish",reason:"error"};return}let B=X(G,Y,{cwd:F,env:N2(this.options.env)}),H=new G$({policy:this.options.policy??Y$,writeLine:(q)=>{try{B.stdin.write(q)}catch{}}});H.sendUserMessage($);let W=this.options.timeoutMs??Zc,Q=setTimeout(()=>QE(B,"SIGKILL"),W),U="",_=null,A="",C=!1,O=Rc(B,"exit").then((q)=>q[0]??null).catch((q)=>{return _=q instanceof Error?q.message:String(q),null});B.on("error",(q)=>{_=q.message});let K=()=>QE(B,"SIGTERM");D.signal?.addEventListener("abort",K,{once:!0});try{for await(let q of B.stdout){let{lines:N,remainder:S}=w1(U,q.toString("utf8"));U=S;for(let b of N){let L=ZG(b);if(!L)continue;let z=jc(L);if(z&&z!==A)A=z,yield{type:"engine_binding",engine:H$,binding:{sessionId:z}};if(L.type==="control_request"){let j=await H.handleLine(L);for(let d of j)yield d;continue}for(let j of MG(L)){if(j.type==="error"&&J!==void 0)yield{type:"engine_binding",engine:H$,binding:null};if(yield j,j.type==="finish")C=!0}if(C)break}if(C)break}}catch(q){yield{type:"error",error:q instanceof Error?q.message:String(q)}}finally{clearTimeout(Q),D.signal?.removeEventListener("abort",K),Nc(B)}let R=await O;if(!C){if(J!==void 0)yield{type:"engine_binding",engine:H$,binding:null};if(_)yield{type:"error",error:_};else if(R!==0&&R!==null)yield{type:"error",error:`Claude Code exited with code ${R}`};yield{type:"finish",reason:R===0?"stop":"error"}}}async resolveCommand(D,$){let F=UE(D??this.options.model,this.options.extraArgs,$),J=await(this.options.resolveClaudeBinary??qc)();if(J)return{cmd:J,args:F};return{cmd:"npx",args:["-y",`@anthropic-ai/claude-code@${this.options.cliVersion?.trim()||W$}`,...F]}}}function UE(D,$,F){let X=["-p","--verbose","--output-format=stream-json","--input-format=stream-json","--include-partial-messages","--replay-user-messages","--dangerously-skip-permissions"];if(F&&F.length>0)X.push("--resume",F);if(D&&D.length>0)X.push("--model",D);if($&&$.length>0)X.push(...$);return X}async function qc(){let D=B$.env.PATH??"",$=B$.platform==="win32"?";":":",F=B$.platform==="win32"?(B$.env.PATHEXT??".EXE").split(";"):[""];for(let X of D.split($)){if(!X)continue;for(let J of F){let G=Mc.join(X,`claude${J.toLowerCase()}`);try{if((await Ec.stat(G)).isFile())return G}catch{}}}return null}function QE(D,$){try{D.kill($)}catch{}}function Nc(D){try{D.stdin.end()}catch{}}function Pc(D){for(let $=D.length-1;$>=0;$--){let F=D[$];if(F&&F.role==="user"&&typeof F.content==="string"&&F.content.length>0)return F.content}return null}function Lc(D){if(!D||typeof D.sessionId!=="string"||D.sessionId.length===0)return;return D.sessionId}function jc(D){if(!D||typeof D!=="object"||Array.isArray(D))return"";let $=D.session_id;return typeof $==="string"&&$.length>0?$:""}var W$="2.1.112",Zc=120000,H$="claude-code";var _E=Z(()=>{I1();qG()});var AE=Z(()=>{_E();qG()});function PG(D){let $=D.params??{};switch(D.method){case"codex/event/assistant_message":return KE($);case"codex/event/thinking":return OE($);case"codex/event/token_usage":return zc($);case"codex/event/tool_call":return Ic($);case"codex/event/tool_result":return Tc($);case"codex/event/stop":return wc($);case"codex/event/error":return[{type:"error",error:typeof $.message==="string"?$.message:"codex error"}];case"item/agentMessage/delta":return KE($);case"item/reasoning/textDelta":case"item/reasoning/summaryTextDelta":return OE($);case"thread/tokenUsage/updated":return Sc($);case"turn/completed":return bc($);case"error":return fc($);default:return[]}}function KE(D){let $=EE(D.delta,D.text);if(!$)return[];return[{type:"assistant_message_delta",delta:$}]}function OE(D){let $=EE(D.delta,D.text);if(!$)return[];return[{type:"thinking_delta",delta:$}]}function zc(D){let $=D.usage??{};return[{type:"token_usage",usage:{inputTokens:$.input_tokens??0,outputTokens:$.output_tokens??0}}]}function Ic(D){if(!D.id||!D.name)return[];let $=D.arguments??{};return[{type:"tool_use",id:D.id,name:D.name,arguments:$,action:CE(D.name,$),...D.status?{status:kc(D.status)}:{}}]}function Tc(D){if(!D.id)return[];return[{type:"tool_result",id:D.id,name:"",content:typeof D.content==="string"?D.content:"",...D.isError===!0?{isError:!0}:{}}]}function wc(D){let $=[];if(D.usage)$.push({type:"token_usage",usage:{inputTokens:D.usage.input_tokens??0,outputTokens:D.usage.output_tokens??0}});return $.push({type:"finish",reason:RE(D.reason)}),$}function Sc(D){let $=D.tokenUsage;if($===null||typeof $!=="object")return[];let F=$.total;if(F===null||typeof F!=="object")return[];let X=F;return[{type:"token_usage",usage:{inputTokens:typeof X.inputTokens==="number"?X.inputTokens:0,outputTokens:typeof X.outputTokens==="number"?X.outputTokens:0}}]}function bc(D){let $=D.turn;if($===null||typeof $!=="object")return[{type:"finish",reason:"stop"}];let{status:F,error:X}=$,J=[];if(F==="failed")return J.push({type:"error",error:NG(X)??"codex turn failed"}),J.push({type:"finish",reason:"error"}),J;if(F==="cancelled")return J.push({type:"finish",reason:"cancelled"}),J;return J.push({type:"finish",reason:"stop"}),J}function fc(D){let $=NG(D.error)??NG(D);if(vc($))return[];return[{type:"error",error:$??"codex error"}]}function CE(D,$){let F=D.toLowerCase();if(F==="read"||F==="view"||F==="open_file")return{kind:"file_read",path:c9($,["path","file_path","filePath"])};if(F==="edit"||F==="write"||F==="apply_patch"||F==="patch"){let X=c9($,["path","file_path","filePath"]),J=hc($);return{kind:"file_edit",path:X,...J?{diff:J}:{}}}if(F==="bash"||F==="run_shell"||F==="shell"||F==="exec")return{kind:"command_run",command:c9($,["command","cmd","script"])};if(F==="grep"||F==="search"||F==="find")return{kind:"search",query:c9($,["query","pattern"])};if(F==="web_fetch"||F==="fetch"||F==="http_get")return{kind:"web_fetch",url:c9($,["url","uri"])};return{kind:"tool",toolName:D,...Object.keys($).length>0?{arguments:$}:{}}}function RE(D){switch(D){case"max_tokens":return"length";case"cancelled":return"cancelled";case"error":return"error";case"stop":default:return"stop"}}function kc(D){switch(D){case"pending":return"pending";case"in_progress":return"running";case"completed":return"success";case"failed":return"failed";case"cancelled":return"denied";default:return"pending"}}function EE(...D){for(let $ of D)if(typeof $==="string"&&$.length>0)return $;return""}function c9(D,$){for(let F of $){let X=D[F];if(typeof X==="string"&&X.length>0)return X}return""}function NG(D){if(typeof D==="string"&&D.length>0)return D;if(D&&typeof D==="object"){let $=D.message;if(typeof $==="string"&&$.length>0)return $}return}function vc(D){return/^Reconnecting\.\.\. \d+\/\d+$/.test(D?.trim()??"")}function hc(D){if(typeof D.old_string==="string"&&typeof D.new_string==="string")return`- ${D.old_string}
|
|
287
|
-
+ ${D.new_string}`;if(typeof D.oldText==="string"&&typeof D.newText==="string")return`- ${D.oldText}
|
|
288
|
-
+ ${D.newText}`;if(typeof D.diff==="string")return D.diff;if(typeof D.content==="string")return D.content;return}var LG=()=>{};import{spawn as xc}from"child_process";import{once as gc}from"events";import yc from"fs/promises";import uc from"path";import s6 from"process";class _${options;name="codex";constructor(D){this.options=D}async health(){return{name:this.name,status:"healthy",lastChecked:new Date().toISOString()}}async listTools(){return[]}run(D){return this.runIterable(D)}async*runIterable(D){let $=nc(D.messages);if($===null){yield{type:"error",error:"Codex executor requires a user message"},yield{type:"finish",reason:"error"};return}let F=sc(D.messages),X=D.workspacePath??this.options.fallbackWorkspacePath??s6.cwd(),J;try{J=await this.resolveCommand()}catch(R){yield{type:"error",error:R instanceof Error?R.message:String(R)},yield{type:"finish",reason:"error"};return}let Y=(this.options.spawn??xc)(J.cmd,J.args,{cwd:X,env:N2(this.options.env)}),B=new qE,H=new c8({writeLine:(R)=>{try{Y.stdin.write(R)}catch{}},onNotification:(R)=>this.handleNotification(R,B),onRequest:(R)=>this.handleInboundRequest(R),onError:(R)=>B.push({type:"error",error:R.message}),requestTimeoutMs:this.options.timeoutMs??ME}),W="",Q=(R)=>{let{lines:q,remainder:N}=T1(W,R.toString("utf8"));W=N;for(let S of q)H.handleLine(S)};Y.stdout.on("data",Q);let U=null;Y.on("error",(R)=>{U=R.message});let _=gc(Y,"exit").then((R)=>R[0]??null).catch((R)=>{return U=R instanceof Error?R.message:String(R),null});_.then((R)=>{if(R===0)return;let q=U??(R===null?"codex child exited unexpectedly":`codex child exited with code ${R}`);B.close({kind:"error",message:q}),H.dispose(q)});let A=this.options.timeoutMs??ME,C=setTimeout(()=>ZE(Y,"SIGKILL"),A),O=!1,K=()=>{O=!0,ZE(Y,"SIGTERM")};D.signal?.addEventListener("abort",K,{once:!0});try{await H.request("initialize",{protocolVersion:mc,clientInfo:{name:"aiworker",version:"0.2.0"},capabilities:{experimentalApi:!0}});let R=D.model??this.options.model,q=cc(D.engineBinding);if(D.engineBinding!==void 0&&q===null)yield{type:"engine_binding",engine:Q$,binding:null};let N;if(q?.protocol==="current")try{N=await this.resumeCurrentThread(H,q,R,X)}catch{yield{type:"engine_binding",engine:Q$,binding:null},N=await this.startThread(H,R,X)}else N=await this.startThread(H,R,X);if(!N.threadId){yield{type:"error",error:"Codex thread start returned no threadId"},yield{type:"finish",reason:"error"};return}let S=N.resumed?$:F;if(N.protocol==="legacy")H.request("newTurn",{threadId:N.threadId,prompt:S}).then(()=>B.close({kind:"finish"}),(j)=>B.close({kind:"error",message:j instanceof Error?j.message:String(j)}));else{try{await this.startCurrentTurn(H,N.threadId,S)}catch(z){if(!N.resumed)throw z;yield{type:"engine_binding",engine:Q$,binding:null},N=await this.startThread(H,R,X),S=F,await this.startCurrentTurn(H,N.threadId,S)}yield{type:"engine_binding",engine:Q$,binding:{...dc(N)}}}let b=!1;for await(let z of B.iter())if(yield z,z.type==="finish")b=!0;let L=B.terminal;if(L?.kind==="error")yield{type:"error",error:L.message},yield{type:"finish",reason:O?"cancelled":"error"};else if(!b)yield{type:"finish",reason:O?"cancelled":"stop"}}catch(R){yield{type:"error",error:R instanceof Error?R.message:String(R)},yield{type:"finish",reason:O?"cancelled":"error"}}finally{clearTimeout(C),D.signal?.removeEventListener("abort",K),H.dispose("run ended"),Y.stdout.off("data",Q),ic(Y),await _.catch(()=>null)}}handleNotification(D,$){for(let F of PG(D))$.push(F);if(D.method==="turn/completed")$.close({kind:"finish"})}async handleInboundRequest(D){if(D.method==="codex/request_permission"||D.method==="session/request_permission")return{outcome:{outcome:"selected",optionId:"allow"}};throw Error(`unsupported codex client method: ${D.method}`)}async startThread(D,$,F){let X={approval_policy:"never"};if($&&$.length>0)X.model=$;try{return{protocol:"legacy",threadId:(await D.request("thread_start",X)).threadId}}catch(Y){if(!pc(Y))throw Y}let J={approvalPolicy:"never",cwd:F,experimentalRawEvents:!1,persistExtendedHistory:!0};if($&&$.length>0)J.model=$;let G=await D.request("thread/start",J);return{protocol:"current",threadId:G.thread.id,...G.thread.path===void 0||G.thread.path===null?{}:{path:G.thread.path}}}async resumeCurrentThread(D,$,F,X){let J={threadId:$.threadId,approvalPolicy:"never",cwd:X,persistExtendedHistory:!0};if(F&&F.length>0)J.model=F;let G=await D.request("thread/resume",J);return{protocol:"current",resumed:!0,threadId:G.thread.id||$.threadId,...G.thread.path===void 0||G.thread.path===null?$.path===void 0?{}:{path:$.path}:{path:G.thread.path}}}async startCurrentTurn(D,$,F){await D.request("turn/start",{threadId:$,input:[{type:"text",text:F}]})}async resolveCommand(){let D=["app-server",...this.options.extraArgs??[]],F=await(this.options.resolveBinary??lc)();if(F)return{cmd:F,args:D};return{cmd:"npx",args:["-y",`@openai/codex@${this.options.cliVersion?.trim()||s6.env.CODEX_CLI_VERSION?.trim()||U$}`,...D]}}}function pc(D){if(!(D instanceof Error))return!1;return D.message.includes("thread_start")||D.message.includes("unknown variant")||D.message.includes("Invalid request")}function cc(D){if(!D||typeof D!=="object"||Array.isArray(D))return null;let $=D;if($.protocol!==void 0&&$.protocol!=="current"||typeof $.threadId!=="string"||$.threadId.length===0)return null;let F=$.path;return{protocol:"current",threadId:$.threadId,...typeof F==="string"&&F.length>0?{path:F}:{}}}function dc(D){return{protocol:"current",threadId:D.threadId,...D.path===void 0?{}:{path:D.path}}}class qE{buffer=[];resolver=null;closed=!1;terminal=null;push(D){if(this.closed)return;if(this.resolver){let $=this.resolver;this.resolver=null,$({value:D,done:!1});return}this.buffer.push(D)}close(D){if(this.closed)return;if(this.closed=!0,D)this.terminal=D;if(this.resolver){let $=this.resolver;this.resolver=null,$({value:void 0,done:!0})}}async*iter(){while(!0){if(this.buffer.length>0){yield this.buffer.shift();continue}if(this.closed)return;let D=await new Promise(($)=>{this.resolver=$});if(D.done)return;yield D.value}}}async function lc(){let D=s6.env.PATH??"",$=s6.platform==="win32"?";":":",F=s6.platform==="win32"?(s6.env.PATHEXT??".EXE").split(";"):[""];for(let X of D.split($)){if(!X)continue;for(let J of F){let G=uc.join(X,`codex${J.toLowerCase()}`);try{if((await yc.stat(G)).isFile())return G}catch{}}}return null}function ZE(D,$){try{D.kill($)}catch{}}function ic(D){try{D.stdin.end()}catch{}}function nc(D){for(let $=D.length-1;$>=0;$-=1){let F=D[$];if(F?.role==="user"&&F.content.trim().length>0)return F.content}return null}function sc(D){return D.filter(($)=>$.content.trim().length>0).map(($)=>{let F=$.role==="system"?"System":$.role==="assistant"?"Assistant":$.role==="tool"?"Tool":"User";return`<${F}>
|
|
289
|
-
${$.content}
|
|
290
|
-
</${F}>`}).join(`
|
|
291
|
-
|
|
292
|
-
`)}var U$="0.121.0",ME=120000,mc=1,Q$="codex";var NE=Z(()=>{I1();LG()});var PE=Z(()=>{NE();LG()});function jG(D){try{let $=JSON.parse(D);if($&&typeof $==="object"&&"type"in $&&typeof $.type==="string")return $;return null}catch{return null}}function zG(D){switch(D.type){case"system":return[];case"assistant_message":return rc(D);case"thinking":return oc(D);case"tool_use":return ac(D);case"tool_result":return tc(D);case"token_usage":return ec(D);case"stop":case"end":return Dd(D);case"error":return[{type:"error",error:typeof D.message==="string"?D.message:"cursor error"}];default:return[]}}function IG(D){let $=D.session_id;if(typeof $==="string"&&$.length>0)return $;return""}function rc(D){let $=zE(D.delta,D.text);if(!$)return[];return[{type:"assistant_message_delta",delta:$}]}function oc(D){let $=zE(D.delta,D.text);if(!$)return[];return[{type:"thinking_delta",delta:$}]}function ac(D){if(!D.id||!D.name)return[];let $=D.input??{};return[{type:"tool_use",id:D.id,name:D.name,arguments:$,action:jE(D.name,$),...D.status?{status:$d(D.status)}:{}}]}function tc(D){if(!D.id)return[];let $=D.isError===!0||D.is_error===!0;return[{type:"tool_result",id:D.id,name:typeof D.name==="string"?D.name:"",content:typeof D.content==="string"?D.content:"",...$?{isError:!0}:{}}]}function ec(D){let $=D.usage??{};return[{type:"token_usage",usage:{inputTokens:$.input_tokens??0,outputTokens:$.output_tokens??0}}]}function Dd(D){let $=[];if(D.usage)$.push({type:"token_usage",usage:{inputTokens:D.usage.input_tokens??0,outputTokens:D.usage.output_tokens??0}});return $.push({type:"finish",reason:LE(D.reason)}),$}function LE(D){switch(D){case"length":return"length";case"cancelled":return"cancelled";case"error":return"error";case"stop":case"end_turn":default:return"stop"}}function $d(D){switch(D){case"pending":return"pending";case"running":return"running";case"completed":return"success";case"failed":return"failed";case"cancelled":return"denied";default:return"pending"}}function jE(D,$){let F=D.toLowerCase();if(F==="read_file"||F==="read"||F==="view"||F==="open")return{kind:"file_read",path:d9($,["path","file_path","filePath"])};if(F==="edit_file"||F==="edit"||F==="write"||F==="write_file"||F==="apply_patch"){let X=d9($,["path","file_path","filePath"]),J=Fd($);return{kind:"file_edit",path:X,...J?{diff:J}:{}}}if(F==="run_terminal"||F==="run_terminal_cmd"||F==="bash"||F==="shell"||F==="exec")return{kind:"command_run",command:d9($,["command","cmd","script"])};if(F==="grep"||F==="grep_search"||F==="codebase_search"||F==="search"||F==="find")return{kind:"search",query:d9($,["query","pattern"])};if(F==="web_fetch"||F==="fetch"||F==="web_search")return{kind:"web_fetch",url:d9($,["url","uri"])};return{kind:"tool",toolName:D,...Object.keys($).length>0?{arguments:$}:{}}}function zE(...D){for(let $ of D)if(typeof $==="string"&&$.length>0)return $;return""}function d9(D,$){for(let F of $){let X=D[F];if(typeof X==="string"&&X.length>0)return X}return""}function Fd(D){if(typeof D.old_string==="string"&&typeof D.new_string==="string")return`- ${D.old_string}
|
|
293
|
-
+ ${D.new_string}`;if(typeof D.oldText==="string"&&typeof D.newText==="string")return`- ${D.oldText}
|
|
294
|
-
+ ${D.newText}`;if(typeof D.diff==="string")return D.diff;if(typeof D.content==="string")return D.content;return}var TG=()=>{};import{spawn as Xd}from"child_process";import{once as Jd}from"events";import Yd from"fs/promises";import Gd from"path";import l9 from"process";class K${options;name="cursor";lastSessionId="";constructor(D){this.options=D}async health(){return{name:this.name,status:"healthy",lastChecked:new Date().toISOString()}}async listTools(){return[]}getLastSessionId(){return this.lastSessionId}run(D){return this.runIterable(D)}async*runIterable(D){let $=Vd(D.messages);if(!$){yield{type:"error",error:"Cursor executor requires a user message"},yield{type:"finish",reason:"error"};return}let F=D.workspacePath??this.options.fallbackWorkspacePath??l9.cwd(),X=Qd(D.engineBinding);if(D.engineBinding!==void 0&&X===void 0)yield{type:"engine_binding",engine:A$,binding:null};let J;try{J=await this.resolveCommand(D.model,X)}catch(R){yield{type:"error",error:R instanceof Error?R.message:String(R)},yield{type:"finish",reason:"error"};return}let Y=(this.options.spawn??Xd)(J.cmd,J.args,{cwd:F,env:N2(this.options.env)});try{Y.stdin.write($),Y.stdin.end()}catch{}let B=this.options.timeoutMs??Bd,H=setTimeout(()=>IE(Y,"SIGKILL"),B),W="",Q=null,U="",_=!1,A=Jd(Y,"exit").then((R)=>R[0]??null).catch((R)=>{return Q=R instanceof Error?R.message:String(R),null});Y.on("error",(R)=>{Q=R.message});let C=!1,O=()=>{C=!0,IE(Y,"SIGTERM")};D.signal?.addEventListener("abort",O,{once:!0});try{for await(let R of Y.stdout){let{lines:q,remainder:N}=w1(W,R.toString("utf8"));W=N;for(let S of q){let b=jG(S);if(!b)continue;let L=IG(b);if(L){if(this.lastSessionId=L,L!==U)U=L,yield{type:"engine_binding",engine:A$,binding:{sessionId:L}}}for(let z of zG(b)){if(z.type==="error"&&X!==void 0)yield{type:"engine_binding",engine:A$,binding:null};if(yield z,z.type==="finish")_=!0}if(_)break}if(_)break}}catch(R){yield{type:"error",error:R instanceof Error?R.message:String(R)}}finally{clearTimeout(H),D.signal?.removeEventListener("abort",O),Wd(Y)}let K=await A;if(!_){if(X!==void 0)yield{type:"engine_binding",engine:A$,binding:null};if(Q)yield{type:"error",error:Q};else if(K!==0&&K!==null)yield{type:"error",error:`cursor-agent exited with code ${K}`};yield{type:"finish",reason:C?"cancelled":K===0?"stop":"error"}}}async resolveCommand(D,$){let X=await(this.options.resolveBinary??Hd)();if(!X)throw Error("cursor-agent binary not found on PATH (install https://cursor.com/cli)");let J=D??this.options.model,G=$??this.options.resumeSessionId,Y=TE({model:J,...G===void 0?{}:{resumeSessionId:G},...this.options.extraArgs===void 0?{}:{extraArgs:this.options.extraArgs}});return{cmd:X,args:Y}}}function TE(D){let $=["-p","--output-format=stream-json"];if(D.model&&D.model.length>0)$.push("--model",D.model);if(D.resumeSessionId&&D.resumeSessionId.length>0)$.push("--resume",D.resumeSessionId);if(D.extraArgs&&D.extraArgs.length>0)$.push(...D.extraArgs);return $}async function Hd(){let D=l9.env.PATH??"",$=l9.platform==="win32"?";":":",F=l9.platform==="win32"?(l9.env.PATHEXT??".EXE").split(";"):[""];for(let X of D.split($)){if(!X)continue;for(let J of F){let G=Gd.join(X,`cursor-agent${J.toLowerCase()}`);try{if((await Yd.stat(G)).isFile())return G}catch{}}}return null}function IE(D,$){try{D.kill($)}catch{}}function Wd(D){try{D.stdin.end()}catch{}}function Vd(D){for(let $=D.length-1;$>=0;$--){let F=D[$];if(F&&F.role==="user"&&typeof F.content==="string"&&F.content.length>0)return F.content}return null}function Qd(D){if(!D||typeof D.sessionId!=="string"||D.sessionId.length===0)return;return D.sessionId}var Bd=120000,A$="cursor";var wE=Z(()=>{I1();TG()});var SE=Z(()=>{wE();TG()});class SG{primary;fallbacks;name;constructor(D,$){this.primary=D;this.fallbacks=$;this.name=`fallback(${D.name})`}health(){return this.primary.health()}listTools(){return this.primary.listTools()}run(D){return this.runIterable(D)}async*runIterable(D){let $=yield*bE(this.primary,D);if($.kind==="ok")return;if($.yielded)throw $.error;let F=Ud($.error),X=$.error;for(let J of this.fallbacks){if(!J.onErrorKinds.includes(F))continue;let G=Math.max(1,J.maxRetries);for(let Y=0;Y<G;Y++){let B=yield*bE(J.executor,D);if(B.kind==="ok")return;if(B.yielded)throw B.error;X=B.error}}throw X}}async function*bE(D,$){let F=!1;try{for await(let X of D.run($))F=!0,yield X;return{kind:"ok"}}catch(X){return{kind:"error",error:X,yielded:F}}}function Ud(D){if(D===null||D===void 0)return"unknown";let $=fE(D,"status")??fE(D,"statusCode"),F=wG(D,"code"),X=wG(D,"name"),G=(wG(D,"message")??_d(D)).toLowerCase();if($===429||G.includes("rate limit")||G.includes("rate_limit"))return"rate-limit";if($===408||X==="AbortError"||F==="ETIMEDOUT"||G.includes("timeout")||G.includes("engine stall"))return"timeout";if($===401||$===403||G.includes("invalid api key")||G.includes("unauthorized"))return"auth";if(F==="ECONNREFUSED"||F==="ENOTFOUND"||F==="ECONNRESET"||F==="EAI_AGAIN"||X==="TypeError"&&G.includes("fetch failed"))return"network";if(typeof $==="number"&&$>=500&&$<600)return"server-5xx";return"unknown"}function fE(D,$){if(typeof D!=="object"||D===null)return;let F=D[$];return typeof F==="number"?F:void 0}function wG(D,$){if(typeof D!=="object"||D===null)return;let F=D[$];return typeof F==="string"?F:void 0}function _d(D){if(typeof D==="string")return D;if(D instanceof Error)return D.message;try{return String(D)}catch{return""}}import{Buffer as kE}from"buffer";import{spawn as vE}from"child_process";import{once as hE}from"events";class bG{opts;name="cli";constructor(D){this.opts=D}async health(){let D=new Date().toISOString();try{let $=vE(this.opts.command,["--version"],{cwd:this.opts.cwd,env:N2(this.opts.env),stdio:["ignore","pipe","pipe"]}),F=await Promise.race([hE($,"exit").then(([X])=>X),new Promise((X)=>setTimeout(()=>X(null),2000))]);if(F===null)return $.kill("SIGKILL"),{name:this.name,status:"degraded",lastChecked:D};return{name:this.name,status:F===0?"healthy":"degraded",lastChecked:D}}catch{return{name:this.name,status:"down",lastChecked:D}}}async listTools(){return[]}async*run(D){yield{type:"error",error:"CliExecutor.run is not implemented \u2014 CLI executors provide tools, not chat."},yield{type:"finish",reason:"error"}}async invokeTool(D){let $=this.opts.timeoutMs??30000,F=vE(this.opts.command,this.opts.args,{cwd:this.opts.cwd,env:N2(this.opts.env),stdio:["pipe","pipe","pipe"]}),X=[];F.stdout.on("data",(B)=>X.push(B));let J=[];F.stderr.on("data",(B)=>J.push(B)),F.stdin.write(`${JSON.stringify(D)}
|
|
295
|
-
`),F.stdin.end();let G=setTimeout(()=>F.kill("SIGKILL"),$),[Y]=await hE(F,"exit");if(clearTimeout(G),Y!==0){let B=kE.concat(J).toString("utf8");throw Error(`CLI executor exited with ${Y??"null"}: ${B||"(no stderr)"}`)}return kE.concat(X).toString("utf8")}}var xE=Z(()=>{I1()});var Ad,Kd,Od,O$;var fG=Z(()=>{yD();Ad=V.object({index:V.number().optional(),id:V.string().optional(),type:V.literal("function").optional(),function:V.object({name:V.string().optional(),arguments:V.string().optional()}).optional()}),Kd=V.object({role:V.enum(["system","user","assistant","tool"]).optional(),content:V.string().nullable().optional(),tool_calls:V.array(Ad).optional()}),Od=V.object({prompt_tokens:V.number(),completion_tokens:V.number(),total_tokens:V.number()}),O$=V.object({id:V.string(),object:V.literal("chat.completion.chunk"),created:V.number(),model:V.string(),choices:V.array(V.object({index:V.number(),delta:Kd,finish_reason:V.enum(["stop","length","tool_calls","content_filter","function_call"]).nullable()})),usage:Od.nullish()})});async function kG(D){let $=D.baseUrl.replace(/\/+$/,""),F=D.timeoutMs??Cd,X=new AbortController,J=setTimeout(()=>X.abort(),F),G=()=>X.abort();D.signal?.addEventListener("abort",G,{once:!0});let Y;try{Y=await fetch(`${$}/v1/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream",Authorization:`Bearer ${D.apiKey}`},body:JSON.stringify(D.body),signal:X.signal})}catch(B){if(clearTimeout(J),D.signal?.removeEventListener("abort",G),B instanceof DOMException&&B.name==="AbortError")throw Error(`OpenAI request aborted after ${F}ms`);throw Error(B instanceof Error?B.message:"OpenAI transport error")}if(!Y.ok){let B=await Y.text().catch(()=>"");throw clearTimeout(J),D.signal?.removeEventListener("abort",G),new i9(Y.status,Y.statusText,B)}if(!Y.body)throw clearTimeout(J),D.signal?.removeEventListener("abort",G),Error("OpenAI response has no body");return Rd(Y.body,()=>{clearTimeout(J),D.signal?.removeEventListener("abort",G)})}async function*Rd(D,$){let F=D.getReader(),X=new TextDecoder("utf-8"),J="";try{while(!0){let{value:G,done:Y}=await F.read();if(Y)break;J+=X.decode(G,{stream:!0});while(!0){let B=Ed(J);if(B===-1)break;let H=J.slice(0,B);J=J.slice(B).replace(/^\r?\n\r?\n/,"");let W=gE(H);if(!W)continue;if(W==="[DONE]"){yield{type:"done"};return}let Q;try{Q=JSON.parse(W)}catch{continue}let U=O$.safeParse(Q);if(!U.success)continue;yield{type:"chunk",chunk:U.data}}}if(J.trim().length>0){let G=gE(J);if(G&&G!=="[DONE]")try{let Y=JSON.parse(G),B=O$.safeParse(Y);if(B.success)yield{type:"chunk",chunk:B.data}}catch{}}}finally{$();try{F.releaseLock()}catch{}}}function Ed(D){let $=D.indexOf(`
|
|
296
|
-
|
|
297
|
-
`),F=D.indexOf(`\r
|
|
298
|
-
\r
|
|
299
|
-
`);if($===-1)return F;if(F===-1)return $;return Math.min($,F)}function gE(D){let $=D.split(/\r?\n/),F=[];for(let J of $){if(J.startsWith(":"))continue;if(J.startsWith("data:")){let G=J.slice(5).replace(/^ /,"");F.push(G)}}if(F.length===0)return null;let X=F.join(`
|
|
300
|
-
`);if(X==="[DONE]")return"[DONE]";return X}var Cd=60000,i9;var yE=Z(()=>{fG();i9=class i9 extends Error{status;constructor(D,$,F){let X=F.length>500?`${F.slice(0,500)}\u2026`:F;super(`OpenAI HTTP ${D} ${$}${X?`: ${X}`:""}`);this.name="OpenAiHttpError",this.status=D}}});var uE=Z(()=>{yE();fG()});class vG{name="openai-compatible";baseUrl;apiKey;model;timeoutMs;constructor(D){this.baseUrl=D.baseUrl.replace(/\/+$/,""),this.apiKey=D.apiKey,this.model=D.model,this.timeoutMs=D.timeoutMs}async health(){let D=new Date().toISOString();if(!this.apiKey)return{name:this.name,status:"down",lastChecked:D};let $=new AbortController,F=setTimeout(()=>$.abort(),Math.min(this.timeoutMs,5000));try{let X=await fetch(`${this.baseUrl}/v1/models`,{method:"GET",headers:{Authorization:`Bearer ${this.apiKey}`},signal:$.signal});if(clearTimeout(F),X.ok)return{name:this.name,status:"healthy",lastChecked:D};if(X.status>=500)return{name:this.name,status:"degraded",lastChecked:D};return{name:this.name,status:"down",lastChecked:D}}catch{return clearTimeout(F),{name:this.name,status:"down",lastChecked:D}}}async listTools(){return[]}run(D){return this.runIterable(D)}async*runIterable(D){if(!this.apiKey){yield{type:"error",error:"OpenAI API key is not configured"};return}let $={model:D.model??this.model,messages:D.messages.map(Zd),stream:!0,stream_options:{include_usage:!0}};if(D.temperature!==void 0)$.temperature=D.temperature;if(D.toolDefinitions&&D.toolDefinitions.length>0)$.tools=D.toolDefinitions.map(Md),$.tool_choice="auto";let F;try{F=await kG({baseUrl:this.baseUrl,apiKey:this.apiKey,timeoutMs:this.timeoutMs,body:$,signal:D.signal})}catch(Y){yield{type:"error",error:mE(Y)};return}let X=new Map,J=null,G;try{for await(let Y of F){if(Y.type==="done")break;let B=Y.chunk.choices[0];if(B){let H=B.delta;if(typeof H.content==="string"&&H.content.length>0)yield{type:"assistant_message_delta",delta:H.content};if(H.tool_calls)for(let W of H.tool_calls)qd(X,W);if(B.finish_reason)J=Pd(B.finish_reason)}if(Y.chunk.usage)G={inputTokens:Y.chunk.usage.prompt_tokens,outputTokens:Y.chunk.usage.completion_tokens}}}catch(Y){yield{type:"error",error:mE(Y)};return}for(let[,Y]of Array.from(X.entries()).sort(([B],[H])=>B-H)){let B=Nd(Y);if(B)yield B}if(G)yield{type:"token_usage",usage:G};yield{type:"finish",reason:J??"stop",...G?{usage:G}:{}}}}function Md(D){return{type:"function",function:{name:D.name,description:D.description,parameters:D.inputSchema}}}function Zd(D){let $={role:D.role,content:D.content};if(D.name)$.name=D.name;if(D.toolCallId)$.tool_call_id=D.toolCallId;if(D.toolCalls&&D.toolCalls.length>0)$.tool_calls=D.toolCalls.map((F)=>({id:F.id,type:"function",function:{name:F.name,arguments:JSON.stringify(F.arguments)}}));return $}function qd(D,$){let F=$.index??0,X=D.get(F)??{args:[]};if($.id)X.id=$.id;if($.function?.name)X.name=$.function.name;if($.function?.arguments)X.args.push($.function.arguments);D.set(F,X)}function Nd(D){if(!D.id||!D.name)return null;let $=D.args.join(""),F={};if($.length>0)try{let J=JSON.parse($);if(J&&typeof J==="object"&&!Array.isArray(J))F=J}catch{F={_raw:$}}let X={kind:"tool",toolName:D.name,arguments:F};return{type:"tool_use",id:D.id,name:D.name,arguments:F,action:X}}function Pd(D){switch(D){case"tool_calls":case"function_call":return"tool";case"length":return"length";case"content_filter":return"error";case"stop":default:return"stop"}}function mE(D){if(D instanceof i9)return D.message;if(D instanceof Error)return D.message;return"Unknown executor error"}var pE=Z(()=>{uE()});class hG{name="mcp";client;constructor(D){this.client=new i6({url:D.url,token:D.token,clientName:"aiworker-worker",...D.timeoutMs===void 0?{}:{timeoutMs:D.timeoutMs}})}async health(){let D=new Date().toISOString();try{return await this.client.ensureSession(),{name:this.name,status:"healthy",lastChecked:D}}catch{return{name:this.name,status:"down",lastChecked:D}}}async listTools(){try{return(await this.client.listTools()).map(($)=>({name:$.name,description:$.description??"",inputSchema:$.inputSchema??{}}))}catch{return[]}}async*run(D){yield{type:"error",error:"McpExecutor.run is not implemented yet \u2014 use http executor for chat."},yield{type:"finish",reason:"error"}}}var cE=Z(()=>{FG()});import dE from"process";function gG(D){let $=Ld(D);if(!D.fallbacks||D.fallbacks.length===0)return $;let F=D.fallbacks.map((X)=>({executor:gG(X.executor),onErrorKinds:X.onErrorKinds,maxRetries:X.maxRetries??1}));return new SG($,F)}function Ld(D){let $=D8(D);switch($.engine){case"http":{let F=$.body;return new vG({baseUrl:F.baseUrl,apiKey:F.apiKey,model:$.modelId??F.model,timeoutMs:F.timeoutMs})}case"mcp":{let F=$.body;return new hG({url:F.url,token:F.token,...$.modelId!==void 0?{defaultModel:$.modelId}:F.defaultModel===void 0?{}:{defaultModel:F.defaultModel},...F.tools===void 0?{}:{tools:F.tools},...F.timeoutMs===void 0?{}:{timeoutMs:F.timeoutMs}})}case"cli":{let{body:F,cmd:X}=$,J=X?.binary??F.command,G=X?.extraArgs?[...F.args,...X.extraArgs]:F.args,Y=xG(F.env,X?.env);return new bG({command:J,args:G,...F.cwd===void 0?{}:{cwd:F.cwd},...Y===void 0?{}:{env:Y},...F.timeoutMs===void 0?{}:{timeoutMs:F.timeoutMs},...F.sandbox===void 0?{}:{sandbox:F.sandbox}})}case"claude-code":{let{body:F,cmd:X}=$,J=X?.cliVersion??F.cliVersion??dE.env.CLAUDE_CLI_VERSION??W$,G=$.modelId??F.model,Y=lE(F.extraArgs,X?.extraArgs),B=xG(F.env,X?.env);return new V$({cliVersion:J,...G===void 0?{}:{model:G},...Y===void 0?{}:{extraArgs:Y},...B===void 0?{}:{env:B},...F.timeoutMs===void 0?{}:{timeoutMs:F.timeoutMs}})}case"acp":{let{body:F,cmd:X}=$,J=X?.cliVersion??F.cliVersion,G=$.modelId??F.model,Y=lE(F.extraArgs,X?.extraArgs),B=xG(F.env,X?.env),H=OG(F.agent);return new J$({agent:H,...G===void 0?{}:{model:G},...J===void 0?{}:{cliVersion:J},...Y===void 0?{}:{extraArgs:Y},...B===void 0?{}:{env:B},...F.timeoutMs===void 0?{}:{timeoutMs:F.timeoutMs}})}case"codex":{let{body:F,cmd:X}=$,J=X?.cliVersion??dE.env.CODEX_CLI_VERSION??U$,G=$.modelId??F.model,Y=X?.extraArgs,B=X?.env;return new _$({cliVersion:J,...G===void 0?{}:{model:G},...Y===void 0?{}:{extraArgs:Y},...B===void 0?{}:{env:B},...F.timeoutMs===void 0?{}:{timeoutMs:F.timeoutMs}})}case"cursor":{let{body:F,cmd:X}=$,J=$.modelId??F.model,G=X?.extraArgs,Y=X?.env;return new K$({...J===void 0?{}:{model:J},...G===void 0?{}:{extraArgs:G},...Y===void 0?{}:{env:Y},...F.timeoutMs===void 0?{}:{timeoutMs:F.timeoutMs}})}}}function lE(D,$){if(!D&&!$)return;return[...D??[],...$??[]]}function xG(D,$){if(!D&&!$)return;return{...D??{},...$??{}}}var iE=Z(()=>{B1();HE();AE();PE();SE();xE();pE();cE()});import{Buffer as nE}from"buffer";import{spawn as jd}from"child_process";import{once as zd}from"events";import r6 from"fs/promises";import G8 from"path";function sE(D,$,F){if(!aE.test(F))throw new R$(`invalid conversation id: ${F}`);let X=G8.resolve(D),J=G8.resolve(X,$);if(!rE(X,J))throw new R$(`workspace subdir "${$}" escapes root`);let G=G8.resolve(J,F);if(!rE(J,G))throw new R$(`workspace "${F}" escapes parent`);return G}function rE(D,$){let F=G8.relative(D,$);return F===""||!F.startsWith("..")&&!G8.isAbsolute(F)}class yG{root;subdir;gitOrigin;inflight=new Map;constructor(D){this.root=G8.resolve(D.root),this.subdir=D.subdir??"workspaces",this.gitOrigin=D.gitOrigin}async createWorkspace(D){let $=this.inflight.get(D);if($)return $;let F=this.provision(D).finally(()=>this.inflight.delete(D));return this.inflight.set(D,F),F}async provision(D){let $=sE(this.root,this.subdir,D);if(await C$($)){let F=await C$(G8.join($,".git"));return{conversationId:D,path:$,isGitWorktree:F}}if(await r6.mkdir(G8.dirname($),{recursive:!0}),this.gitOrigin)return await this.addGitWorktree(this.gitOrigin,$),{conversationId:D,path:$,isGitWorktree:!0};return await r6.mkdir($,{recursive:!0}),{conversationId:D,path:$,isGitWorktree:!1}}async disposeWorkspace(D){let $=sE(this.root,this.subdir,D);if(!await C$($))return;if(this.gitOrigin){if(await this.removeGitWorktree(this.gitOrigin,$))return}await r6.rm($,{recursive:!0,force:!0})}async purgeAll(){let D=G8.resolve(this.root,this.subdir);if(!await C$(D))return;let $=await r6.readdir(D);await Promise.all($.map(async(F)=>{if(!aE.test(F))return;await this.disposeWorkspace(F).catch(()=>{return})}))}async addGitWorktree(D,$){let F=await oE(["worktree","add","--detach",$],D);if(F.code!==0)throw await r6.mkdir($,{recursive:!0}),Error(`git worktree add failed (code=${F.code}): ${F.stderr.trim()}`)}async removeGitWorktree(D,$){return(await oE(["worktree","remove","--force",$],D)).code===0}}async function C$(D){try{return await r6.stat(D),!0}catch{return!1}}async function oE(D,$){let F=jd("git",D,{cwd:$,env:eR(),stdio:["ignore","pipe","pipe"]}),X=[],J=[];F.stdout.on("data",(Y)=>X.push(Y)),F.stderr.on("data",(Y)=>J.push(Y));let[G]=await zd(F,"exit");return{code:G,stdout:nE.concat(X).toString("utf8"),stderr:nE.concat(J).toString("utf8")}}var aE,R$;var tE=Z(()=>{I1();aE=/^[\w-]{1,128}$/;R$=class R$ extends Error{constructor(D){super(D);this.name="WorkspaceEscapeError"}}});function eE(D){let $=[D.channel,D.accountId,D.chatId];if(D.threadId!==void 0)$.push(D.threadId);return $.map(encodeURIComponent).join(":")}async function DM(D){let $=B0(D);if(!$||$.status!=="active")return null;return y().select().from(c).where(uD(v(c.id,$.currentConversationId),v(c.status,"open"))).get()??null}async function $M(D){let $=y(),F=D.threadId?uD(v(WD.channel,D.channel),v(WD.chatId,D.chatId),v(WD.threadId,D.threadId)):uD(v(WD.channel,D.channel),v(WD.chatId,D.chatId),w3(WD.threadId));return $.select({sessionKey:WD.sessionKey}).from(WD).where(F).limit(1).get()!==void 0}async function FM(D){let $=y(),F=D.threadId?uD(v(c.channel,D.channel),v(c.chatId,D.chatId),v(c.threadId,D.threadId),v(c.status,"open")):uD(v(c.channel,D.channel),v(c.chatId,D.chatId),w3(c.threadId),v(c.status,"open"));return $.select().from(c).where(F).orderBy(hD(c.lastActiveAt)).get()??null}function Td(){return["You classify whether a new inbound message continues the previous conversation or opens a new topic.","Consider topic continuity, referent continuity, time and channel context.",'Respond with a single JSON object: {"continue": boolean, "reason": string (<=80 chars)}',"Do not include any other text."].join(`
|
|
301
|
-
`)}function wd(D,$,F){let X=[];if(D)X.push(`Prior summary: ${D}`);if($.length>0){X.push("Recent messages:");for(let J of $)X.push(`- ${J.role}: ${J.content.slice(0,400)}`)}return X.push(`New incoming message: ${F}`),[{role:"system",content:Td()},{role:"user",content:X.join(`
|
|
302
|
-
`)}]}async function XM(D,$,F,X,J,G){let Y={messages:wd(F,X,J),...$?{model:$}:{},...G?{workspacePath:G}:{},temperature:0},B="";try{for await(let H of D.run(Y))if(H.type==="assistant_message_delta")B+=H.delta;else if(H.type==="error")throw Error(H.error)}catch(H){return E.warn(`[conversation] classifier error, defaulting to continue: ${String(H)}`),{continue:!0,reason:"classifier-error-default-continue"}}try{let H=JSON.parse(B.trim());if(typeof H.continue==="boolean")return{continue:H.continue,reason:String(H.reason??"")};return{continue:!0,reason:"malformed-response"}}catch{return{continue:!0,reason:"non-json-classifier-output"}}}async function uG(D,$=Id){return y().select({role:l.role,content:l.content,richMetadata:l.richMetadata}).from(l).where(v(l.conversationId,D)).orderBy(hD(l.id)).limit($*3).all().filter((J)=>!Sd(J)).slice(0,$).reverse().map((J)=>({role:J.role,content:J.content}))}function Sd(D){if(D.role!=="system"||D.richMetadata===null)return!1;try{let $=JSON.parse(D.richMetadata);return $.kind==="compaction"||$.kind==="memory-flush"}catch{return!1}}var Id=4;var JM=Z(()=>{wD();JD();U0()});function vd(D){if(D.length===0)return 0;let $=0,F=0;for(let X of D)if(X.charCodeAt(0)<=127)$+=1;else F+=1;return Math.max(1,Math.ceil($/3)+F)}function S1(D){return kd+vd(D.content)}function mG(D){return D.reduce(($,F)=>$+S1(F),0)}function hd(D){return D?.contextWindowTokens!==void 0||D?.reserveTokens!==void 0||D?.keepRecentTokens!==void 0||D?.compaction?.enabled===!0||D?.compaction?.triggerTokens!==void 0}function pG(D,$){if(!hd(D))return null;let F=D?.contextWindowTokens??xd($)??bd,X=ud(D?.reserveTokens??yd(F),F),J=Math.max(0,Math.min(D?.keepRecentTokens??F-X,F-X));return{contextWindowTokens:F,reserveTokens:X,keepRecentTokens:J,...D?.maxHistoryMessages===void 0?{}:{maxHistoryMessages:D.maxHistoryMessages}}}function GM(D){let $=S1(D.systemMessage),F=Math.max(0,Math.min(D.budget.keepRecentTokens,D.budget.contextWindowTokens-D.budget.reserveTokens-$)),X=[],J=0;for(let Y of D.historyNewestFirst){let B=S1(Y);if(!(J+B<=F)){if(X.length===0)X.push(Y),J+=B;break}X.push(Y),J+=B}return{messages:[D.systemMessage,...X.reverse()],contextTokens:$+J,historyTokens:J}}function n9(D){try{let $=D8(D);if($.modelId!==void 0&&$.modelId.length>0)return $.modelId;let F=$.body;if(typeof F.model==="string"&&F.model.length>0)return F.model;if(typeof F.defaultModel==="string"&&F.defaultModel.length>0)return F.defaultModel;return}catch{return}}function xd(D){try{let F=D8(D).body,X=md(F.contextWindowTokens);if(X!==null)return X;let J=n9(D);return J===void 0?null:gd(J)}catch{return null}}function gd(D){let $=D.toLowerCase();if($.includes("gemini-2.5"))return 1e6;if($.includes("claude")||$.includes("sonnet")||$.includes("opus"))return 200000;if($.includes("gpt-5")||$.includes("gpt-4.1")||$.includes("gpt-4o"))return 128000;if($.includes("deepseek"))return 64000;if($.includes("qwen"))return 32000;return null}function yd(D){return Math.min(fd,Math.floor(D/4))}function ud(D,$){return Math.max(0,Math.min(D,Math.max(0,$-1)))}function md(D){return typeof D==="number"&&Number.isInteger(D)&&D>0?D:null}var bd=8192,fd=1024,YM=2000,kd=6;var BM=Z(()=>{B1()});function HM(D,$){if(!$)return"auto";for(let F of $.rules)if(pd(F.pattern,D))return F.action;return $.default}function pd(D,$){if(D.length===0)return!1;if(D==="*")return!0;if(!D.includes("*"))return D===$;return new RegExp(`^${D.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*")}$`).test($)}class iG{deps;constructor(D){this.deps=D}async ingest(D){this.deps.bus.emit("channel.inbound",{channel:D.channel,chatId:D.chatId,text:D.text});let $=await this.resolveConversation(D),{conversation:F,sessionKey:X}=$,J=await this.provisionWorkspace(F.id),G=this.persistUserMessage(F.id,D,X),Y=UM(D);this.deps.bus.emit("conversation.message",{conversationId:F.id,...Y===void 0?{}:{gatewayConversationId:Y},messageId:G.id,role:"user"});let B=new AbortController,H=null;await this.deps.processes.run({group:F.id,engine:this.deps.config.executor.engine,class:"interactive",meta:{conversationId:F.id,channel:D.channel},onSpawn:async()=>({cancel:async()=>B.abort(),onActivity:(W)=>{return H=W,()=>{if(H===W)H=null}}}),job:()=>this.run(F,D,J,B.signal,()=>H?.(),X)})}async run(D,$,F,X,J,G){let Y=y(),B=(await this.maybeCompactConversation({conversation:D,sessionKey:G,workspace:F,signal:X,notifyActivity:J})).conversation,H=await this.buildSystemPrompt(B.summary??null),W=await this.buildRunContext(B.id,H);K6(G,{contextTokens:mG(W)});let Q=n9(this.deps.config.executor),U=VM($),_=UM($),A=this.deps.config.executor.engine,C=this.buildAgentRunInput({messages:W,model:Q,workspace:F,signal:X,sessionKey:G,engine:A}),O=await this.collectAssistantText(C,B.id,U,J,G,_);if(!O.ok&&O.staleBindingCleared===!0&&C.engineBinding!==void 0&&O.text.length===0)C=this.buildAgentRunInput({messages:W,model:Q,workspace:F,signal:X,sessionKey:G,engine:A}),O=await this.collectAssistantText(C,B.id,U,J,G,_);if(!O.ok&&this.isContextOverflowError(O.error)){let q=await this.maybeCompactConversation({conversation:B,sessionKey:G,workspace:F,signal:X,notifyActivity:J,force:!0});if(q.compacted){if(B=q.conversation,H=await this.buildSystemPrompt(B.summary??null),W=await this.buildRunContext(B.id,H),K6(G,{contextTokens:mG(W)}),C=this.buildAgentRunInput({messages:W,model:Q,workspace:F,signal:X,sessionKey:G,engine:A}),O=await this.collectAssistantText(C,B.id,U,J,G,_),!O.ok&&O.staleBindingCleared===!0&&C.engineBinding!==void 0&&O.text.length===0)C=this.buildAgentRunInput({messages:W,model:Q,workspace:F,signal:X,sessionKey:G,engine:A}),O=await this.collectAssistantText(C,B.id,U,J,G,_)}}if(!O.ok){let q=O.error??"executor error";E.warn(`[orchestrator] executor error: ${q}`),this.deps.bus.emit("orchestrator.error",{conversationId:B.id,..._===void 0?{}:{gatewayConversationId:_},...U===void 0?{}:{taskId:U},error:q});return}let K=O.text,R=new Date().toISOString();Y.insert(l).values({conversationId:B.id,role:"assistant",content:K,createdAt:R}).run(),Y.update(c).set({lastActiveAt:R}).where(v(c.id,B.id)).run(),K6(G,{at:R}),this.deps.bus.emit("orchestrator.finished",{conversationId:B.id,..._===void 0?{}:{gatewayConversationId:_},...U===void 0?{}:{taskId:U}}),await this.deliver($.channel,B,K)}async collectAssistantText(D,$,F,X,J,G){let Y="",B=!1;try{for await(let H of this.deps.executor.run(D))if(X(),H.type==="assistant_message_delta")Y+=H.delta,this.deps.bus.emit("orchestrator.text",{conversationId:$,...G===void 0?{}:{gatewayConversationId:G},...F===void 0?{}:{taskId:F},delta:H.delta});else if(H.type==="tool_use")this.deps.bus.emit("orchestrator.tool_call",{conversationId:$,...G===void 0?{}:{gatewayConversationId:G},...F===void 0?{}:{taskId:F},call:{id:H.id,name:H.name,arguments:H.arguments}});else if(H.type==="engine_binding"){if(H.engine===this.deps.config.executor.engine){if(cX(J,H.engine,H.binding),H.binding===null)B=!0}}else if(H.type==="error")return{ok:!1,text:Y,error:H.error,staleBindingCleared:B};return{ok:!0,text:Y}}catch(H){return E.error(`[orchestrator] run failed: ${String(H)}`),{ok:!1,text:Y,error:String(H),staleBindingCleared:B}}}buildAgentRunInput(D){let $=this.loadEngineBinding(D.sessionKey,D.engine);return{messages:D.messages,...D.model?{model:D.model}:{},...D.workspace?{workspacePath:D.workspace.path}:{},signal:D.signal,...$===void 0?{}:{engineBinding:$}}}loadEngineBinding(D,$){let F=B0(D)?.engineBindings[$];return od(F)?F:void 0}async deliver(D,$,F){let X=this.deps.config.channels.find((G)=>G.channel===D&&G.enabled);if(!X)return;let J=Q1(D);try{await J.send(X,{channel:D,chatId:$.chatId,...$.threadId===void 0?{}:{threadId:$.threadId},text:F})}catch(G){E.warn(`[orchestrator] deliver to ${D} failed: ${String(G)}`)}}async resolveConversation(D){let $=eE(D),F=await DM($),J=(F?!0:await $M(D))?null:await FM(D),G=F??J;if(!G){let U=this.createConversation(D);return this.upsertSession($,D,U.id),{conversation:U,sessionKey:$}}if(J)this.upsertSession($,D,G.id);if(ad(D)){this.closeConversation(G);let U=this.createConversation(D);return this.rotateSession($,D,U.id,td(D)),{conversation:U,sessionKey:$}}let Y=await this.provisionWorkspace(G.id),B=await uG(G.id),H=n9(this.deps.config.executor),W=await XM(this.deps.executor,H,G.summary??null,B,D.text,Y?.path);if(this.deps.bus.emit("conversation.classifier",{conversationId:G.id,decision:W}),W.continue)return{conversation:dG(G),sessionKey:$};this.closeConversation(G);let Q=this.createConversation(D);return this.rotateSession($,D,Q.id,"classifier:new-topic"),{conversation:Q,sessionKey:$}}closeConversation(D){let $=y(),F=new Date().toISOString();$.update(c).set({status:"closed",closedAt:F}).where(v(c.id,D.id)).run();let X=D.id;this.deps.processes.run({group:X,engine:this.deps.config.executor.engine,class:"background",meta:{conversationId:X,kind:"workspace.dispose"},onSpawn:async()=>({cancel:async()=>{},onActivity:()=>()=>{}}),job:()=>this.disposeWorkspace(X)}).catch((J)=>E.warn(`[orchestrator] dispose workspace job failed: ${String(J)}`))}async provisionWorkspace(D){try{return await this.deps.workspaces.createWorkspace(D)}catch($){return E.warn(`[orchestrator] workspace create failed for ${D}: ${String($)}`),null}}async disposeWorkspace(D){try{await this.deps.workspaces.disposeWorkspace(D)}catch($){E.warn(`[orchestrator] workspace dispose failed for ${D}: ${String($)}`)}}createConversation(D){let $=y(),F=crypto.randomUUID(),X=new Date().toISOString();$.insert(c).values({id:F,channel:D.channel,chatId:D.chatId,...D.threadId===void 0?{}:{threadId:D.threadId},status:"open",startedAt:X,lastActiveAt:X}).run();let J=$.select().from(c).where(v(c.id,F)).get(),G=VM(D);return this.deps.bus.emit("conversation.created",{conversationId:F,channel:D.channel,chatId:D.chatId,...G===void 0?{}:{taskId:G}}),dG(J)}upsertSession(D,$,F){uX({sessionKey:D,currentConversationId:F,channel:$.channel,chatId:$.chatId,...$.threadId===void 0?{}:{threadId:$.threadId},accountId:$.accountId})}rotateSession(D,$,F,X){if(!mX({sessionKey:D,currentConversationId:F,resetReason:X}))this.upsertSession(D,$,F)}persistUserMessage(D,$,F){let X=y(),J=new Date().toISOString(),G=$.richMetadata?JSON.stringify($.richMetadata):null,Y=X.insert(l).values({conversationId:D,role:"user",content:$.text,...G===null?{}:{richMetadata:G},createdAt:J}).returning({id:l.id}).all();return X.update(c).set({lastActiveAt:J}).where(v(c.id,D)).run(),K6(F,{at:J}),{id:Y[0]?.id??-1}}async maybeCompactConversation(D){let $=this.deps.config.orchestrator?.compaction;if($?.enabled!==!0)return{conversation:D.conversation,compacted:!1};let F=pG(this.deps.config.orchestrator,this.deps.config.executor);if(!F)return{conversation:D.conversation,compacted:!1};let X=this.loadLatestCompactionCheckpoint(D.conversation.id),J=this.loadPromptTranscriptRows(D.conversation.id,X?.compactedThroughMessageId);if(J.length<=1)return{conversation:D.conversation,compacted:!1};let G=await this.buildSystemPrompt(D.conversation.summary??null),Y=S1({role:"system",content:G}),B=Y+J.reduce((q,N)=>q+S1(E$(N)),0),H=$.triggerTokens??Math.max(0,F.contextWindowTokens-F.reserveTokens);if(!D.force&&B<=H)return{conversation:D.conversation,compacted:!1};let W=Math.min(F.keepRecentTokens,Math.max(0,H-Y)),{candidateRows:Q}=cd(J,W);if(Q.length===0)return{conversation:D.conversation,compacted:!1};let U=Q[0].id,_=Q[Q.length-1].id,A=await this.runPreCompactionMemoryFlush({conversationId:D.conversation.id,previousSummary:D.conversation.summary??null,rows:Q,compaction:$,workspace:D.workspace,signal:D.signal,notifyActivity:D.notifyActivity,fromId:U,throughId:_}),C;try{C=await this.generateCompactionSummary({previousSummary:D.conversation.summary??null,rows:Q,compaction:$,workspace:D.workspace,signal:D.signal,notifyActivity:D.notifyActivity})}catch(q){return E.warn(`[orchestrator] compaction summary failed: ${String(q)}`),{conversation:D.conversation,compacted:!1}}let O=new Date().toISOString(),K=y();K.insert(l).values({conversationId:D.conversation.id,role:"system",content:C,richMetadata:JSON.stringify({kind:"compaction",version:WM,compactedFromMessageId:U,compactedThroughMessageId:_,sourceMessageCount:Q.length,previousCompactionMessageId:X?.messageId??null,memoryFlush:A.attempted?{status:A.status,at:A.at,...A.error===void 0?{}:{error:A.error}}:{status:"disabled"}}),createdAt:O}).run(),K.update(c).set({summary:C,lastActiveAt:O}).where(v(c.id,D.conversation.id)).run(),pX(D.sessionKey,{at:O,...A.attempted&&A.at!==void 0?{memoryFlushAt:A.at}:{}});let R=K.select().from(c).where(v(c.id,D.conversation.id)).get();return{conversation:R?dG(R):{...D.conversation,summary:C,lastActiveAt:O},compacted:!0}}async runPreCompactionMemoryFlush(D){if(D.compaction.memoryFlush?.enabled!==!0)return{attempted:!1};let $=new Date().toISOString(),F={kind:"memory-flush",version:WM,compactedFromMessageId:D.fromId,compactedThroughMessageId:D.throughId};try{let J=(await this.runSuppressedExecutor({messages:nd(D.previousSummary,D.rows,D.compaction),workspace:D.workspace,signal:D.signal,notifyActivity:D.notifyActivity})).trim();if(J.length===0||/^none\.?$/i.test(J))return this.persistAuditMessage(D.conversationId,"No durable memory changes requested by pre-compaction flush.",{...F,status:"empty"},$),{attempted:!0,at:$,status:"empty"};return await this.deps.brain.writeMemory({content:J,metadata:{name:`pre-compaction-${D.conversationId}-${D.throughId}`,description:"Pre-compaction memory flush",type:"memory",conversationId:D.conversationId,compactedFromMessageId:D.fromId,compactedThroughMessageId:D.throughId},tags:["aiworker","session-compaction"]}),this.persistAuditMessage(D.conversationId,J,{...F,status:"succeeded"},$),{attempted:!0,at:$,status:"succeeded",content:J}}catch(X){let J=String(X);return E.warn(`[orchestrator] pre-compaction memory flush failed: ${J}`),this.persistAuditMessage(D.conversationId,J,{...F,status:"failed",error:J},$),{attempted:!0,at:$,status:"failed",error:J}}}async generateCompactionSummary(D){let F=(await this.runSuppressedExecutor({messages:id(D.previousSummary,D.rows,D.compaction),workspace:D.workspace,signal:D.signal,notifyActivity:D.notifyActivity})).trim();if(F.length>0)return F;return sd(D.previousSummary,D.rows)}async runSuppressedExecutor(D){let $=n9(this.deps.config.executor),F="";for await(let X of this.deps.executor.run({messages:D.messages,...$?{model:$}:{},...D.workspace?{workspacePath:D.workspace.path}:{},signal:D.signal,temperature:0}))if(D.notifyActivity(),X.type==="assistant_message_delta")F+=X.delta;else if(X.type==="error")throw Error(X.error);return F}persistAuditMessage(D,$,F,X){y().insert(l).values({conversationId:D,role:"system",content:$,richMetadata:JSON.stringify(F),createdAt:X}).run()}loadLatestCompactionCheckpoint(D){let F=y().select({id:l.id,role:l.role,richMetadata:l.richMetadata}).from(l).where(uD(v(l.conversationId,D),v(l.role,"system"))).orderBy(hD(l.id)).all();for(let X of F){let J=_M(X);if(J?.kind!=="compaction")continue;let G=rd(J.compactedThroughMessageId);if(G!==null)return{messageId:X.id,compactedThroughMessageId:G}}return null}loadPromptTranscriptRows(D,$){let F=$===void 0?v(l.conversationId,D):uD(v(l.conversationId,D),T3(l.id,$));return y().select({id:l.id,role:l.role,content:l.content,toolCalls:l.toolCalls,toolCallId:l.toolCallId,richMetadata:l.richMetadata}).from(l).where(F).orderBy(b2(l.id)).all().filter((J)=>!QM(J))}loadPromptTranscriptRowsNewestFirst(D,$,F){let X=$===void 0?v(l.conversationId,D):uD(v(l.conversationId,D),T3(l.id,$));return y().select({id:l.id,role:l.role,content:l.content,toolCalls:l.toolCalls,toolCallId:l.toolCallId,richMetadata:l.richMetadata}).from(l).where(X).orderBy(hD(l.id)).limit(F*3).all().filter((G)=>!QM(G)).slice(0,F)}isContextOverflowError(D){if(D===void 0)return!1;return/context|token|too large|maximum length|maximum prompt|prompt is too long/i.test(D)}async buildRunContext(D,$){let F={role:"system",content:$},X=pG(this.deps.config.orchestrator,this.deps.config.executor);if(!X){let G=await this.loadHistoryWindow(D);return[F,...G]}let J=await this.loadBudgetHistory(D,X.maxHistoryMessages);return GM({systemMessage:F,historyNewestFirst:J,budget:X}).messages}async loadHistoryWindow(D){let $=this.deps.config.orchestrator?.maxHistoryMessages??z7,F=this.loadLatestCompactionCheckpoint(D);if(!F)return(await uG(D,$)).map((J)=>({role:J.role,content:J.content}));return this.loadPromptTranscriptRowsNewestFirst(D,F.compactedThroughMessageId,$).reverse().map(E$)}async loadBudgetHistory(D,$){let F=this.loadLatestCompactionCheckpoint(D);return this.loadPromptTranscriptRowsNewestFirst(D,F?.compactedThroughMessageId,$??YM).map(E$)}async buildSystemPrompt(D){let $=await this.deps.brain.listSkills().catch(()=>[]),F=[`You are worker ${this.deps.workerId}.`,"Respond concisely and helpfully."];if(D&&D.trim().length>0)F.push(`Conversation summary so far: ${D.trim()}`);if($.length>0){F.push("Available brain skills:");for(let X of $.slice(0,10))F.push(`- ${X.name}: ${X.description}`)}return F.join(`
|
|
303
|
-
`)}async runTool(D){let $=HM(D.toolName,this.deps.config.toolPolicy);if($==="auto")return{decision:"allow",policy:"auto"};if($==="deny"){let Y=`tool ${D.toolName} blocked by policy`;if(D.conversationId!==void 0)this.persistAssistantMessage(D.conversationId,Y);return this.deps.bus.emit("approval.denied",{taskId:D.taskId,toolCallId:D.toolCallId,toolName:D.toolName,reason:"policy"}),{decision:"deny",policy:"deny",syntheticAssistantMessage:Y}}let F=D.timeoutMs??DG,X=Date.now()+F;this.deps.bus.emit("approval.requested",{workerId:this.deps.workerId,taskId:D.taskId,toolCallId:D.toolCallId,toolName:D.toolName,params:D.params,expiresAt:X});let J;try{J=await this.deps.approvals.wait({taskId:D.taskId,toolCallId:D.toolCallId,toolName:D.toolName,params:D.params,timeoutMs:F})}catch{J="deny"}if(J==="allow")return{decision:"allow",policy:"ask"};let G=`tool ${D.toolName} blocked by policy`;if(D.conversationId!==void 0)this.persistAssistantMessage(D.conversationId,G);return{decision:"deny",policy:"ask",syntheticAssistantMessage:G}}persistAssistantMessage(D,$){let F=y(),X=new Date().toISOString();F.insert(l).values({conversationId:D,role:"assistant",content:$,createdAt:X}).run(),F.update(c).set({lastActiveAt:X}).where(v(c.id,D)).run()}async submitTask(D){let $=y(),F=crypto.randomUUID(),X=new Date().toISOString();$.insert(L8).values({id:F,prompt:D,status:"queued",createdAt:X}).run();let J={workerId:this.deps.workerId,channel:"web",accountId:"sys:task",chatId:`task:${F}`,text:D,receivedAt:X,raw:{taskId:F}};return this.ingest(J).catch((G)=>E.error(`[orchestrator] submitTask ingest failed: ${String(G)}`)),{id:F}}}function VM(D){if(!D.raw||typeof D.raw!=="object"||Array.isArray(D.raw))return;let $=D.raw.taskId;return typeof $==="string"&&$.length>0?$:void 0}function E$(D){return{role:D.role,content:D.content,...D.toolCalls===null?{}:{toolCalls:D.toolCalls},...D.toolCallId===null?{}:{toolCallId:D.toolCallId}}}function cd(D,$){let F=[],X=0;for(let Y=D.length-1;Y>=0;Y-=1){let B=D[Y],H=S1(E$(B));if(F.length>0&&X+H>$)break;F.push(B),X+=H}let J=dd(D,F.reverse()),G=J[0]?.id;if(G===void 0)return{candidateRows:D,recentRows:[]};return{candidateRows:D.filter((Y)=>Y.id<G),recentRows:J}}function dd(D,$){let F=$[0]?.id;if(F===void 0)return $;let X=D.findIndex((J)=>J.id===F);if(X<0)return $;while(X>0){let J=ld(D,X);if(J===null||J>=X)break;X=J}return D.slice(X)}function ld(D,$){let F=new Set;for(let X=$;X<D.length;X+=1){let J=D[X];for(let G of J.toolCalls??[])F.add(G.id);if(J.role!=="tool"||J.toolCallId===null||F.has(J.toolCallId))continue;for(let G=$-1;G>=0;G-=1)if(D[G].toolCalls?.some((B)=>B.id===J.toolCallId)===!0)return G}return null}function id(D,$,F){return[{role:"system",content:["You compact an AIWorker conversation transcript for future prompt context.","Return a concise durable summary only.","Merge the previous durable summary with the new transcript rows.","Preserve user preferences, decisions, open tasks, constraints, named entities, and tool outcomes.","Do not invent facts. Do not mention that this is a summary unless needed for clarity."].join(`
|
|
304
|
-
`)},{role:"user",content:["Previous durable summary:",D?.trim()||"(none)","","Transcript rows to compact. Raw rows remain stored for audit:",nG($,F.maxSummaryMessages??lG)].join(`
|
|
305
|
-
`)}]}function nd(D,$,F){return[{role:"system",content:["You are running a pre-compaction memory flush for AIWorker.","This turn is not delivered to the user.","Return only durable facts, preferences, decisions, or todos that should be written to long-term memory.","If there is nothing durable to write, return NONE."].join(`
|
|
306
|
-
`)},{role:"user",content:["Previous durable summary:",D?.trim()||"(none)","","Transcript rows about to be compacted:",nG($,F.maxSummaryMessages??lG)].join(`
|
|
307
|
-
`)}]}function nG(D,$){if(D.length<=$)return D.map(cG).join(`
|
|
308
|
-
`);let F=Math.ceil($/2),X=Math.floor($/2),J=D.length-F-X;return[...D.slice(0,F).map(cG),`... ${J} transcript rows omitted from summarizer prompt ...`,...D.slice(D.length-X).map(cG)].join(`
|
|
309
|
-
`)}function cG(D){let $=D.toolCalls?.map((X)=>X.id).join(", "),F=[$?` toolCalls=${$}`:"",D.toolCallId?` toolCallId=${D.toolCallId}`:""].join("");return`#${D.id} ${D.role}${F}: ${D.content.slice(0,1500)}`}function sd(D,$){let F=$.length===0?"no rows":`rows #${$[0].id}-#${$[$.length-1].id}`;return[D?.trim()||"",`Compacted ${F}.`,nG($,Math.min(12,lG))].filter((X)=>X.length>0).join(`
|
|
310
|
-
|
|
311
|
-
`)}function QM(D){if(D.role!=="system")return!1;let $=_M(D);return $?.kind==="compaction"||$?.kind==="memory-flush"}function _M(D){if(D.role!=="system"||D.richMetadata===null)return null;try{let $=JSON.parse(D.richMetadata);return $!==null&&typeof $==="object"&&!Array.isArray($)?$:null}catch{return null}}function rd(D){return typeof D==="number"&&Number.isInteger(D)&&D>0?D:null}function od(D){return D!==null&&typeof D==="object"&&!Array.isArray(D)}function ad(D){if(!D.raw||typeof D.raw!=="object"||Array.isArray(D.raw))return!1;let $=D.raw;return $.source==="gateway"&&$.sessionReset===!0}function UM(D){if(!D.raw||typeof D.raw!=="object"||Array.isArray(D.raw))return;return D.raw.source==="gateway"&&D.accountId==="sys:gateway"&&D.chatId.startsWith("gw:")?D.chatId:void 0}function td(D){if(!D.raw||typeof D.raw!=="object"||Array.isArray(D.raw))return"manual";let $=D.raw.resetCommand;return $==="/new"||$==="/reset"?`manual:${$}`:"manual"}function dG(D){return{id:D.id,...D.taskId===null?{}:{taskId:D.taskId},channel:D.channel,chatId:D.chatId,...D.threadId===null?{}:{threadId:D.threadId},status:D.status,...D.summary===null?{}:{summary:D.summary},startedAt:D.startedAt,lastActiveAt:D.lastActiveAt,...D.closedAt===null?{}:{closedAt:D.closedAt}}}var lG=120,WM=1;var AM=Z(()=>{aD();wD();JD();U0();e3();JM();D$();BM()});function b1(D,$,F){let X=yR(D,$),J=gG($.executor),G=new t3($.channels),Y=new _9,B=ed($),H=new L1,W=new iG({config:$,brain:X,executor:J,bus:Y,workerId:D,workspaces:B,processes:F.processes,approvals:H}),Q=mR(Y),U=$.evolution.enabled?sR():()=>{return},_=new U9({workerId:D,getOrchestrator:()=>W});return _.start(),{workerId:D,config:$,brain:X,executor:J,channels:G,bus:Y,orchestrator:W,cron:_,workspaces:B,processes:F.processes,approvals:H,dispose(){Q(),U(),H.dispose(),_.stop(),W_()}}}function ed(D){let $=(()=>{if(D.executor.engine!=="claude-code")return;try{let X=D8(D.executor).body.workspaceRoot;return typeof X==="string"&&X.length>0?X:void 0}catch{return}})();return new yG({root:i.WORKER_DATA_ROOT,...$?{subdir:$}:{},...i.WORKER_WORKSPACE_GIT_ORIGIN?{gitOrigin:i.WORKER_WORKSPACE_GIT_ORIGIN}:{}})}var KM=Z(()=>{T4();uR();sX();e3();fJ();kJ();pR();rR();B1();iE();tE();D$();AM()});var OM=Z(()=>{T4()});import{Buffer as o6}from"buffer";import{createCipheriv as Dl,createDecipheriv as $l,randomBytes as Fl}from"crypto";class a6{db;key;constructor(D,$){this.db=$;if(!/^[0-9a-f]{64}$/.test(D))throw Error("SecretsVault: AIWORKER_MASTER_KEY must be 32-byte hex (64 hex chars)");if(this.key=o6.from(D,"hex"),this.key.length!==Jl)throw Error("SecretsVault: decoded master key length is not 32 bytes")}async put(D,$){let{ciphertext:F,nonce:X,authTag:J}=this.encrypt($),G=await this.db.select({id:_0.id}).from(_0).where(v(_0.key,D)).get(),Y=new Date().toISOString();if(G)await this.db.update(_0).set({valueEnc:F,nonce:X,authTag:J,updatedAt:Y}).where(v(_0.id,G.id)).run();else await this.db.insert(_0).values({key:D,valueEnc:F,nonce:X,authTag:J,createdAt:Y,updatedAt:Y}).run()}async get(D){let $=await this.db.select().from(_0).where(v(_0.key,D)).get();if(!$)return null;return this.decrypt($.valueEnc,$.nonce,$.authTag)}async list(){return(await this.db.select({key:_0.key}).from(_0).all()).map(($)=>$.key)}async remove(D){await this.db.delete(_0).where(v(_0.key,D)).run()}async removeAll(){await this.db.delete(_0).run()}encryptString(D){return this.encrypt(D)}decryptString(D,$,F){return this.decrypt(D,$,F)}encrypt(D){let $=Fl(Xl),F=Dl(CM,this.key,$),X=o6.concat([F.update(D,"utf8"),F.final()]),J=F.getAuthTag();return{ciphertext:X.toString("base64"),nonce:$.toString("base64"),authTag:J.toString("base64")}}decrypt(D,$,F){let X=$l(CM,this.key,o6.from($,"base64"));return X.setAuthTag(o6.from(F,"base64")),o6.concat([X.update(o6.from(D,"base64")),X.final()]).toString("utf8")}}var CM="aes-256-gcm",Xl=12,Jl=32;var sG=Z(()=>{wD();U0()});function mD(){if(!M$)M$=new a6(i.AIWORKER_MASTER_KEY,y());return M$}function RM(){M$=null}var M$=null;var EM=Z(()=>{wD();OM();sG();sG()});function t6(D={}){let $=Z$(D.limit,Yl,1,Gl),F=Z$(D.offset,0,0,Number.MAX_SAFE_INTEGER),X=y(),J=D.status===void 0?X.select().from(WD).orderBy(hD(WD.lastInteractionAt)).limit($+1).offset(F).all():X.select().from(WD).where(v(WD.status,D.status)).orderBy(hD(WD.lastInteractionAt)).limit($+1).offset(F).all();return{sessions:J.slice(0,$).map((Y)=>ZM(Y,D.config)),page:{limit:$,offset:F,hasMore:J.length>$}}}function e6(D,$){let F=B0(D);return F===null?null:ZM(F,$)}function D3(D={}){let $=D.apply===!0,F=rG(D);if(!$||F.planned.transcripts.length===0)return{...F,mode:$?"apply":"dry-run",applied:{conversationsDeleted:0,messagesDeleted:0}};let X=y(),J=F.planned.transcripts.map((H)=>H.conversationId);X.delete(c).where(uD(E8(c.id,J),M`${c.status} = 'closed'
|
|
312
|
-
AND ${c.closedAt} IS NOT NULL
|
|
313
|
-
AND ${c.closedAt} <= ${F.cutoff}
|
|
314
|
-
AND ${c.id} NOT IN (SELECT ${WD.currentConversationId} FROM ${WD})`)).run();let G=X.select({id:c.id}).from(c).where(E8(c.id,J)).all(),Y=new Set(G.map((H)=>H.id)),B=F.planned.transcripts.filter((H)=>!Y.has(H.conversationId));return{...F,mode:"apply",applied:{conversationsDeleted:B.length,messagesDeleted:B.reduce((H,W)=>H+W.messageCount,0)}}}function rG(D={}){let $=Z$(D.olderThanDays,Wl,0,3650),F=Z$(D.limit,Bl,1,Hl),X=Al(D.now,$),G=y().select({id:c.id,channel:c.channel,chatId:c.chatId,threadId:c.threadId,closedAt:c.closedAt,lastActiveAt:c.lastActiveAt}).from(c).where(M`${c.status} = 'closed'
|
|
315
|
-
AND ${c.closedAt} IS NOT NULL
|
|
316
|
-
AND ${c.closedAt} <= ${X}
|
|
317
|
-
AND ${c.id} NOT IN (SELECT ${WD.currentConversationId} FROM ${WD})`).orderBy(b2(c.closedAt),b2(c.id)).limit(F).all(),Y=_l(G.map((W)=>W.id)),B=G.map((W)=>({conversationId:W.id,channel:W.channel,chatId:W.chatId,threadId:W.threadId,closedAt:W.closedAt??"",lastActiveAt:W.lastActiveAt,messageCount:Y.get(W.id)??0})),H=B.reduce((W,Q)=>W+Q.messageCount,0);return{action:"prune-closed-transcripts",mode:"dry-run",cutoff:X,olderThanDays:$,limit:F,planned:{conversations:B.length,messages:H,transcripts:B},applied:{conversationsDeleted:0,messagesDeleted:0}}}function ZM(D,$){let F=Ul($),X=qM(D.engineBindings)?D.engineBindings:{},J=MM(F,X[F],Ol(X,F)),G=Object.keys(X).sort().map((Y)=>MM(Y,X[Y],!0));return{sessionKey:D.sessionKey,sessionId:D.currentConversationId,currentConversationId:D.currentConversationId,route:{channel:D.channel,chatId:D.chatId,threadId:D.threadId,accountId:D.accountId},lifecycle:{status:D.status,sessionStartedAt:D.sessionStartedAt,lastInteractionAt:D.lastInteractionAt,resetAt:D.resetAt,resetReason:D.resetReason,createdAt:D.createdAt,updatedAt:D.updatedAt},context:{contextTokens:D.contextTokens,totalTokens:D.totalTokens,totalTokensFresh:D.totalTokensFresh,compactionCount:D.compactionCount},memoryFlush:{status:Ql(D),at:D.memoryFlushAt,compactionCount:D.compactionCount,memoryFlushCompactionCount:D.memoryFlushCompactionCount},engineBindings:{configuredEngine:F,configured:J,all:G}}}function MM(D,$,F){let X=qM($)?Object.keys($).sort():[];return{engine:D,present:F,valueType:F?Kl($):"unknown",fieldCount:X.length,fields:X,redacted:!0}}function Ql(D){if(D.compactionCount===0)return"not-needed";if(D.memoryFlushAt===null)return"never";return D.memoryFlushCompactionCount>=D.compactionCount?"current":"stale"}function Ul(D){let F=D?.executor?.engine;return typeof F==="string"&&F.length>0?F:"unknown"}function _l(D){if(D.length===0)return new Map;let $=y().select({conversationId:l.conversationId,value:F4()}).from(l).where(E8(l.conversationId,D)).groupBy(l.conversationId).all();return new Map($.map((F)=>[F.conversationId,F.value]))}function Al(D,$){let F=D===void 0?new Date:new Date(D);return new Date(F.getTime()-$*Vl).toISOString()}function Kl(D){if(D===null)return"null";if(Array.isArray(D))return"array";let $=typeof D;if($==="boolean"||$==="number"||$==="object"||$==="string")return $;return"unknown"}function qM(D){return D!==null&&typeof D==="object"&&!Array.isArray(D)}function Ol(D,$){return Object.prototype.hasOwnProperty.call(D,$)}function Z$(D,$,F,X){if(D===void 0||!Number.isInteger(D))return $;return Math.max(F,Math.min(X,D))}var Yl=50,Gl=200,Bl=50,Hl=200,Wl=30,Vl=86400000;var NM=Z(()=>{wD();U0()});var PM={};d8(PM,{workerEnv:()=>i,timingSafeEqualStrings:()=>k2,stopGatewayNode:()=>RR,startGatewayNode:()=>n5,runClosedTranscriptMaintenance:()=>D3,resetSecretsVaultForTests:()=>RM,resetAvailabilityProbeForTests:()=>tK,redactSecrets:()=>b4,readConfig:()=>z0,putSecret:()=>t5,putConfig:()=>y9,printBootstrapIfJustMinted:()=>V1,planClosedTranscriptMaintenance:()=>rG,mirrorConfigToYaml:()=>u9,mintWorkerId:()=>w4,mintApiToken:()=>C6,loadOrSeedConfig:()=>H1,loadOrMintIdentity:()=>W1,listSessionStatuses:()=>t6,listSecrets:()=>a5,hydrateSecrets:()=>E6,handleTokenRotate:()=>p8,handleExecutorTest:()=>o5,handleChannelTest:()=>r5,handleBrainTest:()=>s5,getWorkerEnv:()=>G1,getSessionStatus:()=>e6,getSecretsVault:()=>mD,getChannelAdapter:()=>Q1,getAvailabilityProbe:()=>$5,enumerateSecretPaths:()=>$8,deleteSecret:()=>e5,buildWorkerRuntime:()=>b1,buildInfo:()=>l6,buildCronHandlers:()=>l5,applyConfigUpdate:()=>d6,WorkerEventBus:()=>_9,SecretsVault:()=>a6,ProcessManager:()=>z1,InvalidConfigError:()=>y2,DEFAULT_EMPTY_CONFIG:()=>O6,CronService:()=>U9,ConfigVersionConflictError:()=>u2,ChannelRegistry:()=>t3,ApprovalStore:()=>L1});var a0=Z(()=>{T4();J_();e3();fJ();kJ();F5();ER();aY();MR();oY();qR();NR();PR();D$();IR();KM();EM();S4();NM()});import o from"process";import{EventEmitter as Nq}from"events";function h$(D){return D==null?[]:Array.isArray(D)?D:[D]}function Pq(D,$,F,X){var J,G=D[$],Y=~X.string.indexOf($)?F==null||F===!0?"":String(F):typeof F==="boolean"?F:~X.boolean.indexOf($)?F==="false"?!1:F==="true"||(D._.push((J=+F,J*0===0)?J:F),!!F):(J=+F,J*0===0)?J:F;D[$]=G==null?Y:Array.isArray(G)?G.concat(Y):[G,Y]}function Lq(D,$){D=D||[],$=$||{};var F,X,J,G,Y,B={_:[]},H=0,W=0,Q=0,U=D.length;let _=$.alias!==void 0,A=$.unknown!==void 0,C=$.default!==void 0;if($.alias=$.alias||{},$.string=h$($.string),$.boolean=h$($.boolean),_)for(F in $.alias){X=$.alias[F]=h$($.alias[F]);for(H=0;H<X.length;H++)($.alias[X[H]]=X.concat(F)).splice(H,1)}for(H=$.boolean.length;H-- >0;){X=$.alias[$.boolean[H]]||[];for(W=X.length;W-- >0;)$.boolean.push(X[W])}for(H=$.string.length;H-- >0;){X=$.alias[$.string[H]]||[];for(W=X.length;W-- >0;)$.string.push(X[W])}if(C){for(F in $.default)if(G=typeof $.default[F],X=$.alias[F]=$.alias[F]||[],$[G]!==void 0){$[G].push(F);for(H=0;H<X.length;H++)$[G].push(X[H])}}let O=A?Object.keys($.alias):[];for(H=0;H<U;H++){if(J=D[H],J==="--"){B._=B._.concat(D.slice(++H));break}for(W=0;W<J.length;W++)if(J.charCodeAt(W)!==45)break;if(W===0)B._.push(J);else if(J.substring(W,W+3)==="no-"){if(G=J.substring(W+3),A&&!~O.indexOf(G))return $.unknown(J);B[G]=!1}else{for(Q=W+1;Q<J.length;Q++)if(J.charCodeAt(Q)===61)break;G=J.substring(W,Q),Y=J.substring(++Q)||(H+1===U||(""+D[H+1]).charCodeAt(0)===45||D[++H]),X=W===2?[G]:G;for(Q=0;Q<X.length;Q++){if(G=X[Q],A&&!~O.indexOf(G))return $.unknown("-".repeat(W)+G);Pq(B,G,Q+1<X.length||Y,$)}}}if(C){for(F in $.default)if(B[F]===void 0)B[F]=$.default[F]}if(_)for(F in B){X=$.alias[F]||[];while(X.length>0)B[X.shift()]=B[F]}return B}var jB=(D)=>D.replace(/[<[].+/,"").trim(),jq=(D)=>{let $=/<([^>]+)>/g,F=/\[([^\]]+)\]/g,X=[],J=(B)=>{let H=!1,W=B[1];if(W.startsWith("..."))W=W.slice(3),H=!0;return{required:B[0].startsWith("<"),value:W,variadic:H}},G;while(G=$.exec(D))X.push(J(G));let Y;while(Y=F.exec(D))X.push(J(Y));return X},zq=(D)=>{let $={alias:{},boolean:[]};for(let[F,X]of D.entries()){if(X.names.length>1)$.alias[X.names[0]]=X.names.slice(1);if(X.isBoolean)if(X.negated){if(!D.some((G,Y)=>{return Y!==F&&G.names.some((B)=>X.names.includes(B))&&typeof G.required==="boolean"}))$.boolean.push(X.names[0])}else $.boolean.push(X.names[0])}return $},PB=(D)=>{return D.sort(($,F)=>{return $.length>F.length?-1:1})[0]},LB=(D,$)=>{return D.length>=$?D:`${D}${" ".repeat($-D.length)}`},Iq=(D)=>{return D.replace(/([a-z])-([a-z])/g,($,F,X)=>{return F+X.toUpperCase()})},Tq=(D,$,F)=>{let X=0,J=$.length,G=D,Y;for(;X<J;++X)Y=G[$[X]],G=G[$[X]]=X===J-1?F:Y!=null?Y:!!~$[X+1].indexOf(".")||!(+$[X+1]>-1)?{}:[]},wq=(D,$)=>{for(let F of Object.keys($)){let X=$[F];if(X.shouldTransform){if(D[F]=Array.prototype.concat.call([],D[F]),typeof X.transformFunction==="function")D[F]=D[F].map(X.transformFunction)}}},Sq=(D)=>{let $=/([^\\\/]+)$/.exec(D);return $?$[1]:""},zB=(D)=>{return D.split(".").map(($,F)=>{return F===0?Iq($):$}).join(".")};class W7 extends Error{constructor(D){super(D);if(this.name=this.constructor.name,typeof Error.captureStackTrace==="function")Error.captureStackTrace(this,this.constructor);else this.stack=Error(D).stack}}class IB{constructor(D,$,F){if(this.rawName=D,this.description=$,this.config=Object.assign({},F),D=D.replace(/\.\*/g,""),this.negated=!1,this.names=jB(D).split(",").map((X)=>{let J=X.trim().replace(/^-{1,2}/,"");if(J.startsWith("no-"))this.negated=!0,J=J.replace(/^no-/,"");return zB(J)}).sort((X,J)=>X.length>J.length?1:-1),this.name=this.names[this.names.length-1],this.negated&&this.config.default==null)this.config.default=!0;if(D.includes("<"))this.required=!0;else if(D.includes("["))this.required=!1;else this.isBoolean=!0}}var bq=process.argv,fq=`${process.platform}-${process.arch} node-${process.version}`;class x${constructor(D,$,F={},X){this.rawName=D,this.description=$,this.config=F,this.cli=X,this.options=[],this.aliasNames=[],this.name=jB(D),this.args=jq(D),this.examples=[]}usage(D){return this.usageText=D,this}allowUnknownOptions(){return this.config.allowUnknownOptions=!0,this}ignoreOptionDefaultValue(){return this.config.ignoreOptionDefaultValue=!0,this}version(D,$="-v, --version"){return this.versionNumber=D,this.option($,"Display version number"),this}example(D){return this.examples.push(D),this}option(D,$,F){let X=new IB(D,$,F);return this.options.push(X),this}alias(D){return this.aliasNames.push(D),this}action(D){return this.commandAction=D,this}isMatched(D){return this.name===D||this.aliasNames.includes(D)}get isDefaultCommand(){return this.name===""||this.aliasNames.includes("!")}get isGlobalCommand(){return this instanceof g$}hasOption(D){return D=D.split(".")[0],this.options.find(($)=>{return $.names.includes(D)})}outputHelp(){let{name:D,commands:$}=this.cli,{versionNumber:F,options:X,helpCallback:J}=this.cli.globalCommand,G=[{body:`${D}${F?`/${F}`:""}`}];if(G.push({title:"Usage",body:` $ ${D} ${this.usageText||this.rawName}`}),(this.isGlobalCommand||this.isDefaultCommand)&&$.length>0){let H=PB($.map((W)=>W.rawName));G.push({title:"Commands",body:$.map((W)=>{return` ${LB(W.rawName,H.length)} ${W.description}`}).join(`
|
|
318
|
-
`)}),G.push({title:"For more info, run any command with the `--help` flag",body:$.map((W)=>` $ ${D}${W.name===""?"":` ${W.name}`} --help`).join(`
|
|
319
|
-
`)})}let B=this.isGlobalCommand?X:[...this.options,...X||[]];if(!this.isGlobalCommand&&!this.isDefaultCommand)B=B.filter((H)=>H.name!=="version");if(B.length>0){let H=PB(B.map((W)=>W.rawName));G.push({title:"Options",body:B.map((W)=>{return` ${LB(W.rawName,H.length)} ${W.description} ${W.config.default===void 0?"":`(default: ${W.config.default})`}`}).join(`
|
|
320
|
-
`)})}if(this.examples.length>0)G.push({title:"Examples",body:this.examples.map((H)=>{if(typeof H==="function")return H(D);return H}).join(`
|
|
321
|
-
`)});if(J)G=J(G)||G;console.log(G.map((H)=>{return H.title?`${H.title}:
|
|
322
|
-
${H.body}`:H.body}).join(`
|
|
1
|
+
#!/usr/bin/env sh
|
|
2
|
+
set -u
|
|
3
|
+
|
|
4
|
+
resolve_script_dir() {
|
|
5
|
+
target=$1
|
|
6
|
+
while [ -L "$target" ]; do
|
|
7
|
+
dir=$(CDPATH= cd -P "$(dirname "$target")" 2>/dev/null && pwd) || return 1
|
|
8
|
+
target=$(readlink "$target") || return 1
|
|
9
|
+
case "$target" in
|
|
10
|
+
/*) ;;
|
|
11
|
+
*) target="$dir/$target" ;;
|
|
12
|
+
esac
|
|
13
|
+
done
|
|
14
|
+
CDPATH= cd -P "$(dirname "$target")" 2>/dev/null && pwd
|
|
15
|
+
}
|
|
323
16
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
`)}function KD(D){if(!(D instanceof G0))return 1;switch(D.code){case"NOT_FOUND":case"unknown_method":return 2;case"request_timeout":case"connect_timeout":return 3;case"ws_closed":case"ws_closed_early":case"not_connected":return 4;default:return 1}}async function PW(D={}){try{let $=await RD(async({client:F})=>{if(D.workerId!==void 0&&D.workerId.length>0)return await F.request("approval.list",{workerId:D.workerId});let J=(await F.request("workers.list",{})).workers.filter((Y)=>Y.online).map((Y)=>Y.workerId),G=[];for(let Y of J)try{let B=await F.request("approval.list",{workerId:Y});for(let H of B.approvals)G.push(H)}catch(B){E.warn(`approval.list ${Y} \u5931\u8D25: ${B instanceof Error?B.message:String(B)}`)}return{approvals:G}});return ID($),0}catch($){return E.error(`approvals list \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),KD($)}}async function LW(D){try{let $=await RD(async({client:F})=>{return await F.request("approval.grant",{workerId:D.workerId,taskId:D.taskId,toolCallId:D.toolCallId,decision:D.deny===!0?"deny":"allow"})});return ID($),0}catch($){return E.error(`approvals grant \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),KD($)}}eD();JD();async function jW(D){let $=D.timeoutMs??120000;try{return await RD(async({client:F})=>{return await new Promise((X)=>{let J=!1,G=(Q)=>{if(J)return;J=!0,X(Q)},Y=setTimeout(()=>{Q2({kind:"error",payload:{code:"timeout",message:`chat \u7B49\u5F85 agent.done \u8D85\u65F6 (>${$}ms)`}}),G(3)},$),B=D.workerId,H=(Q)=>{if(Q===null||typeof Q!=="object")return!1;let U=Q.workerId;return typeof U==="string"&&U===B},W=[];W.push(F.onEvent(e.CHAT_MESSAGE,(Q)=>{if(!H(Q))return;Q2({kind:e.CHAT_MESSAGE,payload:Q})})),W.push(F.onEvent(e.AGENT_THINKING,(Q)=>{if(!H(Q))return;Q2({kind:e.AGENT_THINKING,payload:Q})})),W.push(F.onEvent(e.AGENT_TOOL_CALL,(Q)=>{if(!H(Q))return;Q2({kind:e.AGENT_TOOL_CALL,payload:Q})})),W.push(F.onEvent(e.AGENT_DONE,(Q)=>{if(!H(Q))return;Q2({kind:"done",payload:Q}),clearTimeout(Y);for(let U of W)U();G(0)})),F.request("chat.send",{workerId:D.workerId,content:D.content,...D.conversationId===void 0?{}:{conversationId:D.conversationId}},{timeoutMs:Math.min($,30000)}).then((Q)=>{Q2({kind:"accepted",payload:Q})}).catch((Q)=>{Q2({kind:"error",payload:{code:"request_failed",message:Q instanceof Error?Q.message:String(Q)}}),clearTimeout(Y);for(let U of W)U();G(KD(Q))})})})}catch(F){return E.error(`chat \u5931\u8D25: ${F instanceof Error?F.message:String(F)}`),KD(F)}}JD();async function zW(D){try{let $=await RD(async({client:F})=>{return await F.request("config.get",{workerId:D})});return ID($),0}catch($){return E.error(`config get \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),KD($)}}async function IW(D){let $;try{$=JSON.parse(D.configJson)}catch(F){return E.error(`config-set \u53C2\u6570\u4E0D\u662F\u5408\u6CD5 JSON: ${F instanceof Error?F.message:String(F)}`),2}try{let F=await RD(async({client:X})=>{return await X.request("config.put",{workerId:D.workerId,ifMatch:D.ifMatch,config:$})});return ID(F),0}catch(F){return E.error(`config set \u5931\u8D25: ${F instanceof Error?F.message:String(F)}`),KD(F)}}JD();async function TW(){try{let D=await RD(async({client:$})=>{return await $.request("enroll.list",{})});return ID(D),0}catch(D){return E.error(`enroll list \u5931\u8D25: ${D instanceof Error?D.message:String(D)}`),KD(D)}}async function wW(D){try{let $=await RD(async({client:F})=>{return await F.request("enroll.approve",{otp:D})});return E.success(`\u5DF2\u6279\u51C6 OTP ${D}\uFF0CworkerId=${$.workerId}`),ID({workerId:$.workerId,deviceToken:$.deviceToken}),0}catch($){return E.error(`enroll approve \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),KD($)}}async function SW(D){try{let $=await RD(async({client:F})=>{return await F.request("enroll.reject",{otp:D})});if($.rejected)E.info(`\u5DF2\u62D2\u7EDD OTP ${D}`);else E.warn(`OTP ${D} \u4E0D\u5B58\u5728\u6216\u5DF2\u8FC7\u671F`);return ID($),0}catch($){return E.error(`enroll reject \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),KD($)}}import P4 from"process";import{createHash as FI}from"crypto";eD();qX();PX();import{existsSync as vQ,mkdirSync as dj}from"fs";import u3 from"path";import{fileURLToPath as lj}from"url";import{Database as ij}from"bun:sqlite";V4();var LX={};d8(LX,{registeredWorkers:()=>MD,auditEvents:()=>o2});var MD=Q0("registered_workers",{id:T("id").primaryKey(),baseUrl:T("base_url").notNull(),displayName:T("display_name").notNull(),apiTokenEnc:T("api_token_enc").notNull(),nonce:T("nonce").notNull(),authTag:T("auth_tag").notNull(),addedAt:T("added_at").notNull().$defaultFn(()=>new Date().toISOString()),addedBy:T("added_by").$type().notNull(),lastSeenAt:T("last_seen_at"),lastSeenState:T("last_seen_state").$type(),lastConfigVersion:TD("last_config_version")}),o2=Q0("audit_events",{id:TD("id").primaryKey({autoIncrement:!0}),at:T("at").notNull().$defaultFn(()=>new Date().toISOString()),actor:T("actor").notNull(),action:T("action").notNull(),workerId:T("worker_id"),detail:T("detail",{mode:"json"}).$type()},(D)=>({workerIdIdx:g0("audit_events_worker_id_idx").on(D.workerId)}));var hQ=u3.dirname(lj(import.meta.url));function nj(D){let $=u3.resolve(hQ,"../../drizzle",D);if(vQ($))return $;let F=u3.resolve(hQ,"drizzle",D);if(vQ(F))return F;return $}var jX=nj("fleet"),m3=null;function sj(D){let $=D===":memory:"?D:u3.resolve(D);try{if($!==":memory:")dj(u3.dirname($),{recursive:!0,mode:448});let F=new ij($,{create:!0});return F.exec("PRAGMA journal_mode = WAL"),F.exec("PRAGMA foreign_keys = ON"),Q6(F,{schema:LX})}catch(F){let X=F instanceof Error?F.message:String(F);throw Error(`Unable to open fleet database at ${$}. Ensure the parent directory exists and is writable, or set AIWORKER_FLEET_DB_PATH to a writable location. Original error: ${X}`)}}function xQ(D){return m3=sj(D),m3}function zX(){if(!m3)throw Error("Fleet database not initialized. Call initFleetDb() first.");return m3}function IX(){m3=null}function gQ(D=jX){U4(zX(),{migrationsFolder:D})}JD();V2();aD();yD();import yQ from"path";import rj from"process";var oj=V.object({AIWORKER_GATEWAY_PORT:V.coerce.number().int().positive().max(65535).default(9218),AIWORKER_GATEWAY_HOST:V.string().min(1).default("127.0.0.1"),AIWORKER_ADMIN_EXTERNAL_AUTH:V.enum(["1","true","0","false"]).default("0").transform(C3),INTERNAL_SHARED_SECRET:V.string().min(16).optional(),NODE_ENV:V.enum(["development","production","test"]).default("development"),AIWORKER_MASTER_KEY:V.string().regex(/^[0-9a-f]{64}$/,"AIWORKER_MASTER_KEY must be 32-byte hex (64 hex chars)").optional(),AIWORKER_FLEET_DB_PATH:V.string().optional(),AIWORKER_GATEWAY_CAN_LAUNCH:V.enum(["true","false"]).default("false").transform((D)=>D==="true"),AIWORKER_MAX_WORKERS:V.coerce.number().int().positive().optional(),AIWORKER_JOIN_TOKEN:V.string().min(16).optional(),AIWORKER_ENROLL_OTP_TTL_SEC:V.coerce.number().int().min(30).max(3600).default(300),DOCKER_HOST:V.string().default("/var/run/docker.sock"),AIWORKER_IMAGE:V.string().optional(),AIWORKER_NETWORK:V.string().default("aiworker_default"),WORKER_DATA_ROOT:V.string().optional(),WORKER_MEMORY_LIMIT:V.string().optional(),WORKER_CPU_LIMIT:V.coerce.number().optional(),AIWORKER_LAUNCH_BASE_URL_TEMPLATE:V.string().default("http://{containerName}:9217")}).superRefine((D,$)=>{if(!D.AIWORKER_GATEWAY_CAN_LAUNCH)return;if(!D.INTERNAL_SHARED_SECRET)$.addIssue({code:V.ZodIssueCode.custom,path:["INTERNAL_SHARED_SECRET"],message:"INTERNAL_SHARED_SECRET is required when AIWORKER_GATEWAY_CAN_LAUNCH=true"});let F=[["AIWORKER_IMAGE",D.AIWORKER_IMAGE],["WORKER_DATA_ROOT",D.WORKER_DATA_ROOT],["WORKER_MEMORY_LIMIT",D.WORKER_MEMORY_LIMIT],["WORKER_CPU_LIMIT",D.WORKER_CPU_LIMIT]];for(let[X,J]of F)if(J===void 0||J==="")$.addIssue({code:V.ZodIssueCode.custom,path:[X],message:`${X} is required when AIWORKER_GATEWAY_CAN_LAUNCH=true`})});function uQ(){let D=oj.parse(rj.env);return{port:D.AIWORKER_GATEWAY_PORT,host:D.AIWORKER_GATEWAY_HOST,adminExternalAuthAcknowledged:D.AIWORKER_ADMIN_EXTERNAL_AUTH,internalSharedSecret:D.INTERNAL_SHARED_SECRET,masterKeyHex:D.AIWORKER_MASTER_KEY,fleetDbPath:aj(D.AIWORKER_FLEET_DB_PATH),canLaunch:D.AIWORKER_GATEWAY_CAN_LAUNCH,maxWorkers:D.AIWORKER_MAX_WORKERS,joinToken:D.AIWORKER_JOIN_TOKEN,enrollOtpTtlSec:D.AIWORKER_ENROLL_OTP_TTL_SEC,nodeEnv:D.NODE_ENV,supervisor:{dockerHost:D.DOCKER_HOST,image:D.AIWORKER_IMAGE,network:D.AIWORKER_NETWORK,workerDataRoot:D.WORKER_DATA_ROOT,workerMemoryLimit:D.WORKER_MEMORY_LIMIT,workerCpuLimit:D.WORKER_CPU_LIMIT,launchBaseUrlTemplate:D.AIWORKER_LAUNCH_BASE_URL_TEMPLATE}}}function aj(D){if(D===":memory:")return D;let $=D&&D.length>0?D:yQ.join(H2(),"fleet.db");return yQ.resolve($)}eD();function S0(D,$){let F=ND($);D.forEach((X)=>{try{X.ws.send(F)}catch{}})}class _4{windowMs;threshold;blockMs;now;entries=new Map;constructor(D={}){this.windowMs=D.windowMs??60000,this.threshold=D.threshold??5,this.blockMs=D.blockMs??600000,this.now=D.now??(()=>Date.now())}isBlocked(D){if(!D)return{blocked:!1,retryAfterMs:0,blockUntil:0};let $=this.entries.get(D);if(!$)return{blocked:!1,retryAfterMs:0,blockUntil:0};let F=this.now();if($.blockUntil>F)return{blocked:!0,retryAfterMs:$.blockUntil-F,blockUntil:$.blockUntil};return{blocked:!1,retryAfterMs:0,blockUntil:0}}recordFailure(D){if(!D)return{blockedNow:!1,fails:0,blockUntil:0};let $=this.now(),F=this.entries.get(D);if(F&&F.blockUntil>$)return{blockedNow:!1,fails:F.fails,blockUntil:F.blockUntil};if(!F||$-F.firstFailAt>this.windowMs)F={fails:1,firstFailAt:$,blockUntil:0};else F.fails+=1;let X=!1;if(F.fails>=this.threshold&&F.blockUntil===0)F.blockUntil=$+this.blockMs,X=!0;return this.entries.set(D,F),{blockedNow:X,fails:F.fails,blockUntil:F.blockUntil}}recordSuccess(D){if(!D)return;this.entries.delete(D)}prune(){let D=this.now(),$=0;for(let[F,X]of this.entries){if(X.blockUntil>D)continue;if(D-X.firstFailAt>this.windowMs)this.entries.delete(F),$+=1}return $}snapshot(D){return this.entries.get(D)}size(){return this.entries.size}clear(){this.entries.clear()}}class A4{map=new Map;timeoutMs;now;idFactory;onExpire;timers=new Map;constructor(D={}){this.timeoutMs=D.timeoutMs??60000,this.now=D.now??(()=>Date.now()),this.idFactory=D.idFactory??(()=>crypto.randomUUID()),this.onExpire=D.onExpire}allocate(D){let $=this.idFactory(),F={...D,gatewayRequestId:$,createdAt:this.now()};if(this.map.set($,F),this.timeoutMs>0){let X=setTimeout(()=>{let J=this.map.get($);if(!J)return;this.map.delete($),this.timers.delete($),this.onExpire?.(J,"timeout")},this.timeoutMs);if(typeof X.unref==="function")X.unref();this.timers.set($,X)}return F}consume(D){let $=this.map.get(D);if(!$)return;return this.map.delete(D),this.clearTimer(D),$}cancelByOperator(D){let $=[];for(let F of this.map.values())if(F.operatorWs===D)$.push(F);for(let F of $)this.map.delete(F.gatewayRequestId),this.clearTimer(F.gatewayRequestId),this.onExpire?.(F,"operator_gone");return $}cancelByWorker(D){let $=[];for(let F of this.map.values())if(F.workerId===D)$.push(F);for(let F of $)this.map.delete(F.gatewayRequestId),this.clearTimer(F.gatewayRequestId),this.onExpire?.(F,"node_gone");return $}size(){return this.map.size}dispose(){for(let D of this.timers.values())clearTimeout(D);this.timers.clear(),this.map.clear()}clearTimer(D){let $=this.timers.get(D);if($)clearTimeout($),this.timers.delete(D)}}class K4{byWorkerId=new Map;byWs=new WeakMap;register(D){let $=this.byWorkerId.get(D.workerId);if(this.byWorkerId.set(D.workerId,D),this.byWs.set(D.ws,D),$)return this.byWs.delete($.ws),{replaced:$};return{}}unregisterByWs(D){let $=this.byWs.get(D);if(!$)return;let F=this.byWorkerId.get($.workerId);if(F&&F.ws===D)this.byWorkerId.delete($.workerId);return this.byWs.delete(D),$}get(D){return this.byWorkerId.get(D)}has(D){return this.byWorkerId.has(D)}list(){return Array.from(this.byWorkerId.values())}size(){return this.byWorkerId.size}}class O4{byWs=new Map;register(D){this.byWs.set(D.ws,D)}unregister(D){let $=this.byWs.get(D);if(!$)return;return this.byWs.delete(D),$}list(){return Array.from(this.byWs.values())}size(){return this.byWs.size}forEach(D){this.byWs.forEach(D)}}import{randomBytes as tj}from"crypto";var TX="ABCDEFGHJKMNPQRSTVWXYZ23456789",mQ=4,ej=5;class C4{ttlMs;onExpire;generator;entries=new Map;wsToOtp=new WeakMap;disposed=!1;constructor(D){if(!Number.isFinite(D.ttlMs)||D.ttlMs<=0)throw Error("PendingEnrollmentRegistry: ttlMs \u5FC5\u987B\u4E3A\u6B63\u6570");this.ttlMs=D.ttlMs,this.onExpire=D.onExpire,this.generator=D.generateOtp??Dz}submit(D){if(this.disposed)throw Error("PendingEnrollmentRegistry: already disposed");let $=this.allocateUniqueOtp(),F=Date.now(),X=F+this.ttlMs,J={otp:$,workerId:D.workerId,apiToken:D.apiToken,displayName:D.displayName,ws:D.ws,submittedAt:F,expiresAt:X,timer:setTimeout(()=>this.handleExpire($),this.ttlMs)};return this.entries.set($,J),this.wsToOtp.set(D.ws,$),{otp:$,expiresAt:X}}list(){return Array.from(this.entries.values()).map((D)=>({otp:D.otp,workerId:D.workerId,displayName:D.displayName,submittedAt:D.submittedAt,expiresAt:D.expiresAt}))}approve(D){return this.popInternal(D)}reject(D){return this.popInternal(D)}has(D){return this.entries.has(D)}removeByWs(D){let $=this.wsToOtp.get(D);if(!$)return;return this.popInternal($)}size(){return this.entries.size}dispose(){if(this.disposed)return;this.disposed=!0;for(let D of this.entries.values())clearTimeout(D.timer);this.entries.clear()}popInternal(D){let $=this.entries.get(D);if(!$)return;clearTimeout($.timer),this.entries.delete(D),this.wsToOtp.delete($.ws);let{timer:F,...X}=$;return X}handleExpire(D){let $=this.entries.get(D);if(!$)return;if(this.entries.delete(D),this.wsToOtp.delete($.ws),!this.onExpire)return;try{let{timer:F,...X}=$;this.onExpire(X)}catch{}}allocateUniqueOtp(){for(let D=0;D<ej;D++){let $=this.generator();if(!this.entries.has($))return $}throw Error("PendingEnrollmentRegistry: failed to allocate unique OTP after retries")}}function Dz(){return`${pQ(mQ)}-${pQ(mQ)}`}function pQ(D){let $=tj(D),F="";for(let X=0;X<D;X++)F+=TX[$[X]%TX.length];return F}U0();import{Buffer as cQ}from"buffer";import{createCipheriv as $z,createDecipheriv as N0D,randomBytes as Fz,timingSafeEqual as P0D}from"crypto";var Xz="aes-256-gcm",Jz=12,Yz=32,Gz=/^[0-9a-f]{64}$/;function Bz(D){if(!Gz.test(D))throw Error("Gateway AIWORKER_MASTER_KEY must be 32-byte hex");let $=cQ.from(D,"hex");if($.length!==Yz)throw Error("Gateway AIWORKER_MASTER_KEY must be 32-byte hex");return $}function R4(D,$){let F=Bz($),X=Fz(Jz),J=$z(Xz,F,X),G=cQ.concat([J.update(D,"utf8"),J.final()]),Y=J.getAuthTag();return{ciphertext:G.toString("base64"),nonce:X.toString("base64"),authTag:Y.toString("base64")}}function Hz(D){return D.replace(/[\\%_]/g,($)=>`\\${$}`)}class E4{db;constructor(D){this.db=D}listRegisteredWorkers(){return this.db.select().from(MD).orderBy(hD(MD.addedAt)).all().map(($)=>{let{apiTokenEnc:F,nonce:X,authTag:J,...G}=$;return{...G,lastSeenAt:G.lastSeenAt??void 0,lastSeenState:G.lastSeenState??void 0,lastConfigVersion:G.lastConfigVersion??void 0}})}getRegisteredWorker(D){let $=this.db.select().from(MD).where(v(MD.id,D)).get();if(!$)return;let{apiTokenEnc:F,nonce:X,authTag:J,...G}=$;return{...G,lastSeenAt:G.lastSeenAt??void 0,lastSeenState:G.lastSeenState??void 0,lastConfigVersion:G.lastConfigVersion??void 0}}getRegisteredWorkerRaw(D){let $=this.db.select().from(MD).where(v(MD.id,D)).get();if(!$)return;return{...$,lastSeenAt:$.lastSeenAt??void 0,lastSeenState:$.lastSeenState??void 0,lastConfigVersion:$.lastConfigVersion??void 0}}createRegisteredWorker(D,$){let F=R4(D.apiToken,$),X=new Date().toISOString(),J=D.baseUrl.replace(/\/+$/,""),G={id:D.workerId,baseUrl:J,displayName:D.displayName,apiTokenEnc:F.ciphertext,nonce:F.nonce,authTag:F.authTag,addedAt:X,addedBy:D.addedBy??"manual",lastSeenAt:X,lastSeenState:"online",lastConfigVersion:D.configVersion};this.db.insert(MD).values(G).run(),this.db.insert(o2).values({actor:"gateway",action:"gateway.worker.paired",workerId:D.workerId,detail:{baseUrl:J,displayName:D.displayName,addedBy:G.addedBy}}).run();let{apiTokenEnc:Y,nonce:B,authTag:H,...W}=G;return{...W,lastSeenAt:W.lastSeenAt??void 0,lastSeenState:W.lastSeenState??void 0,lastConfigVersion:W.lastConfigVersion??void 0}}upsertEnrolledWorker(D,$){let F=D.baseUrl.replace(/\/+$/,""),X=new Date().toISOString(),J=this.db.select().from(MD).where(v(MD.id,D.workerId)).get();if(!J){let W=R4(D.apiToken,$),Q={id:D.workerId,baseUrl:F,displayName:D.displayName,apiTokenEnc:W.ciphertext,nonce:W.nonce,authTag:W.authTag,addedAt:X,addedBy:D.addedBy??"self-enroll",lastSeenAt:X,lastSeenState:"online",lastConfigVersion:D.configVersion};this.db.insert(MD).values(Q).run();let{apiTokenEnc:U,nonce:_,authTag:A,...C}=Q;return{kind:"created",row:{...C,lastSeenAt:C.lastSeenAt??void 0,lastSeenState:C.lastSeenState??void 0,lastConfigVersion:C.lastConfigVersion??void 0}}}if(J.displayName!==D.displayName){this.db.update(MD).set({displayName:D.displayName,lastSeenAt:X,lastSeenState:"online"}).where(v(MD.id,D.workerId)).run();let{apiTokenEnc:W,nonce:Q,authTag:U,..._}=J;return{kind:"updated",row:{..._,displayName:D.displayName,lastSeenAt:X,lastSeenState:"online",lastConfigVersion:_.lastConfigVersion??void 0}}}this.db.update(MD).set({lastSeenAt:X,lastSeenState:"online"}).where(v(MD.id,D.workerId)).run();let{apiTokenEnc:G,nonce:Y,authTag:B,...H}=J;return{kind:"unchanged",row:{...H,lastSeenAt:X,lastSeenState:"online",lastConfigVersion:H.lastConfigVersion??void 0}}}updateEncryptedToken(D,$){if(!this.db.select({id:MD.id}).from(MD).where(v(MD.id,D.workerId)).get())return!1;let X=R4(D.newToken,$);return this.db.update(MD).set({apiTokenEnc:X.ciphertext,nonce:X.nonce,authTag:X.authTag}).where(v(MD.id,D.workerId)).run(),!0}removeRegisteredWorker(D){if(!this.db.select({id:MD.id}).from(MD).where(v(MD.id,D)).get())return!1;return this.db.delete(MD).where(v(MD.id,D)).run(),!0}countRegisteredWorkers(){return this.db.select({value:F4()}).from(MD).get()?.value??0}recordAudit(D){this.db.insert(o2).values({actor:D.actor,action:D.action,workerId:D.workerId??null,detail:D.detail}).run()}listAuditEvents(D={}){let $=Math.max(1,Math.min(200,D.limit??50)),F=[];if(typeof D.before==="number"&&Number.isFinite(D.before))F.push(n7(o2.id,D.before));if(D.actionPrefix&&D.actionPrefix.length>0){let B=`${Hz(D.actionPrefix)}%`;F.push(M`${o2.action} LIKE ${B} ESCAPE '\\'`)}if(D.workerId&&D.workerId.length>0)F.push(v(o2.workerId,D.workerId));let X=F.length===0?void 0:F.length===1?F[0]:uD(...F),J=this.db.select().from(o2).where(X).orderBy(hD(o2.id)).limit($+1).all(),G=J.length>$;return{events:(G?J.slice(0,$):J).map((B)=>({id:B.id,at:B.at,actor:B.actor,action:B.action,workerId:B.workerId??null,detail:B.detail??null})),hasMore:G}}}eD();aD();import{Buffer as gz}from"buffer";import{createHash as yz}from"crypto";import{resolve as wX,sep as Wz}from"path";async function dQ(D){let{webStaticDir:$}=D,F=wX($),X;try{X=Vz(decodeURIComponent(D.pathnameAfterPrefix))}catch{return new Response("forbidden",{status:403})}let J=X===""?"index.html":X,G=wX(F,J);if(G!==F&&!G.startsWith(F+Wz))return new Response("forbidden",{status:403});let Y=Bun.file(G);if(await Y.exists())return new Response(Y);if(!Qz(J)){let B=Bun.file(wX(F,"index.html"));if(await B.exists())return new Response(B)}return new Response("not found",{status:404})}function Vz(D){let $=0;while($<D.length&&D[$]==="/")$+=1;return D.slice($)}function Qz(D){let $=D.lastIndexOf("/");return($===-1?D:D.slice($+1)).includes(".")}aD();function lQ(D){if(a8(D.host))return;if(D.internalSharedSecret&&D.internalSharedSecret.length>0)return;throw Error(`[gateway] \u62D2\u7EDD\u542F\u52A8\uFF1Ahost="${D.host}" \u975E loopback\uFF0C\u4F46\u672A\u914D\u7F6E INTERNAL_SHARED_SECRET\u3002
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
`+`\u4FEE\u590D\u65B9\u5F0F\u4E8C\u9009\u4E00\uFF1A
|
|
332
|
-
`+` 1. AIWORKER_GATEWAY_HOST=127.0.0.1\uFF08\u9ED8\u8BA4\uFF09+ \u5728\u524D\u7F6E\u53CD\u4EE3\uFF08\u5982 Caddy\uFF09\u4E0A\u53E0 basic-auth\uFF1B
|
|
333
|
-
`+" 2. \u8BBE\u7F6E INTERNAL_SHARED_SECRET\uFF08>= 16 \u5B57\u7B26\uFF1B\u63A8\u8350 `openssl rand -hex 24`\uFF09\uFF0C\u8BA9 gateway \u5F3A\u5236 token \u6821\u9A8C\u3002")}import{Buffer as iQ}from"buffer";import{timingSafeEqual as Uz}from"crypto";function nQ(D,$){let F=iQ.from(D,"utf8"),X=iQ.from($,"utf8");if(F.length!==X.length)return!1;return Uz(F,X)}function sQ(D){let $=D.path??"/ws",F=D.isOtpEnrollSubmit===!0;if($==="/enroll-ws"){if(!F)return{ok:!1,reason:"wrong_path:expected_enroll_otp"};return{ok:!0,via:"enroll-otp"}}if(F)return{ok:!1,reason:"wrong_path:otp_must_use_enroll_ws"};if(D.enrollToken!==void 0){if(!D.gatewayJoinToken)return{ok:!1,reason:"join_token_disabled"};if(!nQ(D.enrollToken,D.gatewayJoinToken))return{ok:!1,reason:"join_token_mismatch"};return{ok:!0,via:"self-enroll"}}if(D.loopback)return{ok:!0,via:"loopback"};if(!D.sharedSecret)return{ok:!1,reason:"remote_requires_secret_but_unset"};if(D.presentedToken.length===0)return{ok:!1,reason:"missing_token"};if(!nQ(D.presentedToken,D.sharedSecret))return{ok:!1,reason:"invalid_token"};return{ok:!0,via:"shared-secret"}}eD();aD();var SX="/w/",rQ="/api/worker",_z=60000;async function eQ(D,$,F){let X=Date.now(),J=Az($.pathname);if(J===void 0)return p3(404,"not-found","Not a worker bridge path");if(!J.ok)return p3(400,"invalid-worker-id",J.message);let G=await Kz(D,J.value);if(!G.ok){if(G.audit)oQ(F,{workerId:J.value.workerId,method:G.audit.method,path:$.pathname,result:"error",status:G.response.status,latencyMs:aQ(X),errorCode:G.audit.errorCode});return G.response}let Y=await Cz({ctx:F,workerId:J.value.workerId,method:G.value.method,params:G.value.params}),B=Rz(Y);return oQ(F,{workerId:J.value.workerId,method:G.value.method,path:$.pathname,result:Y.ok?"success":"error",status:B.status,latencyMs:aQ(X),...Y.ok?{}:{errorCode:Y.error.code}}),B}function DU(D){return D.startsWith(SX)}function Az(D){if(!D.startsWith(SX))return;let $=D.slice(SX.length),F=$.indexOf("/"),X=F===-1?$:$.slice(0,F);if(!d2.test(X))return{ok:!1,message:`workerId must match ${String(d2)}`};let J=F===-1?"/":$.slice(F);return{ok:!0,value:{workerId:X,workerApiPath:J}}}async function Kz(D,$){if($.workerApiPath===`${rQ}/info`){if(D.method!=="GET")return{ok:!1,response:tQ("GET")};return{ok:!0,value:{method:"workers.info",params:{workerId:$.workerId}}}}if($.workerApiPath===`${rQ}/config`){if(D.method==="GET")return{ok:!0,value:{method:"config.get",params:{workerId:$.workerId}}};if(D.method==="PUT"){let F=Oz(D.headers.get("If-Match"));if(!F.ok)return{ok:!1,response:p3(400,"invalid-if-match",F.message),audit:{method:"config.put",errorCode:"invalid-if-match"}};let X=await D.json().catch(()=>{return});if(X===void 0)return{ok:!1,response:p3(400,"invalid-body","Request body must be valid JSON"),audit:{method:"config.put",errorCode:"invalid-body"}};return{ok:!0,value:{method:"config.put",params:{workerId:$.workerId,ifMatch:F.value,config:X}}}}return{ok:!1,response:tQ("GET, PUT")}}return{ok:!1,response:p3(404,"not-found",`Unsupported worker bridge path ${$.workerApiPath}`)}}function Oz(D){if(D===null)return{ok:!1,message:"If-Match header is required"};let $=D.trim();if(!/^\d+$/.test($))return{ok:!1,message:"If-Match must be a non-negative integer"};let F=Number.parseInt($,10);if(!Number.isInteger(F)||F<0)return{ok:!1,message:"If-Match must be a non-negative integer"};return{ok:!0,value:F}}function Cz(D){let $=D.ctx.nodes.get(D.workerId);if(!$)return Promise.resolve({type:"response",id:crypto.randomUUID(),ok:!1,error:{code:"node_offline",message:`worker ${D.workerId} \u5F53\u524D\u672A\u8FDE\u63A5\u5230 gateway`,details:{workerId:D.workerId}}});let F=`http-${crypto.randomUUID()}`;return new Promise((X)=>{let J=!1,G,Y,B=(Q)=>{if(J)return;if(J=!0,Y)clearTimeout(Y);X(Q)},H={send(Q){let U=i2(Q);if(U.ok&&U.frame.type==="response"){B(U.frame);return}B({type:"response",id:F,ok:!1,error:{code:"bad_gateway",message:"gateway bridge received a non-response frame"}})},close(){},data:{}};if(Y=setTimeout(()=>{if(G)D.ctx.forwards.consume(G);B({type:"response",id:F,ok:!1,error:{code:"forward_timeout",message:`\u7B49\u5F85 worker ${D.workerId} \u54CD\u5E94\u8D85\u65F6`,details:{workerId:D.workerId,method:D.method}}})},_z),typeof Y.unref==="function")Y.unref();let W=D.ctx.forwards.allocate({operatorRequestId:F,operatorWs:H,workerId:D.workerId,method:D.method});G=W.gatewayRequestId;try{$.ws.send(ND({type:"request",id:W.gatewayRequestId,method:D.method,params:D.params}))}catch(Q){D.ctx.forwards.consume(W.gatewayRequestId),B({type:"response",id:F,ok:!1,error:{code:"forward_failed",message:`\u8F6C\u53D1\u5230 worker ${D.workerId} \u5931\u8D25: ${Q instanceof Error?Q.message:String(Q)}`,details:{workerId:D.workerId}}})}})}function Rz(D){if(D.ok)return M4(D.result,200);let $=Mz(D.error.code);return M4({error:{code:$,message:D.error.message,...D.error.details===void 0?{}:{details:D.error.details}}},Ez(D.error.code))}function oQ(D,$){D.persistence.recordAudit({actor:"gateway",action:"gateway.method.invoked",workerId:$.workerId,detail:{operator:"http-bridge",workerId:$.workerId,method:$.method,path:$.path,result:$.result,status:$.status,latencyMs:$.latencyMs,...$.errorCode===void 0?{}:{errorCode:$.errorCode}}})}function aQ(D){return Math.max(0,Date.now()-D)}function Ez(D){switch(D){case"invalid_params":case"invalid_config":return 400;case"version_conflict":return 409;case"not_found":return 404;case"node_offline":case"node_gone":case"forward_failed":return 503;case"forward_timeout":return 504;case"method_not_implemented":return 501;default:return 502}}function Mz(D){switch(D){case"invalid_config":return"invalid-config";case"version_conflict":return"version-conflict";default:return D}}function tQ(D){return M4({error:{code:"method-not-allowed",message:"method not allowed"}},405,{Allow:D})}function p3(D,$,F){return M4({error:{code:$,message:F}},D)}function M4(D,$,F={}){return new Response(JSON.stringify(D),{status:$,headers:{"Content-Type":"application/json",...F}})}eD();eD();yD();function $U(D){let $=V.object({workerId:V.string().min(1)}).safeParse(D.params);if(!$.success)return bX(D.operatorWs,D.operatorRequestId,{code:"invalid_params",message:`${D.method} \u7F3A\u5C11 workerId`,details:$.error.flatten()}),!1;let{workerId:F}=$.data,X=D.ctx.nodes.get(F);if(!X)return bX(D.operatorWs,D.operatorRequestId,{code:"node_offline",message:`worker ${F} \u5F53\u524D\u672A\u8FDE\u63A5\u5230 gateway`,details:{workerId:F}}),!1;let J=D.ctx.forwards.allocate({operatorRequestId:D.operatorRequestId,operatorWs:D.operatorWs,workerId:F,method:D.method});try{return X.ws.send(ND({type:"request",id:J.gatewayRequestId,method:D.method,params:D.params})),!0}catch(G){return D.ctx.forwards.consume(J.gatewayRequestId),bX(D.operatorWs,D.operatorRequestId,{code:"forward_failed",message:`\u8F6C\u53D1\u5230 worker ${F} \u5931\u8D25: ${G instanceof Error?G.message:String(G)}`,details:{workerId:F}}),!1}}function bX(D,$,F){let X=ND({type:"response",id:$,ok:!1,error:F});try{D.send(X)}catch{}}eD();yD();var Zz=V.object({limit:V.number().int().positive().max(200).optional(),before:V.number().int().positive().optional(),action:V.string().min(1).optional(),workerId:V.string().min(1).optional()}).default({}),qz=V.object({events:V.array(b7),hasMore:V.boolean()}),FU=(D,$)=>{let F=Zz.safeParse($??{});if(!F.success)return{ok:!1,code:"invalid_params",message:"audit.list \u53C2\u6570\u6821\u9A8C\u5931\u8D25",details:F.error.flatten()};let{events:X,hasMore:J}=D.persistence.listAuditEvents({...F.data.limit===void 0?{}:{limit:F.data.limit},...F.data.before===void 0?{}:{before:F.data.before},...F.data.action===void 0?{}:{actionPrefix:F.data.action},...F.data.workerId===void 0?{}:{workerId:F.data.workerId}}),G=qz.safeParse({events:X,hasMore:J});if(!G.success)return{ok:!1,code:"internal_error",message:`audit.list \u8FD4\u56DE\u503C\u4E0D\u7B26\u5408 schema: ${G.error.message}`};return{ok:!0,result:G.data}};eD();yD();import{createHash as Nz}from"crypto";var XU=V.object({otp:V.string().min(1)}),JU=(D)=>{if(!D.pendingEnrollments)return{ok:!1,code:"feature_disabled",message:"gateway \u672A\u521D\u59CB\u5316 pending enrollment registry"};let $=D.pendingEnrollments.list(),F=V.object({pending:V.array(S7)}).safeParse({pending:$});if(!F.success)return{ok:!1,code:"internal_error",message:`enroll.list \u6784\u9020\u7684 result \u4E0D\u7B26\u5408 schema: ${F.error.message}`};return{ok:!0,result:F.data}},YU=(D,$)=>{if(!D.pendingEnrollments)return{ok:!1,code:"feature_disabled",message:"gateway \u672A\u521D\u59CB\u5316 pending enrollment registry"};let F=XU.safeParse($);if(!F.success)return{ok:!1,code:"invalid_params",message:"enroll.approve \u7F3A\u5C11 otp",details:F.error.flatten()};if(!D.masterKeyHex)return{ok:!1,code:"master_key_missing",message:"gateway \u672A\u914D\u7F6E AIWORKER_MASTER_KEY,\u65E0\u6CD5\u52A0\u5BC6 worker token"};if(D.maxWorkers!==void 0){let Y=Pz(D,F.data.otp);if(!(Y?D.persistence.getRegisteredWorker(Y.workerId)!==void 0:!1)){let H=D.persistence.countRegisteredWorkers();if(H>=D.maxWorkers)return{ok:!1,code:"quota_exceeded",message:`fleet \u5DF2\u8FBE ${D.maxWorkers} worker \u4E0A\u9650`,details:{limit:D.maxWorkers,current:H}}}}let X=D.pendingEnrollments.approve(F.data.otp);if(!X)return{ok:!1,code:"not_found",message:`OTP ${F.data.otp} \u4E0D\u5728\u5F85\u6279\u5217\u8868\u4E2D\uFF08\u6216\u5DF2\u8FC7\u671F / \u5DF2\u5904\u7406\uFF09`};let J=D.persistence.upsertEnrolledWorker({workerId:X.workerId,baseUrl:"",apiToken:X.apiToken,displayName:X.displayName??X.workerId,addedBy:"otp"},D.masterKeyHex);X.ws.data.role="node",X.ws.data.agentId=X.workerId;let{replaced:G}=D.nodes.register({workerId:X.workerId,deviceId:X.ws.data.deviceId??X.workerId,ws:X.ws,pairedAt:Date.now(),meta:{}});if(G){D.forwards.cancelByWorker(X.workerId);try{G.ws.close(1012,"replaced_by_enroll_approve")}catch{}}try{X.ws.send(ND({type:"event",name:e.ENROLLMENT_APPROVED,payload:{workerId:X.workerId,deviceToken:X.apiToken},ts:Date.now()}))}catch{}if(S0(D.operators,{type:"event",name:e.WORKER_ONLINE,payload:{workerId:X.workerId,displayName:J.row.displayName,deviceId:X.ws.data.deviceId??X.workerId,connectedAt:Date.now()},ts:Date.now()}),J.kind!=="unchanged")D.persistence.recordAudit({actor:"gateway",action:"gateway.enrollment.approved",workerId:X.workerId,detail:{displayName:J.row.displayName,deviceId:X.ws.data.deviceId,change:J.kind}});return S0(D.operators,{type:"event",name:e.ENROLLMENT_PENDING,payload:{workerId:X.workerId,...X.displayName===void 0?{}:{displayName:X.displayName},otp:X.otp,submittedAt:X.submittedAt,expiresAt:X.expiresAt,reason:"approved"},ts:Date.now()}),{ok:!0,result:{workerId:X.workerId,deviceToken:X.apiToken}}},GU=(D,$)=>{if(!D.pendingEnrollments)return{ok:!1,code:"feature_disabled",message:"gateway \u672A\u521D\u59CB\u5316 pending enrollment registry"};let F=XU.safeParse($);if(!F.success)return{ok:!1,code:"invalid_params",message:"enroll.reject \u7F3A\u5C11 otp",details:F.error.flatten()};let X=D.pendingEnrollments.reject(F.data.otp);if(!X)return{ok:!0,result:{rejected:!1}};try{X.ws.close(4403,"enroll:rejected")}catch{}return D.persistence.recordAudit({actor:"gateway",action:"gateway.enrollment.rejected",workerId:X.workerId,detail:{displayName:X.displayName,otpHash:Lz(X.otp)}}),S0(D.operators,{type:"event",name:e.ENROLLMENT_PENDING,payload:{workerId:X.workerId,...X.displayName===void 0?{}:{displayName:X.displayName},otp:X.otp,submittedAt:X.submittedAt,expiresAt:X.expiresAt,reason:"rejected"},ts:Date.now()}),{ok:!0,result:{rejected:!0}}};function Pz(D,$){let F=D.pendingEnrollments?.list().find((X)=>X.otp===$);return F?{workerId:F.workerId}:void 0}function Lz(D){return Nz("sha256").update(D).digest("hex").slice(0,16)}eD();yD();var jz=V.object({now:V.number().int(),online:V.array(e8)}),BU=(D)=>{let $=Date.now(),F=D.nodes.list().map((J)=>{let G=D.persistence.getRegisteredWorker(J.workerId);return{workerId:J.workerId,displayName:G?.displayName,online:!0,deviceId:J.deviceId,baseUrl:G?.baseUrl,lastSeenAt:J.pairedAt}}),X=jz.safeParse({now:$,online:F});if(!X.success)return{ok:!1,code:"internal_error",message:`system.presence \u6784\u9020\u7684 result \u4E0D\u7B26\u5408 schema: ${X.error.message}`};return{ok:!0,result:X.data}};eD();yD();import{Buffer as HU}from"buffer";var zz=V.object({workerId:V.string().min(1)}),WU=async(D,$)=>{let F=zz.safeParse($);if(!F.success)return{ok:!1,code:"invalid_params",message:"token.rotate \u7F3A\u5C11 workerId",details:F.error.flatten()};if(!D.masterKeyHex)return{ok:!1,code:"master_key_missing",message:"gateway \u672A\u914D\u7F6E AIWORKER_MASTER_KEY,\u65E0\u6CD5\u52A0\u5BC6 worker token"};let{workerId:X}=F.data;if(!D.persistence.getRegisteredWorker(X))return{ok:!1,code:"not_found",message:`worker ${X} \u4E0D\u5728 fleet \u4E2D`};let G=D.nodes.get(X);if(!G)return{ok:!1,code:"node_offline",message:`worker ${X} \u672A\u8FDE\u63A5\u5230 gateway`};return await new Promise((Y)=>{let B=new VU(Y,D,X),H=D.forwards.allocate({operatorRequestId:`internal:token-rotate:${X}:${Date.now()}`,operatorWs:B,workerId:X,method:"token.rotate"});try{G.ws.send(ND({type:"request",id:H.gatewayRequestId,method:"token.rotate",params:{workerId:X}}))}catch(W){D.forwards.consume(H.gatewayRequestId),Y({ok:!1,code:"forward_failed",message:`token.rotate \u53D1\u5F80 worker \u5931\u8D25: ${W instanceof Error?W.message:String(W)}`})}})};class VU{resolve;ctx;workerId;constructor(D,$,F){this.resolve=D;this.ctx=$;this.workerId=F}send(D){let $=typeof D==="string"?D:D instanceof ArrayBuffer?HU.from(new Uint8Array(D)).toString("utf8"):HU.from(D).toString("utf8"),F;try{F=JSON.parse($)}catch(Y){this.resolve({ok:!1,code:"internal_error",message:`token.rotate: \u65E0\u6CD5\u89E3\u6790 node \u54CD\u5E94: ${Y instanceof Error?Y.message:String(Y)}`});return}if(F.type!=="response"){this.resolve({ok:!1,code:"internal_error",message:"token.rotate: \u975E response frame"});return}if(!F.ok){this.resolve({ok:!1,code:F.error.code,message:F.error.message,details:F.error.details});return}let J=F.result?.deviceToken;if(typeof J!=="string"||J.length===0){this.resolve({ok:!1,code:"invalid_worker_response",message:"token.rotate: node \u8FD4\u56DE\u7684 deviceToken \u7F3A\u5931\u6216\u975E\u5B57\u7B26\u4E32"});return}if(!this.ctx.persistence.updateEncryptedToken({workerId:this.workerId,newToken:J},this.ctx.masterKeyHex)){this.resolve({ok:!1,code:"not_found",message:`worker ${this.workerId} \u5728 token.rotate \u56DE\u8C03\u671F\u95F4\u5DF2\u88AB\u5220\u9664`});return}this.ctx.persistence.recordAudit({actor:"gateway",action:"gateway.token.rotated",workerId:this.workerId,detail:{lastFour:J.slice(-4)}}),this.resolve({ok:!0,result:{deviceToken:J}})}close(){}}eD();aD();yD();aD();class c3 extends Error{constructor(D="worker rejected bearer token"){super(D);this.name="WorkerClientAuthError"}}class J1 extends Error{cause;constructor(D,$){super(D);this.cause=$;this.name="WorkerClientNetworkError"}}class q8 extends Error{constructor(D){super(D);this.name="WorkerClientInvalidResponseError"}}var Iz=1e4;class fX{baseUrl;apiToken;fetchImpl;timeoutMs;constructor(D){this.baseUrl=D.baseUrl.replace(/\/+$/,""),this.apiToken=D.apiToken,this.fetchImpl=D.fetchImpl??globalThis.fetch,this.timeoutMs=D.timeoutMs??Iz}buildUrl(D){let $=D.replace(/^\/+/,"");return`${this.baseUrl}/api/worker/${$}`}async request(D,$,F){let X=new AbortController,J=setTimeout(()=>X.abort(),this.timeoutMs),G={Authorization:`Bearer ${this.apiToken}`},Y={method:D,headers:G,signal:X.signal};if(F!==void 0)Y.body=JSON.stringify(F),G["Content-Type"]="application/json";try{return await this.fetchImpl(this.buildUrl($),Y)}catch(B){if(B.name==="AbortError")throw new J1(`worker ${this.baseUrl} request timed out after ${this.timeoutMs}ms`,B);throw new J1(`worker ${this.baseUrl} unreachable: ${B.message??String(B)}`,B)}finally{clearTimeout(J)}}async info(){let D=await this.request("GET","info");if(D.status===401)throw new c3;if(!D.ok)throw new J1(`worker ${this.baseUrl} returned HTTP ${D.status}`);let $;try{$=await D.json()}catch(F){throw new q8(`worker ${this.baseUrl} /info returned non-JSON body: ${F.message}`)}if(!Tz($))throw new q8(`worker ${this.baseUrl} /info response missing required fields`);return $}async rotateToken(){let D=await this.request("POST","token/rotate");if(D.status===401)throw new c3;if(!D.ok)throw new J1(`worker ${this.baseUrl} returned HTTP ${D.status} from /token/rotate`);let $;try{$=await D.json()}catch(X){throw new q8(`worker ${this.baseUrl} /token/rotate returned non-JSON body: ${X.message}`)}if(!$||typeof $!=="object"||!("newToken"in $))throw new q8(`worker ${this.baseUrl} /token/rotate response missing newToken`);let F=$.newToken;if(!O8(F))throw new q8(`worker ${this.baseUrl} /token/rotate returned a token that does not match wtk_<base64url>`);return{newToken:F}}}function Tz(D){if(!D||typeof D!=="object")return!1;let $=D;return typeof $.workerId==="string"&&$.workerId.length>0&&typeof $.configVersion==="number"&&Number.isFinite($.configVersion)}class U6 extends Error{constructor(D){super(D);this.name="LaunchTimeoutError"}}class a2 extends Error{cause;constructor(D,$){super(D);this.cause=$;this.name="LaunchFailedError"}}function wz(D){if(!D)return null;let $=Date.parse(D);if(!Number.isFinite($))return null;return $}var QU=(D)=>{let F=D.persistence.listRegisteredWorkers().map((J)=>{let G=D.nodes.has(J.id),Y=G?D.nodes.get(J.id):void 0,B=Y?Y.pairedAt:wz(J.lastSeenAt);return{workerId:J.id,displayName:J.displayName,online:G,deviceId:Y?.deviceId,baseUrl:J.baseUrl,lastSeenAt:B}}),X=V.object({workers:V.array(e8)}).safeParse({workers:F});if(!X.success)return{ok:!1,code:"internal_error",message:`workers.list \u6784\u9020\u7684 result \u4E0D\u7B26\u5408 schema: ${X.error.message}`};return{ok:!0,result:X.data}},UU=(D,$)=>{let F=V.object({workerId:V.string().min(1)}).safeParse($);if(!F.success)return{ok:!1,code:"invalid_params",message:"workers.remove \u7F3A\u5C11 workerId",details:F.error.flatten()};let{workerId:X}=F.data,J=D.persistence.getRegisteredWorker(X);if(!J)return{ok:!1,code:"not_found",message:`worker ${X} \u4E0D\u5728 fleet \u4E2D`};let G=D.nodes.get(X),Y=D.persistence.removeRegisteredWorker(X);if(G){D.forwards.cancelByWorker(X),D.nodes.unregisterByWs(G.ws);try{G.ws.close(1000,"removed_from_fleet")}catch(B){D.logger.warn(`[gateway] workers.remove \u5173\u95ED\u5728\u7EBF node \u65F6\u62A5\u9519 (workerId=${X})`,B)}}return D.persistence.recordAudit({actor:"gateway",action:"gateway.worker.removed",workerId:X,detail:{displayName:J.displayName,baseUrl:J.baseUrl}}),{ok:!0,result:{removed:Y}}},Sz=V.object({workerBaseUrl:V.string().min(1),bootstrapToken:V.string().regex(l2,"bootstrapToken must match wtk_<base64url>"),displayName:V.string().min(1).max(80).optional()});function bz(D={}){return async($,F)=>{if(!$.masterKeyHex)return{ok:!1,code:"master_key_missing",message:"gateway \u672A\u914D\u7F6E AIWORKER_MASTER_KEY,\u65E0\u6CD5\u52A0\u5BC6 worker token"};let X=Sz.safeParse(F);if(!X.success)return{ok:!1,code:"invalid_params",message:"workers.pair \u53C2\u6570\u6821\u9A8C\u5931\u8D25",details:X.error.flatten()};let J=X.data;if($.maxWorkers!==void 0){let Q=$.persistence.countRegisteredWorkers();if(Q>=$.maxWorkers)return{ok:!1,code:"quota_exceeded",message:`fleet \u5DF2\u8FBE ${$.maxWorkers} worker \u4E0A\u9650`,details:{limit:$.maxWorkers,current:Q}}}let G=D.buildClient?D.buildClient(J.workerBaseUrl,J.bootstrapToken):new fX({baseUrl:J.workerBaseUrl,apiToken:J.bootstrapToken}),Y;try{Y=await G.info()}catch(Q){if(Q instanceof c3)return{ok:!1,code:"auth_failed",message:"worker \u62D2\u7EDD bootstrap token"};if(Q instanceof J1)return{ok:!1,code:"worker_unreachable",message:Q.message};if(Q instanceof q8)return{ok:!1,code:"invalid_worker_info",message:Q.message};throw Q}if($.persistence.getRegisteredWorker(Y.workerId))return{ok:!1,code:"already_registered",message:`worker ${Y.workerId} \u5DF2\u5728 fleet \u4E2D`,details:{workerId:Y.workerId}};let H=$.persistence.createRegisteredWorker({workerId:Y.workerId,baseUrl:J.workerBaseUrl,apiToken:J.bootstrapToken,displayName:J.displayName??Y.workerId,addedBy:"manual",configVersion:Y.configVersion},$.masterKeyHex),W=F6.safeParse({workerId:H.id,deviceToken:J.bootstrapToken});if(!W.success)return{ok:!1,code:"internal_error",message:`workers.pair \u6784\u9020\u7684 result \u4E0D\u7B26\u5408 schema: ${W.error.message}`};return{ok:!0,result:W.data}}}var _U=bz(),fz=V.object({displayName:V.string().min(1).max(80).optional(),image:V.string().optional(),env:V.record(V.string()).optional(),forceId:V.string().optional()});function kz(D={}){return async($,F)=>{if(!$.supervisor)return{ok:!1,code:"feature_disabled",message:"gateway \u672A\u5F00\u542F launch \u80FD\u529B (AIWORKER_GATEWAY_CAN_LAUNCH=false)"};if(!$.masterKeyHex)return{ok:!1,code:"master_key_missing",message:"gateway \u672A\u914D\u7F6E AIWORKER_MASTER_KEY,\u65E0\u6CD5\u52A0\u5BC6 worker token"};let X=fz.safeParse(F);if(!X.success)return{ok:!1,code:"invalid_params",message:"workers.launch \u53C2\u6570\u6821\u9A8C\u5931\u8D25",details:X.error.flatten()};let J=X.data,G=J.displayName??"worker";if($.maxWorkers!==void 0){let Q=$.persistence.countRegisteredWorkers();if(Q>=$.maxWorkers)return{ok:!1,code:"quota_exceeded",message:`fleet \u5DF2\u8FBE ${$.maxWorkers} worker \u4E0A\u9650`,details:{limit:$.maxWorkers,current:Q}}}let Y;try{Y=await $.supervisor.launchLocal({displayName:G,...J.forceId===void 0?{}:{forceId:J.forceId}})}catch(Q){if(Q instanceof U6)return{ok:!1,code:"launch_timeout",message:Q.message};if(Q instanceof a2)return{ok:!1,code:"launch_failed",message:Q.message};throw Q}if($.persistence.getRegisteredWorker(Y.workerId))return{ok:!1,code:"already_registered",message:`worker ${Y.workerId} \u5DF2\u5728 fleet \u4E2D`,details:{workerId:Y.workerId,containerName:Y.containerName}};let H=$.persistence.createRegisteredWorker({workerId:Y.workerId,baseUrl:Y.baseUrl,apiToken:Y.apiToken,displayName:G,addedBy:"launch-local"},$.masterKeyHex);$.persistence.recordAudit({actor:"gateway",action:"gateway.worker.launched",workerId:H.id,detail:{containerId:Y.containerId,containerName:Y.containerName,baseUrl:Y.baseUrl}});let W=F6.safeParse({workerId:H.id,deviceToken:Y.apiToken});if(!W.success)return{ok:!1,code:"internal_error",message:`workers.launch \u6784\u9020\u7684 result \u4E0D\u7B26\u5408 schema: ${W.error.message}`};return{ok:!0,result:W.data}}}var AU=kz();var vz={"system.presence":BU,"workers.list":QU,"workers.remove":UU,"workers.pair":_U,"workers.launch":AU,"token.rotate":WU,"enroll.list":JU,"enroll.approve":YU,"enroll.reject":GU,"audit.list":FU},hz=new Set(["system.presence","workers.list","audit.list","enroll.list"]);async function KU(D,$,F,X){let J=E3(F.method);if(!J){_6($,{type:"response",id:F.id,ok:!1,error:{code:"unknown_method",message:`\u672A\u6CE8\u518C\u65B9\u6CD5 ${F.method}`,details:{method:F.method}}});return}let G=J.params.safeParse(F.params??void 0);if(!G.success){_6($,{type:"response",id:F.id,ok:!1,error:{code:"invalid_params",message:`${F.method} \u53C2\u6570\u6821\u9A8C\u5931\u8D25`,details:G.error.flatten()}});return}let Y=G.data;if(!hz.has(F.method))D.persistence.recordAudit({actor:"gateway",action:"gateway.method.invoked",workerId:xz(Y),detail:{method:F.method,agentId:X}});if(J.routing==="operator-to-gateway"){let B=vz[F.method];if(!B){_6($,{type:"response",id:F.id,ok:!1,error:{code:"handler_missing",message:`\u65B9\u6CD5 ${F.method} \u6CA1\u6709\u672C\u5730 handler \u7ED1\u5B9A`,details:{method:F.method}}});return}try{let H=await B(D,Y);if(H.ok)_6($,{type:"response",id:F.id,ok:!0,result:H.result});else _6($,{type:"response",id:F.id,ok:!1,error:{code:H.code,message:H.message,details:H.details}})}catch(H){D.logger.error(`[gateway] handler ${F.method} \u629B\u51FA\u5F02\u5E38`,H),_6($,{type:"response",id:F.id,ok:!1,error:{code:"internal_error",message:H instanceof Error?H.message:String(H)}})}return}$U({ctx:D,operatorWs:$,operatorRequestId:F.id,method:F.method,params:Y})}function OU(D,$,F){let X=D.forwards.consume(F.id);if(!X){D.logger.warn(`[gateway] \u6536\u5230 node response \u4F46\u627E\u4E0D\u5230\u5339\u914D\u7684 pending (id=${F.id})`);return}let J=F.ok?{type:"response",id:X.operatorRequestId,ok:!0,result:F.result}:{type:"response",id:X.operatorRequestId,ok:!1,error:F.error};try{X.operatorWs.send(ND(J))}catch{}}function CU(D,$,F){S0(D.operators,F)}function xz(D){if(D&&typeof D==="object"&&"workerId"in D){let $=D.workerId;return typeof $==="string"&&$.length>0?$:null}return null}function _6(D,$){try{D.send(ND($))}catch{}}function RU(D){let{config:$,context:F}=D;lQ({host:$.host,internalSharedSecret:$.internalSharedSecret}),R3({surface:"fleet",host:$.host,serveWeb:F.webStaticDir!==void 0,externalAuthAcknowledged:$.adminExternalAuthAcknowledged}),uz({host:$.host,externalAuthAcknowledged:$.adminExternalAuthAcknowledged});let X=Bun.serve({port:$.port,hostname:$.host,fetch(G,Y){let B=new URL(G.url);if(B.pathname==="/health"&&G.method==="GET")return new Response(JSON.stringify({ok:!0,service:"aiworker-gateway",ts:Date.now()}),{status:200,headers:{"Content-Type":"application/json"}});if(B.pathname==="/health")return new Response("method not allowed",{status:405,headers:{Allow:"GET"}});if(B.pathname==="/admin"){let H=new URL("/admin/",B);return Response.redirect(H.toString(),308)}if(B.pathname.startsWith("/admin/")){if(!F.webStaticDir)return new Response("not found",{status:404});return dQ({webStaticDir:F.webStaticDir,pathnameAfterPrefix:B.pathname.slice(7)})}if(DU(B.pathname))return eQ(G,B,F);if(B.pathname==="/ws"||B.pathname==="/enroll-ws"){let W=Y.requestIP(G)?.address,Q=a8(W);if(!Q&&F.connectRateLimiter){let A=F.connectRateLimiter.isBlocked(W);if(A.blocked)return new Response("rate_limited",{status:429,headers:{"Retry-After":String(Math.ceil(A.retryAfterMs/1000))}})}let U=B.pathname==="/enroll-ws"?"/enroll-ws":"/ws";if(Y.upgrade(G,{data:{role:void 0,agentId:void 0,deviceId:void 0,loopback:Q,remoteAddress:W,connectedAt:Date.now(),subscribedAll:!0,path:U}}))return;return new Response("upgrade failed",{status:400})}return new Response("not found",{status:404})},websocket:{maxPayloadLength:1048576,idleTimeout:120,open(G){F.logger.debug(`[gateway] ws opened (remote=${G.data.remoteAddress??"?"} loopback=${G.data.loopback})`)},message(G,Y){mz(G,Y,F,$)},close(G,Y,B){pz(G,Y,B,F)}}}),J=X.port;if(typeof J!=="number")throw TypeError("Bun.serve did not return a TCP port \u2014 unix socket is not supported");return{server:X,port:J,context:F,stop:async()=>{F.forwards.dispose(),F.pendingEnrollments?.dispose(),await X.stop(!0)}}}function uz(D){if(a8(D.host))return;if(D.externalAuthAcknowledged)return;throw Error(`[fleet] refusing to serve /w/* on non-loopback host="${D.host}" without external-auth acknowledgement.
|
|
17
|
+
try_exec_bun() {
|
|
18
|
+
bun_bin=$1
|
|
19
|
+
shift
|
|
20
|
+
if [ -n "$bun_bin" ] && [ -x "$bun_bin" ]; then
|
|
21
|
+
exec "$bun_bin" "$AIWORKER_BUN_BUNDLE" "$@"
|
|
22
|
+
fi
|
|
23
|
+
}
|
|
334
24
|
|
|
335
|
-
|
|
25
|
+
AIWORKER_SHIM_DIR=$(resolve_script_dir "$0")
|
|
26
|
+
AIWORKER_BUN_BUNDLE="$AIWORKER_SHIM_DIR/aiworker-bun.js"
|
|
336
27
|
|
|
337
|
-
|
|
338
|
-
1. Bind the gateway to 127.0.0.1 and put Caddy/Cloudflare Access/IP allowlist/basic-auth in front;
|
|
339
|
-
2. Confirm an external auth layer protects /w/*, /admin/*, and /ws, then set AIWORKER_ADMIN_EXTERNAL_AUTH=1.`)}function mz(D,$,F,X){let J=typeof $==="string"?$:gz.from($).toString("utf8"),G=i2(J);if(!G.ok){F.logger.warn(`[gateway] \u65E0\u6CD5\u89E3\u6790\u5E27: ${G.error}`),D.close(4400,"bad_frame");return}let Y=G.frame;if(D.data.role===void 0){if(Y.type!=="connect"){F.logger.warn(`[gateway] \u63E1\u624B\u524D\u6536\u5230\u975E connect \u5E27: ${Y.type}`),D.close(4400,"connect_required");return}let B=Y.role==="node"&&Y.enroll?Y.enroll.mode??"join-token":void 0,H=B==="otp",W=Y.role==="node"&&Y.enroll!==void 0&&B==="join-token",Q=sQ({loopback:D.data.loopback,sharedSecret:X.internalSharedSecret,presentedToken:Y.auth.token,enrollToken:W?Y.enroll.joinToken:void 0,gatewayJoinToken:X.joinToken,path:D.data.path,isOtpEnrollSubmit:H});if(!Q.ok){let U=Q.reason.startsWith("wrong_path:");if(F.persistence.recordAudit({actor:"gateway",action:"gateway.connect.rejected",workerId:Y.role==="node"?Y.agentId:null,detail:{reason:Q.reason,role:Y.role,agentId:Y.agentId,remoteAddress:D.data.remoteAddress,path:D.data.path}}),!U&&!D.data.loopback&&F.connectRateLimiter){let C=F.connectRateLimiter.recordFailure(D.data.remoteAddress);if(C.blockedNow)F.persistence.recordAudit({actor:"gateway",action:"gateway.connect.brute_force_blocked",workerId:null,detail:{remoteAddress:D.data.remoteAddress,fails:C.fails,blockUntil:C.blockUntil,path:D.data.path,triggerReason:Q.reason}})}let _=U?4400:4401,A=U?Q.reason:`auth:${Q.reason}`;D.close(_,A);return}if(Q.via==="enroll-otp"){if(!F.pendingEnrollments){F.logger.error("[gateway] /enroll-ws \u6536\u5230 OTP submit \u4F46 ctx.pendingEnrollments \u672A\u6CE8\u5165"),D.close(4500,"enroll_unavailable");return}let U=Y.enroll,_=F.pendingEnrollments.submit({workerId:Y.agentId,apiToken:U.apiToken,displayName:U.displayName,ws:D});try{D.send(ND({type:"event",name:e.ENROLLMENT_OTP,payload:{workerId:Y.agentId,otp:_.otp,expiresAt:_.expiresAt},ts:Date.now()}))}catch(A){F.pendingEnrollments.removeByWs(D),F.logger.warn(`[gateway] \u63A8\u9001 enrollment.otp \u5931\u8D25: ${A.message}`),D.close(4500,"enroll_otp_send_failed");return}D.data.role="node-pending",D.data.agentId=Y.agentId,D.data.deviceId=Y.deviceId,F.persistence.recordAudit({actor:"gateway",action:"gateway.enrollment.requested",workerId:Y.agentId,detail:{workerId:Y.agentId,displayName:U.displayName,deviceId:Y.deviceId,otpHash:dz(_.otp),expiresAt:_.expiresAt,path:D.data.path}}),S0(F.operators,{type:"event",name:e.ENROLLMENT_PENDING,payload:{workerId:Y.agentId,...U.displayName===void 0?{}:{displayName:U.displayName},otp:_.otp,submittedAt:Date.now(),expiresAt:_.expiresAt,reason:"submitted"},ts:Date.now()});return}if(W){if(F.maxWorkers!==void 0){let A=F.persistence.countRegisteredWorkers();if(F.persistence.getRegisteredWorker(Y.agentId)===void 0&&A>=F.maxWorkers){F.persistence.recordAudit({actor:"gateway",action:"gateway.connect.rejected",workerId:Y.agentId,detail:{reason:"quota_exceeded",role:Y.role,agentId:Y.agentId,limit:F.maxWorkers,current:A}}),D.close(4401,"auth:quota_exceeded");return}}if(!F.masterKeyHex){F.persistence.recordAudit({actor:"gateway",action:"gateway.connect.rejected",workerId:Y.agentId,detail:{reason:"master_key_missing",role:Y.role,agentId:Y.agentId}}),D.close(4401,"auth:master_key_missing");return}let U=Y.enroll,_=F.persistence.upsertEnrolledWorker({workerId:Y.agentId,baseUrl:"",apiToken:U.apiToken,displayName:U.displayName??Y.agentId,addedBy:"self-enroll"},F.masterKeyHex);if(_.kind!=="unchanged")F.persistence.recordAudit({actor:"gateway",action:"gateway.worker.enrolled",workerId:Y.agentId,detail:{workerId:Y.agentId,displayName:_.row.displayName,deviceId:Y.deviceId,change:_.kind}})}if(D.data.role=Y.role,D.data.agentId=Y.agentId,D.data.deviceId=Y.deviceId,Y.role==="operator")F.operators.register({agentId:Y.agentId,deviceId:Y.deviceId,ws:D,connectedAt:Date.now()});else{let{replaced:U}=F.nodes.register({workerId:Y.agentId,deviceId:Y.deviceId,ws:D,pairedAt:Date.now(),meta:Y.meta??{}});if(U){F.forwards.cancelByWorker(Y.agentId);try{U.ws.close(1012,"replaced_by_new_node_connection")}catch{}}let _=F.persistence.getRegisteredWorker(Y.agentId)?.displayName;S0(F.operators,{type:"event",name:e.WORKER_ONLINE,payload:{workerId:Y.agentId,displayName:_,deviceId:Y.deviceId,connectedAt:Date.now()},ts:Date.now()})}if(F.persistence.recordAudit({actor:"gateway",action:"gateway.connect.accepted",workerId:Y.role==="node"?Y.agentId:null,detail:{role:Y.role,agentId:Y.agentId,deviceId:Y.deviceId,loopback:D.data.loopback,via:Q.via}}),!D.data.loopback&&F.connectRateLimiter)F.connectRateLimiter.recordSuccess(D.data.remoteAddress);return}if(D.data.role==="node-pending"){F.logger.warn(`[gateway] node-pending \u7AEF\u5728 approve \u524D\u53D1\u9001\u4E86 ${Y.type} \u5E27\uFF0C\u5FFD\u7565`);return}if(D.data.role==="operator"){if(Y.type==="request"){let B=D.data.agentId??"unknown";KU(F,D,Y,B);return}F.logger.warn(`[gateway] operator \u7AEF\u53D1\u9001\u4E86\u975E request \u5E27: ${Y.type}`),D.close(4400,"operator_expects_request_only");return}if(D.data.role==="node"){if(Y.type==="response"){OU(F,D,Y);return}if(Y.type==="event"){CU(F,D,Y);return}F.logger.warn(`[gateway] node \u7AEF\u53D1\u9001\u4E86\u975E response/event \u5E27: ${Y.type}`),D.close(4400,"node_expects_response_or_event_only")}}function pz(D,$,F,X){if(D.data.role==="node-pending"){let J=X.pendingEnrollments?.removeByWs(D);if(J)X.persistence.recordAudit({actor:"gateway",action:"gateway.enrollment.abandoned",workerId:J.workerId,detail:{workerId:J.workerId,displayName:J.displayName,code:$,reason:F}}),S0(X.operators,{type:"event",name:e.ENROLLMENT_PENDING,payload:{workerId:J.workerId,...J.displayName===void 0?{}:{displayName:J.displayName},otp:J.otp,submittedAt:J.submittedAt,expiresAt:J.expiresAt,reason:"abandoned"},ts:Date.now()});X.logger.debug(`[gateway] node-pending ws closed (code=${$} reason=${F})`);return}if(D.data.role==="operator")X.operators.unregister(D),X.forwards.cancelByOperator(D);else if(D.data.role==="node"){let J=X.nodes.unregisterByWs(D);if(J)X.forwards.cancelByWorker(J.workerId),S0(X.operators,{type:"event",name:e.WORKER_OFFLINE,payload:{workerId:J.workerId,deviceId:J.deviceId,reason:cz($),disconnectedAt:Date.now()},ts:Date.now()}),X.persistence.recordAudit({actor:"gateway",action:"gateway.node.disconnected",workerId:J.workerId,detail:{code:$,reason:F}})}X.logger.debug(`[gateway] ws closed (code=${$} reason=${F})`)}function cz(D){if(D===1000||D===1012||D===1001||D===1005||D===1006)return"disconnected";if(D>=4000&&D<5000)return"kicked";return"expired"}function dz(D){return yz("sha256").update(D).digest("hex").slice(0,8)}JD();import{randomBytes as EU}from"crypto";import{mkdirSync as iz}from"fs";import{createServer as nz}from"net";import{join as MU}from"path";import sz from"process";JD();class kX{socket;constructor(D="/var/run/docker.sock"){this.socket=D}async request(D,$,F){let X=`http://localhost${$}`,J={method:D,unix:this.socket,headers:F!==void 0?{"Content-Type":"application/json"}:{}};if(F!==void 0)J.body=JSON.stringify(F);let G=await fetch(X,J),Y=await G.text();if(!G.ok)throw Error(`Docker API ${D} ${$} failed: ${G.status} ${Y}`);if(!Y)return;try{return JSON.parse(Y)}catch{return Y}}ping(){return this.request("GET","/_ping")}createContainer(D,$){return this.request("POST",`/containers/create?name=${encodeURIComponent(D)}`,$)}startContainer(D){return this.request("POST",`/containers/${D}/start`)}async stopContainer(D,$=10){try{await this.request("POST",`/containers/${D}/stop?t=${$}`)}catch(F){if(F instanceof Error&&/304/.test(F.message))return;throw F}}removeContainer(D,$){let F=new URLSearchParams;if($?.force)F.set("force","true");if($?.removeVolumes)F.set("v","true");let X=F.toString();return this.request("DELETE",`/containers/${D}${X?`?${X}`:""}`)}inspectContainer(D){return this.request("GET",`/containers/${D}/json`)}listContainers(D){let $=new URLSearchParams({all:"true"});if(D)$.set("filters",JSON.stringify(D));return this.request("GET",`/containers/json?${$.toString()}`)}async logs(D,$){let F=new URLSearchParams({stdout:String($?.stdout??!0),stderr:String($?.stderr??!0),tail:String($?.tail??200)}),X=`http://localhost/containers/${D}/logs?${F.toString()}`,J=await fetch(X,{method:"GET",unix:this.socket});if(!J.ok){let Y=await J.text();throw Error(`Docker logs ${D} failed: ${J.status} ${Y}`)}let G=new Uint8Array(await J.arrayBuffer());return lz(G)}async ensureNetwork(D){try{await this.request("GET",`/networks/${encodeURIComponent(D)}`)}catch{E.info(`[gateway/supervisor] creating docker network ${D}`),await this.request("POST","/networks/create",{Name:D,Driver:"bridge"})}}}function lz(D){let $=new TextDecoder,F="",X=0;while(X<D.length){if(X+8>D.length)break;let J=D[X+4]<<24|D[X+5]<<16|D[X+6]<<8|D[X+7];X+=8,F+=$.decode(D.slice(X,X+J)),X+=J}return F}var rz=/\[worker\] AIWORKER_BOOTSTRAP_TOKEN=(wtk_[\w-]{32,})/,oz=30000,az=500;class vX{config;docker;allocatePort;pollIntervalMs;pollTimeoutMs;now;sleep;selfHostname;constructor(D){this.config=D.config,this.docker=D.docker??new kX(D.config.dockerHost),this.allocatePort=D.allocatePort??$I,this.pollIntervalMs=D.pollIntervalMs??az,this.pollTimeoutMs=D.pollTimeoutMs??oz,this.now=D.now??Date.now,this.sleep=D.sleep??(($)=>new Promise((F)=>setTimeout(F,$))),this.selfHostname=D.selfHostname===void 0?sz.env.HOSTNAME??null:D.selfHostname}async ensureInfrastructure(){await this.docker.ping(),await this.docker.ensureNetwork(this.config.network),await this.ensureSelfJoinedNetwork(this.config.network)}async ensureSelfJoinedNetwork(D){let $=this.selfHostname;if(!$||!/^[0-9a-f]{12,64}$/i.test($)){E.warn(`[gateway/supervisor] HOSTNAME=${$??"(unset)"} is not a docker container id; skipping self-in-network check`);return}let F;try{F=await this.docker.inspectContainer($)}catch(J){E.warn(`[gateway/supervisor] could not inspect self-container ${$}: ${J.message}; skipping self-in-network check`);return}let X=F.NetworkSettings?.Networks;if(!X||typeof X!=="object"){E.warn(`[gateway/supervisor] inspect of ${$} returned no NetworkSettings.Networks; skipping self-in-network check`);return}if(!(D in X))throw new a2(`gateway container ${$} is not a member of docker network '${D}'. Attach it via docker compose (networks: [${D}]) or \`docker network connect\` before enabling launch; otherwise launched workers will be unreachable at the rendered baseUrl.`)}buildEnv(D){let $=["AIWORKER_MODE=worker",`AIWORKER_MASTER_KEY=${D.masterKeyHex}`,`PORT=${D.port}`,`WORKER_DB_PATH=${MU("/var/lib/aiworker","worker.db")}`,`NODE_ENV=${this.config.nodeEnv}`,`INTERNAL_SHARED_SECRET=${this.config.internalSharedSecret}`,"WORKER_MIGRATIONS_FOLDER=./drizzle/worker"];if(D.forceId)$.push(`AIWORKER_FORCE_ID=${D.forceId}`);return $}async launchLocal(D){try{await this.ensureInfrastructure()}catch(W){throw new a2(`docker infrastructure unavailable: ${W.message}`,W)}let $=await this.allocatePort(),F=EU(32).toString("hex"),J=`aiworker-${EU(4).toString("hex")}`,G=MU(this.config.workerDataRoot,J);try{iz(G,{recursive:!0})}catch(W){throw new a2(`failed to create data dir ${G}: ${W.message}`,W)}let Y=this.buildEnv({masterKeyHex:F,port:$,forceId:D.forceId}),B={Image:this.config.image,Env:Y,Labels:{"aiworker.role":"worker","aiworker.addedBy":"launch-local","aiworker.displayName":D.displayName},HostConfig:{RestartPolicy:{Name:"unless-stopped"},NetworkMode:this.config.network,Memory:DI(this.config.workerMemoryLimit),NanoCpus:Math.round(this.config.workerCpuLimit*1e9),Binds:[`${G}:/var/lib/aiworker`]},NetworkingConfig:{EndpointsConfig:{[this.config.network]:{Aliases:[J]}}}},H=null;try{let W=await this.docker.createContainer(J,B);H=W.Id,await this.docker.startContainer(W.Id),E.info(`[gateway/supervisor] spawned ${J} (container ${W.Id.slice(0,12)}); polling for bootstrap token`);let Q=await this.awaitBootstrapToken(W.Id),U=ez(this.config.launchBaseUrlTemplate,{containerName:J,port:String($)});return E.success(`[gateway/supervisor] ${J} bootstrapped as ${Q.workerId}`),{workerId:Q.workerId,apiToken:Q.token,baseUrl:U,containerId:W.Id,containerName:J}}catch(W){if(H)try{await this.docker.removeContainer(H,{force:!0,removeVolumes:!1})}catch(Q){E.warn(`[gateway/supervisor] failed to cleanup ${H}: ${Q.message}`)}if(W instanceof U6||W instanceof a2)throw W;throw new a2(`launch failed: ${W.message}`,W)}}async awaitBootstrapToken(D){let $=this.now()+this.pollTimeoutMs;while(this.now()<$){let F;try{F=await this.docker.logs(D,{tail:200})}catch(J){E.debug(`[gateway/supervisor] logs read failed, retrying: ${J.message}`),await this.sleep(this.pollIntervalMs);continue}let X=tz(F);if(X)return X;await this.sleep(this.pollIntervalMs)}throw new U6(`bootstrap token not observed in container ${D.slice(0,12)} after ${this.pollTimeoutMs}ms`)}async shutdown(){}}function tz(D){let $=rz.exec(D);if(!$)return null;let F=/\[worker\] id=(w_[0-9a-hjkmnp-tv-z]{12})/.exec(D);if(!F)return null;return{workerId:F[1],token:$[1]}}function ez(D,$){return D.replace(/\{(\w+)\}/g,(F,X)=>$[X]??`{${X}}`)}function DI(D){let $=/^(\d+)([bkmg])?$/i.exec(D.trim());if(!$)throw Error(`Invalid memory limit: ${D}`);let F=Number($[1]),X=($[2]??"b").toLowerCase();return F*({b:1,k:1024,m:1048576,g:1073741824}[X]??1)}function $I(){return new Promise((D,$)=>{let F=nz();F.unref(),F.on("error",$),F.listen(0,()=>{let X=F.address();if(X&&typeof X==="object"){let J=X.port;F.close(()=>D(J))}else F.close(()=>$(Error("failed to allocate free port")))})})}function XI(D,$={}){xQ(D.fleetDbPath),gQ(jX);let F=zX(),X=new E4(F),J=new K4,G=new O4,Y=new A4({onExpire:(Q,U)=>{if(E.warn(`[gateway] forward \u53D6\u6D88 (method=${Q.method} workerId=${Q.workerId} reason=${U})`),U==="operator_gone")return;let _=U==="timeout"?"forward_timeout":"node_gone",A=U==="timeout"?`\u7B49\u5F85 worker ${Q.workerId} \u54CD\u5E94\u8D85\u65F6`:`worker ${Q.workerId} \u5728\u7B49\u5F85\u54CD\u5E94\u671F\u95F4\u4E0B\u7EBF`;try{Q.operatorWs.send(ND({type:"response",id:Q.operatorRequestId,ok:!1,error:{code:_,message:A,details:{workerId:Q.workerId,method:Q.method}}}))}catch{}}}),B=new C4({ttlMs:D.enrollOtpTtlSec*1000,onExpire:(Q)=>{try{Q.ws.close(4408,"enroll:expired")}catch{}try{X.recordAudit({actor:"gateway",action:"gateway.enrollment.expired",workerId:Q.workerId,detail:{displayName:Q.displayName,otpHash:FI("sha256").update(Q.otp).digest("hex").slice(0,16)}})}catch(U){E.warn("[gateway] \u5199 enrollment.expired audit \u5931\u8D25",U)}try{S0(G,{type:"event",name:e.ENROLLMENT_PENDING,payload:{workerId:Q.workerId,...Q.displayName===void 0?{}:{displayName:Q.displayName},otp:Q.otp,submittedAt:Q.submittedAt,expiresAt:Q.expiresAt,reason:"expired"},ts:Date.now()})}catch(U){E.warn("[gateway] \u5E7F\u64AD enrollment.pending(expired) \u5931\u8D25",U)}}}),H=null;if(D.canLaunch)H=new vX({config:{dockerHost:D.supervisor.dockerHost,image:D.supervisor.image,network:D.supervisor.network,workerDataRoot:D.supervisor.workerDataRoot,workerMemoryLimit:D.supervisor.workerMemoryLimit,workerCpuLimit:D.supervisor.workerCpuLimit,launchBaseUrlTemplate:D.supervisor.launchBaseUrlTemplate,internalSharedSecret:D.internalSharedSecret,nodeEnv:D.nodeEnv}}),E.info("[gateway] AIWORKER_GATEWAY_CAN_LAUNCH=true \u2014 workers.launch \u5DF2\u5F00\u542F");let W=new _4;return{persistence:X,nodes:J,operators:G,forwards:Y,logger:E.withTag("gateway"),masterKeyHex:D.masterKeyHex,supervisor:H,maxWorkers:D.maxWorkers,pendingEnrollments:B,connectRateLimiter:W,webStaticDir:$.webStaticDir}}async function ZU(D,$={}){let X={...uQ(),...D},J=XI(X,{webStaticDir:$.webStaticDir}),G=RU({config:X,context:J});return E.success(`[gateway] listening ws://${X.host}:${G.port}/ws (auth=${X.internalSharedSecret?"shared-secret+loopback":"loopback-only"})`),{...G,config:X}}JD();import{existsSync as hX,realpathSync as JI}from"fs";import{dirname as YI,resolve as Y1}from"path";import qU from"process";import{fileURLToPath as GI}from"url";function Z4(D){let $=D==="fleet"?"AIWORKER_WEB_STATIC_DIR_FLEET":"AIWORKER_WEB_STATIC_DIR_WORKER",F=qU.env[$];if(F){let W=HI(F);if(W&&hX(Y1(W,"index.html")))return W}let X=BI();if(!X)return;let J=Y1(X,"web",D);if(hX(Y1(J,"index.html")))return J;let Y=X.endsWith(`apps${xX()}cli${xX()}src${xX()}lib`)||X.endsWith("apps/cli/src/lib")?4:3,B=Y1(X,...Array.from({length:Y},()=>"..")),H=Y1(B,"apps","web","dist",D);if(hX(Y1(H,"index.html")))return H;return}function BI(){if(typeof import.meta.url!=="string")return;try{return YI(GI(import.meta.url))}catch{return}}function HI(D){try{return JI(Y1(D))}catch{return}}function xX(){return qU.platform==="win32"?"\\":"/"}V2();D1();import{spawn as WI}from"child_process";import{closeSync as NU,existsSync as VI,openSync as PU,readFileSync as QI,unlinkSync as q4,writeFileSync as UI}from"fs";import{mkdir as _I}from"fs/promises";import N8 from"process";var AI="AIWORKER_GATEWAY_INTERNAL_FOREGROUND";function LU(D){if(!Number.isFinite(D)||D<=0)return!1;try{return N8.kill(D,0),!0}catch($){if($.code==="EPERM")return!0;return!1}}function KI(D){if(!VI(D))return null;try{let $=QI(D,"utf8").trim();if($.length===0)return null;let F=Number.parseInt($,10);if(!Number.isFinite(F)||F<=0)return null;return F}catch{return null}}async function OI(){await _I(H2(),{recursive:!0})}function N4(){let D=g7(),$=y7(),F=KI(D);if(F===null)return{running:!1,pidFile:D,logFile:$};if(!LU(F)){try{q4(D)}catch{}return{running:!1,pidFile:D,logFile:$}}return{running:!0,pid:F,pidFile:D,logFile:$}}async function jU(D={}){let $=N4();if($.running)throw Error(`gateway daemon \u5DF2\u5728\u8FD0\u884C (pid=${$.pid})\uFF0C\u5148\u6267\u884C 'aiworker gateway stop' \u518D\u91CD\u8BD5\u3002`);await OI();let F=D.port??Number.parseInt(N8.env.PORT??"9218",10);if(!Number.isFinite(F)||F<=0||F>65535)throw Error(`\u975E\u6CD5\u7AEF\u53E3: ${F}`);let X=g7(),J=y7(),G=PU(J,"a"),Y=PU(J,"a"),B={...N8.env,...D.env,PORT:String(F),[AI]:"1"},H=N8.argv[1];if(!H||H.length===0)throw Error("detach \u6A21\u5F0F\u65E0\u6CD5\u5B9A\u4F4D cli \u81EA\u8EAB\u811A\u672C\u8DEF\u5F84\uFF08process.argv[1] \u4E3A\u7A7A\uFF09");let W=WI(N8.execPath,[H,"gateway","start","--port",String(F)],{env:B,cwd:N8.cwd(),detached:!0,stdio:["ignore",G,Y]});try{NU(G)}catch{}if(Y!==G)try{NU(Y)}catch{}if(W.pid===void 0)throw Error("gateway \u5B50\u8FDB\u7A0B\u542F\u52A8\u5931\u8D25\uFF1A\u672A\u83B7\u5F97 PID");return W.unref(),UI(X,`${String(W.pid)}
|
|
340
|
-
`,"utf8"),{pid:W.pid,port:F,logFile:J,pidFile:X}}async function zU(D={}){let $=N4();if(!$.running||$.pid===void 0)return null;let F=$.pid,X=D.timeoutMs??5000,J=100;try{N8.kill(F,"SIGTERM")}catch(Y){if(Y.code==="ESRCH"){try{q4($.pidFile)}catch{}return null}throw Y}let G=Date.now()+X;while(Date.now()<G){if(!LU(F)){try{q4($.pidFile)}catch{}return F}await new Promise((Y)=>setTimeout(Y,J))}try{N8.kill(F,"SIGKILL")}catch{}try{q4($.pidFile)}catch{}return F}D1();async function IU(D={}){if(D.detach===!0)return CI(D);return RI(D)}async function CI(D){try{let $=await jU({...D.port===void 0?{}:{port:D.port},...D.serveWeb===!1?{env:{AIWORKER_GATEWAY_NO_SERVE_WEB:"1"}}:{}});if(D.persistUrl!==!1)await Z3({gatewayUrl:x7($.port)});return E.success(`gateway daemon \u5DF2\u542F\u52A8 pid=${$.pid} port=${$.port}`),E.info(`pidFile: ${$.pidFile}`),E.info(`logFile: ${$.logFile}`),0}catch($){return E.error(`gateway start --detach \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),1}}async function RI(D){try{let $=P4.env.AIWORKER_GATEWAY_NO_SERVE_WEB==="1",F=D.serveWeb!==!1&&!$,X=F?Z4("fleet"):void 0;if(F&&!X)E.warn("[gateway] web \u9759\u6001\u8D44\u6E90\u672A\u627E\u5230\uFF08apps/web/dist/fleet \u7F3A\u5931\uFF1F\uFF09\uFF0C/admin/* \u5C06\u8FD4\u56DE 404");let J=await ZU(D.port===void 0?{}:{port:D.port},{...X?{webStaticDir:X}:{}});if(X)E.info(`[gateway] /admin/* serving fleet bundle from ${X}`);if(D.persistUrl!==!1)try{await Z3({gatewayUrl:x7(J.port)})}catch(B){E.warn(`\u65E0\u6CD5\u6301\u4E45\u5316 gatewayUrl \u5230 aim.json: ${B instanceof Error?B.message:String(B)}`)}E.success(`gateway \u5DF2\u542F\u52A8 (foreground) port=${J.port}`);let G=!1,Y=async(B)=>{if(G)return;G=!0,E.info(`[gateway] received ${B}, shutting down`);try{await J.stop(),IX()}catch(H){E.error("[gateway] shutdown failed",H)}P4.exit(0)};return P4.once("SIGTERM",()=>void Y("SIGTERM")),P4.once("SIGINT",()=>void Y("SIGINT")),await new Promise(()=>{}),0}catch($){return E.error(`gateway start \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),1}}function TU(){let D=N4();if(D.running)return E.success(`gateway detached daemon \u8FD0\u884C\u4E2D pid=${D.pid}`),E.info(`pidFile: ${D.pidFile}`),E.info(`logFile: ${D.logFile}`),0;return E.info("gateway detached daemon \u672A\u8FD0\u884C\uFF1Bforeground/systemd \u5B9E\u4F8B\u4E0D\u7531\u6B64\u547D\u4EE4\u8DDF\u8E2A"),1}async function wU(D={}){try{let $=await zU(D.timeoutMs===void 0?{}:{timeoutMs:D.timeoutMs});if($===null)return E.info("gateway detached daemon \u5F53\u524D\u672A\u8FD0\u884C\uFF1Bforeground/systemd \u5B9E\u4F8B\u8BF7\u7531\u5176 supervisor \u505C\u6B62"),0;return E.success(`gateway detached daemon \u5DF2\u505C\u6B62 pid=${$}`),0}catch($){return E.error(`gateway stop \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),1}}JD();import{spawnSync as SU}from"child_process";import{existsSync as vU,mkdirSync as EI,readFileSync as MI,writeFileSync as ZI}from"fs";import{homedir as qI}from"os";import t2 from"path";import d3 from"process";var P8="aiworker-gateway.service",bU="/var/lib/aiworker",l3="/etc/aiworker/gateway.env",NI="%h/.config/aiworker/gateway.env",fU="%S/aiworker",kU="https://github.com/ZonEaseTech/aiworker/blob/main/docs/deployment.md",L4=["gateway","start"];function PI(D){let $=xU(D.execStart??hU());if(D.scope==="user")return["[Unit]","Description=AIWorker gateway daemon (user instance)",`Documentation=${kU}`,"After=network-online.target","Wants=network-online.target","","[Service]","Type=simple",`Environment=AIWORKER_HOME=${fU}`,`EnvironmentFile=-${NI}`,`ExecStart=${$}`,"Restart=on-failure","RestartSec=5","StateDirectory=aiworker","StateDirectoryMode=0700","PrivateTmp=true","ProtectSystem=strict",`ReadWritePaths=${fU}`,"NoNewPrivileges=true","","[Install]","WantedBy=default.target",""].join(`
|
|
341
|
-
`);return["[Unit]","Description=AIWorker gateway daemon (PLAN-016 systemd path)",`Documentation=${kU}`,"After=network-online.target","Wants=network-online.target","","[Service]","Type=simple",`Environment=AIWORKER_HOME=${bU}`,`EnvironmentFile=-${l3}`,`ExecStart=${$}`,"Restart=on-failure","RestartSec=5","User=root","Group=root","StateDirectory=aiworker","StateDirectoryMode=0700","PrivateTmp=true","ProtectSystem=strict",`ReadWritePaths=${bU}`,"NoNewPrivileges=true","","[Install]","WantedBy=multi-user.target",""].join(`
|
|
342
|
-
`)}function hU(D={}){let $=D.env??d3.env,F=D.execPath??d3.execPath,X=D.argv??d3.argv,J=D.cwd??d3.cwd(),G=D.pathExists??vU,Y=jI(X[1],J,G);if(zI(F)&&Y!==void 0)return j4(F,[Y,...L4]);if(II(F))return j4(F,[...L4]);let B=TI("aiworker",$.PATH,G);if(B!==void 0)return j4(B,[...L4]);if(Y!==void 0)return j4(Y,[...L4]);throw Error("install systemd: unable to locate the current aiworker executable; re-run via the installed aiworker command or pass --exec-start")}function j4(D,$){return[D,...$].map(LI).join(" ")}function xU(D){let $=D.trim();if($.length===0)throw Error("install systemd: ExecStart must not be empty");if(/[\r\n]/.test($))throw Error("install systemd: ExecStart must be a single line");return $}function LI(D){if(/^[\w@%+=:,./-]+$/.test(D))return D;return`"${D.replace(/\\/g,"\\\\").replace(/"/g,"\\\"")}"`}function jI(D,$,F){if(D===void 0||D.length===0)return;let X=t2.isAbsolute(D)?D:t2.resolve($,D);return F(X)?X:void 0}function zI(D){let $=t2.basename(D);return $==="bun"||$.startsWith("bun-")}function II(D){return t2.basename(D).startsWith("aiworker")}function TI(D,$,F){if($===void 0||$.length===0)return;for(let X of $.split(t2.delimiter)){if(X.length===0)continue;let J=t2.join(X,D);if(F(J))return J}return}function wI(D,$=qI()){if(D==="user")return t2.join($,".config","systemd","user",P8);return`/etc/systemd/system/${P8}`}function SI(D={}){let $=D.scope??"user",F=xU(D.execStart??hU()),X=PI({scope:$,execStart:F});if(D.dryRun)return{scope:$,content:X,execStart:F,enabled:!1,restartRequired:!1};let J=D.out??wI($);EI(t2.dirname(J),{recursive:!0});let G=!1;if(vU(J)){if(MI(J,"utf8")===X)G=!0}if(!G)ZI(J,X,{encoding:"utf8",mode:420});if(!(!D.noEnable&&D.out===void 0))return{scope:$,content:X,execStart:F,written:{path:J,unchanged:G},enabled:!1,restartRequired:!1};return bI($),{scope:$,content:X,execStart:F,written:{path:J,unchanged:G},enabled:!0,restartRequired:!G}}function bI(D){let $=D==="user"?["--user"]:[],F=SU("systemctl",[...$,"daemon-reload"],{stdio:"inherit"});if(F.error)throw Error(`\u65E0\u6CD5\u6267\u884C systemctl: ${F.error.message}`);if(F.status!==0)throw Error(`systemctl ${[...$,"daemon-reload"].join(" ")} \u5931\u8D25 (exit=${F.status??"signal"})`);let X=SU("systemctl",[...$,"enable","--now",P8],{stdio:"inherit"});if(X.error)throw Error(`\u65E0\u6CD5\u6267\u884C systemctl: ${X.error.message}`);if(X.status!==0)throw Error(`systemctl ${[...$,"enable","--now",P8].join(" ")} \u5931\u8D25 (exit=${X.status??"signal"})`)}async function gU(D={}){try{let $=SI(D);if(D.dryRun)return d3.stdout.write($.content),0;let F=$.written?.path??"<unknown>";if($.written?.unchanged)E.info(`systemd unit \u672A\u53D8\u66F4 (${F})`);else E.success(`systemd unit \u5199\u5165 ${F}`);if($.enabled){if(E.success(`\u5DF2 enable --now ${P8}\uFF08${$.scope==="user"?"systemctl --user":"systemctl"}\uFF09`),$.restartRequired)E.warn("unit \u5185\u5BB9\u5DF2\u53D8\u66F4\uFF1Bsystemctl enable --now \u4E0D\u4F1A\u91CD\u542F\u5DF2\u5728\u8FD0\u884C\u7684\u670D\u52A1\u3002\u82E5\u8FD9\u662F\u91CD\u88C5/\u5347\u7EA7\uFF0C\u8BF7\u5728\u7EF4\u62A4\u7A97\u53E3\u6267\u884C:"),E.warn(` systemctl ${$.scope==="user"?"--user ":""}restart ${P8}`)}else if(D.out!==void 0)E.info("--out \u6307\u5B9A\u4E86\u975E\u9ED8\u8BA4\u8DEF\u5F84\uFF0C\u5DF2\u8DF3\u8FC7 systemctl\uFF1B\u5982\u9700\u542F\u7528\u8BF7\u624B\u52A8:"),E.info(` systemctl ${$.scope==="user"?"--user ":""}daemon-reload`),E.info(` systemctl ${$.scope==="user"?"--user ":""}enable --now ${P8}`);else if(D.noEnable)E.info("--no-enable \u5DF2\u751F\u6548\uFF1B\u5982\u9700\u542F\u7528\u8BF7\u624B\u52A8:"),E.info(` systemctl ${$.scope==="user"?"--user ":""}daemon-reload`),E.info(` systemctl ${$.scope==="user"?"--user ":""}enable --now ${P8}`);return fI($.scope),0}catch($){return E.error(`install systemd \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),1}}function fI(D){if(D==="system"){E.box(["First-run secrets for aiworker-gateway:",` sudo install -d -m 0700 -o root -g root ${t2.dirname(l3)}`,` sudo sh -c 'umask 077; printf "AIWORKER_MASTER_KEY=%s\\nINTERNAL_SHARED_SECRET=%s\\n" "$(openssl rand -hex 32)" "$(openssl rand -base64 24)" > ${l3}'`,` sudo chown root:root ${l3}`,` sudo chmod 600 ${l3}`].join(`
|
|
343
|
-
`));return}E.box(["First-run secrets for aiworker-gateway:"," install -d -m 0700 ~/.config/aiworker",` sh -c 'umask 077; printf "AIWORKER_MASTER_KEY=%s\\nINTERNAL_SHARED_SECRET=%s\\n" "$(openssl rand -hex 32)" "$(openssl rand -base64 24)" > ~/.config/aiworker/gateway.env'`," chmod 600 ~/.config/aiworker/gateway.env"].join(`
|
|
344
|
-
`))}eD();JD();async function yU(D){let $=D.follow===!0,F=D.timeoutMs??($?3600000:5000);try{return await RD(async({client:X})=>{return await new Promise((J)=>{let G=!1,Y=(W)=>{if(G)return;G=!0,J(W)},B=X.onEvent(e.LOGS_LINE,(W)=>{if(W===null||typeof W!=="object")return;let Q=W.workerId;if(typeof Q!=="string"||Q!==D.workerId)return;Q2(W)}),H=setTimeout(()=>{B(),Y(0)},F);X.request("logs.tail",{workerId:D.workerId,follow:$,...D.tail===void 0?{}:{lines:D.tail}}).then(()=>{}).catch((W)=>{B(),clearTimeout(H),Q2({kind:"error",payload:{code:"request_failed",message:W instanceof Error?W.message:String(W)}}),Y(KD(W))})})})}catch(X){return E.error(`logs \u5931\u8D25: ${X instanceof Error?X.message:String(X)}`),KD(X)}}JD();async function uU(D){try{let $=await RD(async({client:X})=>{return await X.request("workers.pair",{workerBaseUrl:D.workerUrl,bootstrapToken:D.bootstrapToken,...D.displayName===void 0?{}:{displayName:D.displayName}})},D.url===void 0?{}:{gatewayUrl:D.url}),{patchAimState:F}=await Promise.resolve().then(() => (D1(),m7));return await F({...D.url===void 0?{}:{gatewayUrl:D.url},deviceToken:$.deviceToken,defaultWorkerId:$.workerId}),E.success(`\u5DF2\u914D\u5BF9 worker ${$.workerId}`),ID({workerId:$.workerId}),0}catch($){return E.error(`pair \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),KD($)}}JD();var mU=["web","line","telegram","lark","whatsapp"];function kI(D){if(!mU.includes(D))throw Error(`\u65E0\u6548 channel "${D}"\uFF0C\u53EF\u9009\u503C\uFF1A${mU.join(", ")}`);return D}async function pU(D){try{let $=await RD(async({client:F})=>{return await F.request("cron.list",{workerId:D})});return ID($),0}catch($){return E.error(`schedule list \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),KD($)}}async function cU(D){try{let $=kI(D.channel),F={expression:D.expression,prompt:D.prompt,channel:$,chatId:D.chatId};if(D.accountId!==void 0)F.accountId=D.accountId;if(D.enabled!==void 0)F.enabled=D.enabled;let X=await RD(async({client:J})=>{return await J.request("cron.add",{workerId:D.workerId,job:F})});return ID(X),0}catch($){return E.error(`schedule add \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),KD($)}}async function dU(D,$){try{let F=await RD(async({client:X})=>{return await X.request("cron.remove",{workerId:D,jobId:$})});return ID(F),0}catch(F){return E.error(`schedule remove \u5931\u8D25: ${F instanceof Error?F.message:String(F)}`),KD(F)}}JD();async function lU(D){try{let $=await RD(async({client:F})=>{return await F.request("token.rotate",{workerId:D})});return ID($),0}catch($){return E.error(`token rotate \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),KD($)}}JD();async function iU(){try{let D=await RD(async({client:$})=>{return await $.request("workers.list",{})});return ID(D),0}catch(D){return E.error(`workers list \u5931\u8D25: ${D instanceof Error?D.message:String(D)}`),KD(D)}}async function nU(D){try{let $=await RD(async({client:F})=>{return await F.request("workers.info",{workerId:D})});return ID($),0}catch($){return E.error(`workers info \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),KD($)}}async function sU(D={}){try{let $=await RD(async({client:X})=>{let J={...D.env??{}};if(D.forceId!==void 0&&D.forceId.length>0)J.AIWORKER_FORCE_ID=D.forceId;return await X.request("workers.launch",{...D.displayName===void 0?{}:{displayName:D.displayName},...D.image===void 0?{}:{image:D.image},...Object.keys(J).length===0?{}:{env:J}})}),{patchAimState:F}=await Promise.resolve().then(() => (D1(),m7));return await F({deviceToken:$.deviceToken,defaultWorkerId:$.workerId}),E.success(`\u5DF2 launch worker ${$.workerId}`),ID({workerId:$.workerId}),0}catch($){return E.error(`workers launch \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),KD($)}}async function rU(D){try{let $=await RD(async({client:F})=>{return await F.request("workers.stop",{workerId:D})});return ID($),0}catch($){return E.error(`workers stop \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),KD($)}}async function oU(D){try{let $=await RD(async({client:G})=>{return await G.request("workers.remove",{workerId:D})}),{loadAimState:F,saveAimState:X}=await Promise.resolve().then(() => (D1(),m7)),J=await F();if(J.defaultWorkerId===D){let G={...J};delete G.defaultWorkerId,await X(G)}return ID($),0}catch($){return E.error(`workers remove \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),KD($)}}a0();JD();import oG from"process";a0();wD();import Cl from"process";async function Rl(D){let $=mD(),F=$8(D).map((J)=>J.path),X=new Map;for(let J of F){let G=await $.get(J);if(G!==null)X.set(J,G)}return E6(D,X)}async function iD(D={}){s3(i.WORKER_DB_PATH);let $=Cl.env.WORKER_MIGRATIONS_FOLDER??A6;r3($);let F=mD(),X=y(),J=await W1(X,F,{...i.AIWORKER_FORCE_ID===void 0?{}:{forceId:i.AIWORKER_FORCE_ID},...i.AIWORKER_FORCE_TOKEN===void 0?{}:{forceToken:i.AIWORKER_FORCE_TOKEN}});if(!D.silent)V1(J.workerId,J.token,X,J.justMinted);let G=await H1(X),Y=await Rl(G.config),B=new z1({maxConcurrentTotal:i.MAX_CONCURRENT_TOTAL,perEngineLimits:{...i.perEngineLimits},stallTimeoutMs:i.PROCESS_STALL_TIMEOUT_MS,killTimeoutMs:i.PROCESS_KILL_TIMEOUT_MS,autoCleanupDelayMs:i.PROCESS_AUTO_CLEANUP_DELAY_MS,gcIntervalMs:i.PROCESS_GC_INTERVAL_MS});return{workerId:J.workerId,token:J.token,configVersion:G.version,hydrated:Y,db:X,processes:B}}function LM(D){return b1(D.workerId,D.hydrated,{processes:D.processes})}function El(){return`http://${oG.env.AIW_LOCAL_WORKER_HOST??"localhost"}:${i.PORT}`}async function jM(D,$={}){let F=await iD({silent:!0}),X=`${El()}${D}`,J=new Headers($.headers??{});if(J.set("Authorization",`Bearer ${F.token}`),$.body!==void 0&&!J.has("content-type"))J.set("content-type","application/json");let G=await fetch(X,{...$,headers:J}),Y=null;try{Y=await G.json()}catch{Y=null}return{status:G.status,body:Y}}async function zM(){try{let{status:D,body:$}=await jM("/api/worker/approvals");if(D!==200)return E.error(`approvals list HTTP ${D}: ${JSON.stringify($)}`),1;return oG.stdout.write(`${JSON.stringify($,null,2)}
|
|
345
|
-
`),0}catch(D){return E.error(`approvals list \u5931\u8D25: ${D instanceof Error?D.message:String(D)}`),1}}async function IM(D){try{let $=D.deny===!0?"deny":"allow",{status:F,body:X}=await jM(`/api/worker/approvals/${encodeURIComponent(D.taskId)}/${encodeURIComponent(D.toolCallId)}/grant`,{method:"POST",body:JSON.stringify({decision:$})});if(F!==200)return E.error(`approvals grant HTTP ${F}: ${JSON.stringify(X)}`),1;return oG.stdout.write(`${JSON.stringify(X,null,2)}
|
|
346
|
-
`),0}catch($){return E.error(`approvals grant \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),1}}a0();JD();async function TM(){await iD({silent:!0});let{getWorkerDb:D}=await Promise.resolve().then(() => (wD(),dX)),$=await z0(D());return console.log(JSON.stringify({version:$.version,config:$.config},null,2)),0}async function wM(D){let $=await iD({silent:!0}),F;try{F=JSON.parse(D.json)}catch(Y){return E.error(`[aiw config set] invalid JSON: ${String(Y)}`),2}let{getWorkerDb:X}=await Promise.resolve().then(() => (wD(),dX)),J=X(),G=mD();try{let Y=await y9(J,G,F,D.ifMatch===void 0?{}:{ifMatchVersion:D.ifMatch});return await u9($.workerId,Y.config,Y.version),E.success(`[aiw config set] stored config v${Y.version}`),0}catch(Y){if(Y instanceof y2)return E.error(`[aiw config set] invalid config: ${JSON.stringify(Y.issues,null,2)}`),2;if(Y instanceof u2)return E.error(`[aiw config set] version conflict: expected ${Y.expected}, stored is ${Y.actual}`),3;throw Y}}V2();JD();import{existsSync as k1}from"fs";import{homedir as Tl}from"os";import E0 from"path";import v1 from"process";import{randomBytes as SM}from"crypto";import{chmodSync as Ml,existsSync as bM,mkdirSync as Zl,readFileSync as ql,writeFileSync as Nl}from"fs";import{homedir as Pl}from"os";import fM from"path";import P2 from"process";var Ll=fM.join(Pl(),".aiworker");function f1(D={}){let $=D.home??P2.env.AIWORKER_HOME??Ll,F=fM.join($,".env");if(bM(F)){let B=jl(ql(F,"utf8"));for(let[H,W]of Object.entries(B))if(P2.env[H]===void 0)P2.env[H]=W;return{minted:!1,envFile:F,freshMasterKey:null}}if(!bM($))Zl($,{recursive:!0,mode:448});let X=P2.env.AIWORKER_MASTER_KEY??SM(32).toString("hex"),J=P2.env.INTERNAL_SHARED_SECRET??SM(24).toString("hex"),G=["# FEAT-030 first-run minted env. chmod 0600.","# Persisted to disk so subsequent `aiworker` calls don't need to re-mint.","# \u663E\u5F0F `export AIWORKER_MASTER_KEY=...` \u4ECD\u7136\u4F18\u5148\uFF08\u8986\u76D6\u672C\u6587\u4EF6\uFF09\u3002",`AIWORKER_MASTER_KEY=${X}`,`INTERNAL_SHARED_SECRET=${J}`,""];if(Nl(F,G.join(`
|
|
347
|
-
`),{mode:384}),Ml(F,384),P2.env.AIWORKER_MASTER_KEY===void 0)P2.env.AIWORKER_MASTER_KEY=X;if(P2.env.INTERNAL_SHARED_SECRET===void 0)P2.env.INTERNAL_SHARED_SECRET=J;let Y=P2.env.AIWORKER_MASTER_KEY===X?X:null;if(Y&&D.printOnMint!==!1)zl(Y,F);return{minted:!0,envFile:F,freshMasterKey:Y}}function jl(D){let $={};for(let F of D.split(`
|
|
348
|
-
`)){let X=F.trim();if(!X||X.startsWith("#"))continue;let J=X.indexOf("=");if(J<=0)continue;let G=X.slice(0,J).trim(),Y=X.slice(J+1).trim();if(Y.startsWith('"')&&Y.endsWith('"')||Y.startsWith("'")&&Y.endsWith("'"))Y=Y.slice(1,-1);$[G]=Y}return $}function zl(D,$){let F=["","\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510","\u2502 \u26A0\uFE0F AIWORKER first-run setup \u2502","\u2502 \u2502",`\u2502 AIWORKER_MASTER_KEY (\u5199\u5165 ${Il($,40)}) \u2502`,`\u2502 ${D} \u2502`,"\u2502 \u2502","\u2502 \u8BF7\u79BB\u7EBF\u5907\u4EFD\u6B64\u5BC6\u94A5\u3002\u4E22\u5931 = fleet.db / worker.db \u52A0\u5BC6\u6570\u636E\u5168\u90E8\u89E3\u4E0D\u5F00\uFF0C \u2502","\u2502 \u6240\u6709\u5DF2\u6CE8\u518C worker \u5FC5\u987B\u91CD enroll\u3002 \u2502","\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518",""];P2.stderr.write(`${F.join(`
|
|
349
|
-
`)}
|
|
350
|
-
`)}function Il(D,$){if(D.length<=$)return D.padEnd($);return`\u2026${D.slice(-($-1))}`.padEnd($)}var wl=[".aiworker/",".aiworker/AGENT.md",".aiworker/SOUL.md",".aiworker/USER.md",".aiworker/MEMORY.md",".aiworker/ROLLUP.md",".aiworker/mcp.json",".aiworker/.gitignore",".aiworker/skills/",".aiworker/memories/",".aiworker/local/",".aiworker/local/.gitignore",".aiworker/local/workspaces/"],Sl=[".aiworker/local/.env",".aiworker/local/worker.db"],bl=[".aiworker/local/identity.json"],fl=[{path:"AGENTS.md",type:"file"},{path:"CLAUDE.md",type:"file"},{path:".agents/",type:"directory"},{path:".claude/",type:"directory"}];async function hM(D={}){if(D.global===!0){let B=E0.join(Tl(),".aiworker"),H=vM(B,D);if(q$(H),D.dryRun===!0)return;v1.env.AIWORKER_HOME=B,f1({home:B});let W=await iD();E.success(`[aiworker init] user-scope worker ${W.workerId} ready (config v${W.configVersion})`);return}let $=B2();if($.scope==="explicit"){let B=vM($.home,{...D,scope:"explicit"});if(q$(B),D.dryRun===!0)return;f1({home:$.home});let H=await iD();E.success(`[aiworker init] explicit-scope worker ${H.workerId} ready (${$.home})`);return}let F=v1.cwd(),X=EF(F);if(X){let B=kM(X,D);if(q$(B),D.dryRun===!0)return;await LF(X),f1({home:E0.join(X,".aiworker","local")});let H=await iD();E.success(`[aiworker init] project-scope worker ${H.workerId} ready (${X})`);return}if(D.force!==!0&&!kl(F))throw Error(`[aiworker init] cwd is not inside a git repo (cwd=${F}).
|
|
351
|
-
`+` \u2022 Run inside an existing git repo to enable project-scope worker, OR
|
|
352
|
-
`+` \u2022 aiworker init --global \u2192 use ~/.aiworker (single host-wide worker), OR
|
|
353
|
-
`+" \u2022 aiworker init --force \u2192 create .aiworker/ here anyway (no git tracking).");let J=kM(F,D);if(q$(J),D.dryRun===!0)return;await LF(F);let G=E0.join(F,".aiworker","local");delete v1.env.AIWORKER_HOME,f1({home:G});let Y=await iD();E.success(`[aiworker init] project-scope worker ${Y.workerId} ready (${F})`)}function kl(D){let $=E0.resolve(D);while(!0){if(k1(E0.join($,".git")))return!0;let F=E0.dirname($);if(F===$)return!1;$=F}}function kM(D,$){let F=E0.resolve(D),X=[],J=[],G=[];for(let Y of wl){let B=`${Y}${k1(E0.join(F,Y))?" (existing aiworker layout)":""}`;if(k1(E0.join(F,Y)))J.push(B);else X.push(Y)}for(let Y of Sl)if(k1(E0.join(F,Y)))J.push(`${Y} (existing local state)`);else X.push(`${Y} (worker bootstrap)`);for(let Y of bl)if(k1(E0.join(F,Y)))J.push(`${Y} (existing local state)`);for(let Y of fl){let B=Y.path,H=E0.join(F,B);if(k1(H))G.push(`${B} (external agent ${Y.type}; not modified, future adopt/merge candidate)`)}if($.force===!0)G.push("--force only skips the git-repo guard; it does not overwrite existing files");return{applyLabel:$.dryRun===!0?"dry-run (no files will be written)":"apply",create:X,preserve:J,requiresAction:G,scope:"project",targetHome:E0.join(F,".aiworker","local"),targetProject:F}}function vM(D,$){let F=E0.resolve(D),X=[],J=[],G=[".env","worker.db","workers/"];for(let Y of G)if(k1(E0.join(F,Y)))J.push(`${Y} (existing user-scope state)`);else X.push(`${Y} (worker bootstrap)`);return{applyLabel:$.dryRun===!0?"dry-run (no files will be written)":"apply",create:X,preserve:J,requiresAction:[],scope:$.scope??"user",targetHome:F}}function q$(D){let $=[`[aiworker init] preflight (${D.scope}-scope)`,D.targetProject?`Project root : ${D.targetProject}`:null,`Home : ${D.targetHome}`,`Mode : ${D.applyLabel}`].filter((F)=>F!==null);v1.stdout.write(`${$.join(`
|
|
354
|
-
`)}
|
|
355
|
-
`),aG("Will create",D.create),aG("Will preserve",D.preserve),aG("Needs explicit action",D.requiresAction)}function aG(D,$){if(v1.stdout.write(`${D}:
|
|
356
|
-
`),$.length===0){v1.stdout.write(` - none
|
|
357
|
-
`);return}for(let F of $)v1.stdout.write(` - ${F}
|
|
358
|
-
`)}JD();var vl=120000;async function xM(D={}){let $=D.message??"";if(!$)return E.error("[aiw run] --message is required (non-empty)"),2;let F=await iD(),X=LM(F),J=D.timeoutMs??vl;if(E.info(`[aiw run] worker ${F.workerId} (config v${F.configVersion}) \u2014 engine=${F.hydrated.executor.engine}/${F.hydrated.executor.variant}`),D.dryRun)return E.success("[aiw run] --dry-run: runtime constructed, no envelope ingested"),X.dispose(),0;let G=D.chatId??"cli:stdin",Y={workerId:F.workerId,channel:"web",accountId:"sys:cli",chatId:G,text:$,receivedAt:new Date().toISOString(),raw:{source:"aiw-cli"}},B=new Promise((W)=>{let Q=null,U=setTimeout(()=>{E.error(`[aiw run] timed out after ${J}ms without reaching a terminal state`),Q?.(),W(124)},J);Q=X.bus.on((_)=>{if(console.log(JSON.stringify({type:_.type,at:_.at,payload:_.payload})),_.type==="orchestrator.finished"||_.type==="orchestrator.error")clearTimeout(U),Q?.(),W(_.type==="orchestrator.finished"?0:1)})});try{await X.orchestrator.ingest(Y)}catch(W){return E.error(`[aiw run] ingest failed: ${String(W)}`),X.dispose(),1}let H=await B;return X.dispose(),H}JD();var gM=["web","line","telegram","lark","whatsapp"];function hl(D){if(!gM.includes(D))throw Error(`\u65E0\u6548 channel "${D}"\uFF0C\u53EF\u9009\u503C\uFF1A${gM.join(", ")}`);return D}async function tG(D){await iD({silent:!0});let{CronService:$}=await Promise.resolve().then(() => (a0(),PM)),F=new $({workerId:"aiw-cli",getOrchestrator:()=>({ingest:async()=>{throw Error("aiw schedule CLI \u4E0D\u5E94\u89E6\u53D1 cron tick\uFF1B\u8BF7\u68C0\u67E5\u5B9E\u73B0")}})});try{return await D(F)}finally{F.stop()}}async function yM(){try{let D=await tG(async($)=>$.listJobs());return console.log(JSON.stringify({jobs:D},null,2)),0}catch(D){return E.error(`[aiw schedule list] failed: ${D instanceof Error?D.message:String(D)}`),1}}async function uM(D){try{let $=hl(D.channel),F=await tG(async(X)=>X.addJob({expression:D.expression,prompt:D.prompt,channel:$,chatId:D.chatId,...D.accountId===void 0?{}:{accountId:D.accountId},...D.enabled===void 0?{}:{enabled:D.enabled}}));return console.log(JSON.stringify({job:F},null,2)),0}catch($){return E.error(`[aiw schedule add] failed: ${$ instanceof Error?$.message:String($)}`),1}}async function mM(D){try{let $=await tG(async(F)=>F.removeJob(D));return console.log(JSON.stringify($,null,2)),$.removed?0:1}catch($){return E.error(`[aiw schedule remove] failed: ${$ instanceof Error?$.message:String($)}`),1}}V2();import{existsSync as xl}from"fs";import pM from"path";import cM from"process";async function dM(){let D=B2();cM.stdout.write(`${[`Scope : ${D.scope}`,`Home : ${D.home}`,`Source : ${D.source}`,D.projectRoot?`Project root : ${D.projectRoot}`:null].filter(Boolean).join(`
|
|
359
|
-
`)}
|
|
360
|
-
`);let $="<workerId>",F=W2($),X=v7($),J=pM.join(D.home,".env"),G=pM.join(D.home,"worker.db"),Y=[["AGENT.md",ZF($)],["SOUL.md",qF($)],["USER.md",NF($)],["MEMORY.md",MF($)],["ROLLUP.md",MW($)],["mcp.json",ZW($)],["worker.db",G],["local/.env",J],["workspaces/",X],["worker home",F]];for(let[B,H]of Y){let Q=xl(H)?"\u2713":"\xB7";cM.stdout.write(` ${Q} ${B.padEnd(14)} ${H}
|
|
361
|
-
`)}return 0}import g1 from"process";function o9(D,$){var F={};for(var X in D)if(Object.prototype.hasOwnProperty.call(D,X)&&$.indexOf(X)<0)F[X]=D[X];if(D!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var J=0,X=Object.getOwnPropertySymbols(D);J<X.length;J++)if($.indexOf(X[J])<0&&Object.prototype.propertyIsEnumerable.call(D,X[J]))F[X[J]]=D[X[J]]}return F}function GD(D,$){var F;return((F=D===null||D===void 0?void 0:D._def)===null||F===void 0?void 0:F.typeName)===$}function gl(D){return"_def"in D}function s9(D,$){let F=D.ZodType.prototype[$];D.ZodType.prototype[$]=function(...X){let J=F.apply(this,X);return J._def.openapi=this._def.openapi,J}}function iM(D){if(typeof D.ZodType.prototype.openapi<"u")return;D.ZodType.prototype.openapi=function(J,G){var Y,B,H,W,Q,U;let _=typeof J==="string"?G:J,A=_!==null&&_!==void 0?_:{},{param:C}=A,O=o9(A,["param"]),K=Object.assign(Object.assign({},(Y=this._def.openapi)===null||Y===void 0?void 0:Y._internal),typeof J==="string"?{refId:J}:void 0),R=Object.assign(Object.assign(Object.assign({},(B=this._def.openapi)===null||B===void 0?void 0:B.metadata),O),((W=(H=this._def.openapi)===null||H===void 0?void 0:H.metadata)===null||W===void 0?void 0:W.param)||C?{param:Object.assign(Object.assign({},(U=(Q=this._def.openapi)===null||Q===void 0?void 0:Q.metadata)===null||U===void 0?void 0:U.param),C)}:void 0),q=new this.constructor(Object.assign(Object.assign({},this._def),{openapi:Object.assign(Object.assign({},Object.keys(K).length>0?{_internal:K}:void 0),Object.keys(R).length>0?{metadata:R}:void 0)}));if(GD(this,"ZodObject")){let N=this.extend;q.extend=function(...S){var b,L,z,j,d,VD,QD;let $D=N.apply(this,S);return $D._def.openapi={_internal:{extendedFrom:((L=(b=this._def.openapi)===null||b===void 0?void 0:b._internal)===null||L===void 0?void 0:L.refId)?{refId:(j=(z=this._def.openapi)===null||z===void 0?void 0:z._internal)===null||j===void 0?void 0:j.refId,schema:this}:(VD=(d=this._def.openapi)===null||d===void 0?void 0:d._internal)===null||VD===void 0?void 0:VD.extendedFrom},metadata:(QD=$D._def.openapi)===null||QD===void 0?void 0:QD.metadata},$D}}return q},s9(D,"optional"),s9(D,"nullable"),s9(D,"default"),s9(D,"transform"),s9(D,"refine");let $=D.ZodObject.prototype.deepPartial;D.ZodObject.prototype.deepPartial=function(){let J=this._def.shape(),G=$.apply(this),Y=G._def.shape();return Object.entries(Y).forEach(([B,H])=>{var W,Q;H._def.openapi=(Q=(W=J[B])===null||W===void 0?void 0:W._def)===null||Q===void 0?void 0:Q.openapi}),G._def.openapi=void 0,G};let F=D.ZodObject.prototype.pick;D.ZodObject.prototype.pick=function(...J){let G=F.apply(this,J);return G._def.openapi=void 0,G};let X=D.ZodObject.prototype.omit;D.ZodObject.prototype.omit=function(...J){let G=X.apply(this,J);return G._def.openapi=void 0,G}}function N$(D,$){if(D===null||D===void 0||$===null||$===void 0)return D===$;if(D===$||D.valueOf()===$.valueOf())return!0;if(Array.isArray(D)){if(!Array.isArray($))return!1;if(D.length!==$.length)return!1}if(!(D instanceof Object)||!($ instanceof Object))return!1;let F=Object.keys(D);return Object.keys($).every((X)=>F.indexOf(X)!==-1)&&F.every((X)=>N$(D[X],$[X]))}class nM{constructor(){this.buckets=new Map}put(D){let $=this.hashCodeOf(D),F=this.buckets.get($);if(!F){this.buckets.set($,[D]);return}if(!F.some((J)=>N$(J,D)))F.push(D)}contains(D){let $=this.hashCodeOf(D),F=this.buckets.get($);if(!F)return!1;return F.some((X)=>N$(X,D))}values(){return[...this.buckets.values()].flat()}stats(){let D=0,$=0,F=0;for(let J of this.buckets.values())if(D+=1,$+=J.length,J.length>1)F+=1;let X=D/$;return{totalBuckets:D,collisions:F,totalValues:$,hashEffectiveness:X}}hashCodeOf(D){let $=0;if(Array.isArray(D)){for(let F=0;F<D.length;F++)$^=this.hashCodeOf(D[F])*F;return $}if(typeof D==="string"){for(let F=0;F<D.length;F++)$^=D.charCodeAt(F)*F;return $}if(typeof D==="number")return D;if(typeof D==="object")for(let[F,X]of Object.entries(D))$^=this.hashCodeOf(F)+this.hashCodeOf(X!==null&&X!==void 0?X:"");return $}}function a9(D){return D===void 0}function t9(D,$){let F={};return Object.entries(D).forEach(([X,J])=>{F[X]=$(J)}),F}function yl(D,$){let F={};return Object.entries(D).forEach(([X,J])=>{if(!$.some((G)=>G===X))F[X]=J}),F}function F3(D,$){let F={};return Object.entries(D).forEach(([X,J])=>{if(!$(J,X))F[X]=J}),F}function lM(D){return D.filter(($)=>!a9($))}var eG=N$;function ul(D){let $=new nM;return D.forEach((F)=>$.put(F)),[...$.values()]}function sM(D){return typeof D==="string"}class DB{constructor(D){this.parents=D,this._definitions=[]}get definitions(){var D,$;return[...($=(D=this.parents)===null||D===void 0?void 0:D.flatMap((X)=>X.definitions))!==null&&$!==void 0?$:[],...this._definitions]}register(D,$){let F=this.schemaWithRefId(D,$);return this._definitions.push({type:"schema",schema:F}),F}registerParameter(D,$){var F,X,J;let G=this.schemaWithRefId(D,$),Y=(F=G._def.openapi)===null||F===void 0?void 0:F.metadata,B=G.openapi(Object.assign(Object.assign({},Y),{param:Object.assign(Object.assign({},Y===null||Y===void 0?void 0:Y.param),{name:(J=(X=Y===null||Y===void 0?void 0:Y.param)===null||X===void 0?void 0:X.name)!==null&&J!==void 0?J:D})}));return this._definitions.push({type:"parameter",schema:B}),B}registerPath(D){this._definitions.push({type:"route",route:D})}registerWebhook(D){this._definitions.push({type:"webhook",webhook:D})}registerComponent(D,$,F){return this._definitions.push({type:"component",componentType:D,name:$,component:F}),{name:$,ref:{$ref:`#/components/${D}/${$}`}}}schemaWithRefId(D,$){return $.openapi(D)}}class D7{constructor(D){this.message=D}}class $3 extends D7{constructor(D,$){super(D);this.data=$}}class e9 extends D7{constructor(D){super(`Missing parameter data, please specify \`${D.missingField}\` and other OpenAPI parameter props using the \`param\` field of \`ZodSchema.openapi\``);this.data=D}}function r9(D,$){try{return D()}catch(F){if(F instanceof e9)throw new e9(Object.assign(Object.assign({},F.data),$));throw F}}class rM extends D7{constructor(D){super("Unknown zod object type, please specify `type` and other OpenAPI props using `ZodSchema.openapi`.");this.data=D}}class LD{static getMetadata(D){var $;let F=this.unwrapChained(D),X=D._def.openapi?D._def.openapi:F._def.openapi,J=($=D.description)!==null&&$!==void 0?$:F.description;return{_internal:X===null||X===void 0?void 0:X._internal,metadata:Object.assign({description:J},X===null||X===void 0?void 0:X.metadata)}}static getInternalMetadata(D){let $=this.unwrapChained(D),F=D._def.openapi?D._def.openapi:$._def.openapi;return F===null||F===void 0?void 0:F._internal}static getParamMetadata(D){var $,F;let X=this.unwrapChained(D),J=D._def.openapi?D._def.openapi:X._def.openapi,G=($=D.description)!==null&&$!==void 0?$:X.description;return{_internal:J===null||J===void 0?void 0:J._internal,metadata:Object.assign(Object.assign({},J===null||J===void 0?void 0:J.metadata),{param:Object.assign({description:G},(F=J===null||J===void 0?void 0:J.metadata)===null||F===void 0?void 0:F.param)})}}static buildSchemaMetadata(D){return F3(yl(D,["param"]),a9)}static buildParameterMetadata(D){return F3(D,a9)}static applySchemaMetadata(D,$){return F3(Object.assign(Object.assign({},D),this.buildSchemaMetadata($)),a9)}static getRefId(D){var $;return($=this.getInternalMetadata(D))===null||$===void 0?void 0:$.refId}static unwrapChained(D){return this.unwrapUntil(D)}static getDefaultValue(D){let $=this.unwrapUntil(D,"ZodDefault");return $===null||$===void 0?void 0:$._def.defaultValue()}static unwrapUntil(D,$){if($&&GD(D,$))return D;if(GD(D,"ZodOptional")||GD(D,"ZodNullable")||GD(D,"ZodBranded"))return this.unwrapUntil(D.unwrap(),$);if(GD(D,"ZodDefault")||GD(D,"ZodReadonly"))return this.unwrapUntil(D._def.innerType,$);if(GD(D,"ZodEffects"))return this.unwrapUntil(D._def.schema,$);if(GD(D,"ZodPipeline"))return this.unwrapUntil(D._def.in,$);return $?void 0:D}static isOptionalSchema(D){return D.isOptional()}}class oM{transform(D,$,F){var X,J;let G=D._def.type;return Object.assign(Object.assign({},$("array")),{items:F(G),minItems:(X=D._def.minLength)===null||X===void 0?void 0:X.value,maxItems:(J=D._def.maxLength)===null||J===void 0?void 0:J.value})}}class aM{transform(D){return Object.assign(Object.assign({},D("string")),{pattern:"^d+$"})}}class tM{transform(D,$,F,X,J){let G=[...D.options.values()],Y=G.map(X);if($)return{oneOf:F(Y,$)};return{oneOf:Y,discriminator:this.mapDiscriminator(G,D.discriminator,J)}}mapDiscriminator(D,$,F){if(D.some((J)=>LD.getRefId(J)===void 0))return;let X={};return D.forEach((J)=>{var G;let Y=LD.getRefId(J),B=(G=J.shape)===null||G===void 0?void 0:G[$];if(GD(B,"ZodEnum")||GD(B,"ZodNativeEnum")){Object.values(B.enum).filter(sM).forEach((Q)=>{X[Q]=F(Y)});return}let H=B===null||B===void 0?void 0:B._def.value;if(typeof H!=="string")throw Error(`Discriminator ${$} could not be found in one of the values of a discriminated union`);X[H]=F(Y)}),{propertyName:$,mapping:X}}}class eM{transform(D,$){return Object.assign(Object.assign({},$("string")),{enum:D._def.values})}}class DZ{transform(D,$,F,X){let G={allOf:this.flattenIntersectionTypes(D).map(X)};if($)return{anyOf:F([G],$)};return G}flattenIntersectionTypes(D){if(!GD(D,"ZodIntersection"))return[D];let $=this.flattenIntersectionTypes(D._def.left),F=this.flattenIntersectionTypes(D._def.right);return[...$,...F]}}class $Z{transform(D,$){return Object.assign(Object.assign({},$(typeof D._def.value)),{enum:[D._def.value]})}}function ml(D){let F=Object.keys(D).filter((G)=>typeof D[D[G]]!=="number").map((G)=>D[G]),X=F.filter((G)=>typeof G==="number").length,J=X===0?"string":X===F.length?"numeric":"mixed";return{values:F,type:J}}class FZ{transform(D,$){let{type:F,values:X}=ml(D._def.values);if(F==="mixed")throw new D7("Enum has mixed string and number values, please specify the OpenAPI type manually");return Object.assign(Object.assign({},$(F==="numeric"?"integer":"string")),{enum:X})}}class XZ{transform(D,$,F){return Object.assign(Object.assign({},$(D.isInt?"integer":"number")),F(D._def.checks))}}class JZ{transform(D,$,F,X){var J;let G=(J=LD.getInternalMetadata(D))===null||J===void 0?void 0:J.extendedFrom,Y=this.requiredKeysOf(D),B=t9(D._def.shape(),X);if(!G)return Object.assign(Object.assign(Object.assign(Object.assign({},F("object")),{properties:B,default:$}),Y.length>0?{required:Y}:{}),this.generateAdditionalProperties(D,X));let H=G.schema;X(H);let W=this.requiredKeysOf(H),Q=t9(H===null||H===void 0?void 0:H._def.shape(),X),U=Object.fromEntries(Object.entries(B).filter(([C,O])=>{return!eG(Q[C],O)})),_=Y.filter((C)=>!W.includes(C)),A=Object.assign(Object.assign(Object.assign(Object.assign({},F("object")),{default:$,properties:U}),_.length>0?{required:_}:{}),this.generateAdditionalProperties(D,X));return{allOf:[{$ref:`#/components/schemas/${G.refId}`},A]}}generateAdditionalProperties(D,$){let F=D._def.unknownKeys,X=D._def.catchall;if(GD(X,"ZodNever")){if(F==="strict")return{additionalProperties:!1};return{}}return{additionalProperties:$(X)}}requiredKeysOf(D){return Object.entries(D._def.shape()).filter(([$,F])=>!LD.isOptionalSchema(F)).map(([$,F])=>$)}}class YZ{transform(D,$,F){let X=D._def.valueType,J=D._def.keyType,G=F(X);if(GD(J,"ZodEnum")||GD(J,"ZodNativeEnum")){let B=Object.values(J.enum).filter(sM).reduce((H,W)=>Object.assign(Object.assign({},H),{[W]:G}),{});return Object.assign(Object.assign({},$("object")),{properties:B})}return Object.assign(Object.assign({},$("object")),{additionalProperties:G})}}class GZ{transform(D,$){var F,X,J;let G=this.getZodStringCheck(D,"regex"),Y=(F=this.getZodStringCheck(D,"length"))===null||F===void 0?void 0:F.value,B=Number.isFinite(D.minLength)?(X=D.minLength)!==null&&X!==void 0?X:void 0:void 0,H=Number.isFinite(D.maxLength)?(J=D.maxLength)!==null&&J!==void 0?J:void 0:void 0;return Object.assign(Object.assign({},$("string")),{minLength:Y!==null&&Y!==void 0?Y:B,maxLength:Y!==null&&Y!==void 0?Y:H,format:this.mapStringFormat(D),pattern:G===null||G===void 0?void 0:G.regex.source})}mapStringFormat(D){if(D.isUUID)return"uuid";if(D.isEmail)return"email";if(D.isURL)return"uri";if(D.isDate)return"date";if(D.isDatetime)return"date-time";if(D.isCUID)return"cuid";if(D.isCUID2)return"cuid2";if(D.isULID)return"ulid";if(D.isIP)return"ip";if(D.isEmoji)return"emoji";return}getZodStringCheck(D,$){return D._def.checks.find((F)=>{return F.kind===$})}}class BZ{constructor(D){this.versionSpecifics=D}transform(D,$,F){let{items:X}=D._def,J=X.map(F);return Object.assign(Object.assign({},$("array")),this.versionSpecifics.mapTupleItems(J))}}class HZ{transform(D,$,F){let J=this.flattenUnionTypes(D).map((G)=>{let Y=this.unwrapNullable(G);return F(Y)});return{anyOf:$(J)}}flattenUnionTypes(D){if(!GD(D,"ZodUnion"))return[D];return D._def.options.flatMap((F)=>this.flattenUnionTypes(F))}unwrapNullable(D){if(GD(D,"ZodNullable"))return this.unwrapNullable(D.unwrap());return D}}class WZ{constructor(D){this.versionSpecifics=D,this.objectTransformer=new JZ,this.stringTransformer=new GZ,this.numberTransformer=new XZ,this.bigIntTransformer=new aM,this.literalTransformer=new $Z,this.enumTransformer=new eM,this.nativeEnumTransformer=new FZ,this.arrayTransformer=new oM,this.unionTransformer=new HZ,this.discriminatedUnionTransformer=new tM,this.intersectionTransformer=new DZ,this.recordTransformer=new YZ,this.tupleTransformer=new BZ(D)}transform(D,$,F,X,J){if(GD(D,"ZodNull"))return this.versionSpecifics.nullType;if(GD(D,"ZodUnknown")||GD(D,"ZodAny"))return this.versionSpecifics.mapNullableType(void 0,$);if(GD(D,"ZodObject"))return this.objectTransformer.transform(D,J,(Y)=>this.versionSpecifics.mapNullableType(Y,$),F);let G=this.transformSchemaWithoutDefault(D,$,F,X);return Object.assign(Object.assign({},G),{default:J})}transformSchemaWithoutDefault(D,$,F,X){if(GD(D,"ZodUnknown")||GD(D,"ZodAny"))return this.versionSpecifics.mapNullableType(void 0,$);if(GD(D,"ZodString"))return this.stringTransformer.transform(D,(G)=>this.versionSpecifics.mapNullableType(G,$));if(GD(D,"ZodNumber"))return this.numberTransformer.transform(D,(G)=>this.versionSpecifics.mapNullableType(G,$),(G)=>this.versionSpecifics.getNumberChecks(G));if(GD(D,"ZodBigInt"))return this.bigIntTransformer.transform((G)=>this.versionSpecifics.mapNullableType(G,$));if(GD(D,"ZodBoolean"))return this.versionSpecifics.mapNullableType("boolean",$);if(GD(D,"ZodLiteral"))return this.literalTransformer.transform(D,(G)=>this.versionSpecifics.mapNullableType(G,$));if(GD(D,"ZodEnum"))return this.enumTransformer.transform(D,(G)=>this.versionSpecifics.mapNullableType(G,$));if(GD(D,"ZodNativeEnum"))return this.nativeEnumTransformer.transform(D,(G)=>this.versionSpecifics.mapNullableType(G,$));if(GD(D,"ZodArray"))return this.arrayTransformer.transform(D,(G)=>this.versionSpecifics.mapNullableType(G,$),F);if(GD(D,"ZodTuple"))return this.tupleTransformer.transform(D,(G)=>this.versionSpecifics.mapNullableType(G,$),F);if(GD(D,"ZodUnion"))return this.unionTransformer.transform(D,(G)=>this.versionSpecifics.mapNullableOfArray(G,$),F);if(GD(D,"ZodDiscriminatedUnion"))return this.discriminatedUnionTransformer.transform(D,$,(G)=>this.versionSpecifics.mapNullableOfArray(G,$),F,X);if(GD(D,"ZodIntersection"))return this.intersectionTransformer.transform(D,$,(G)=>this.versionSpecifics.mapNullableOfArray(G,$),F);if(GD(D,"ZodRecord"))return this.recordTransformer.transform(D,(G)=>this.versionSpecifics.mapNullableType(G,$),F);if(GD(D,"ZodDate"))return this.versionSpecifics.mapNullableType("string",$);let J=LD.getRefId(D);throw new rM({currentSchema:D._def,schemaName:J})}}class $B{constructor(D,$){this.definitions=D,this.versionSpecifics=$,this.schemaRefs={},this.paramRefs={},this.pathRefs={},this.rawComponents=[],this.openApiTransformer=new WZ($),this.sortDefinitions()}generateDocumentData(){return this.definitions.forEach((D)=>this.generateSingle(D)),{components:this.buildComponents(),paths:this.pathRefs}}generateComponents(){return this.definitions.forEach((D)=>this.generateSingle(D)),{components:this.buildComponents()}}buildComponents(){var D,$;let F={};return this.rawComponents.forEach(({componentType:X,name:J,component:G})=>{var Y;(Y=F[X])!==null&&Y!==void 0||(F[X]={}),F[X][J]=G}),Object.assign(Object.assign({},F),{schemas:Object.assign(Object.assign({},(D=F.schemas)!==null&&D!==void 0?D:{}),this.schemaRefs),parameters:Object.assign(Object.assign({},($=F.parameters)!==null&&$!==void 0?$:{}),this.paramRefs)})}sortDefinitions(){let D=["schema","parameter","component","route"];this.definitions.sort(($,F)=>{if(!("type"in $)){if(!("type"in F))return 0;return-1}if(!("type"in F))return 1;let X=D.findIndex((G)=>G===$.type),J=D.findIndex((G)=>G===F.type);return X-J})}generateSingle(D){if(!("type"in D)){this.generateSchemaWithRef(D);return}switch(D.type){case"parameter":this.generateParameterDefinition(D.schema);return;case"schema":this.generateSchemaWithRef(D.schema);return;case"route":this.generateSingleRoute(D.route);return;case"component":this.rawComponents.push(D);return}}generateParameterDefinition(D){let $=LD.getRefId(D),F=this.generateParameter(D);if($)this.paramRefs[$]=F;return F}getParameterRef(D,$){var F,X,J,G,Y;let B=(F=D===null||D===void 0?void 0:D.metadata)===null||F===void 0?void 0:F.param,H=((X=D===null||D===void 0?void 0:D._internal)===null||X===void 0?void 0:X.refId)?this.paramRefs[(J=D._internal)===null||J===void 0?void 0:J.refId]:void 0;if(!((G=D===null||D===void 0?void 0:D._internal)===null||G===void 0?void 0:G.refId)||!H)return;if(B&&H.in!==B.in||($===null||$===void 0?void 0:$.in)&&H.in!==$.in)throw new $3(`Conflicting location for parameter ${H.name}`,{key:"in",values:lM([H.in,$===null||$===void 0?void 0:$.in,B===null||B===void 0?void 0:B.in])});if(B&&H.name!==B.name||($===null||$===void 0?void 0:$.name)&&H.name!==($===null||$===void 0?void 0:$.name))throw new $3("Conflicting names for parameter",{key:"name",values:lM([H.name,$===null||$===void 0?void 0:$.name,B===null||B===void 0?void 0:B.name])});return{$ref:`#/components/parameters/${(Y=D._internal)===null||Y===void 0?void 0:Y.refId}`}}generateInlineParameters(D,$){var F;let X=LD.getMetadata(D),J=(F=X===null||X===void 0?void 0:X.metadata)===null||F===void 0?void 0:F.param,G=this.getParameterRef(X,{in:$});if(G)return[G];if(GD(D,"ZodObject")){let Y=D._def.shape();return Object.entries(Y).map(([H,W])=>{var Q,U;let _=LD.getMetadata(W),A=this.getParameterRef(_,{in:$,name:H});if(A)return A;let C=(Q=_===null||_===void 0?void 0:_.metadata)===null||Q===void 0?void 0:Q.param;if((C===null||C===void 0?void 0:C.name)&&C.name!==H)throw new $3("Conflicting names for parameter",{key:"name",values:[H,C.name]});if((C===null||C===void 0?void 0:C.in)&&C.in!==$)throw new $3(`Conflicting location for parameter ${(U=C.name)!==null&&U!==void 0?U:H}`,{key:"in",values:[$,C.in]});return this.generateParameter(W.openapi({param:{name:H,in:$}}))})}if((J===null||J===void 0?void 0:J.in)&&J.in!==$)throw new $3(`Conflicting location for parameter ${J.name}`,{key:"in",values:[$,J.in]});return[this.generateParameter(D.openapi({param:{in:$}}))]}generateSimpleParameter(D){var $;let F=LD.getParamMetadata(D),X=($=F===null||F===void 0?void 0:F.metadata)===null||$===void 0?void 0:$.param,J=!LD.isOptionalSchema(D)&&!D.isNullable(),G=this.generateSchemaWithRef(D);return Object.assign({schema:G,required:J},X?LD.buildParameterMetadata(X):{})}generateParameter(D){var $;let F=LD.getMetadata(D),X=($=F===null||F===void 0?void 0:F.metadata)===null||$===void 0?void 0:$.param,J=X===null||X===void 0?void 0:X.name,G=X===null||X===void 0?void 0:X.in;if(!J)throw new e9({missingField:"name"});if(!G)throw new e9({missingField:"in",paramName:J});let Y=this.generateSimpleParameter(D);return Object.assign(Object.assign({},Y),{in:G,name:J})}generateSchemaWithMetadata(D){var $;let F=LD.unwrapChained(D),X=LD.getMetadata(D),J=LD.getDefaultValue(D),G=(($=X===null||X===void 0?void 0:X.metadata)===null||$===void 0?void 0:$.type)?{type:X===null||X===void 0?void 0:X.metadata.type}:this.toOpenAPISchema(F,D.isNullable(),J);return(X===null||X===void 0?void 0:X.metadata)?LD.applySchemaMetadata(G,X.metadata):F3(G,a9)}constructReferencedOpenAPISchema(D){var $;let F=LD.getMetadata(D),X=LD.unwrapChained(D),J=LD.getDefaultValue(D),G=D.isNullable();if(($=F===null||F===void 0?void 0:F.metadata)===null||$===void 0?void 0:$.type)return this.versionSpecifics.mapNullableType(F.metadata.type,G);return this.toOpenAPISchema(X,G,J)}generateSimpleSchema(D){var $;let F=LD.getMetadata(D),X=LD.getRefId(D);if(!X||!this.schemaRefs[X])return this.generateSchemaWithMetadata(D);let J=this.schemaRefs[X],G={$ref:this.generateSchemaRef(X)},Y=F3(LD.buildSchemaMetadata(($=F===null||F===void 0?void 0:F.metadata)!==null&&$!==void 0?$:{}),(W,Q)=>W===void 0||eG(W,J[Q]));if(Y.type)return{allOf:[G,Y]};let B=F3(this.constructReferencedOpenAPISchema(D),(W,Q)=>W===void 0||eG(W,J[Q])),H=LD.applySchemaMetadata(B,Y);if(Object.keys(H).length>0)return{allOf:[G,H]};return G}generateSchemaWithRef(D){let $=LD.getRefId(D),F=this.generateSimpleSchema(D);if($&&this.schemaRefs[$]===void 0)return this.schemaRefs[$]=F,{$ref:this.generateSchemaRef($)};return F}generateSchemaRef(D){return`#/components/schemas/${D}`}getRequestBody(D){if(!D)return;let{content:$}=D,F=o9(D,["content"]),X=this.getBodyContent($);return Object.assign(Object.assign({},F),{content:X})}getParameters(D){if(!D)return[];let{headers:$}=D,F=this.cleanParameter(D.query),X=this.cleanParameter(D.params),J=this.cleanParameter(D.cookies),G=r9(()=>F?this.generateInlineParameters(F,"query"):[],{location:"query"}),Y=r9(()=>X?this.generateInlineParameters(X,"path"):[],{location:"path"}),B=r9(()=>J?this.generateInlineParameters(J,"cookie"):[],{location:"cookie"}),H=r9(()=>{if(Array.isArray($))return $.flatMap((Q)=>this.generateInlineParameters(Q,"header"));let W=this.cleanParameter($);return W?this.generateInlineParameters(W,"header"):[]},{location:"header"});return[...Y,...G,...H,...B]}cleanParameter(D){if(!D)return;return GD(D,"ZodEffects")?this.cleanParameter(D._def.schema):D}generatePath(D){let{method:$,path:F,request:X,responses:J}=D,G=o9(D,["method","path","request","responses"]),Y=t9(J,(Q)=>{return this.getResponse(Q)}),B=r9(()=>this.getParameters(X),{route:`${$} ${F}`}),H=this.getRequestBody(X===null||X===void 0?void 0:X.body);return{[$]:Object.assign(Object.assign(Object.assign(Object.assign({},G),B.length>0?{parameters:[...G.parameters||[],...B]}:{}),H?{requestBody:H}:{}),{responses:Y})}}generateSingleRoute(D){let $=this.generatePath(D);return this.pathRefs[D.path]=Object.assign(Object.assign({},this.pathRefs[D.path]),$),$}getResponse(D){if(this.isReferenceObject(D))return D;let{content:$,headers:F}=D,X=o9(D,["content","headers"]),J=$?{content:this.getBodyContent($)}:{};if(!F)return Object.assign(Object.assign({},X),J);let G=GD(F,"ZodObject")?this.getResponseHeaders(F):F;return Object.assign(Object.assign(Object.assign({},X),{headers:G}),J)}isReferenceObject(D){return"$ref"in D}getResponseHeaders(D){let $=D._def.shape();return t9($,(X)=>this.generateSimpleParameter(X))}getBodyContent(D){return t9(D,($)=>{if(!$||!gl($.schema))return $;let{schema:F}=$,X=o9($,["schema"]),J=this.generateSchemaWithRef(F);return Object.assign({schema:J},X)})}toOpenAPISchema(D,$,F){return this.openApiTransformer.transform(D,$,(X)=>this.generateSchemaWithRef(X),(X)=>this.generateSchemaRef(X),F)}}class VZ{get nullType(){return{nullable:!0}}mapNullableOfArray(D,$){if($)return[...D,this.nullType];return D}mapNullableType(D,$){return Object.assign(Object.assign({},D?{type:D}:void 0),$?this.nullType:void 0)}mapTupleItems(D){let $=ul(D);return{items:$.length===1?$[0]:{anyOf:$},minItems:D.length,maxItems:D.length}}getNumberChecks(D){return Object.assign({},...D.map(($)=>{switch($.kind){case"min":return $.inclusive?{minimum:Number($.value)}:{minimum:Number($.value),exclusiveMinimum:!0};case"max":return $.inclusive?{maximum:Number($.value)}:{maximum:Number($.value),exclusiveMaximum:!0};default:return{}}}))}}class FB{constructor(D){let $=new VZ;this.generator=new $B(D,$)}generateDocument(D){let $=this.generator.generateDocumentData();return Object.assign(Object.assign({},D),$)}generateComponents(){return this.generator.generateComponents()}}class QZ{get nullType(){return{type:"null"}}mapNullableOfArray(D,$){if($)return[...D,this.nullType];return D}mapNullableType(D,$){if(!D)return{};if($)return{type:Array.isArray(D)?[...D,"null"]:[D,"null"]};return{type:D}}mapTupleItems(D){return{prefixItems:D}}getNumberChecks(D){return Object.assign({},...D.map(($)=>{switch($.kind){case"min":return $.inclusive?{minimum:Number($.value)}:{exclusiveMinimum:Number($.value)};case"max":return $.inclusive?{maximum:Number($.value)}:{exclusiveMaximum:Number($.value)};default:return{}}}))}}function pl(D){return"type"in D&&D.type==="webhook"}class XB{constructor(D){this.definitions=D,this.webhookRefs={};let $=new QZ;this.generator=new $B(this.definitions,$)}generateDocument(D){let $=this.generator.generateDocumentData();return this.definitions.filter(pl).forEach((F)=>this.generateSingleWebhook(F.webhook)),Object.assign(Object.assign(Object.assign({},D),$),{webhooks:this.webhookRefs})}generateComponents(){return this.generator.generateComponents()}generateSingleWebhook(D){let $=this.generator.generatePath(D);return this.webhookRefs[D.path]=Object.assign(Object.assign({},this.webhookRefs[D.path]),$),$}}var YB=(D)=>{let $=D.split("/");if($[0]==="")$.shift();return $},UZ=(D)=>{let{groups:$,path:F}=cl(D),X=YB(F);return dl(X,$)},cl=(D)=>{let $=[];return D=D.replace(/\{[^}]+\}/g,(F,X)=>{let J=`@${X}`;return $.push([J,F]),J}),{groups:$,path:D}},dl=(D,$)=>{for(let F=$.length-1;F>=0;F--){let[X]=$[F];for(let J=D.length-1;J>=0;J--)if(D[J].includes(X)){D[J]=D[J].replace(X,$[F][1]);break}}return D},P$={},_Z=(D,$)=>{if(D==="*")return"*";let F=D.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(F){let X=`${D}#${$}`;if(!P$[X])if(F[2])P$[X]=$&&$[0]!==":"&&$[0]!=="*"?[X,F[1],new RegExp(`^${F[2]}(?=/${$})`)]:[D,F[1],new RegExp(`^${F[2]}$`)];else P$[X]=[D,F[1],!0];return P$[X]}return null},X3=(D,$)=>{try{return $(D)}catch{return D.replace(/(?:%[0-9A-Fa-f]{2})+/g,(F)=>{try{return $(F)}catch{return F}})}},ll=(D)=>X3(D,decodeURI),GB=(D)=>{let $=D.url,F=$.indexOf("/",$.indexOf(":")+4),X=F;for(;X<$.length;X++){let J=$.charCodeAt(X);if(J===37){let G=$.indexOf("?",X),Y=$.indexOf("#",X),B=G===-1?Y===-1?void 0:Y:Y===-1?G:Math.min(G,Y),H=$.slice(F,B);return ll(H.includes("%25")?H.replace(/%25/g,"%2525"):H)}else if(J===63||J===35)break}return $.slice(F,X)};var AZ=(D)=>{let $=GB(D);return $.length>1&&$.at(-1)==="/"?$.slice(0,-1):$},L2=(D,$,...F)=>{if(F.length)$=L2($,...F);return`${D?.[0]==="/"?"":"/"}${D}${$==="/"?"":`${D?.at(-1)==="/"?"":"/"}${$?.[0]==="/"?$.slice(1):$}`}`},L$=(D)=>{if(D.charCodeAt(D.length-1)!==63||!D.includes(":"))return null;let $=D.split("/"),F=[],X="";return $.forEach((J)=>{if(J!==""&&!/\:/.test(J))X+="/"+J;else if(/\:/.test(J))if(/\?/.test(J)){if(F.length===0&&X==="")F.push("/");else F.push(X);let G=J.replace("?","");X+="/"+G,F.push(X)}else X+="/"+J}),F.filter((J,G,Y)=>Y.indexOf(J)===G)},JB=(D)=>{if(!/[%+]/.test(D))return D;if(D.indexOf("+")!==-1)D=D.replace(/\+/g," ");return D.indexOf("%")!==-1?X3(D,$7):D},KZ=(D,$,F)=>{let X;if(!F&&$&&!/[%+]/.test($)){let Y=D.indexOf("?",8);if(Y===-1)return;if(!D.startsWith($,Y+1))Y=D.indexOf(`&${$}`,Y+1);while(Y!==-1){let B=D.charCodeAt(Y+$.length+1);if(B===61){let H=Y+$.length+2,W=D.indexOf("&",H);return JB(D.slice(H,W===-1?void 0:W))}else if(B==38||isNaN(B))return"";Y=D.indexOf(`&${$}`,Y+1)}if(X=/[%+]/.test(D),!X)return}let J={};X??=/[%+]/.test(D);let G=D.indexOf("?",8);while(G!==-1){let Y=D.indexOf("&",G+1),B=D.indexOf("=",G);if(B>Y&&Y!==-1)B=-1;let H=D.slice(G+1,B===-1?Y===-1?void 0:Y:B);if(X)H=JB(H);if(G=Y,H==="")continue;let W;if(B===-1)W="";else if(W=D.slice(B+1,Y===-1?void 0:Y),X)W=JB(W);if(F){if(!(J[H]&&Array.isArray(J[H])))J[H]=[];J[H].push(W)}else J[H]??=W}return $?J[$]:J},OZ=KZ,CZ=(D,$)=>{return KZ(D,$,!0)},$7=decodeURIComponent;var il=/^[\w!#$%&'*.^`|~+-]+$/,nl=/^[ !#-:<-[\]-~]*$/,RZ=(D)=>{let $=0,F=D.length;while($<F){let X=D.charCodeAt($);if(X!==32&&X!==9)break;$++}while(F>$){let X=D.charCodeAt(F-1);if(X!==32&&X!==9)break;F--}return $===0&&F===D.length?D:D.slice($,F)},BB=(D,$)=>{if($&&D.indexOf($)===-1)return{};let F=D.split(";"),X={};for(let J of F){let G=J.indexOf("=");if(G===-1)continue;let Y=RZ(J.substring(0,G));if($&&$!==Y||!il.test(Y))continue;let B=RZ(J.substring(G+1));if(B.startsWith('"')&&B.endsWith('"'))B=B.slice(1,-1);if(nl.test(B)){if(X[Y]=B.indexOf("%")!==-1?X3(B,$7):B,$)break}}return X};var EZ=(D,$,F)=>{let X=D.req.raw.headers.get("Cookie");if(typeof $==="string"){if(!X)return;let G=$;if(F==="secure")G="__Secure-"+$;else if(F==="host")G="__Host-"+$;return BB(X,G)[G]}if(!X)return{};return BB(X)};var j$=class extends Error{res;status;constructor(D=500,$){super($?.message,{cause:$?.cause});this.res=$?.res,this.status=D}getResponse(){if(this.res)return new Response(this.res.body,{status:this.status,headers:this.res.headers});return new Response(this.message,{status:this.status})}};var MZ=(D,$)=>{return new Response(D,{headers:{"Content-Type":$}}).formData()};var sl=/^application\/([a-z-\.]+\+)?json(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/,rl=/^multipart\/form-data(;\s?boundary=[a-zA-Z0-9'"()+_,\-./:=?]+)?$/,ol=/^application\/x-www-form-urlencoded(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/,HB=(D,$)=>{return async(F,X)=>{let J={},G=F.req.header("Content-Type");switch(D){case"json":if(!G||!sl.test(G))break;try{J=await F.req.json()}catch{throw new j$(400,{message:"Malformed JSON in request body"})}break;case"form":{if(!G||!(rl.test(G)||ol.test(G)))break;let B;if(F.req.bodyCache.formData)B=await F.req.bodyCache.formData;else try{let W=await F.req.arrayBuffer();B=await MZ(W,G),F.req.bodyCache.formData=B}catch(W){let Q="Malformed FormData request.";throw Q+=W instanceof Error?` ${W.message}`:` ${String(W)}`,new j$(400,{message:Q})}let H=Object.create(null);B.forEach((W,Q)=>{if(Q.endsWith("[]"))(H[Q]??=[]).push(W);else if(Array.isArray(H[Q]))H[Q].push(W);else if(Object.hasOwn(H,Q))H[Q]=[H[Q],W];else H[Q]=W}),J=H;break}case"query":J=Object.fromEntries(Object.entries(F.req.queries()).map(([B,H])=>{return H.length===1?[B,H[0]]:[B,H]}));break;case"param":J=F.req.param();break;case"header":J=F.req.header();break;case"cookie":J=EZ(F);break}let Y=await $(J,F);if(Y instanceof Response)return Y;return F.req.addValidatedData(D,Y),await X()}};function al(D,$,F,X){return HB(D,async(J,G)=>{let Y=J;if(D==="header"&&"_def"in $||D==="header"&&"_zod"in $){let H=Object.keys("in"in $?$.in.shape:$.shape),W=Object.fromEntries(H.map((Q)=>[Q.toLowerCase(),Q]));Y=Object.fromEntries(Object.entries(J).map(([Q,U])=>[W[Q]||Q,U]))}let B=X&&X.validationFunction?await X.validationFunction($,Y):await $.safeParseAsync(Y);if(F){let H=await F({data:Y,...B,target:D},G);if(H){if(H instanceof Response)return H;if("response"in H)return H.response}}if(!B.success)return G.json(B,400);return B.data})}var h1=al;var WB=(D,$,F)=>{return(X,J)=>{let G=-1;return Y(0);async function Y(B){if(B<=G)throw Error("next() called multiple times");G=B;let H,W=!1,Q;if(D[B])Q=D[B][0][0],X.req.routeIndex=B;else Q=B===D.length&&J||void 0;if(Q)try{H=await Q(X,()=>Y(B+1))}catch(U){if(U instanceof Error&&$)X.error=U,H=await $(U,X),W=!0;else throw U}else if(X.finalized===!1&&F)H=await F(X);if(H&&(X.finalized===!1||W))X.res=H;return X}}};var ZZ=Symbol();var qZ=async(D,$=Object.create(null))=>{let{all:F=!1,dot:X=!1}=$,G=(D instanceof z$?D.raw.headers:D.headers).get("Content-Type");if(G?.startsWith("multipart/form-data")||G?.startsWith("application/x-www-form-urlencoded"))return tl(D,{all:F,dot:X});return{}};async function tl(D,$){let F=await D.formData();if(F)return el(F,$);return{}}function el(D,$){let F=Object.create(null);if(D.forEach((X,J)=>{if(!($.all||J.endsWith("[]")))F[J]=X;else Di(F,J,X)}),$.dot)Object.entries(F).forEach(([X,J])=>{if(X.includes("."))$i(F,X,J),delete F[X]});return F}var Di=(D,$,F)=>{if(D[$]!==void 0)if(Array.isArray(D[$]))D[$].push(F);else D[$]=[D[$],F];else if(!$.endsWith("[]"))D[$]=F;else D[$]=[F]},$i=(D,$,F)=>{if(/(?:^|\.)__proto__\./.test($))return;let X=D,J=$.split(".");J.forEach((G,Y)=>{if(Y===J.length-1)X[G]=F;else{if(!X[G]||typeof X[G]!=="object"||Array.isArray(X[G])||X[G]instanceof File)X[G]=Object.create(null);X=X[G]}})};var NZ=(D)=>X3(D,$7),z$=class{raw;#D;#$;routeIndex=0;path;bodyCache={};constructor(D,$="/",F=[[]]){this.raw=D,this.path=$,this.#$=F,this.#D={}}param(D){return D?this.#X(D):this.#Y()}#X(D){let $=this.#$[0][this.routeIndex][1][D],F=this.#J($);return F&&/\%/.test(F)?NZ(F):F}#Y(){let D={},$=Object.keys(this.#$[0][this.routeIndex][1]);for(let F of $){let X=this.#J(this.#$[0][this.routeIndex][1][F]);if(X!==void 0)D[F]=/\%/.test(X)?NZ(X):X}return D}#J(D){return this.#$[1]?this.#$[1][D]:D}query(D){return OZ(this.url,D)}queries(D){return CZ(this.url,D)}header(D){if(D)return this.raw.headers.get(D)??void 0;let $={};return this.raw.headers.forEach((F,X)=>{$[X]=F}),$}async parseBody(D){return qZ(this,D)}#F=(D)=>{let{bodyCache:$,raw:F}=this,X=$[D];if(X)return X;let J=Object.keys($)[0];if(J)return $[J].then((G)=>{if(J==="json")G=JSON.stringify(G);return new Response(G)[D]()});return $[D]=F[D]()};json(){return this.#F("text").then((D)=>JSON.parse(D))}text(){return this.#F("text")}arrayBuffer(){return this.#F("arrayBuffer")}blob(){return this.#F("blob")}formData(){return this.#F("formData")}addValidatedData(D,$){this.#D[D]=$}valid(D){return this.#D[D]}get url(){return this.raw.url}get method(){return this.raw.method}get[ZZ](){return this.#$}get matchedRoutes(){return this.#$[0].map(([[,D]])=>D)}get routePath(){return this.#$[0].map(([[,D]])=>D)[this.routeIndex].path}};var I$={Stringify:1,BeforeStream:2,Stream:3},Fi=(D,$)=>{let F=new String(D);return F.isEscaped=!0,F.callbacks=$,F};var F7=async(D,$,F,X,J)=>{if(typeof D==="object"&&!(D instanceof String)){if(!(D instanceof Promise))D=D.toString();if(D instanceof Promise)D=await D}let G=D.callbacks;if(!G?.length)return Promise.resolve(D);if(J)J[0]+=D;else J=[D];let Y=Promise.all(G.map((B)=>B({phase:$,buffer:J,context:X}))).then((B)=>Promise.all(B.filter(Boolean).map((H)=>F7(H,$,!1,X,J))).then(()=>J[0]));if(F)return Fi(await Y,G);else return Y};var PZ="text/plain; charset=UTF-8",VB=(D,$)=>{return{"Content-Type":D,...$}},X7=(D,$)=>new Response(D,$),LZ=class{#D;#$;env={};#X;finalized=!1;error;#Y;#J;#F;#W;#H;#B;#G;#Q;#U;constructor(D,$){if(this.#D=D,$)this.#J=$.executionCtx,this.env=$.env,this.#B=$.notFoundHandler,this.#U=$.path,this.#Q=$.matchResult}get req(){return this.#$??=new z$(this.#D,this.#U,this.#Q),this.#$}get event(){if(this.#J&&"respondWith"in this.#J)return this.#J;else throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#J)return this.#J;else throw Error("This context has no ExecutionContext")}get res(){return this.#F||=X7(null,{headers:this.#G??=new Headers})}set res(D){if(this.#F&&D){D=X7(D.body,D);for(let[$,F]of this.#F.headers.entries()){if($==="content-type")continue;if($==="set-cookie"){let X=this.#F.headers.getSetCookie();D.headers.delete("set-cookie");for(let J of X)D.headers.append("set-cookie",J)}else D.headers.set($,F)}}this.#F=D,this.finalized=!0}render=(...D)=>{return this.#H??=($)=>this.html($),this.#H(...D)};setLayout=(D)=>this.#W=D;getLayout=()=>this.#W;setRenderer=(D)=>{this.#H=D};header=(D,$,F)=>{if(this.finalized)this.#F=X7(this.#F.body,this.#F);let X=this.#F?this.#F.headers:this.#G??=new Headers;if($===void 0)X.delete(D);else if(F?.append)X.append(D,$);else X.set(D,$)};status=(D)=>{this.#Y=D};set=(D,$)=>{this.#X??=new Map,this.#X.set(D,$)};get=(D)=>{return this.#X?this.#X.get(D):void 0};get var(){if(!this.#X)return{};return Object.fromEntries(this.#X)}#V(D,$,F){let X=this.#F?new Headers(this.#F.headers):this.#G??new Headers;if(typeof $==="object"&&"headers"in $){let G=$.headers instanceof Headers?$.headers:new Headers($.headers);for(let[Y,B]of G)if(Y.toLowerCase()==="set-cookie")X.append(Y,B);else X.set(Y,B)}if(F)for(let[G,Y]of Object.entries(F))if(typeof Y==="string")X.set(G,Y);else{X.delete(G);for(let B of Y)X.append(G,B)}let J=typeof $==="number"?$:$?.status??this.#Y;return X7(D,{status:J,headers:X})}newResponse=(...D)=>this.#V(...D);body=(D,$,F)=>this.#V(D,$,F);text=(D,$,F)=>{return!this.#G&&!this.#Y&&!$&&!F&&!this.finalized?new Response(D):this.#V(D,$,VB(PZ,F))};json=(D,$,F)=>{return this.#V(JSON.stringify(D),$,VB("application/json",F))};html=(D,$,F)=>{let X=(J)=>this.#V(J,$,VB("text/html; charset=UTF-8",F));return typeof D==="object"?F7(D,I$.Stringify,!1,{}).then(X):X(D)};redirect=(D,$)=>{let F=String(D);return this.header("Location",!/[^\x00-\xFF]/.test(F)?F:encodeURI(F)),this.newResponse(null,$??302)};notFound=()=>{return this.#B??=()=>X7(),this.#B(this)}};var ZD="ALL",jZ="all",zZ=["get","post","put","delete","options","patch"],T$="Can not add a route since the matcher is already built.",w$=class extends Error{};var IZ="__COMPOSED_HANDLER";var Xi=(D)=>{return D.text("404 Not Found",404)},TZ=(D,$)=>{if("getResponse"in D){let F=D.getResponse();return $.newResponse(F.body,F)}return console.error(D),$.text("Internal Server Error",500)},wZ=class D{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#D="/";routes=[];constructor($={}){[...zZ,jZ].forEach((G)=>{this[G]=(Y,...B)=>{if(typeof Y==="string")this.#D=Y;else this.#Y(G,this.#D,Y);return B.forEach((H)=>{this.#Y(G,this.#D,H)}),this}}),this.on=(G,Y,...B)=>{for(let H of[Y].flat()){this.#D=H;for(let W of[G].flat())B.map((Q)=>{this.#Y(W.toUpperCase(),this.#D,Q)})}return this},this.use=(G,...Y)=>{if(typeof G==="string")this.#D=G;else this.#D="*",Y.unshift(G);return Y.forEach((B)=>{this.#Y(ZD,this.#D,B)}),this};let{strict:X,...J}=$;Object.assign(this,J),this.getPath=X??!0?$.getPath??GB:AZ}#$(){let $=new D({router:this.router,getPath:this.getPath});return $.errorHandler=this.errorHandler,$.#X=this.#X,$.routes=this.routes,$}#X=Xi;errorHandler=TZ;route($,F){let X=this.basePath($);return F.routes.map((J)=>{let G;if(F.errorHandler===TZ)G=J.handler;else G=async(Y,B)=>(await WB([],F.errorHandler)(Y,()=>J.handler(Y,B))).res,G[IZ]=J.handler;X.#Y(J.method,J.path,G)}),this}basePath($){let F=this.#$();return F._basePath=L2(this._basePath,$),F}onError=($)=>{return this.errorHandler=$,this};notFound=($)=>{return this.#X=$,this};mount($,F,X){let J,G;if(X)if(typeof X==="function")G=X;else if(G=X.optionHandler,X.replaceRequest===!1)J=(H)=>H;else J=X.replaceRequest;let Y=G?(H)=>{let W=G(H);return Array.isArray(W)?W:[W]}:(H)=>{let W=void 0;try{W=H.executionCtx}catch{}return[H.env,W]};J||=(()=>{let H=L2(this._basePath,$),W=H==="/"?0:H.length;return(Q)=>{let U=new URL(Q.url);return U.pathname=U.pathname.slice(W)||"/",new Request(U,Q)}})();let B=async(H,W)=>{let Q=await F(J(H.req.raw),...Y(H));if(Q)return Q;await W()};return this.#Y(ZD,L2($,"*"),B),this}#Y($,F,X){$=$.toUpperCase(),F=L2(this._basePath,F);let J={basePath:this._basePath,path:F,method:$,handler:X};this.router.add($,F,[X,J]),this.routes.push(J)}#J($,F){if($ instanceof Error)return this.errorHandler($,F);throw $}#F($,F,X,J){if(J==="HEAD")return(async()=>new Response(null,await this.#F($,F,X,"GET")))();let G=this.getPath($,{env:X}),Y=this.router.match(J,G),B=new LZ($,{path:G,matchResult:Y,env:X,executionCtx:F,notFoundHandler:this.#X});if(Y[0].length===1){let W;try{W=Y[0][0][0][0](B,async()=>{B.res=await this.#X(B)})}catch(Q){return this.#J(Q,B)}return W instanceof Promise?W.then((Q)=>Q||(B.finalized?B.res:this.#X(B))).catch((Q)=>this.#J(Q,B)):W??this.#X(B)}let H=WB(Y[0],this.errorHandler,this.#X);return(async()=>{try{let W=await H(B);if(!W.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return W.res}catch(W){return this.#J(W,B)}})()}fetch=($,...F)=>{return this.#F($,F[1],F[0],$.method)};request=($,F,X,J)=>{if($ instanceof Request)return this.fetch(F?new Request($,F):$,X,J);return $=$.toString(),this.fetch(new Request(/^https?:\/\//.test($)?$:`http://localhost${L2("/",$)}`,F),X,J)};fire=()=>{addEventListener("fetch",($)=>{$.respondWith(this.#F($.request,$,void 0,$.request.method))})}};var J7=[];function S$(D,$){let F=this.buildAllMatchers(),X=(J,G)=>{let Y=F[J]||F[ZD],B=Y[2][G];if(B)return B;let H=G.match(Y[0]);if(!H)return[[],J7];let W=H.indexOf("",1);return[Y[1][W],H]};return this.match=X,X(D,$)}var b$="[^/]+",Y7=".*",G7="(?:|/.*)",x1=Symbol(),Ji=new Set(".\\+*[^]$()");function Yi(D,$){if(D.length===1)return $.length===1?D<$?-1:1:-1;if($.length===1)return 1;if(D===Y7||D===G7)return 1;else if($===Y7||$===G7)return-1;if(D===b$)return 1;else if($===b$)return-1;return D.length===$.length?D<$?-1:1:$.length-D.length}var SZ=class D{#D;#$;#X=Object.create(null);insert($,F,X,J,G){if($.length===0){if(this.#D!==void 0)throw x1;if(G)return;this.#D=F;return}let[Y,...B]=$,H=Y==="*"?B.length===0?["","",Y7]:["","",b$]:Y==="/*"?["","",G7]:Y.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),W;if(H){let Q=H[1],U=H[2]||b$;if(Q&&H[2]){if(U===".*")throw x1;if(U=U.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(U))throw x1}if(W=this.#X[U],!W){if(Object.keys(this.#X).some((_)=>_!==Y7&&_!==G7))throw x1;if(G)return;if(W=this.#X[U]=new D,Q!=="")W.#$=J.varIndex++}if(!G&&Q!=="")X.push([Q,W.#$])}else if(W=this.#X[Y],!W){if(Object.keys(this.#X).some((Q)=>Q.length>1&&Q!==Y7&&Q!==G7))throw x1;if(G)return;W=this.#X[Y]=new D}W.insert(B,F,X,J,G)}buildRegExpStr(){let F=Object.keys(this.#X).sort(Yi).map((X)=>{let J=this.#X[X];return(typeof J.#$==="number"?`(${X})@${J.#$}`:Ji.has(X)?`\\${X}`:X)+J.buildRegExpStr()});if(typeof this.#D==="number")F.unshift(`#${this.#D}`);if(F.length===0)return"";if(F.length===1)return F[0];return"(?:"+F.join("|")+")"}};var bZ=class{#D={varIndex:0};#$=new SZ;insert(D,$,F){let X=[],J=[];for(let Y=0;;){let B=!1;if(D=D.replace(/\{[^}]+\}/g,(H)=>{let W=`@\\${Y}`;return J[Y]=[W,H],Y++,B=!0,W}),!B)break}let G=D.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let Y=J.length-1;Y>=0;Y--){let[B]=J[Y];for(let H=G.length-1;H>=0;H--)if(G[H].indexOf(B)!==-1){G[H]=G[H].replace(B,J[Y][1]);break}}return this.#$.insert(G,$,X,this.#D,F),X}buildRegExp(){let D=this.#$.buildRegExpStr();if(D==="")return[/^$/,[],[]];let $=0,F=[],X=[];return D=D.replace(/#(\d+)|@(\d+)|\.\*\$/g,(J,G,Y)=>{if(G!==void 0)return F[++$]=Number(G),"$()";if(Y!==void 0)return X[Number(Y)]=++$,"";return""}),[new RegExp(`^${D}`),F,X]}};var Gi=[/^$/,[],Object.create(null)],fZ=Object.create(null);function kZ(D){return fZ[D]??=new RegExp(D==="*"?"":`^${D.replace(/\/\*$|([.\\+*[^\]$()])/g,($,F)=>F?`\\${F}`:"(?:|/.*)")}$`)}function Bi(){fZ=Object.create(null)}function Hi(D){let $=new bZ,F=[];if(D.length===0)return Gi;let X=D.map((W)=>[!/\*|\/:/.test(W[0]),...W]).sort(([W,Q],[U,_])=>W?1:U?-1:Q.length-_.length),J=Object.create(null);for(let W=0,Q=-1,U=X.length;W<U;W++){let[_,A,C]=X[W];if(_)J[A]=[C.map(([K])=>[K,Object.create(null)]),J7];else Q++;let O;try{O=$.insert(A,Q,_)}catch(K){throw K===x1?new w$(A):K}if(_)continue;F[Q]=C.map(([K,R])=>{let q=Object.create(null);R-=1;for(;R>=0;R--){let[N,S]=O[R];q[N]=S}return[K,q]})}let[G,Y,B]=$.buildRegExp();for(let W=0,Q=F.length;W<Q;W++)for(let U=0,_=F[W].length;U<_;U++){let A=F[W][U]?.[1];if(!A)continue;let C=Object.keys(A);for(let O=0,K=C.length;O<K;O++)A[C[O]]=B[A[C[O]]]}let H=[];for(let W in Y)H[W]=F[Y[W]];return[G,H,J]}function J3(D,$){if(!D)return;for(let F of Object.keys(D).sort((X,J)=>J.length-X.length))if(kZ(F).test($))return[...D[F]];return}var f$=class{name="RegExpRouter";#D;#$;constructor(){this.#D={[ZD]:Object.create(null)},this.#$={[ZD]:Object.create(null)}}add(D,$,F){let X=this.#D,J=this.#$;if(!X||!J)throw Error(T$);if(!X[D])[X,J].forEach((B)=>{B[D]=Object.create(null),Object.keys(B[ZD]).forEach((H)=>{B[D][H]=[...B[ZD][H]]})});if($==="/*")$="*";let G=($.match(/\/:/g)||[]).length;if(/\*$/.test($)){let B=kZ($);if(D===ZD)Object.keys(X).forEach((H)=>{X[H][$]||=J3(X[H],$)||J3(X[ZD],$)||[]});else X[D][$]||=J3(X[D],$)||J3(X[ZD],$)||[];Object.keys(X).forEach((H)=>{if(D===ZD||D===H)Object.keys(X[H]).forEach((W)=>{B.test(W)&&X[H][W].push([F,G])})}),Object.keys(J).forEach((H)=>{if(D===ZD||D===H)Object.keys(J[H]).forEach((W)=>B.test(W)&&J[H][W].push([F,G]))});return}let Y=L$($)||[$];for(let B=0,H=Y.length;B<H;B++){let W=Y[B];Object.keys(J).forEach((Q)=>{if(D===ZD||D===Q)J[Q][W]||=[...J3(X[Q],W)||J3(X[ZD],W)||[]],J[Q][W].push([F,G-H+B+1])})}}match=S$;buildAllMatchers(){let D=Object.create(null);return Object.keys(this.#$).concat(Object.keys(this.#D)).forEach(($)=>{D[$]||=this.#X($)}),this.#D=this.#$=void 0,Bi(),D}#X(D){let $=[],F=D===ZD;if([this.#D,this.#$].forEach((X)=>{let J=X[D]?Object.keys(X[D]).map((G)=>[G,X[D][G]]):[];if(J.length!==0)F||=!0,$.push(...J);else if(D!==ZD)$.push(...Object.keys(X[ZD]).map((G)=>[G,X[ZD][G]]))}),!F)return null;else return Hi($)}};var Wi=class{name="PreparedRegExpRouter";#D;#$;constructor(D,$){this.#D=D,this.#$=$}#X(D,$){let F=this.#D[D];F[1].forEach((X)=>X&&X.push($)),Object.values(F[2]).forEach((X)=>X[0].push($))}#Y(D,$,F,X,J){let G=this.#D[D];if(!J)G[2][$][0].push([F,{}]);else X.forEach((Y)=>{if(typeof Y==="number")G[1][Y].push([F,J]);else G[2][Y||$][0].push([F,J])})}add(D,$,F){if(!this.#D[D]){let J=this.#D[ZD],G={};for(let Y in J[2])G[Y]=[J[2][Y][0].slice(),J7];this.#D[D]=[J[0],J[1].map((Y)=>Array.isArray(Y)?Y.slice():0),G]}if($==="/*"||$==="*"){let J=[F,{}];if(D===ZD)for(let G in this.#D)this.#X(G,J);else this.#X(D,J);return}let X=this.#$[$];if(!X)throw Error(`Path ${$} is not registered`);for(let[J,G]of X)if(D===ZD)for(let Y in this.#D)this.#Y(Y,$,F,J,G);else this.#Y(D,$,F,J,G)}buildAllMatchers(){return this.#D}match=S$};var QB=class{name="SmartRouter";#D=[];#$=[];constructor(D){this.#D=D.routers}add(D,$,F){if(!this.#$)throw Error(T$);this.#$.push([D,$,F])}match(D,$){if(!this.#$)throw Error("Fatal error");let F=this.#D,X=this.#$,J=F.length,G=0,Y;for(;G<J;G++){let B=F[G];try{for(let H=0,W=X.length;H<W;H++)B.add(...X[H]);Y=B.match(D,$)}catch(H){if(H instanceof w$)continue;throw H}this.match=B.match.bind(B),this.#D=[B],this.#$=void 0;break}if(G===J)throw Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,Y}get activeRouter(){if(this.#$||this.#D.length!==1)throw Error("No active router has been determined yet.");return this.#D[0]}};var B7=Object.create(null),Vi=(D)=>{for(let $ in D)return!0;return!1},vZ=class D{#D;#$;#X;#Y=0;#J=B7;constructor($,F,X){if(this.#$=X||Object.create(null),this.#D=[],$&&F){let J=Object.create(null);J[$]={handler:F,possibleKeys:[],score:0},this.#D=[J]}this.#X=[]}insert($,F,X){this.#Y=++this.#Y;let J=this,G=UZ(F),Y=[];for(let B=0,H=G.length;B<H;B++){let W=G[B],Q=G[B+1],U=_Z(W,Q),_=Array.isArray(U)?U[0]:W;if(_ in J.#$){if(J=J.#$[_],U)Y.push(U[1]);continue}if(J.#$[_]=new D,U)J.#X.push(U),Y.push(U[1]);J=J.#$[_]}return J.#D.push({[$]:{handler:X,possibleKeys:Y.filter((B,H,W)=>W.indexOf(B)===H),score:this.#Y}}),J}#F($,F,X,J,G){for(let Y=0,B=F.#D.length;Y<B;Y++){let H=F.#D[Y],W=H[X]||H[ZD],Q={};if(W!==void 0){if(W.params=Object.create(null),$.push(W),J!==B7||G&&G!==B7)for(let U=0,_=W.possibleKeys.length;U<_;U++){let A=W.possibleKeys[U],C=Q[W.score];W.params[A]=G?.[A]&&!C?G[A]:J[A]??G?.[A],Q[W.score]=!0}}}}search($,F){let X=[];this.#J=B7;let G=[this],Y=YB(F),B=[],H=Y.length,W=null;for(let Q=0;Q<H;Q++){let U=Y[Q],_=Q===H-1,A=[];for(let O=0,K=G.length;O<K;O++){let R=G[O],q=R.#$[U];if(q)if(q.#J=R.#J,_){if(q.#$["*"])this.#F(X,q.#$["*"],$,R.#J);this.#F(X,q,$,R.#J)}else A.push(q);for(let N=0,S=R.#X.length;N<S;N++){let b=R.#X[N],L=R.#J===B7?{}:{...R.#J};if(b==="*"){let QD=R.#$["*"];if(QD)this.#F(X,QD,$,R.#J),QD.#J=L,A.push(QD);continue}let[z,j,d]=b;if(!U&&!(d instanceof RegExp))continue;let VD=R.#$[z];if(d instanceof RegExp){if(W===null){W=Array(H);let rD=F[0]==="/"?1:0;for(let j2=0;j2<H;j2++)W[j2]=rD,rD+=Y[j2].length+1}let QD=F.substring(W[Q]),$D=d.exec(QD);if($D){if(L[j]=$D[0],this.#F(X,VD,$,R.#J,L),Vi(VD.#$)){VD.#J=L;let rD=$D[0].match(/\//)?.length??0;(B[rD]||=[]).push(VD)}continue}}if(d===!0||d.test(U))if(L[j]=U,_){if(this.#F(X,VD,$,L,R.#J),VD.#$["*"])this.#F(X,VD.#$["*"],$,L,R.#J)}else VD.#J=L,A.push(VD)}}let C=B.shift();G=C?A.concat(C):A}if(X.length>1)X.sort((Q,U)=>{return Q.score-U.score});return[X.map(({handler:Q,params:U})=>[Q,U])]}};var UB=class{name="TrieRouter";#D;constructor(){this.#D=new vZ}add(D,$,F){let X=L$($);if(X){for(let J=0,G=X.length;J<G;J++)this.#D.insert(D,X[J],F);return}this.#D.insert(D,$,F)}match(D,$){return this.#D.search(D,$)}};var _B=class extends wZ{constructor(D={}){super(D);this.router=D.router??new QB({routers:[new f$,new UB]})}};yD();var t0=class D extends _B{openAPIRegistry;defaultHook;constructor($){super($);this.openAPIRegistry=new DB,this.defaultHook=$?.defaultHook}openapi=({middleware:$,hide:F,...X},J,G=this.defaultHook)=>{if(!F)this.openAPIRegistry.registerPath(X);let Y=[];if(X.request?.query){let W=h1("query",X.request.query,G);Y.push(W)}if(X.request?.params){let W=h1("param",X.request.params,G);Y.push(W)}if(X.request?.headers){let W=h1("header",X.request.headers,G);Y.push(W)}if(X.request?.cookies){let W=h1("cookie",X.request.cookies,G);Y.push(W)}let B=X.request?.body?.content;if(B)for(let W of Object.keys(B)){if(!B[W])continue;let Q=B[W].schema;if(!(Q instanceof YD))continue;if(xZ(W)){let U=h1("json",Q,G);if(X.request?.body?.required)Y.push(U);else{let _=async(A,C)=>{if(A.req.header("content-type")){if(xZ(A.req.header("content-type")))return await U(A,C)}A.req.addValidatedData("json",{}),await C()};Y.push(_)}}if(gZ(W)){let U=h1("form",Q,G);if(X.request?.body?.required)Y.push(U);else{let _=async(A,C)=>{if(A.req.header("content-type")){if(gZ(A.req.header("content-type")))return await U(A,C)}A.req.addValidatedData("form",{}),await C()};Y.push(_)}}}let H=$?Array.isArray($)?$:[$]:[];return this.on([X.method],X.path.replaceAll(/\/{(.+?)}/g,"/:$1"),...H,...Y,J),this};getOpenAPIDocument=($)=>{let X=new FB(this.openAPIRegistry.definitions).generateDocument($);return this._basePath?hZ(X,this._basePath):X};getOpenAPI31Document=($)=>{let X=new XB(this.openAPIRegistry.definitions).generateDocument($);return this._basePath?hZ(X,this._basePath):X};doc=($,F)=>{return this.get($,(X)=>{let J=typeof F==="function"?F(X):F;try{let G=this.getOpenAPIDocument(J);return X.json(G)}catch(G){return X.json(G,500)}})};doc31=($,F)=>{return this.get($,(X)=>{let J=typeof F==="function"?F(X):F;try{let G=this.getOpenAPI31Document(J);return X.json(G)}catch(G){return X.json(G,500)}})};route($,F){let X=$.replaceAll(/:([^\/]+)/g,"{$1}");if(super.route($,F),!(F instanceof D))return this;return F.openAPIRegistry.definitions.forEach((J)=>{switch(J.type){case"component":return this.openAPIRegistry.registerComponent(J.componentType,J.name,J.component);case"route":{this.openAPIRegistry.registerPath({...J.route,path:L2(X,F._basePath.replaceAll(/:([^\/]+)/g,"{$1}"),J.route.path)});return}case"webhook":{this.openAPIRegistry.registerWebhook({...J.webhook,path:L2(X,F._basePath.replaceAll(/:([^\/]+)/g,"{$1}"),J.webhook.path)});return}case"schema":return this.openAPIRegistry.register(J.schema._def.openapi._internal.refId,J.schema);case"parameter":return this.openAPIRegistry.registerParameter(J.schema._def.openapi._internal.refId,J.schema);default:throw Error(`Unknown registry type: ${J}`)}}),this}basePath($){return new D({...super.basePath($),defaultHook:this.defaultHook})}};iM(V);function hZ(D,$){let F={};return Object.keys(D.paths).forEach((X)=>{F[L2($.replaceAll(/:([^\/]+)/g,"{$1}"),X)]=D.paths[X]}),{...D,paths:F}}function xZ(D){return/^application\/([a-z-\.]+\+)?json/.test(D)}function gZ(D){return D.startsWith("multipart/form-data")||D.startsWith("application/x-www-form-urlencoded")}yD();var yZ=[["--theme-","--scalar-"],["--sidebar-","--scalar-sidebar-"]],Qi=yZ.map(([D])=>D);function AB(D){if(!Qi.some((F)=>D.includes(F)))return D;return console.warn("DEPRECATION WARNING: It looks like you're using legacy CSS variables in your custom CSS string. Please migrate them to use the updated prefixes. See https://github.com/scalar/scalar/blob/main/documentation/themes.md#theme-prefix-changes"),yZ.reduce((F,[X,J])=>F.replaceAll(X,J),D)}var Ui=V.enum(["alternate","default","moon","purple","solarized","bluePlanet","deepSpace","saturn","kepler","elysiajs","fastify","mars","none"]),_i=V.enum(["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]),Ai=V.enum(["adonisjs","docusaurus","dotnet","elysiajs","express","fastapi","fastify","go","hono","html","laravel","litestar","nestjs","nextjs","nitro","nuxt","platformatic","react","rust","vue"]).nullable(),OB=V.object({url:V.string().optional(),content:V.union([V.string(),V.record(V.any()),V.function().returns(V.record(V.any())),V.null()]).optional(),title:V.string().optional(),slug:V.string().optional()}),Ki=V.object({basePath:V.string()}),mZ=V.object({authentication:V.any().optional(),baseServerURL:V.string().optional(),hideClientButton:V.boolean().optional().default(!1).catch(!1),proxyUrl:V.string().optional(),searchHotKey:_i.optional(),servers:V.array(V.any()).optional(),showSidebar:V.boolean().optional().default(!0).catch(!0),spec:OB.optional(),theme:Ui.optional().default("default").catch("default"),_integration:Ai.optional()}),uZ="https://api.scalar.com/request-proxy",KB="https://proxy.scalar.com",pZ=mZ.merge(V.object({layout:V.enum(["modern","classic"]).optional().default("modern").catch("modern"),proxy:V.string().optional(),isEditable:V.boolean().optional().default(!1).catch(!1),hideModels:V.boolean().optional().default(!1).catch(!1),hideDownloadButton:V.boolean().optional().default(!1).catch(!1),hideTestRequestButton:V.boolean().optional().default(!1).catch(!1),hideSearch:V.boolean().optional().default(!1).catch(!1),darkMode:V.boolean().optional(),forceDarkModeState:V.enum(["dark","light"]).optional(),hideDarkModeToggle:V.boolean().optional().default(!1).catch(!1),metaData:V.any().optional(),favicon:V.string().optional(),hiddenClients:V.union([V.record(V.union([V.boolean(),V.array(V.string())])),V.array(V.string()),V.literal(!0)]).optional(),defaultHttpClient:V.object({targetKey:V.custom(),clientKey:V.string()}).optional(),customCss:V.string().optional(),onSpecUpdate:V.function().args(V.string()).returns(V.void()).optional(),onServerChange:V.function().args(V.string()).returns(V.void()).optional(),pathRouting:Ki.optional(),generateHeadingSlug:V.function().args(V.object({slug:V.string().default("headingSlug")})).returns(V.string()).optional(),generateModelSlug:V.function().args(V.object({name:V.string().default("modelName")})).returns(V.string()).optional(),generateTagSlug:V.function().args(V.object({name:V.string().default("tagName")})).returns(V.string()).optional(),generateOperationSlug:V.function().args(V.object({path:V.string(),operationId:V.string().optional(),method:V.string(),summary:V.string().optional()})).returns(V.string()).optional(),generateWebhookSlug:V.function().args(V.object({name:V.string(),method:V.string().optional()})).returns(V.string()).optional(),onLoaded:V.function().returns(V.void()).optional(),redirect:V.function().args(V.string()).returns(V.string().nullable().optional()).optional(),withDefaultFonts:V.boolean().optional().default(!0).catch(!0),defaultOpenAllTags:V.boolean().optional(),tagsSorter:V.union([V.literal("alpha"),V.function().args(V.any(),V.any()).returns(V.number())]).optional(),operationsSorter:V.union([V.literal("alpha"),V.literal("method"),V.function().args(V.any(),V.any()).returns(V.number())]).optional()})),Oi=pZ.merge(V.object({spec:V.object({sources:V.array(OB)})})),cZ=(D)=>{let $={...D};if($.customCss)$.customCss=AB($.customCss);if($.proxy){if(console.warn("[DEPRECATED] You\u2019re using the deprecated 'proxy' attribute, rename it to 'proxyUrl' or update the package."),!$.proxyUrl)$.proxyUrl=$.proxy;delete $.proxy}if($.proxyUrl===uZ)console.warn(`[DEPRECATED] Warning: configuration.proxyUrl points to our old proxy (${uZ}).`),console.warn(`[DEPRECATED] We are overwriting the value and use the new proxy URL (${KB}) instead.`),console.warn(`[DEPRECATED] Action Required: You should manually update your configuration to use the new URL (${KB}). Read more: https://github.com/scalar/scalar`),$.proxyUrl=KB;return $},CB=pZ.transform(cZ),Ci=Oi.transform(cZ);yD();var RB=V.object({cdn:V.string().optional().default("https://cdn.jsdelivr.net/npm/@scalar/api-reference"),pageTitle:V.string().optional().default("Scalar API Reference")});var dZ=(D,$="")=>{let{cdn:F,pageTitle:X,...J}=D,G=RB.parse({cdn:F,pageTitle:X,customTheme:$}),Y=CB.parse(J);return`
|
|
362
|
-
<!DOCTYPE html>
|
|
363
|
-
<html>
|
|
364
|
-
<head>
|
|
365
|
-
<title>${G.pageTitle}</title>
|
|
366
|
-
<meta charset="utf-8" />
|
|
367
|
-
<meta
|
|
368
|
-
name="viewport"
|
|
369
|
-
content="width=device-width, initial-scale=1" />
|
|
370
|
-
<style>
|
|
371
|
-
${D.theme?"":$}
|
|
372
|
-
</style>
|
|
373
|
-
</head>
|
|
374
|
-
<body>
|
|
375
|
-
${Ri(Y,G.cdn)}
|
|
376
|
-
</body>
|
|
377
|
-
</html>
|
|
378
|
-
`};function Ri(D,$){return`
|
|
379
|
-
<script
|
|
380
|
-
id="api-reference"
|
|
381
|
-
type="application/json"
|
|
382
|
-
data-configuration="${Ei(D)}">${Mi(D)}</script>
|
|
383
|
-
<script src="${$}"></script>
|
|
384
|
-
`}var Ei=(D)=>{let $={...D};if(!$.spec?.url)delete $.spec;else if($.spec?.content)delete $.spec?.content;return JSON.stringify($).split('"').join(""")},Mi=(D)=>D.spec?.content?typeof D.spec?.content==="function"?JSON.stringify(D.spec?.content()):JSON.stringify(D.spec?.content):"";var Zi={_integration:"hono"},qi=`
|
|
385
|
-
.light-mode {
|
|
386
|
-
color-scheme: light;
|
|
387
|
-
--scalar-color-1: #2a2f45;
|
|
388
|
-
--scalar-color-2: #757575;
|
|
389
|
-
--scalar-color-3: #8e8e8e;
|
|
390
|
-
--scalar-color-disabled: #b4b1b1;
|
|
391
|
-
--scalar-color-ghost: #a7a7a7;
|
|
392
|
-
--scalar-color-accent: #0099ff;
|
|
393
|
-
--scalar-background-1: #fff;
|
|
394
|
-
--scalar-background-2: #f6f6f6;
|
|
395
|
-
--scalar-background-3: #e7e7e7;
|
|
396
|
-
--scalar-background-4: rgba(0, 0, 0, 0.06);
|
|
397
|
-
--scalar-background-accent: #8ab4f81f;
|
|
28
|
+
try_exec_bun "${AIWORKER_BUN_BIN:-}" "$@"
|
|
398
29
|
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
--scalar-lifted-brightness: 1;
|
|
403
|
-
--scalar-backdrop-brightness: 1;
|
|
30
|
+
if command -v bun >/dev/null 2>&1; then
|
|
31
|
+
exec "$(command -v bun)" "$AIWORKER_BUN_BUNDLE" "$@"
|
|
32
|
+
fi
|
|
404
33
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
34
|
+
if [ -n "${BUN_INSTALL:-}" ]; then
|
|
35
|
+
try_exec_bun "$BUN_INSTALL/bin/bun" "$@"
|
|
36
|
+
fi
|
|
408
37
|
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
38
|
+
if [ -n "${HOME:-}" ]; then
|
|
39
|
+
try_exec_bun "$HOME/.bun/bin/bun" "$@"
|
|
40
|
+
fi
|
|
412
41
|
|
|
413
|
-
|
|
414
|
-
--scalar-color-red: #ef0006;
|
|
415
|
-
--scalar-color-yellow: #edbe20;
|
|
416
|
-
--scalar-color-blue: #0082d0;
|
|
417
|
-
--scalar-color-orange: #fb892c;
|
|
418
|
-
--scalar-color-purple: #5203d1;
|
|
419
|
-
}
|
|
42
|
+
AIWORKER_ARGS_DISPLAY=${*:-"--help"}
|
|
420
43
|
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
--scalar-color-1: rgba(255, 255, 245, .86);
|
|
424
|
-
--scalar-color-2: rgba(255, 255, 245, .6);
|
|
425
|
-
--scalar-color-3: rgba(255, 255, 245, .38);
|
|
426
|
-
--scalar-color-disabled: rgba(255, 255, 245, .25);
|
|
427
|
-
--scalar-color-ghost: rgba(255, 255, 245, .25);
|
|
428
|
-
--scalar-color-accent: #e36002;
|
|
429
|
-
--scalar-background-1: #1e1e20;
|
|
430
|
-
--scalar-background-2: #2a2a2a;
|
|
431
|
-
--scalar-background-3: #505053;
|
|
432
|
-
--scalar-background-4: rgba(255, 255, 255, 0.06);
|
|
433
|
-
--scalar-background-accent: #e360021f;
|
|
44
|
+
cat >&2 <<EOF
|
|
45
|
+
[aiworker] Bun runtime was not found.
|
|
434
46
|
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
--scalar-scrollbar-color-active: rgba(255, 255, 255, 0.48);
|
|
438
|
-
--scalar-lifted-brightness: 1.45;
|
|
439
|
-
--scalar-backdrop-brightness: 0.5;
|
|
47
|
+
AIWorker CLI is Bun-native. Install Bun and make sure "bun" is on PATH:
|
|
48
|
+
curl -fsSL https://bun.sh/install | bash
|
|
440
49
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
50
|
+
Then retry:
|
|
51
|
+
npx @zonease/aiworker-cli $AIWORKER_ARGS_DISPLAY
|
|
52
|
+
bunx @zonease/aiworker-cli $AIWORKER_ARGS_DISPLAY
|
|
444
53
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
--scalar-button-1-hover: #e7e7e7;
|
|
54
|
+
If you do not want to install Bun, download a standalone aiworker release tarball:
|
|
55
|
+
https://github.com/ZonEaseTech/aiworker/releases
|
|
448
56
|
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
--scalar-color-blue: #5c73e7;
|
|
453
|
-
--scalar-color-orange: #ff8d4d;
|
|
454
|
-
--scalar-color-purple: #b191f9;
|
|
455
|
-
}
|
|
456
|
-
/* Sidebar */
|
|
457
|
-
.light-mode .t-doc__sidebar {
|
|
458
|
-
--scalar-sidebar-background-1: var(--scalar-background-1);
|
|
459
|
-
--scalar-sidebar-item-hover-color: currentColor;
|
|
460
|
-
--scalar-sidebar-item-hover-background: var(--scalar-background-2);
|
|
461
|
-
--scalar-sidebar-item-active-background: var(--scalar-background-accent);
|
|
462
|
-
--scalar-sidebar-border-color: var(--scalar-border-color);
|
|
463
|
-
--scalar-sidebar-color-1: var(--scalar-color-1);
|
|
464
|
-
--scalar-sidebar-color-2: var(--scalar-color-2);
|
|
465
|
-
--scalar-sidebar-color-active: var(--scalar-color-accent);
|
|
466
|
-
--scalar-sidebar-search-background: var(--scalar-background-2);
|
|
467
|
-
--scalar-sidebar-search-border-color: var(--scalar-sidebar-border-color);
|
|
468
|
-
--scalar-sidebar-search-color: var(--scalar-color-3);
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
.dark-mode .sidebar {
|
|
472
|
-
--scalar-sidebar-background-1: #161618;
|
|
473
|
-
--scalar-sidebar-item-hover-color: var(--scalar-color-accent);
|
|
474
|
-
--scalar-sidebar-item-hover-background: transparent;
|
|
475
|
-
--scalar-sidebar-item-active-background: transparent;
|
|
476
|
-
--scalar-sidebar-border-color: transparent;
|
|
477
|
-
--scalar-sidebar-color-1: var(--scalar-color-1);
|
|
478
|
-
--scalar-sidebar-color-2: var(--scalar-color-2);
|
|
479
|
-
--scalar-sidebar-color-active: var(--scalar-color-accent);
|
|
480
|
-
--scalar-sidebar-search-background: #252529;
|
|
481
|
-
--scalar-sidebar-search-border-color: transparent;
|
|
482
|
-
--scalar-sidebar-search-color: var(--scalar-color-3);
|
|
483
|
-
}
|
|
484
|
-
`,EB=(D)=>{let $={...Zi,...D};return async(F)=>F.html(`${dZ($,qi)}`)};a0();wD();JD();aD();JD();function lZ(D,$){if(D instanceof zD)return $.json(D.toJSON(),D.status);return E.error("Unhandled error:",D),$.json({error:{code:"INTERNAL_ERROR",message:"An unexpected error occurred"}},500)}JD();var iZ=async(D,$)=>{let F=performance.now();await $();let X=Math.round(performance.now()-F);E.info(`${D.req.method} ${D.req.path} ${D.res.status} ${X}ms`)};import{resolve as MB,sep as Ni}from"path";function nZ(D){let $=MB(D);return async(F)=>{let X=new URL(F.req.url),J;try{J=Pi(decodeURIComponent(X.pathname.slice(7)))}catch{return F.text("forbidden",403)}let G=J===""?"index.html":J,Y=MB($,G);if(Y!==$&&!Y.startsWith($+Ni))return F.text("forbidden",403);let B=Bun.file(Y);if(await B.exists())return new Response(B);if(!Li(G)){let H=Bun.file(MB($,"index.html"));if(await H.exists())return new Response(H)}return F.text("not found",404)}}function Pi(D){let $=0;while($<D.length&&D[$]==="/")$+=1;return D.slice($)}function Li(D){let $=D.lastIndexOf("/");return($===-1?D:D.slice($+1)).includes(".")}a0();aD();JD();function sZ(D,$){let F=new t0;return F.get("/whatsapp/webhook",(X)=>{let G=D().channels.get("whatsapp");if(!G||G.credentials.channel!=="whatsapp")return X.text("whatsapp channel is not bound to this worker",404);let Y=X.req.query("hub.mode"),B=X.req.query("hub.verify_token"),H=X.req.query("hub.challenge")??"";if(Y==="subscribe"&&B!==void 0&&k2(B,G.credentials.verifyToken))return X.text(H,200);return X.text("forbidden",403)}),F.post("/:channel/webhook",async(X)=>{let J=D(),G=X.req.param("channel"),Y=J.channels.get(G);if(!Y)throw zD.notFound(`Channel ${G} is not bound to this worker`);let B=J.channels.adapter(G),H=await X.req.text(),W={};X.req.raw.headers.forEach((U,_)=>{W[_.toLowerCase()]=U});try{await B.verify(H,W,Y)}catch(U){return E.warn(`[channel:${G}] signature verification failed: ${String(U)}`),X.json({ok:!1,error:"signature verification failed"},401)}let Q=await B.toEnvelopes(H,$,Y);for(let U of Q)await J.orchestrator.ingest(U);return X.json({ok:!0,accepted:Q.length})}),F}var ZB=class{writer;encoder;writable;abortSubscribers=[];responseReadable;aborted=!1;closed=!1;constructor(D,$){this.writable=D,this.writer=D.getWriter(),this.encoder=new TextEncoder;let F=$.getReader();this.abortSubscribers.push(async()=>{await F.cancel()}),this.responseReadable=new ReadableStream({async pull(X){let{done:J,value:G}=await F.read();J?X.close():X.enqueue(G)},cancel:()=>{this.abort()}})}async write(D){try{if(typeof D==="string")D=this.encoder.encode(D);await this.writer.write(D)}catch{}return this}async writeln(D){return await this.write(D+`
|
|
485
|
-
`),this}sleep(D){return new Promise(($)=>setTimeout($,D))}async close(){try{await this.writer.close()}catch{}this.closed=!0}async pipe(D){this.writer.releaseLock(),await D.pipeTo(this.writable,{preventClose:!0}),this.writer=this.writable.getWriter()}onAbort(D){this.abortSubscribers.push(D)}abort(){if(!this.aborted)this.aborted=!0,this.abortSubscribers.forEach((D)=>D())}};var k$=()=>{let D=typeof Bun<"u"?Bun.version:void 0;if(D===void 0)return!1;let $=D.startsWith("1.1")||D.startsWith("1.0")||D.startsWith("0.");return k$=()=>$,$};var rZ=class extends ZB{constructor(D,$){super(D,$)}async writeSSE(D){let F=(await F7(D.data,I$.Stringify,!1,{})).split(/\r\n|\r|\n/).map((J)=>{return`data: ${J}`}).join(`
|
|
486
|
-
`);for(let J of["event","id","retry"])if(D[J]&&/[\r\n]/.test(D[J]))throw Error(`${J} must not contain "\\r" or "\\n"`);let X=[D.event&&`event: ${D.event}`,F,D.id&&`id: ${D.id}`,D.retry&&`retry: ${D.retry}`].filter(Boolean).join(`
|
|
487
|
-
`)+`
|
|
57
|
+
For a custom Bun path:
|
|
58
|
+
AIWORKER_BUN_BIN=/path/to/bun npx @zonease/aiworker-cli $AIWORKER_ARGS_DISPLAY
|
|
59
|
+
EOF
|
|
488
60
|
|
|
489
|
-
`;await this.write(X)}},ji=async(D,$,F)=>{try{await $(D)}catch(X){if(X instanceof Error&&F)await F(X,D),await D.writeSSE({event:"error",data:X.message});else console.error(X)}finally{D.close()}},zi=new WeakMap,qB=(D,$,F)=>{let{readable:X,writable:J}=new TransformStream,G=new rZ(J,X);if(k$())D.req.raw.signal.addEventListener("abort",()=>{if(!G.closed)G.abort()});return zi.set(G.responseReadable,D),D.header("Transfer-Encoding","chunked"),D.header("Content-Type","text/event-stream"),D.header("Cache-Control","no-cache"),D.header("Connection","keep-alive"),ji(G,$,F),D.newResponse(G.responseReadable)};function oZ(D){let $=new t0;return $.get("/stream",(F)=>{let X=D().bus;return qB(F,async(J)=>{let G=X.on((Y)=>{J.writeSSE({event:Y.type,data:JSON.stringify({...Y.payload,at:Y.at})})});await new Promise((Y)=>{F.req.raw.signal.addEventListener("abort",()=>{G(),Y()})})})}),$}aD();wD();U0();var Y3=new t0;Y3.get("/observations",(D)=>{let $=y().select().from(O2).orderBy(hD(O2.noticedAt)).limit(200).all();return D.json({observations:$})});Y3.get("/drafts",(D)=>{let $=D.req.query("status"),F=y().select().from(N0).orderBy(hD(N0.createdAt)).limit(100),X=$?F.where(v(N0.status,$)).all():F.all();return D.json({drafts:X})});Y3.post("/drafts/:id/approve",async(D)=>{let $=Number(D.req.param("id"));if(!Number.isFinite($))throw zD.badRequest("invalid draft id");let F=await D.req.json().catch(()=>({})),X=new Date().toISOString();return y().update(N0).set({status:"approved",decidedAt:X,decidedBy:F.decidedBy??"operator"}).where(v(N0.id,$)).run(),D.json({ok:!0})});Y3.post("/drafts/:id/reject",async(D)=>{let $=Number(D.req.param("id"));if(!Number.isFinite($))throw zD.badRequest("invalid draft id");let F=await D.req.json().catch(()=>({})),X=new Date().toISOString();return y().update(N0).set({status:"rejected",decidedAt:X,decidedBy:F.decidedBy??"operator"}).where(v(N0.id,$)).run(),D.json({ok:!0})});a0();function aZ({getIdentity:D}){return async($,F)=>{let X=$.req.header("Authorization");if(!X)return $.json({code:"auth-failed",message:"missing Authorization header"},401);let[J,G]=X.split(/\s+/,2);if(!J||J.toLowerCase()!=="bearer"||!G)return $.json({code:"auth-failed",message:"expected Bearer scheme"},401);let{tokenPlaintext:Y}=D();if(!Y||!k2(G,Y))return $.json({code:"auth-failed",message:"invalid bearer token"},401);await F()}}a0();aD();wD();JD();yD();var Ti=V.object({value:V.string().min(1)}),tZ=V.string().regex(/^[\w.-]{1,128}$/,{message:"secret key \u4EC5\u5141\u8BB8 [A-Za-z0-9._-]\uFF0C\u957F\u5EA6 1-128"}),wi=V.object({probe:V.boolean().optional()}).optional(),Si=V.object({chatId:V.string().optional(),text:V.string().optional()}).optional(),bi=V.object({limit:V.coerce.number().int().min(1).max(200).optional().default(50),offset:V.coerce.number().int().min(0).optional().default(0),status:V.enum(["active","closed"]).optional()}),fi=V.object({olderThanDays:V.number().int().min(0).max(3650).optional().default(30),limit:V.number().int().min(1).max(200).optional().default(50),apply:V.boolean().optional().default(!1)}),eZ=V.enum(["web","line","telegram","lark","whatsapp"]),ki=V.object({expression:V.string().min(1),prompt:V.string().min(1),channel:eZ,chatId:V.string().min(1),accountId:V.string().min(1).optional(),enabled:V.boolean().optional()}),vi=V.object({expression:V.string().min(1).optional(),prompt:V.string().min(1).optional(),channel:eZ.optional(),chatId:V.string().min(1).optional(),accountId:V.string().min(1).optional(),enabled:V.boolean().optional()}).refine((D)=>Object.keys(D).length>0,{message:"\u81F3\u5C11\u63D0\u4F9B\u4E00\u4E2A\u5F85\u66F4\u65B0\u5B57\u6BB5"});function Dq(D){let $=new t0;return $.get("/info",async(F)=>{let X=D.getState(),J=await z0(y()),G=await l6(X,J.config,{...i.AIWORKER_ADVERTISED_BASE_URL===void 0?{}:{advertisedBaseUrl:i.AIWORKER_ADVERTISED_BASE_URL}});return F.json(G)}),$.get("/config",async(F)=>{let X=await z0(y());return F.json(X)}),$.put("/config",async(F)=>{let X=await F.req.json().catch(()=>null),J=F.req.header("If-Match"),G=J===void 0?void 0:Number.parseInt(J,10);if(J!==void 0&&Number.isNaN(G))return F.json({error:{code:"invalid-if-match",message:"If-Match must be an integer"}},400);try{let Y=await d6({db:y(),vault:mD(),raw:X,...G===void 0?{}:{ifMatchVersion:G},workerId:D.getState().workerId,reloadRuntime:D.reloadRuntime});return F.json(Y)}catch(Y){if(Y instanceof y2)return F.json({error:{code:"invalid-config",message:Y.message,details:Y.issues}},400);if(Y instanceof u2)return F.json({error:{code:"version-conflict",message:Y.message,expected:Y.expected,actual:Y.actual}},409);throw Y}}),$.get("/secrets",async(F)=>{let X=await a5(mD());return F.json({keys:X})}),$.put("/secrets/:key",async(F)=>{let X=tZ.safeParse(F.req.param("key"));if(!X.success)return F.json({error:{code:"invalid-key",message:X.error.issues[0]?.message??"invalid secret key"}},400);let J=await F.req.json().catch(()=>null),G=Ti.safeParse(J);if(!G.success)return F.json({error:{code:"invalid-body",message:"invalid secret body",details:G.error.flatten().fieldErrors}},400);try{return await t5(mD(),X.data,G.data.value),F.json({ok:!0},200)}catch(Y){if(Y instanceof zD)return F.json(Y.toJSON(),Y.status);throw Y}}),$.delete("/secrets/:key",async(F)=>{let X=tZ.safeParse(F.req.param("key"));if(!X.success)return F.json({error:{code:"invalid-key",message:X.error.issues[0]?.message??"invalid secret key"}},400);try{return await e5(mD(),X.data),F.json({ok:!0},200)}catch(J){if(J instanceof zD)return F.json(J.toJSON(),J.status);throw J}}),$.post("/brain/test",async(F)=>{let X=D.getState(),J=await z0(y()),G=await s5(X,J.config);return F.json(G)}),$.post("/executor/test",async(F)=>{let X=await F.req.json().catch(()=>null),J=wi.safeParse(X??{});if(!J.success)return F.json({error:{code:"invalid-body",message:"invalid executor test body"}},400);let G=D.getState(),Y=await z0(y()),B=await o5(G,Y.config,J.data??{});return F.json(B)}),$.post("/channels/:channel/test",async(F)=>{let X=F.req.param("channel"),J=await F.req.json().catch(()=>null),G=Si.safeParse(J??{});if(!G.success)return F.json({error:{code:"invalid-body",message:"invalid channel test body"}},400);try{let Y=D.getState(),B=await r5(Y,X,G.data??{});return F.json(B)}catch(Y){if(Y instanceof zD)return F.json(Y.toJSON(),Y.status);throw Y}}),$.post("/token/rotate",async(F)=>{let X=D.getState(),J=await p8(y(),mD(),X);return F.json(J)}),$.get("/sessions",(F)=>{let X=bi.safeParse({limit:F.req.query("limit"),offset:F.req.query("offset"),status:F.req.query("status")});if(!X.success)return F.json({error:{code:"invalid-query",message:"invalid sessions query",details:X.error.flatten().fieldErrors}},400);let J=t6({config:D.getState().runtime.config,limit:X.data.limit,offset:X.data.offset,...X.data.status===void 0?{}:{status:X.data.status}});return F.json(J)}),$.get("/sessions/:sessionKey",(F)=>{let X=e6(F.req.param("sessionKey"),D.getState().runtime.config);if(X===null)return F.json({error:{code:"not-found",message:"session not found"}},404);return F.json({session:X})}),$.post("/sessions/maintenance/closed-transcripts",async(F)=>{let X=await F.req.json().catch(()=>{return}),J=fi.safeParse(X??{});if(!J.success)return F.json({error:{code:"invalid-body",message:"invalid session maintenance body",details:J.error.flatten().fieldErrors}},400);let G=J.data,Y=D3({olderThanDays:G.olderThanDays,limit:G.limit,apply:G.apply});return F.json(Y)}),$.post("/reload",async(F)=>{let X=await z0(y());try{return await D.reloadRuntime(X.config,X.version),F.json({ok:!0,version:X.version})}catch(J){return E.error("[worker mgmt] forced reload failed",J),F.json({ok:!1,version:X.version,error:J.message??String(J)},500)}}),$.get("/runtime/processes/capacity",(F)=>{let X=D.getState().runtime.processes.snapshot();return F.json(X)}),$.get("/engines",async(F)=>{let X=F.req.query("refresh")==="1",J=await $5().probeAll({refresh:X});return F.json({engines:J})}),$.get("/approvals",(F)=>{let J=D.getState().runtime.approvals.list().map((G)=>({taskId:G.taskId,toolCallId:G.toolCallId,toolName:G.toolName,params:G.params,expiresAt:G.expiresAt}));return F.json({approvals:J})}),$.post("/approvals/:taskId/:toolCallId/grant",async(F)=>{let X=F.req.param("taskId"),J=F.req.param("toolCallId"),G=await F.req.json().catch(()=>null),Y=V.object({decision:V.enum(["allow","deny"])}).safeParse(G);if(!Y.success)return F.json({error:{code:"invalid-body",message:'decision must be "allow" or "deny"'}},400);let B=D.getState().runtime.approvals.grant(X,J,Y.data.decision);return F.json({granted:B})}),$.get("/cron",async(F)=>{let X=await D.getState().runtime.cron.listJobs();return F.json({jobs:X})}),$.post("/cron",async(F)=>{let X=await F.req.json().catch(()=>null),J=ki.safeParse(X);if(!J.success)return F.json({error:{code:"invalid-body",message:"invalid cron job body",details:J.error.flatten().fieldErrors}},400);try{let G=await D.getState().runtime.cron.addJob(J.data);return F.json({job:G},201)}catch(G){return F.json({error:{code:"invalid-cron",message:G instanceof Error?G.message:String(G)}},400)}}),$.patch("/cron/:id",async(F)=>{let X=F.req.param("id"),J=await F.req.json().catch(()=>null),G=vi.safeParse(J);if(!G.success)return F.json({error:{code:"invalid-body",message:"invalid cron patch body",details:G.error.flatten().fieldErrors}},400);try{let Y=await D.getState().runtime.cron.updateJob(X,G.data);if(!Y)return F.json({error:{code:"not-found",message:`cron job ${X} \u4E0D\u5B58\u5728`}},404);return F.json({job:Y})}catch(Y){return F.json({error:{code:"invalid-cron",message:Y instanceof Error?Y.message:String(Y)}},400)}}),$.delete("/cron/:id",async(F)=>{let X=F.req.param("id");if(!(await D.getState().runtime.cron.removeJob(X)).removed)return F.json({error:{code:"not-found",message:`cron job ${X} \u4E0D\u5B58\u5728`}},404);return F.json({ok:!0})}),$}wD();U0();yD();var hi=V.object({prompt:V.string().trim().min(1,"prompt is required").max(8000,"prompt exceeds 8000 characters")});function $q(D){let $=new t0;return $.get("/tasks",(F)=>{let X=y().select().from(L8).orderBy(hD(L8.createdAt)).limit(200).all();return F.json({tasks:X})}),$.post("/tasks",async(F)=>{let X=await F.req.json().catch(()=>null),J=hi.safeParse(X);if(!J.success)return F.json({error:{code:"invalid-body",message:"invalid task body",details:J.error.flatten().fieldErrors}},400);let G=await D().orchestrator.submitTask(J.data.prompt);return F.json({task:G},201)}),$.get("/conversations",(F)=>{let X=y().select().from(c).orderBy(hD(c.lastActiveAt)).limit(200).all();return F.json({conversations:X})}),$.get("/conversations/:id/messages",(F)=>{let X=F.req.param("id"),J=y().select().from(l).where(v(l.conversationId,X)).all();return F.json({messages:J})}),$}async function Fq(D){let $=mD(),F=new Set($8(D).map((J)=>J.path)),X=new Map;for(let J of F){let G=await $.get(J);if(G!==null)X.set(J,G)}return E6(D,X)}async function Xq(D={}){s3(i.WORKER_DB_PATH),r3(i.WORKER_MIGRATIONS_FOLDER);let $=mD(),F=y(),X=await W1(F,$,{...i.AIWORKER_FORCE_ID===void 0?{}:{forceId:i.AIWORKER_FORCE_ID},...i.AIWORKER_FORCE_TOKEN===void 0?{}:{forceToken:i.AIWORKER_FORCE_TOKEN}});V1(X.workerId,X.token,F,X.justMinted),E.info(`[worker ${X.workerId}] worker.db ready at ${i.WORKER_DB_PATH}`);let J=await H1(F),G=await Fq(J.config),Y=new z1({maxConcurrentTotal:i.MAX_CONCURRENT_TOTAL,perEngineLimits:{...i.perEngineLimits},stallTimeoutMs:i.PROCESS_STALL_TIMEOUT_MS,killTimeoutMs:i.PROCESS_KILL_TIMEOUT_MS,autoCleanupDelayMs:i.PROCESS_AUTO_CLEANUP_DELAY_MS,gcIntervalMs:i.PROCESS_GC_INTERVAL_MS}),B=b1(X.workerId,G,{processes:Y});E.info(`[worker ${X.workerId}] runtime built \u2014 brains=${G.brains.length} executor=${G.executor.engine}/${G.executor.variant} channels=${B.channels.list().length}`);let H={workerId:X.workerId,runtime:B,configVersion:J.version,startedAt:new Date().toISOString(),tokenPlaintext:X.token};async function W(U,_){let A=await Fq(U);Y.setLimits({maxConcurrentTotal:i.MAX_CONCURRENT_TOTAL,perEngineLimits:{...i.perEngineLimits}});let C=b1(H.workerId,A,{processes:Y}),O=H.runtime;if(H.runtime=C,H.configVersion=_,D.onRuntimeReloaded)try{D.onRuntimeReloaded()}catch(K){E.warn(`[worker ${H.workerId}] onRuntimeReloaded hook failed: ${String(K)}`)}try{O.dispose()}catch(K){E.warn(`[worker ${H.workerId}] previous runtime dispose failed: ${String(K)}`)}E.info(`[worker ${H.workerId}] runtime reloaded to config version ${_}`)}let Q=new t0;if(Q.use(iZ),Q.onError(lZ),D.webStaticDir){let U=D.webStaticDir;Q.get("/admin",(_)=>_.redirect("/admin/",308)),Q.use("/admin/*",nZ(U))}return Q.get("/health",async(U)=>{let[_,A]=await Promise.all([H.runtime.brain.health().catch(()=>null),H.runtime.executor.health().catch(()=>null)]);return U.json({mode:"worker",workerId:H.workerId,status:"ok",brain:_,executor:A,configVersion:H.configVersion,startedAt:H.startedAt,checkedAt:new Date().toISOString()})}),Q.route("/",sZ(()=>H.runtime,H.workerId)),Q.use("/api/worker/*",aZ({getIdentity:()=>({tokenPlaintext:H.tokenPlaintext})})),Q.route("/api/worker/orchestrator",$q(()=>H.runtime)),Q.route("/api/worker/evolution",Y3),Q.route("/api/worker/events",oZ(()=>H.runtime)),Q.route("/api/worker",Dq({getState:()=>H,reloadRuntime:W})),Q.doc("/openapi.json",{openapi:"3.1.0",info:{title:"AIWorker Worker API",version:"0.2.0",description:`Per-worker surface: channels, orchestrator, memory, skills, execution, evolution. Worker id: ${H.workerId}`}}),Q.get("/docs",EB({spec:{url:"/openapi.json"}})),{app:Q,port:i.PORT,state:H,reloadRuntime:W}}a0();aD();wD();JD();async function Jq(D={}){let $=null,F=g1.env.AIWORKER_WORKER_NO_SERVE_WEB==="1",X=D.serveWeb!==!1&&!F,J=X?Z4("worker"):void 0;if(X&&!J)E.warn("[aiw serve] web \u9759\u6001\u8D44\u6E90\u672A\u627E\u5230\uFF08apps/web/dist/worker \u7F3A\u5931\uFF1F\uFF09\uFF0C/admin/* \u5C06\u8FD4\u56DE 404");let G=D.host??i.AIWORKER_WORKER_HOST;R3({surface:"worker",host:G,serveWeb:J!==void 0,externalAuthAcknowledged:i.AIWORKER_ADMIN_EXTERNAL_AUTH});let{app:Y,port:B,state:H,reloadRuntime:W}=await Xq({onRuntimeReloaded:()=>$?.notifyRuntimeReloaded(),...J?{webStaticDir:J}:{}}),Q=D.port??B,U=Bun.serve({port:Q,hostname:G,fetch:Y.fetch});if(E.success(`[aiw serve] worker ${H.workerId} listening on ${G}:${Q} (config v${H.configVersion})`),J)E.info(`[aiw serve] /admin/* serving worker bundle from ${J}`);let _=i.AIWORKER_GATEWAY_URL,A=i.AIWORKER_JOIN_TOKEN,C=i.AIWORKER_DISPLAY_NAME,O=i.AIWORKER_ENROLL_MODE,K=D.gateway&&D.gateway.length>0?D.gateway:void 0,R,q=D.gatewayToken??"",N,S="legacy";if(K)R=K;else if(_&&_.length>0){let z=O==="otp",j=!!A&&A.length>0;if(!z&&j)R=_,S="self-enroll",N={mode:"join-token",joinToken:A,apiToken:H.tokenPlaintext,...C?{displayName:C}:{}};else{let d=new URL(_);if(d.pathname="/enroll-ws",R=d.toString(),S="otp",q=H.tokenPlaintext,N={mode:"otp",apiToken:H.tokenPlaintext,...C?{displayName:C}:{}},z&&j)E.info("[aiw serve] AIWORKER_ENROLL_MODE=otp \u5DF2\u751F\u6548\uFF0C\u5FFD\u7565 AIWORKER_JOIN_TOKEN")}}else if(A&&A.length>0)E.warn("[aiw serve] AIWORKER_JOIN_TOKEN set but AIWORKER_GATEWAY_URL missing; skipping self-enroll");if(R){if(S==="self-enroll")E.info(`[aiw serve] self-enrolling to ${R} as ${C??H.workerId}`);else if(S==="otp")E.info(`[aiw serve] OTP enrolling to ${R}; awaiting operator approval`);$=n5({url:R,token:q,workerId:H.workerId,...D.gatewayReconnect===!1?{reconnect:!1}:{},...N?{enroll:N}:{},...S==="otp"?{onEnrollmentOtp:({otp:z,expiresAt:j})=>{let d=Math.max(0,Math.round((j-Date.now())/1000)),VD=xi(z,d);g1.stdout.write(`${VD}
|
|
490
|
-
`),E.info(`[aiw serve] OTP ${z} \u5DF2\u7B7E\u53D1\uFF0C\u8BF7\u7528 \`aim enroll approve ${z}\` \u51C6\u5165\uFF1Bexpires in ${d}s`)},onEnrollmentApproved:({workerId:z,deviceToken:j})=>{E.success(`[aiw serve] approved as ${z}; deviceToken=${j.slice(0,8)}\u2026\uFF0C\u5DF2\u52A0\u5165 fleet`)}}:{},getRuntime:()=>H.runtime,handlers:{workersInfo:async()=>{let z=await z0(y());return await l6(H,z.config,{...i.AIWORKER_ADVERTISED_BASE_URL===void 0?{}:{advertisedBaseUrl:i.AIWORKER_ADVERTISED_BASE_URL}})},workersStop:async()=>{setTimeout(()=>{try{g1.kill(g1.pid,"SIGTERM")}catch(z){E.error(`[aiw serve] workers.stop failed to signal self: ${String(z)}`)}},0)},configGet:async()=>{let z=await z0(y());return{version:z.version,config:z.config}},configPut:async({ifMatch:z,config:j})=>{let d=await d6({db:y(),vault:mD(),raw:j,ifMatchVersion:z,workerId:H.workerId,reloadRuntime:W});return{version:d.version,appliedAt:Date.now(),runtimeReload:d.runtimeReload}},tokenRotate:async()=>{let{newToken:z}=await p8(y(),mD(),H);return{deviceToken:z}},...l5(()=>H.runtime.cron)}}),E.success(`[aiw serve] gateway-client dialing ${R}`)}let b=!1,L=async(z)=>{if(b)return;b=!0,E.info(`[aiw serve] received ${z}, shutting down`);try{if($)await $.stop(),$=null}catch(j){E.warn(`[aiw serve] gateway shutdown failed: ${String(j)}`)}try{U.stop()}catch(j){E.warn(`[aiw serve] http shutdown failed: ${String(j)}`)}g1.exit(0)};g1.once("SIGTERM",()=>void L("SIGTERM")),g1.once("SIGINT",()=>void L("SIGINT")),await new Promise(()=>{})}function xi(D,$){let F=`OTP: ${D}`,X=`expires in ${$}s`,J=Math.max(F.length,X.length)+6,G="\u2500".repeat(J),Y=(B)=>`\u2502 ${B}${" ".repeat(J-B.length-4)}\u2502`;return["",`\u250C${G}\u2510`,Y(F),Y(X),`\u2514${G}\u2518`].join(`
|
|
491
|
-
`)}a0();JD();async function Yq(D={}){try{let $=gi(D.status),F=await iD({silent:!0}),X=t6({config:F.hydrated,limit:D.limit,offset:D.offset,...$===void 0?{}:{status:$}});return console.log(JSON.stringify(X,null,2)),0}catch($){return E.error(`[aiworker sessions list] failed: ${$ instanceof Error?$.message:String($)}`),$ instanceof NB?2:1}}async function Gq(D){try{let $=await iD({silent:!0}),F=e6(D,$.hydrated);if(F===null)return E.error(`[aiworker sessions show] session not found: ${D}`),1;return console.log(JSON.stringify({session:F},null,2)),0}catch($){return E.error(`[aiworker sessions show] failed: ${$ instanceof Error?$.message:String($)}`),1}}async function Bq(D={}){try{await iD({silent:!0});let $=D3({olderThanDays:D.olderThanDays,limit:D.limit,apply:D.apply===!0});return console.log(JSON.stringify($,null,2)),0}catch($){return E.error(`[aiworker sessions maintenance] failed: ${$ instanceof Error?$.message:String($)}`),1}}class NB extends Error{}function gi(D){if(D===void 0)return;if(D==="active"||D==="closed")return D;throw new NB('status must be "active" or "closed"')}a0();wD();JD();async function Hq(){let D=await iD({silent:!0}),$=mD(),F=y(),X={tokenPlaintext:D.token},{newToken:J}=await p8(F,$,X);return E.success(`[aiw token rotate] worker ${D.workerId} token rotated`),console.log(J),0}V2();import yi from"process";function ui(D){let $=D.slice(2);if($.length===0)return!1;if($.some((X)=>X==="--help"||X==="-h"||X==="--version"||X==="-v"))return!1;let F=$[0];if(F==="scope"||F==="init"||F==="install")return!1;return!0}function Wq(D=yi.argv){if(!ui(D))return;let $=B2();f1({home:$.home})}var s=wB("aiworker");s.command("init","Bootstrap worker.db, mint identity + token, seed config (defaults to project-scope `<cwd>/.aiworker/`; --global for legacy ~/.aiworker)").option("--global","Initialise the legacy user-scope home `~/.aiworker/` (single host-wide worker)").option("--force","Project-scope only: skip the git-repo guard (allow .aiworker/ in non-git dirs)").option("--dry-run","Print init preflight and planned writes without creating or modifying files").action(async(D)=>{await hM({...D.global===!0?{global:!0}:{},...D.force===!0?{force:!0}:{},...D.dryRun===!0?{dryRun:!0}:{}})});s.command("scope","Print the resolved aiworker scope (user/project/explicit) + presence of layout files").action(async()=>{o.exitCode=await dM()});s.command("run","Feed one message into the orchestrator without binding HTTP").option("--message <text>","User message to ingest (required)").option("--chat-id <id>",'Synthetic chat id (defaults to "cli:stdin")').option("--dry-run","Bootstrap everything but skip ingesting the envelope").option("--timeout-ms <n>","Max wait for a terminal event, in ms (default 120000)",{type:[Number]}).action(async(D)=>{let $=await xM({message:D.message,chatId:D.chatId,dryRun:D.dryRun,timeoutMs:D.timeoutMs?.[0]});o.exit($)});s.command("serve","Start the worker HTTP server (equivalent to AIWORKER_MODE=worker)").option("--port <n>","Override the PORT env",{type:[Number]}).option("--host <host>","Override AIWORKER_WORKER_HOST (default 127.0.0.1)").option("--gateway <url>","Dial the given gateway WS URL as a node alongside the HTTP server").option("--gateway-token <token>","Bearer token presented to the gateway (omit for loopback)").option("--no-reconnect","Disable gateway-client auto-reconnect (useful for smoke / tests)").option("--no-serve-web","\u4E0D\u6302\u8F7D worker bundle \u5230 /admin/*\uFF08\u9ED8\u8BA4\u6302\u8F7D\uFF0CPLAN-022 / FEAT-033\uFF09").action(async(D)=>{let $={};if(D.port?.[0]!==void 0)$.port=D.port[0];if(D.host!==void 0)$.host=D.host;if(D.gateway!==void 0)$.gateway=D.gateway;if(D.gatewayToken!==void 0)$.gatewayToken=D.gatewayToken;if(D.reconnect===!1)$.gatewayReconnect=!1;if(D.serveWeb===!1)$.serveWeb=!1;await Jq($)});s.command("config-show","Print the stored worker config as JSON (bootstraps local worker state if missing)").action(async()=>{o.exit(await TM())});s.command("config-set <json>","Replace the stored worker config").option("--if-match <version>","Optimistic-concurrency guard (reject unless stored version matches)",{type:[Number]}).action(async(D,$)=>{o.exit(await wM({json:D,ifMatch:$.ifMatch?.[0]}))});s.command("token-rotate","Mint a fresh bearer token; prints the new plaintext once").action(async()=>{o.exit(await Hq())});s.command("approvals-list","\u5217\u51FA\u5F53\u524D worker \u8FDB\u7A0B\u5185\u6302\u8D77\u7684 per-tool \u5BA1\u6279").action(async()=>{o.exit(await zM())});s.command("approvals-grant <taskId> <toolCallId>","\u89E3\u9501\u67D0\u6761\u6302\u8D77\u7684 tool \u5BA1\u6279").option("--deny","\u4E0B\u53D1 deny \u51B3\u7B56\uFF1B\u9ED8\u8BA4 allow").action(async(D,$,F)=>{o.exit(await IM({taskId:D,toolCallId:$,...F.deny===void 0?{}:{deny:F.deny}}))});s.command("schedule-list","List all cron jobs persisted in the local worker.db").action(async()=>{o.exit(await yM())});s.command("schedule-add","Add a cron job to the local worker.db (validates expression up-front)").option("--expression <expr>","Five-field cron expression (required)").option("--prompt <text>","Envelope.text synthesised when the job fires (required)").option("--channel <channel>","Channel: web/line/telegram/lark/whatsapp (required)").option("--chat-id <id>","chatId used at fire time (required)").option("--account-id <id>","Override accountId (defaults to sys:cron)").option("--disabled","Persist with enabled=false (default is enabled=true)").action(async(D)=>{if(!D.expression||!D.prompt||!D.channel||!D.chatId)E.error("[aiworker schedule-add] requires --expression, --prompt, --channel, --chat-id"),o.exit(2);let $=await uM({expression:D.expression,prompt:D.prompt,channel:D.channel,chatId:D.chatId,...D.accountId===void 0?{}:{accountId:D.accountId},...D.disabled===!0?{enabled:!1}:{}});o.exit($)});s.command("schedule-remove <jobId>","Remove a cron job from the local worker.db").action(async(D)=>{o.exit(await mM(D))});s.command("sessions list","List local worker session status from worker.db").option("--limit <n>","Max sessions to return (1-200, default 50)",{type:[Number]}).option("--offset <n>","Offset for pagination (default 0)",{type:[Number]}).option("--status <status>","Filter by status: active or closed").action(async(D)=>{o.exit(await Yq({limit:D.limit?.[0],offset:D.offset?.[0],...D.status===void 0?{}:{status:D.status}}))});s.command("sessions show <sessionKey>","Show one local worker session status by session key").action(async(D)=>{o.exit(await Gq(D))});s.command("sessions maintenance","Dry-run closed transcript cleanup; pass --apply to mutate").option("--older-than-days <n>","Closed transcript retention in days (default 30)",{type:[Number]}).option("--limit <n>","Max transcripts to plan/apply (1-200, default 50)",{type:[Number]}).option("--apply","Delete planned closed transcripts instead of dry-run").action(async(D)=>{o.exit(await Bq({olderThanDays:D.olderThanDays?.[0],limit:D.limit?.[0],...D.apply===void 0?{}:{apply:D.apply}}))});s.command("fleet list","\u5217\u51FA fleet \u5185\u6240\u6709 worker").action(async()=>{o.exit(await iU())});s.command("fleet info <workerId>","\u67E5\u770B\u67D0\u4E2A worker \u7684\u8FD0\u884C\u65F6\u4FE1\u606F").action(async(D)=>{o.exit(await nU(D))});s.command("fleet launch","\u8BA9 gateway \u5728\u672C\u673A\u62C9\u8D77\u4E00\u4E2A\u65B0\u7684 worker \u5BB9\u5668\u5E76\u5B8C\u6210\u914D\u5BF9").option("--display-name <name>","worker \u5C55\u793A\u540D").option("--image <image>","\u5BB9\u5668\u955C\u50CF\uFF08\u9ED8\u8BA4\u7531 gateway \u51B3\u5B9A\uFF09").option("--force-id <id>","\u5F3A\u5236\u4F7F\u7528\u7ED9\u5B9A workerId\uFF08\u7528\u4E8E\u5907\u4EFD\u6062\u590D\uFF09").action(async(D)=>{o.exit(await sU({...D.displayName===void 0?{}:{displayName:D.displayName},...D.image===void 0?{}:{image:D.image},...D.forceId===void 0?{}:{forceId:D.forceId}}))});s.command("fleet stop <workerId>","\u5411\u76EE\u6807 worker \u4E0B\u53D1\u505C\u6B62\u6307\u4EE4\uFF08\u4E0D\u6458\u9664\u6CE8\u518C\uFF09").action(async(D)=>{o.exit(await rU(D))});s.command("fleet remove <workerId>","\u628A worker \u4ECE fleet \u4E2D\u6458\u9664\uFF08deviceToken \u4F5C\u5E9F\uFF09").action(async(D)=>{o.exit(await oU(D))});s.command("gateway start","\u62C9\u8D77 gateway server\uFF08\u9ED8\u8BA4 foreground\uFF0Csystemd \u53CB\u597D\uFF1B--detach \u8D70\u540E\u53F0 daemon\uFF09").option("--port <n>","\u76D1\u542C\u7AEF\u53E3\uFF0C\u9ED8\u8BA4 9218",{type:[Number]}).option("--detach","\u540E\u53F0 daemon \u6A21\u5F0F\uFF1Aspawn \u81EA\u8EAB + PID/log \u5199\u5165 ~/.aiworker/").option("--no-serve-web","\u4E0D\u6302\u8F7D fleet bundle \u5230 /admin/*\uFF08\u9ED8\u8BA4\u6302\u8F7D\uFF0CPLAN-022 / FEAT-033\uFF09").action(async(D)=>{let F=o.env.AIWORKER_GATEWAY_INTERNAL_FOREGROUND==="1"?!1:D.detach===!0;o.exit(await IU({...D.port?.[0]===void 0?{}:{port:D.port[0]},detach:F,...D.serveWeb===!1?{serveWeb:!1}:{}}))});s.command("gateway status","\u663E\u793A detached gateway daemon \u662F\u5426\u8FD0\u884C\uFF08foreground/systemd \u5B9E\u4F8B\u4E0D\u7531\u6B64\u547D\u4EE4\u8DDF\u8E2A\uFF09").action(()=>{o.exit(TU())});s.command("gateway stop","\u505C\u6B62 detached gateway daemon (foreground/systemd \u5B9E\u4F8B\u8BF7\u7531\u5176 supervisor \u505C\u6B62)").option("--timeout-ms <n>","SIGTERM \u8D85\u65F6\uFF0C\u9ED8\u8BA4 5000ms",{type:[Number]}).action(async(D)=>{o.exit(await wU(D.timeoutMs?.[0]===void 0?{}:{timeoutMs:D.timeoutMs[0]}))});s.command("pair","\u901A\u8FC7 bootstrap token \u628A\u4E00\u4E2A\u5DF2\u542F\u52A8\u7684 worker \u6CE8\u518C\u5230 gateway").option("--url <wsUrl>","gateway WS URL\uFF08\u9ED8\u8BA4\u4F7F\u7528 aim.json \u91CC\u7684 gatewayUrl\uFF09").option("--worker-url <httpUrl>","worker HTTP base URL\uFF08\u5FC5\u586B\uFF09").option("--bootstrap-token <token>","worker \u6253\u5370\u7684\u4E00\u6B21\u6027 bootstrap token\uFF08\u5FC5\u586B\uFF09").option("--display-name <name>","\u53EF\u9009 worker \u5C55\u793A\u540D").action(async(D)=>{if(!D.workerUrl||!D.bootstrapToken)E.error("pair \u5FC5\u987B\u540C\u65F6\u63D0\u4F9B --worker-url \u548C --bootstrap-token"),o.exit(2);o.exit(await uU({...D.url===void 0?{}:{url:D.url},workerUrl:D.workerUrl,bootstrapToken:D.bootstrapToken,...D.displayName===void 0?{}:{displayName:D.displayName}}))});s.command("chat <workerId> <text>","\u5411\u67D0 worker \u53D1\u4E00\u6761\u6D88\u606F\u5E76\u963B\u585E\u5230 agent.done (NDJSON \u8F93\u51FA)").option("--conversation-id <id>","\u663E\u5F0F\u6307\u5B9A\u4F1A\u8BDD id\uFF1B\u4E0D\u4F20\u5219\u7531 worker \u65B0\u5EFA").option("--timeout-ms <n>","\u7B49 agent.done \u7684\u603B\u8D85\u65F6\uFF0C\u9ED8\u8BA4 120000",{type:[Number]}).action(async(D,$,F)=>{o.exit(await jW({workerId:D,content:$,...F.conversationId===void 0?{}:{conversationId:F.conversationId},...F.timeoutMs?.[0]===void 0?{}:{timeoutMs:F.timeoutMs[0]}}))});s.command("config get <workerId>","\u8BFB\u53D6\u76EE\u6807 worker \u7684\u5F53\u524D\u914D\u7F6E").action(async(D)=>{o.exit(await zW(D))});s.command("config set <workerId> <json>","\u66F4\u65B0 worker \u914D\u7F6E\uFF08\u9700\u8981 --if-match \u63D0\u4F9B\u5F53\u524D\u7248\u672C\uFF09").option("--if-match <version>","\u4E50\u89C2\u9501\uFF1B\u5F53\u524D\u5B58\u50A8\u7684 version \u4E0D\u7B49\u4E8E\u6B64\u503C\u5219\u62D2\u7EDD",{type:[Number]}).action(async(D,$,F)=>{let X=F.ifMatch?.[0];if(X===void 0)E.error("config set \u5FC5\u987B\u663E\u5F0F\u63D0\u4F9B --if-match <version> \u4EE5\u9632\u6B62\u8BEF\u8986\u76D6"),o.exit(2);o.exit(await IW({workerId:D,configJson:$,ifMatch:X}))});s.command("token rotate <workerId>","\u4E3A\u76EE\u6807 worker \u8F6E\u6362 deviceToken\uFF08\u65E7 token \u7ACB\u5373\u5931\u6548\uFF09").action(async(D)=>{o.exit(await lU(D))});s.command("approvals list","\u5217\u51FA\u6302\u8D77\u7684 per-tool \u5BA1\u6279\uFF1B\u9ED8\u8BA4\u8986\u76D6\u6240\u6709 online worker").option("--worker <id>","\u53EA\u67E5\u6307\u5B9A workerId\uFF08\u4E0D\u4F20\u5219\u805A\u5408\u6240\u6709 online worker\uFF09").action(async(D)=>{o.exit(await PW({...D.worker===void 0?{}:{workerId:D.worker}}))});s.command("approvals grant <workerId> <taskId> <toolCallId>","\u89E3\u9501\u67D0\u6761 worker \u4E0A\u6302\u8D77\u7684 tool \u5BA1\u6279").option("--deny","\u4E0B\u53D1 deny \u51B3\u7B56\uFF1B\u4E0D\u5E26\u6B64 flag \u9ED8\u8BA4 allow").action(async(D,$,F,X)=>{o.exit(await LW({workerId:D,taskId:$,toolCallId:F,...X.deny===void 0?{}:{deny:X.deny}}))});s.command("schedule list <workerId>","\u5217\u51FA\u67D0 worker \u4E0A\u6240\u6709 cron \u4EFB\u52A1").action(async(D)=>{o.exit(await pU(D))});s.command("schedule add <workerId>","\u5728\u67D0 worker \u4E0A\u65B0\u589E\u4E00\u6761 cron \u4EFB\u52A1").option("--expression <expr>","5-field cron \u8868\u8FBE\u5F0F\uFF08\u5FC5\u586B\uFF09").option("--prompt <text>","cron \u89E6\u53D1\u65F6\u5408\u6210\u7684 envelope.text\uFF08\u5FC5\u586B\uFF09").option("--channel <channel>","channel \u7C7B\u578B\uFF1Aweb/line/telegram/lark/whatsapp\uFF08\u5FC5\u586B\uFF09").option("--chat-id <id>","\u89E6\u53D1\u65F6\u4F7F\u7528\u7684 chatId\uFF08\u5FC5\u586B\uFF09").option("--account-id <id>","accountId\uFF0C\u9ED8\u8BA4 sys:cron").option("--disabled","\u9ED8\u8BA4 enabled=true\uFF1B\u5E26\u6B64 flag \u6539\u4E3A false").action(async(D,$)=>{if(!$.expression||!$.prompt||!$.channel||!$.chatId)E.error("schedule add \u5FC5\u987B\u63D0\u4F9B --expression / --prompt / --channel / --chat-id"),o.exit(2);o.exit(await cU({workerId:D,expression:$.expression,prompt:$.prompt,channel:$.channel,chatId:$.chatId,...$.accountId===void 0?{}:{accountId:$.accountId},...$.disabled===!0?{enabled:!1}:{}}))});s.command("schedule remove <workerId> <jobId>","\u5220\u9664\u67D0 worker \u4E0A\u7684\u67D0\u6761 cron \u4EFB\u52A1").action(async(D,$)=>{o.exit(await dU(D,$))});s.command("enroll list","\u5217\u51FA gateway \u5F53\u524D\u6240\u6709 pending OTP enrollment").action(async()=>{o.exit(await TW())});s.command("enroll approve <otp>","\u6279\u51C6\u67D0\u6761 pending OTP enrollment\uFF08worker \u7ACB\u5373\u52A0\u5165 fleet\uFF09").action(async(D)=>{o.exit(await wW(D))});s.command("enroll reject <otp>","\u62D2\u7EDD\u67D0\u6761 pending OTP enrollment\uFF08worker \u6536\u5230 close 4403\uFF09").action(async(D)=>{o.exit(await SW(D))});s.command("logs <workerId>","\u8BA2\u9605\u67D0 worker \u7684\u65E5\u5FD7\u5C3E\u90E8 (NDJSON \u8F93\u51FA)").option("--follow","\u6301\u7EED\u8BA2\u9605\u76F4\u5230\u8D85\u65F6\u6216 Ctrl-C").option("--tail <n>","\u8BF7\u6C42\u5386\u53F2\u884C\u6570\uFF0C\u4E0A\u9650 1000",{type:[Number]}).option("--timeout-ms <n>","\u8BA2\u9605\u603B\u8D85\u65F6",{type:[Number]}).action(async(D,$)=>{o.exit(await yU({workerId:D,...$.follow===void 0?{}:{follow:$.follow},...$.tail?.[0]===void 0?{}:{tail:$.tail[0]},...$.timeoutMs?.[0]===void 0?{}:{timeoutMs:$.timeoutMs[0]}}))});s.command("install systemd","\u6E32\u67D3 aiworker-gateway.service \u5E76\uFF08\u53EF\u9009\uFF09\u6CE8\u518C\u5230 systemd").option("--user","systemd \u7528\u6237\u5B9E\u4F8B\uFF08\u9ED8\u8BA4\uFF09\uFF1B\u5199\u5230 ~/.config/systemd/user/").option("--system","systemd \u7CFB\u7EDF\u5B9E\u4F8B\uFF08\u9700 root\uFF09\uFF1B\u5199\u5230 /etc/systemd/system/").option("--dry-run","\u53EA\u5F80 stdout \u6253 unit \u5185\u5BB9\uFF0C\u4E0D\u5199\u76D8\u4E5F\u4E0D systemctl").option("--out <path>","\u8986\u76D6\u76EE\u6807\u8DEF\u5F84\uFF08\u5F02\u5E38\u5E03\u5C40/\u6D4B\u8BD5\u7528\uFF09\uFF1B\u81EA\u52A8\u8DF3\u8FC7 systemctl").option("--no-enable","\u5199\u76D8\u540E\u8DF3\u8FC7 systemctl daemon-reload + enable --now").option("--exec-start <command>","\u9AD8\u7EA7\u8986\u76D6\uFF1A\u624B\u52A8\u6307\u5B9A\u5B8C\u6574 systemd ExecStart \u547D\u4EE4").action(async(D)=>{if(D.user===!0&&D.system===!0)E.error("install systemd: \u4E0D\u80FD\u540C\u65F6\u6307\u5B9A --user \u548C --system"),o.exit(2);o.exit(await gU({scope:D.system===!0?"system":"user",...D.dryRun===!0?{dryRun:!0}:{},...D.out===void 0?{}:{out:D.out},...D.enable===!1?{noEnable:!0}:{},...D.execStart===void 0?{}:{execStart:D.execStart}}))});s.help();s.version(ZH.version);function mi(D,$=s){let F=new Set,X=1;for(let J of $.commands){let G=J.name;if(typeof G==="string"&&G.includes(" ")){F.add(G);let Y=G.split(" ").length;if(Y>X)X=Y}}if(F.size===0||D.length<4)return D;for(let J=X;J>=2;J--){if(D.length<2+J)continue;let G=D.slice(2,2+J);if(G.some((B)=>typeof B!=="string"))continue;let Y=G.join(" ");if(F.has(Y)){let B=D.slice();return B.splice(2,J,Y),B}}return D}class y1 extends Error{constructor(D){super(D);this.name="CliUsageError"}}var pi={chat:{timeoutMs:{integer:!0,min:1}},"config set":{ifMatch:{integer:!0,min:1}},"config-set":{ifMatch:{integer:!0,min:1}},"gateway start":{port:{integer:!0,min:0,max:65535}},"gateway stop":{timeoutMs:{integer:!0,min:0}},logs:{tail:{integer:!0,min:0,max:1000},timeoutMs:{integer:!0,min:1}},run:{timeoutMs:{integer:!0,min:1}},serve:{port:{integer:!0,min:1,max:65535}},"sessions list":{limit:{integer:!0,min:1,max:200},offset:{integer:!0,min:0}},"sessions maintenance":{limit:{integer:!0,min:1,max:200},olderThanDays:{integer:!0,min:0,max:3650}}};function ci(D){return D instanceof Error&&D.name==="CACError"}function di(D){return/--[a-z0-9][\w-]*/i.exec(D)?.[0]??D}function li(D){return D.split(",").map(($)=>/^-{1,2}[a-z0-9][\w-]*/i.exec($.trim())?.[0]).filter(($)=>$!==void 0)}function ii(D,$){let F=D.slice(2);return li($.rawName).some((J)=>F.some((G)=>G===J||G.startsWith(`${J}=`)))}function ni(D){D.checkUnknownOptions(),D.checkOptionValue(),D.checkRequiredArgs()}function si(D,$){let F=pi[D.name]??{};for(let X of D.options){if(!Array.isArray(X.config?.type)||X.config.type[0]!==Number)continue;if(!ii($,X))continue;let J=s.options[X.name];if(J===void 0)continue;let G=Array.isArray(J)?J:[J];for(let Y of G){let B=di(X.rawName);if(typeof Y!=="number"||!Number.isFinite(Y))throw new y1(`${B} must be a finite number`);let H=F[X.name];if(H?.integer===!0&&!Number.isInteger(Y))throw new y1(`${B} must be an integer`);if(H?.min!==void 0&&Y<H.min)throw new y1(`${B} must be >= ${H.min}`);if(H?.max!==void 0&&Y>H.max)throw new y1(`${B} must be <= ${H.max}`)}}}function ri(){return s.options.help===!0||s.options.version===!0&&s.matchedCommandName==null}async function oi(D=o.argv){let $=mi(D);try{s.unsetMatchedCommand();let F=s.parse($,{run:!1});if(ri())return 0;if(!s.matchedCommand&&F.args[0])throw new y1(`Unknown command: ${F.args[0]}`);let X=s.matchedCommand;if(X)ni(X),si(X,$);return Wq($),await s.runMatchedCommand(),typeof o.exitCode==="number"?o.exitCode:0}catch(F){let X=F instanceof y1||ci(F),J=F instanceof Error?F.message:String(F);return E.error(J),X?2:1}}if(import.meta.main)o.exit(await oi(o.argv));export{oi as runCli,mi as preprocessArgv,s as cli};
|
|
61
|
+
exit 127
|