@gitlab/duo-cli 8.32.0 → 8.33.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +5 -5
- package/dist/index.js.map +5 -5
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -989,7 +989,7 @@ gpgsig`+pL1(E)+`
|
|
|
989
989
|
`,A.children)for(let B of A.children)Q+=Gv1(B,D+1);return Q},NDA=(A)=>{return Gv1(A).trim()};class yK{#A;#D;#_;constructor(A,D){this.#A=A,this.#D=D}#Q(A,D,_){let Q=this.#D.logLevel;if(MDA(Q)>=od[A])this.#B(A,D,zv1(_))}#B(A,D,_){let Q=(E)=>`${E.stack??E.message}`,B=(E)=>{let z=p91("Full Context",this.#_,c91(E));return z?`
|
|
990
990
|
${NDA(z)}`:""};if(typeof D==="string"){let E=_?`
|
|
991
991
|
${Q(_)}`:"";this.#E(`${D}${E}${B(_)}`,A)}else{let E=zv1(D);if(!E)return;this.#E(`${Q(E)}${B(D)}`,A)}}#E(A,D){let _=`${Jv1.default().format("YYYY-MM-DDTHH:mm:ss:SSS")} [${D}]: `,Q=(B)=>B.replace(/\n/g,`
|
|
992
|
-
${" ".repeat(ODA)}`);this.#A.write(`${_}${Q(A)}`)}setContext(A){this.#_=A}debug(A,D){this.#Q(j_.DEBUG,A,D)}info(A,D){this.#Q(j_.INFO,A,D)}warn(A,D){this.#Q(j_.WARNING,A,D)}error(A,D){this.#Q(j_.ERROR,A,D)}withContext(A){let D=new yK(this.#A,this.#D);return D.setContext(A),D}}yK=i0([Xv1.Injectable($A,[xV,$b])],yK);var Fv1="8.32.0";import rd from"fs";import Yv1 from"path";import TDA from"os";import{spawn as i91}from"child_process";import PDA from"path";import RDA from"os";var Kb=()=>{return PDA.join(RDA.tmpdir(),"gitlab-duo-cli")};function a91(){let A=Kb();if(!rd.existsSync(A))console.error("Log directory does not exist:",A),process.exit(1);let D;try{D=rd.readdirSync(A)}catch(_){if(_ instanceof Error)console.error("Failed to read log directory:",_.message);process.exit(1)}if(D.length===0)return[];return D.map((_)=>{let Q=Yv1.join(A,_),B=rd.statSync(Q);return{path:Q,mtime:B.mtime}}).sort((_,Q)=>Q.mtime.getTime()-_.mtime.getTime())}function $v1(){let A=a91();if(A.length===0)console.error("No log files found in:",Yv1.join(TDA.tmpdir(),"gitlab-duo-cli")),process.exit(1);return A[0].path}function vDA(A){let D=process.env.EDITOR||"vim";console.log(`Opening ${A} in ${D}...`);let _=i91(D,[A],{stdio:"inherit"});_.on("error",(Q)=>{console.error("Failed to start editor:",Q.message),process.exit(1)}),_.on("close",(Q)=>{if(Q!==0)console.error(`Editor exited with code ${Q}`),process.exit(Q)})}function yDA(){let A=a91(),D=Kb();if(A.length===0){console.log("No log files found in:",D);return}A.forEach((_)=>{console.log(_.path)})}var Kv1=()=>{let A=$v1();vDA(A)},Zv1=()=>{yDA()},Uv1=(A=[])=>{let D=$v1(),_=process.platform==="win32",Q;if(_){let B=["-Command","Get-Content","-Path",D];if(A.length>0)B.push(...A);else B.push("-Tail","10");Q=i91("powershell",B,{stdio:"inherit"})}else{let B=A.length>0?[...A,D]:[D];Q=i91("tail",B,{stdio:"inherit"})}Q.on("error",(B)=>{console.error("Process failed:",B.message),process.exit(1)}),Q.on("close",(B)=>process.exit(B||0))};function SDA(){let A=a91();if(A.length===0){console.log("No log files found to clear.");return}let D=0,_=0;for(let Q of A){let B=Q.path;try{rd.unlinkSync(B),D++,console.log(`Deleted: ${B}`)}catch(E){if(_++,E instanceof Error)console.error(`Failed to delete ${B}:`,E.message)}}if(D>0)console.log(`Successfully deleted ${D} log file(s).`);if(_>0)console.error(`Failed to delete ${_} file(s).`),process.exit(1)}var wv1=()=>{SDA()};import{Stream as lzA}from"node:stream";import tl from"node:process";var f31=I0(j2(),1);import aj1 from"node:process";function Pv1(A,D,{signal:_,edges:Q}={}){let B=void 0,E=null,z=Q!=null&&Q.includes("leading"),J=Q==null||Q.includes("trailing"),X=()=>{if(E!==null)A.apply(B,E),B=void 0,E=null},G=()=>{if(J)X();Y()},F=null,$=()=>{if(F!=null)clearTimeout(F);F=setTimeout(()=>{F=null,G()},D)},K=()=>{if(F!==null)clearTimeout(F),F=null},Y=()=>{K(),B=void 0,E=null},Z=()=>{X()},U=function(...I){if(_?.aborted)return;B=this,E=I;let V=F==null;if($(),z&&V)X()};return U.schedule=$,U.cancel=Y,U.flush=Z,_?.addEventListener("abort",Y,{once:!0}),U}function Rv1(A,D=0,_={}){if(typeof _!=="object")_={};let{leading:Q=!1,trailing:B=!0,maxWait:E}=_,z=Array(2);if(Q)z[0]="leading";if(B)z[1]="trailing";let J=void 0,X=null,G=Pv1(function(...K){J=A.apply(this,K),X=null},D,{edges:z}),F=function(...K){if(E!=null){if(X===null)X=Date.now();if(Date.now()-X>=E)return J=A.apply(this,K),X=Date.now(),G.cancel(),G.schedule(),J}return G.apply(this,K),J},$=()=>{return G.flush(),J};return F.cancel=G.cancel,F.flush=$,F}function td(A,D=0,_={}){let{leading:Q=!0,trailing:B=!0}=_;return Rv1(A,D,{leading:Q,maxWait:D,trailing:B})}var SK={};XY(SK,{scrollUp:()=>QQA,scrollDown:()=>BQA,link:()=>FQA,image:()=>YQA,iTerm:()=>$QA,exitAlternativeScreen:()=>XQA,eraseUp:()=>_QA,eraseStartLine:()=>AQA,eraseScreen:()=>D51,eraseLines:()=>t_A,eraseLine:()=>Sv1,eraseEndLine:()=>e_A,eraseDown:()=>DQA,enterAlternativeScreen:()=>JQA,cursorUp:()=>vv1,cursorTo:()=>m_A,cursorShow:()=>s_A,cursorSavePosition:()=>l_A,cursorRestorePosition:()=>i_A,cursorPrevLine:()=>o_A,cursorNextLine:()=>n_A,cursorMove:()=>h_A,cursorLeft:()=>yv1,cursorHide:()=>r_A,cursorGetPosition:()=>a_A,cursorForward:()=>c_A,cursorDown:()=>p_A,cursorBackward:()=>d_A,clearTerminal:()=>zQA,clearScreen:()=>EQA,beep:()=>GQA});import _51 from"node:process";var kw=globalThis.window?.document!==void 0,D$4=globalThis.process?.versions?.node!==void 0,_$4=globalThis.process?.versions?.bun!==void 0,Q$4=globalThis.Deno?.version?.deno!==void 0,B$4=globalThis.process?.versions?.electron!==void 0,E$4=globalThis.navigator?.userAgent?.includes("jsdom")===!0,z$4=typeof WorkerGlobalScope!=="undefined"&&globalThis instanceof WorkerGlobalScope,J$4=typeof DedicatedWorkerGlobalScope!=="undefined"&&globalThis instanceof DedicatedWorkerGlobalScope,X$4=typeof SharedWorkerGlobalScope!=="undefined"&&globalThis instanceof SharedWorkerGlobalScope,G$4=typeof ServiceWorkerGlobalScope!=="undefined"&&globalThis instanceof ServiceWorkerGlobalScope,Zb=globalThis.navigator?.userAgentData?.platform,F$4=Zb==="macOS"||globalThis.navigator?.platform==="MacIntel"||globalThis.navigator?.userAgent?.includes(" Mac ")===!0||globalThis.process?.platform==="darwin",Y$4=Zb==="Windows"||globalThis.navigator?.platform==="Win32"||globalThis.process?.platform==="win32",$$4=Zb==="Linux"||globalThis.navigator?.platform?.startsWith("Linux")===!0||globalThis.navigator?.userAgent?.includes(" Linux ")===!0||globalThis.process?.platform==="linux",K$4=Zb==="iOS"||globalThis.navigator?.platform==="MacIntel"&&globalThis.navigator?.maxTouchPoints>1||/iPad|iPhone|iPod/.test(globalThis.navigator?.platform),Z$4=Zb==="Android"||globalThis.navigator?.platform==="Android"||globalThis.navigator?.userAgent?.includes(" Android ")===!0||globalThis.process?.platform==="android";var P8="\x1B[",wb="\x1B]",tN="\x07",Ub=";",Tv1=!kw&&_51.env.TERM_PROGRAM==="Apple_Terminal",f_A=!kw&&_51.platform==="win32",u_A=kw?()=>{throw new Error("`process.cwd()` only works in Node.js, not the browser.")}:_51.cwd,m_A=(A,D)=>{if(typeof A!=="number")throw new TypeError("The `x` argument is required");if(typeof D!=="number")return P8+(A+1)+"G";return P8+(D+1)+Ub+(A+1)+"H"},h_A=(A,D)=>{if(typeof A!=="number")throw new TypeError("The `x` argument is required");let _="";if(A<0)_+=P8+-A+"D";else if(A>0)_+=P8+A+"C";if(D<0)_+=P8+-D+"A";else if(D>0)_+=P8+D+"B";return _},vv1=(A=1)=>P8+A+"A",p_A=(A=1)=>P8+A+"B",c_A=(A=1)=>P8+A+"C",d_A=(A=1)=>P8+A+"D",yv1=P8+"G",l_A=Tv1?"\x1B7":P8+"s",i_A=Tv1?"\x1B8":P8+"u",a_A=P8+"6n",n_A=P8+"E",o_A=P8+"F",r_A=P8+"?25l",s_A=P8+"?25h",t_A=(A)=>{let D="";for(let _=0;_<A;_++)D+=Sv1+(_<A-1?vv1():"");if(A)D+=yv1;return D},e_A=P8+"K",AQA=P8+"1K",Sv1=P8+"2K",DQA=P8+"J",_QA=P8+"1J",D51=P8+"2J",QQA=P8+"S",BQA=P8+"T",EQA="\x1Bc",zQA=f_A?`${D51}${P8}0f`:`${D51}${P8}3J${P8}H`,JQA=P8+"?1049h",XQA=P8+"?1049l",GQA=tN,FQA=(A,D)=>[wb,"8",Ub,Ub,D,tN,A,wb,"8",Ub,Ub,tN].join(""),YQA=(A,D={})=>{let _=`${wb}1337;File=inline=1`;if(D.width)_+=`;width=${D.width}`;if(D.height)_+=`;height=${D.height}`;if(D.preserveAspectRatio===!1)_+=";preserveAspectRatio=0";return _+":"+Buffer.from(A).toString("base64")+tN},$QA={setCwd:(A=u_A())=>`${wb}50;CurrentDir=${A}${tN}`,annotation(A,D={}){let _=`${wb}1337;`,Q=D.x!==void 0,B=D.y!==void 0;if((Q||B)&&!(Q&&B&&D.length!==void 0))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");if(A=A.replaceAll("|",""),_+=D.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",D.length>0)_+=(Q?[A,D.length,D.x,D.y]:[D.length,A]).join("|");else _+=A;return _+tN}};import{env as Q51}from"node:process";var jv1=(A)=>(A in Q51)&&Q51[A]!=="0"&&Q51[A]!=="false",KQA=jv1("CI")||jv1("CONTINUOUS_INTEGRATION"),gV=KQA;var ZQA=(A)=>{let D=new Set;do for(let _ of Reflect.ownKeys(A))D.add([A,_]);while((A=Reflect.getPrototypeOf(A))&&A!==Object.prototype);return D};function B51(A,{include:D,exclude:_}={}){let Q=(B)=>{let E=(z)=>typeof z==="string"?B===z:z.test(B);if(D)return D.some(E);if(_)return!_.some(E);return!0};for(let[B,E]of ZQA(A.constructor.prototype)){if(E==="constructor"||!Q(E))continue;let z=Reflect.getOwnPropertyDescriptor(B,E);if(z&&typeof z.value==="function")A[E]=A[E].bind(A)}return A}var oj1=I0(_l(),1);import{PassThrough as kv1}from"node:stream";var xv1=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],G51={},UQA=(A)=>{let D=new kv1,_=new kv1;D.write=(B)=>{A("stdout",B)},_.write=(B)=>{A("stderr",B)};let Q=new console.Console(D,_);for(let B of xv1)G51[B]=console[B],console[B]=Q[B];return()=>{for(let B of xv1)console[B]=G51[B];G51={}}},gv1=UQA;var F51=32;var Y51=0,Ql=0;var wQA=(()=>{var A=import.meta.url;return function(D){D=D||{};var _;_||(_=typeof D!=="undefined"?D:{});var Q,B;_.ready=new Promise(function(N1,L1){Q=N1,B=L1});var E=Object.assign({},_),z="";typeof document!="undefined"&&document.currentScript&&(z=document.currentScript.src),A&&(z=A),z.indexOf("blob:")!==0?z=z.substr(0,z.replace(/[?#].*/,"").lastIndexOf("/")+1):z="";var J=_.print||console.log.bind(console),X=_.printErr||console.warn.bind(console);Object.assign(_,E),E=null;var G;_.wasmBinary&&(G=_.wasmBinary);var F=_.noExitRuntime||!0;typeof WebAssembly!="object"&&o("no native wasm support detected");var $,K=!1;function Y(N1,L1,t1){t1=L1+t1;for(var K0="";!(L1>=t1);){var P0=N1[L1++];if(!P0)break;if(P0&128){var l0=N1[L1++]&63;if((P0&224)==192)K0+=String.fromCharCode((P0&31)<<6|l0);else{var FA=N1[L1++]&63;P0=(P0&240)==224?(P0&15)<<12|l0<<6|FA:(P0&7)<<18|l0<<12|FA<<6|N1[L1++]&63,65536>P0?K0+=String.fromCharCode(P0):(P0-=65536,K0+=String.fromCharCode(55296|P0>>10,56320|P0&1023))}}else K0+=String.fromCharCode(P0)}return K0}var Z,U,I,V,W,q,M,R,y;function T(){var N1=$.buffer;Z=N1,_.HEAP8=U=new Int8Array(N1),_.HEAP16=V=new Int16Array(N1),_.HEAP32=q=new Int32Array(N1),_.HEAPU8=I=new Uint8Array(N1),_.HEAPU16=W=new Uint16Array(N1),_.HEAPU32=M=new Uint32Array(N1),_.HEAPF32=R=new Float32Array(N1),_.HEAPF64=y=new Float64Array(N1)}var u,S=[],r=[],m=[];function s(){var N1=_.preRun.shift();S.unshift(N1)}var c=0,x=null,l=null;function o(N1){if(_.onAbort)_.onAbort(N1);throw N1="Aborted("+N1+")",X(N1),K=!0,N1=new WebAssembly.RuntimeError(N1+". Build with -sASSERTIONS for more info."),B(N1),N1}function _1(N1){return N1.startsWith("data:application/octet-stream;base64,")}var I1="data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4AQ2hpbGQgYWxyZWFkeSBoYXMgYSBvd25lciwgaXQgbXVzdCBiZSByZW1vdmVkIGZpcnN0LgBDYW5ub3Qgc2V0IG1lYXN1cmUgZnVuY3Rpb246IE5vZGVzIHdpdGggbWVhc3VyZSBmdW5jdGlvbnMgY2Fubm90IGhhdmUgY2hpbGRyZW4uAENhbm5vdCBhZGQgY2hpbGQ6IE5vZGVzIHdpdGggbWVhc3VyZSBmdW5jdGlvbnMgY2Fubm90IGhhdmUgY2hpbGRyZW4uAChudWxsKQBpbmRleCA8IDQwOTYgJiYgIlNtYWxsVmFsdWVCdWZmZXIgY2FuIG9ubHkgaG9sZCB1cCB0byA0MDk2IGNodW5rcyIAJXMKAAEAAAADAAAAAAAAAAIAAAADAAAAAQAAAAIAAAAAAAAAAQAAAAEAQYwmCwdpaQB2AHZpAEGgJgs3ox0AAKEdAADhHQAA2x0AAOEdAADbHQAAaWlpZmlmaQDUHQAApB0AAHZpaQClHQAA6B0AAGlpaQBB4CYLCcQAAADFAAAAxgBB9CYLDsQAAADHAAAAyAAAANQdAEGQJws+ox0AAOEdAADbHQAA4R0AANsdAADoHQAA4x0AAOgdAABpaWlpAAAAANQdAAC5HQAA1B0AALsdAAC8HQAA6B0AQdgnCwnJAAAAygAAAMsAQewnCxbJAAAAzAAAAMgAAAC/HQAA1B0AAL8dAEGQKAuiA9QdAAC/HQAA2x0AANUdAAB2aWlpaQAAANQdAAC/HQAA4R0AAHZpaWYAAAAA1B0AAL8dAADbHQAAdmlpaQAAAADUHQAAvx0AANUdAADVHQAAwB0AANsdAADbHQAAwB0AANUdAADAHQAAaQBkaWkAdmlpZAAAxB0AAMQdAAC/HQAA1B0AAMQdAADUHQAAxB0AAMMdAADUHQAAxB0AANsdAADUHQAAxB0AANsdAADiHQAAdmlpaWQAAADUHQAAxB0AAOIdAADbHQAAxR0AAMIdAADFHQAA2x0AAMIdAADFHQAA4h0AAMUdAADiHQAAxR0AANsdAABkaWlpAAAAAOEdAADEHQAA2x0AAGZpaWkAAAAA1B0AAMQdAADEHQAA3B0AANQdAADEHQAAxB0AANwdAADFHQAAxB0AAMQdAADEHQAAxB0AANwdAADUHQAAxB0AANUdAADVHQAAxB0AANQdAADEHQAAoR0AANQdAADEHQAAuR0AANUdAADFHQAAAAAAANQdAADEHQAA4h0AAOIdAADbHQAAdmlpZGRpAADBHQAAxR0AQcArC0EZAAoAGRkZAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABkAEQoZGRkDCgcAAQAJCxgAAAkGCwAACwAGGQAAABkZGQBBkSwLIQ4AAAAAAAAAABkACg0ZGRkADQAAAgAJDgAAAAkADgAADgBByywLAQwAQdcsCxUTAAAAABMAAAAACQwAAAAAAAwAAAwAQYUtCwEQAEGRLQsVDwAAAAQPAAAAAAkQAAAAAAAQAAAQAEG/LQsBEgBByy0LHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBBgi4LDhoAAAAaGhoAAAAAAAAJAEGzLgsBFABBvy4LFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABB7S4LARYAQfkuCycVAAAAABUAAAAACRYAAAAAABYAABYAADAxMjM0NTY3ODlBQkNERUYAQcQvCwHSAEHsLwsI//////////8AQbAwCwkQIgEAAAAAAAUAQcQwCwHNAEHcMAsKzgAAAM8AAAD8HQBB9DALAQIAQYQxCwj//////////wBByDELAQUAQdQxCwHQAEHsMQsOzgAAANEAAAAIHgAAAAQAQYQyCwEBAEGUMgsF/////woAQdgyCwHT";if(!_1(I1)){var Z1=I1;I1=_.locateFile?_.locateFile(Z1,z):z+Z1}function C1(){var N1=I1;try{if(N1==I1&&G)return new Uint8Array(G);if(_1(N1))try{var L1=v2(N1.slice(37)),t1=new Uint8Array(L1.length);for(N1=0;N1<L1.length;++N1)t1[N1]=L1.charCodeAt(N1);var K0=t1}catch(l0){throw Error("Converting base64 string to bytes failed.")}else K0=void 0;var P0=K0;if(P0)return P0;throw"both async and sync fetching of the wasm failed"}catch(l0){o(l0)}}function G1(){return G||typeof fetch!="function"?Promise.resolve().then(function(){return C1()}):fetch(I1,{credentials:"same-origin"}).then(function(N1){if(!N1.ok)throw"failed to load wasm binary file at '"+I1+"'";return N1.arrayBuffer()}).catch(function(){return C1()})}function D1(N1){for(;0<N1.length;)N1.shift()(_)}function e(N1){if(N1===void 0)return"_unknown";N1=N1.replace(/[^a-zA-Z0-9_]/g,"$");var L1=N1.charCodeAt(0);return 48<=L1&&57>=L1?"_"+N1:N1}function V1(N1,L1){return N1=e(N1),function(){return L1.apply(this,arguments)}}var j1=[{},{value:void 0},{value:null},{value:!0},{value:!1}],l1=[];function E0(N1){var L1=Error,t1=V1(N1,function(K0){this.name=N1,this.message=K0,K0=Error(K0).stack,K0!==void 0&&(this.stack=this.toString()+`
|
|
992
|
+
${" ".repeat(ODA)}`);this.#A.write(`${_}${Q(A)}`)}setContext(A){this.#_=A}debug(A,D){this.#Q(j_.DEBUG,A,D)}info(A,D){this.#Q(j_.INFO,A,D)}warn(A,D){this.#Q(j_.WARNING,A,D)}error(A,D){this.#Q(j_.ERROR,A,D)}withContext(A){let D=new yK(this.#A,this.#D);return D.setContext(A),D}}yK=i0([Xv1.Injectable($A,[xV,$b])],yK);var Fv1="8.33.1";import rd from"fs";import Yv1 from"path";import TDA from"os";import{spawn as i91}from"child_process";import PDA from"path";import RDA from"os";var Kb=()=>{return PDA.join(RDA.tmpdir(),"gitlab-duo-cli")};function a91(){let A=Kb();if(!rd.existsSync(A))console.error("Log directory does not exist:",A),process.exit(1);let D;try{D=rd.readdirSync(A)}catch(_){if(_ instanceof Error)console.error("Failed to read log directory:",_.message);process.exit(1)}if(D.length===0)return[];return D.map((_)=>{let Q=Yv1.join(A,_),B=rd.statSync(Q);return{path:Q,mtime:B.mtime}}).sort((_,Q)=>Q.mtime.getTime()-_.mtime.getTime())}function $v1(){let A=a91();if(A.length===0)console.error("No log files found in:",Yv1.join(TDA.tmpdir(),"gitlab-duo-cli")),process.exit(1);return A[0].path}function vDA(A){let D=process.env.EDITOR||"vim";console.log(`Opening ${A} in ${D}...`);let _=i91(D,[A],{stdio:"inherit"});_.on("error",(Q)=>{console.error("Failed to start editor:",Q.message),process.exit(1)}),_.on("close",(Q)=>{if(Q!==0)console.error(`Editor exited with code ${Q}`),process.exit(Q)})}function yDA(){let A=a91(),D=Kb();if(A.length===0){console.log("No log files found in:",D);return}A.forEach((_)=>{console.log(_.path)})}var Kv1=()=>{let A=$v1();vDA(A)},Zv1=()=>{yDA()},Uv1=(A=[])=>{let D=$v1(),_=process.platform==="win32",Q;if(_){let B=["-Command","Get-Content","-Path",D];if(A.length>0)B.push(...A);else B.push("-Tail","10");Q=i91("powershell",B,{stdio:"inherit"})}else{let B=A.length>0?[...A,D]:[D];Q=i91("tail",B,{stdio:"inherit"})}Q.on("error",(B)=>{console.error("Process failed:",B.message),process.exit(1)}),Q.on("close",(B)=>process.exit(B||0))};function SDA(){let A=a91();if(A.length===0){console.log("No log files found to clear.");return}let D=0,_=0;for(let Q of A){let B=Q.path;try{rd.unlinkSync(B),D++,console.log(`Deleted: ${B}`)}catch(E){if(_++,E instanceof Error)console.error(`Failed to delete ${B}:`,E.message)}}if(D>0)console.log(`Successfully deleted ${D} log file(s).`);if(_>0)console.error(`Failed to delete ${_} file(s).`),process.exit(1)}var wv1=()=>{SDA()};import{Stream as lzA}from"node:stream";import tl from"node:process";var f31=I0(j2(),1);import aj1 from"node:process";function Pv1(A,D,{signal:_,edges:Q}={}){let B=void 0,E=null,z=Q!=null&&Q.includes("leading"),J=Q==null||Q.includes("trailing"),X=()=>{if(E!==null)A.apply(B,E),B=void 0,E=null},G=()=>{if(J)X();Y()},F=null,$=()=>{if(F!=null)clearTimeout(F);F=setTimeout(()=>{F=null,G()},D)},K=()=>{if(F!==null)clearTimeout(F),F=null},Y=()=>{K(),B=void 0,E=null},Z=()=>{X()},U=function(...I){if(_?.aborted)return;B=this,E=I;let V=F==null;if($(),z&&V)X()};return U.schedule=$,U.cancel=Y,U.flush=Z,_?.addEventListener("abort",Y,{once:!0}),U}function Rv1(A,D=0,_={}){if(typeof _!=="object")_={};let{leading:Q=!1,trailing:B=!0,maxWait:E}=_,z=Array(2);if(Q)z[0]="leading";if(B)z[1]="trailing";let J=void 0,X=null,G=Pv1(function(...K){J=A.apply(this,K),X=null},D,{edges:z}),F=function(...K){if(E!=null){if(X===null)X=Date.now();if(Date.now()-X>=E)return J=A.apply(this,K),X=Date.now(),G.cancel(),G.schedule(),J}return G.apply(this,K),J},$=()=>{return G.flush(),J};return F.cancel=G.cancel,F.flush=$,F}function td(A,D=0,_={}){let{leading:Q=!0,trailing:B=!0}=_;return Rv1(A,D,{leading:Q,maxWait:D,trailing:B})}var SK={};XY(SK,{scrollUp:()=>QQA,scrollDown:()=>BQA,link:()=>FQA,image:()=>YQA,iTerm:()=>$QA,exitAlternativeScreen:()=>XQA,eraseUp:()=>_QA,eraseStartLine:()=>AQA,eraseScreen:()=>D51,eraseLines:()=>t_A,eraseLine:()=>Sv1,eraseEndLine:()=>e_A,eraseDown:()=>DQA,enterAlternativeScreen:()=>JQA,cursorUp:()=>vv1,cursorTo:()=>m_A,cursorShow:()=>s_A,cursorSavePosition:()=>l_A,cursorRestorePosition:()=>i_A,cursorPrevLine:()=>o_A,cursorNextLine:()=>n_A,cursorMove:()=>h_A,cursorLeft:()=>yv1,cursorHide:()=>r_A,cursorGetPosition:()=>a_A,cursorForward:()=>c_A,cursorDown:()=>p_A,cursorBackward:()=>d_A,clearTerminal:()=>zQA,clearScreen:()=>EQA,beep:()=>GQA});import _51 from"node:process";var kw=globalThis.window?.document!==void 0,D$4=globalThis.process?.versions?.node!==void 0,_$4=globalThis.process?.versions?.bun!==void 0,Q$4=globalThis.Deno?.version?.deno!==void 0,B$4=globalThis.process?.versions?.electron!==void 0,E$4=globalThis.navigator?.userAgent?.includes("jsdom")===!0,z$4=typeof WorkerGlobalScope!=="undefined"&&globalThis instanceof WorkerGlobalScope,J$4=typeof DedicatedWorkerGlobalScope!=="undefined"&&globalThis instanceof DedicatedWorkerGlobalScope,X$4=typeof SharedWorkerGlobalScope!=="undefined"&&globalThis instanceof SharedWorkerGlobalScope,G$4=typeof ServiceWorkerGlobalScope!=="undefined"&&globalThis instanceof ServiceWorkerGlobalScope,Zb=globalThis.navigator?.userAgentData?.platform,F$4=Zb==="macOS"||globalThis.navigator?.platform==="MacIntel"||globalThis.navigator?.userAgent?.includes(" Mac ")===!0||globalThis.process?.platform==="darwin",Y$4=Zb==="Windows"||globalThis.navigator?.platform==="Win32"||globalThis.process?.platform==="win32",$$4=Zb==="Linux"||globalThis.navigator?.platform?.startsWith("Linux")===!0||globalThis.navigator?.userAgent?.includes(" Linux ")===!0||globalThis.process?.platform==="linux",K$4=Zb==="iOS"||globalThis.navigator?.platform==="MacIntel"&&globalThis.navigator?.maxTouchPoints>1||/iPad|iPhone|iPod/.test(globalThis.navigator?.platform),Z$4=Zb==="Android"||globalThis.navigator?.platform==="Android"||globalThis.navigator?.userAgent?.includes(" Android ")===!0||globalThis.process?.platform==="android";var P8="\x1B[",wb="\x1B]",tN="\x07",Ub=";",Tv1=!kw&&_51.env.TERM_PROGRAM==="Apple_Terminal",f_A=!kw&&_51.platform==="win32",u_A=kw?()=>{throw new Error("`process.cwd()` only works in Node.js, not the browser.")}:_51.cwd,m_A=(A,D)=>{if(typeof A!=="number")throw new TypeError("The `x` argument is required");if(typeof D!=="number")return P8+(A+1)+"G";return P8+(D+1)+Ub+(A+1)+"H"},h_A=(A,D)=>{if(typeof A!=="number")throw new TypeError("The `x` argument is required");let _="";if(A<0)_+=P8+-A+"D";else if(A>0)_+=P8+A+"C";if(D<0)_+=P8+-D+"A";else if(D>0)_+=P8+D+"B";return _},vv1=(A=1)=>P8+A+"A",p_A=(A=1)=>P8+A+"B",c_A=(A=1)=>P8+A+"C",d_A=(A=1)=>P8+A+"D",yv1=P8+"G",l_A=Tv1?"\x1B7":P8+"s",i_A=Tv1?"\x1B8":P8+"u",a_A=P8+"6n",n_A=P8+"E",o_A=P8+"F",r_A=P8+"?25l",s_A=P8+"?25h",t_A=(A)=>{let D="";for(let _=0;_<A;_++)D+=Sv1+(_<A-1?vv1():"");if(A)D+=yv1;return D},e_A=P8+"K",AQA=P8+"1K",Sv1=P8+"2K",DQA=P8+"J",_QA=P8+"1J",D51=P8+"2J",QQA=P8+"S",BQA=P8+"T",EQA="\x1Bc",zQA=f_A?`${D51}${P8}0f`:`${D51}${P8}3J${P8}H`,JQA=P8+"?1049h",XQA=P8+"?1049l",GQA=tN,FQA=(A,D)=>[wb,"8",Ub,Ub,D,tN,A,wb,"8",Ub,Ub,tN].join(""),YQA=(A,D={})=>{let _=`${wb}1337;File=inline=1`;if(D.width)_+=`;width=${D.width}`;if(D.height)_+=`;height=${D.height}`;if(D.preserveAspectRatio===!1)_+=";preserveAspectRatio=0";return _+":"+Buffer.from(A).toString("base64")+tN},$QA={setCwd:(A=u_A())=>`${wb}50;CurrentDir=${A}${tN}`,annotation(A,D={}){let _=`${wb}1337;`,Q=D.x!==void 0,B=D.y!==void 0;if((Q||B)&&!(Q&&B&&D.length!==void 0))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");if(A=A.replaceAll("|",""),_+=D.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",D.length>0)_+=(Q?[A,D.length,D.x,D.y]:[D.length,A]).join("|");else _+=A;return _+tN}};import{env as Q51}from"node:process";var jv1=(A)=>(A in Q51)&&Q51[A]!=="0"&&Q51[A]!=="false",KQA=jv1("CI")||jv1("CONTINUOUS_INTEGRATION"),gV=KQA;var ZQA=(A)=>{let D=new Set;do for(let _ of Reflect.ownKeys(A))D.add([A,_]);while((A=Reflect.getPrototypeOf(A))&&A!==Object.prototype);return D};function B51(A,{include:D,exclude:_}={}){let Q=(B)=>{let E=(z)=>typeof z==="string"?B===z:z.test(B);if(D)return D.some(E);if(_)return!_.some(E);return!0};for(let[B,E]of ZQA(A.constructor.prototype)){if(E==="constructor"||!Q(E))continue;let z=Reflect.getOwnPropertyDescriptor(B,E);if(z&&typeof z.value==="function")A[E]=A[E].bind(A)}return A}var oj1=I0(_l(),1);import{PassThrough as kv1}from"node:stream";var xv1=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],G51={},UQA=(A)=>{let D=new kv1,_=new kv1;D.write=(B)=>{A("stdout",B)},_.write=(B)=>{A("stderr",B)};let Q=new console.Console(D,_);for(let B of xv1)G51[B]=console[B],console[B]=Q[B];return()=>{for(let B of xv1)console[B]=G51[B];G51={}}},gv1=UQA;var F51=32;var Y51=0,Ql=0;var wQA=(()=>{var A=import.meta.url;return function(D){D=D||{};var _;_||(_=typeof D!=="undefined"?D:{});var Q,B;_.ready=new Promise(function(N1,L1){Q=N1,B=L1});var E=Object.assign({},_),z="";typeof document!="undefined"&&document.currentScript&&(z=document.currentScript.src),A&&(z=A),z.indexOf("blob:")!==0?z=z.substr(0,z.replace(/[?#].*/,"").lastIndexOf("/")+1):z="";var J=_.print||console.log.bind(console),X=_.printErr||console.warn.bind(console);Object.assign(_,E),E=null;var G;_.wasmBinary&&(G=_.wasmBinary);var F=_.noExitRuntime||!0;typeof WebAssembly!="object"&&o("no native wasm support detected");var $,K=!1;function Y(N1,L1,t1){t1=L1+t1;for(var K0="";!(L1>=t1);){var P0=N1[L1++];if(!P0)break;if(P0&128){var l0=N1[L1++]&63;if((P0&224)==192)K0+=String.fromCharCode((P0&31)<<6|l0);else{var FA=N1[L1++]&63;P0=(P0&240)==224?(P0&15)<<12|l0<<6|FA:(P0&7)<<18|l0<<12|FA<<6|N1[L1++]&63,65536>P0?K0+=String.fromCharCode(P0):(P0-=65536,K0+=String.fromCharCode(55296|P0>>10,56320|P0&1023))}}else K0+=String.fromCharCode(P0)}return K0}var Z,U,I,V,W,q,M,R,y;function T(){var N1=$.buffer;Z=N1,_.HEAP8=U=new Int8Array(N1),_.HEAP16=V=new Int16Array(N1),_.HEAP32=q=new Int32Array(N1),_.HEAPU8=I=new Uint8Array(N1),_.HEAPU16=W=new Uint16Array(N1),_.HEAPU32=M=new Uint32Array(N1),_.HEAPF32=R=new Float32Array(N1),_.HEAPF64=y=new Float64Array(N1)}var u,S=[],r=[],m=[];function s(){var N1=_.preRun.shift();S.unshift(N1)}var c=0,x=null,l=null;function o(N1){if(_.onAbort)_.onAbort(N1);throw N1="Aborted("+N1+")",X(N1),K=!0,N1=new WebAssembly.RuntimeError(N1+". Build with -sASSERTIONS for more info."),B(N1),N1}function _1(N1){return N1.startsWith("data:application/octet-stream;base64,")}var I1="data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVk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";if(!_1(I1)){var Z1=I1;I1=_.locateFile?_.locateFile(Z1,z):z+Z1}function C1(){var N1=I1;try{if(N1==I1&&G)return new Uint8Array(G);if(_1(N1))try{var L1=v2(N1.slice(37)),t1=new Uint8Array(L1.length);for(N1=0;N1<L1.length;++N1)t1[N1]=L1.charCodeAt(N1);var K0=t1}catch(l0){throw Error("Converting base64 string to bytes failed.")}else K0=void 0;var P0=K0;if(P0)return P0;throw"both async and sync fetching of the wasm failed"}catch(l0){o(l0)}}function G1(){return G||typeof fetch!="function"?Promise.resolve().then(function(){return C1()}):fetch(I1,{credentials:"same-origin"}).then(function(N1){if(!N1.ok)throw"failed to load wasm binary file at '"+I1+"'";return N1.arrayBuffer()}).catch(function(){return C1()})}function D1(N1){for(;0<N1.length;)N1.shift()(_)}function e(N1){if(N1===void 0)return"_unknown";N1=N1.replace(/[^a-zA-Z0-9_]/g,"$");var L1=N1.charCodeAt(0);return 48<=L1&&57>=L1?"_"+N1:N1}function V1(N1,L1){return N1=e(N1),function(){return L1.apply(this,arguments)}}var j1=[{},{value:void 0},{value:null},{value:!0},{value:!1}],l1=[];function E0(N1){var L1=Error,t1=V1(N1,function(K0){this.name=N1,this.message=K0,K0=Error(K0).stack,K0!==void 0&&(this.stack=this.toString()+`
|
|
993
993
|
`+K0.replace(/^Error(:[^\n]*)?\n/,""))});return t1.prototype=Object.create(L1.prototype),t1.prototype.constructor=t1,t1.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},t1}var f0=void 0;function H0(N1){throw new f0(N1)}var k0=(N1)=>{return N1||H0("Cannot use deleted val. handle = "+N1),j1[N1].value},y0=(N1)=>{switch(N1){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var L1=l1.length?l1.pop():j1.length;return j1[L1]={ga:1,value:N1},L1}},y1=void 0,M1=void 0;function H1(N1){for(var L1="";I[N1];)L1+=M1[I[N1++]];return L1}var E1=[];function T1(){for(;E1.length;){var N1=E1.pop();N1.M.$=!1,N1.delete()}}var Q0=void 0,e1={};function b0(N1,L1){for(L1===void 0&&H0("ptr should not be undefined");N1.R;)L1=N1.ba(L1),N1=N1.R;return L1}var d0={};function j0(N1){N1=e5(N1);var L1=H1(N1);return V2(N1),L1}function VA(N1,L1){var t1=d0[N1];return t1===void 0&&H0(L1+" has unknown type "+j0(N1)),t1}function bA(){}var LA=!1;function B6(N1){--N1.count.value,N1.count.value===0&&(N1.T?N1.U.W(N1.T):N1.P.N.W(N1.O))}function R0(N1,L1,t1){if(L1===t1)return N1;if(t1.R===void 0)return null;return N1=R0(N1,L1,t1.R),N1===null?null:t1.na(N1)}var m0={};function ZA(N1,L1){return L1=b0(N1,L1),e1[L1]}var p=void 0;function B1(N1){throw new p(N1)}function W1(N1,L1){return L1.P&&L1.O||B1("makeClassHandle requires ptr and ptrType"),!!L1.U!==!!L1.T&&B1("Both smartPtrType and smartPtr must be specified"),L1.count={value:1},p1(Object.create(N1,{M:{value:L1}}))}function p1(N1){if(typeof FinalizationRegistry==="undefined")return p1=(L1)=>L1,N1;return LA=new FinalizationRegistry((L1)=>{B6(L1.M)}),p1=(L1)=>{var t1=L1.M;return t1.T&&LA.register(L1,{M:t1},L1),L1},bA=(L1)=>{LA.unregister(L1)},p1(N1)}var L0={};function x0(N1){for(;N1.length;){var L1=N1.pop();N1.pop()(L1)}}function IA(N1){return this.fromWireType(q[N1>>2])}var JA={},DA={};function MA(N1,L1,t1){function K0(zA){zA=t1(zA),zA.length!==N1.length&&B1("Mismatched type converter count");for(var vA=0;vA<N1.length;++vA)z0(N1[vA],zA[vA])}N1.forEach(function(zA){DA[zA]=L1});var P0=Array(L1.length),l0=[],FA=0;L1.forEach((zA,vA)=>{d0.hasOwnProperty(zA)?P0[vA]=d0[zA]:(l0.push(zA),JA.hasOwnProperty(zA)||(JA[zA]=[]),JA[zA].push(()=>{P0[vA]=d0[zA],++FA,FA===l0.length&&K0(P0)}))}),l0.length===0&&K0(P0)}function h0(N1){switch(N1){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+N1)}}function z0(N1,L1,t1={}){if(!("argPackAdvance"in L1))throw new TypeError("registerType registeredInstance requires argPackAdvance");var K0=L1.name;if(N1||H0('type "'+K0+'" must have a positive integer typeid pointer'),d0.hasOwnProperty(N1)){if(t1.ua)return;H0("Cannot register type '"+K0+"' twice")}d0[N1]=L1,delete DA[N1],JA.hasOwnProperty(N1)&&(L1=JA[N1],delete JA[N1],L1.forEach((P0)=>P0()))}function V0(N1){H0(N1.M.P.N.name+" instance already deleted")}function u0(){}function TA(N1,L1,t1){if(N1[L1].S===void 0){var K0=N1[L1];N1[L1]=function(){return N1[L1].S.hasOwnProperty(arguments.length)||H0("Function '"+t1+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+N1[L1].S+")!"),N1[L1].S[arguments.length].apply(this,arguments)},N1[L1].S=[],N1[L1].S[K0.Z]=K0}}function i(N1,L1){_.hasOwnProperty(N1)?(H0("Cannot register public name '"+N1+"' twice"),TA(_,N1,N1),_.hasOwnProperty(void 0)&&H0("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"),_[N1].S[void 0]=L1):_[N1]=L1}function w1(N1,L1,t1,K0,P0,l0,FA,zA){this.name=N1,this.constructor=L1,this.X=t1,this.W=K0,this.R=P0,this.pa=l0,this.ba=FA,this.na=zA,this.ja=[]}function F1(N1,L1,t1){for(;L1!==t1;)L1.ba||H0("Expected null or instance of "+t1.name+", got an instance of "+L1.name),N1=L1.ba(N1),L1=L1.R;return N1}function q1(N1,L1){if(L1===null)return this.ea&&H0("null is not a valid "+this.name),0;return L1.M||H0('Cannot pass "'+SA(L1)+'" as a '+this.name),L1.M.O||H0("Cannot pass deleted object as a pointer of type "+this.name),F1(L1.M.O,L1.M.P.N,this.N)}function x1(N1,L1){if(L1===null){if(this.ea&&H0("null is not a valid "+this.name),this.da){var t1=this.fa();return N1!==null&&N1.push(this.W,t1),t1}return 0}if(L1.M||H0('Cannot pass "'+SA(L1)+'" as a '+this.name),L1.M.O||H0("Cannot pass deleted object as a pointer of type "+this.name),!this.ca&&L1.M.P.ca&&H0("Cannot convert argument of type "+(L1.M.U?L1.M.U.name:L1.M.P.name)+" to parameter type "+this.name),t1=F1(L1.M.O,L1.M.P.N,this.N),this.da)switch(L1.M.T===void 0&&H0("Passing raw pointer to smart pointer is illegal"),this.Ba){case 0:L1.M.U===this?t1=L1.M.T:H0("Cannot convert argument of type "+(L1.M.U?L1.M.U.name:L1.M.P.name)+" to parameter type "+this.name);break;case 1:t1=L1.M.T;break;case 2:if(L1.M.U===this)t1=L1.M.T;else{var K0=L1.clone();t1=this.xa(t1,y0(function(){K0.delete()})),N1!==null&&N1.push(this.W,t1)}break;default:H0("Unsupporting sharing policy")}return t1}function f1(N1,L1){if(L1===null)return this.ea&&H0("null is not a valid "+this.name),0;return L1.M||H0('Cannot pass "'+SA(L1)+'" as a '+this.name),L1.M.O||H0("Cannot pass deleted object as a pointer of type "+this.name),L1.M.P.ca&&H0("Cannot convert argument of type "+L1.M.P.name+" to parameter type "+this.name),F1(L1.M.O,L1.M.P.N,this.N)}function Q1(N1,L1,t1,K0){this.name=N1,this.N=L1,this.ea=t1,this.ca=K0,this.da=!1,this.W=this.xa=this.fa=this.ka=this.Ba=this.wa=void 0,L1.R!==void 0?this.toWireType=x1:(this.toWireType=K0?q1:f1,this.V=null)}function k1(N1,L1){_.hasOwnProperty(N1)||B1("Replacing nonexistant public symbol"),_[N1]=L1,_[N1].Z=void 0}function h1(N1,L1){var t1=[];return function(){if(t1.length=0,Object.assign(t1,arguments),N1.includes("j")){var K0=_["dynCall_"+N1];K0=t1&&t1.length?K0.apply(null,[L1].concat(t1)):K0.call(null,L1)}else K0=u.get(L1).apply(null,t1);return K0}}function t(N1,L1){N1=H1(N1);var t1=N1.includes("j")?h1(N1,L1):u.get(L1);return typeof t1!="function"&&H0("unknown function pointer with signature "+N1+": "+L1),t1}var h=void 0;function O1(N1,L1){function t1(l0){P0[l0]||d0[l0]||(DA[l0]?DA[l0].forEach(t1):(K0.push(l0),P0[l0]=!0))}var K0=[],P0={};throw L1.forEach(t1),new h(N1+": "+K0.map(j0).join([", "]))}function c1(N1,L1,t1,K0,P0){var l0=L1.length;2>l0&&H0("argTypes array size mismatch! Must at least get return value and 'this' types!");var FA=L1[1]!==null&&t1!==null,zA=!1;for(t1=1;t1<L1.length;++t1)if(L1[t1]!==null&&L1[t1].V===void 0){zA=!0;break}var vA=L1[0].name!=="void",PA=l0-2,mA=Array(PA),W6=[],t6=[];return function(){if(arguments.length!==PA&&H0("function "+N1+" called with "+arguments.length+" arguments, expected "+PA+" args!"),t6.length=0,W6.length=FA?2:1,W6[0]=P0,FA){var X1=L1[1].toWireType(t6,this);W6[1]=X1}for(var Y1=0;Y1<PA;++Y1)mA[Y1]=L1[Y1+2].toWireType(t6,arguments[Y1]),W6.push(mA[Y1]);if(Y1=K0.apply(null,W6),zA)x0(t6);else for(var S1=FA?1:2;S1<L1.length;S1++){var X0=S1===1?X1:mA[S1-2];L1[S1].V!==null&&L1[S1].V(X0)}return X1=vA?L1[0].fromWireType(Y1):void 0,X1}}function w0(N1,L1){for(var t1=[],K0=0;K0<N1;K0++)t1.push(M[L1+4*K0>>2]);return t1}function UA(N1){4<N1&&--j1[N1].ga===0&&(j1[N1]=void 0,l1.push(N1))}function SA(N1){if(N1===null)return"null";var L1=typeof N1;return L1==="object"||L1==="array"||L1==="function"?N1.toString():""+N1}function P6(N1,L1){switch(L1){case 2:return function(t1){return this.fromWireType(R[t1>>2])};case 3:return function(t1){return this.fromWireType(y[t1>>3])};default:throw new TypeError("Unknown float type: "+N1)}}function a6(N1,L1,t1){switch(L1){case 0:return t1?function(K0){return U[K0]}:function(K0){return I[K0]};case 1:return t1?function(K0){return V[K0>>1]}:function(K0){return W[K0>>1]};case 2:return t1?function(K0){return q[K0>>2]}:function(K0){return M[K0>>2]};default:throw new TypeError("Unknown integer type: "+N1)}}function y4(N1,L1){for(var t1="",K0=0;!(K0>=L1/2);++K0){var P0=V[N1+2*K0>>1];if(P0==0)break;t1+=String.fromCharCode(P0)}return t1}function E6(N1,L1,t1){if(t1===void 0&&(t1=2147483647),2>t1)return 0;t1-=2;var K0=L1;t1=t1<2*N1.length?t1/2:N1.length;for(var P0=0;P0<t1;++P0)V[L1>>1]=N1.charCodeAt(P0),L1+=2;return V[L1>>1]=0,L1-K0}function P4(N1){return 2*N1.length}function e4(N1,L1){for(var t1=0,K0="";!(t1>=L1/4);){var P0=q[N1+4*t1>>2];if(P0==0)break;++t1,65536<=P0?(P0-=65536,K0+=String.fromCharCode(55296|P0>>10,56320|P0&1023)):K0+=String.fromCharCode(P0)}return K0}function d6(N1,L1,t1){if(t1===void 0&&(t1=2147483647),4>t1)return 0;var K0=L1;t1=K0+t1-4;for(var P0=0;P0<N1.length;++P0){var l0=N1.charCodeAt(P0);if(55296<=l0&&57343>=l0){var FA=N1.charCodeAt(++P0);l0=65536+((l0&1023)<<10)|FA&1023}if(q[L1>>2]=l0,L1+=4,L1+4>t1)break}return q[L1>>2]=0,L1-K0}function n6(N1){for(var L1=0,t1=0;t1<N1.length;++t1){var K0=N1.charCodeAt(t1);55296<=K0&&57343>=K0&&++t1,L1+=4}return L1}var Z2={};function W4(N1){var L1=Z2[N1];return L1===void 0?H1(N1):L1}var Q5=[];function L9(N1){var L1=Q5.length;return Q5.push(N1),L1}function $9(N1,L1){for(var t1=Array(N1),K0=0;K0<N1;++K0)t1[K0]=VA(M[L1+4*K0>>2],"parameter "+K0);return t1}var S4=[],p8=[null,[],[]];f0=_.BindingError=E0("BindingError"),_.count_emval_handles=function(){for(var N1=0,L1=5;L1<j1.length;++L1)j1[L1]!==void 0&&++N1;return N1},_.get_first_emval=function(){for(var N1=5;N1<j1.length;++N1)if(j1[N1]!==void 0)return j1[N1];return null},y1=_.PureVirtualError=E0("PureVirtualError");for(var A2=Array(256),R4=0;256>R4;++R4)A2[R4]=String.fromCharCode(R4);M1=A2,_.getInheritedInstanceCount=function(){return Object.keys(e1).length},_.getLiveInheritedInstances=function(){var N1=[],L1;for(L1 in e1)e1.hasOwnProperty(L1)&&N1.push(e1[L1]);return N1},_.flushPendingDeletes=T1,_.setDelayFunction=function(N1){Q0=N1,E1.length&&Q0&&Q0(T1)},p=_.InternalError=E0("InternalError"),u0.prototype.isAliasOf=function(N1){if(!(this instanceof u0&&N1 instanceof u0))return!1;var L1=this.M.P.N,t1=this.M.O,K0=N1.M.P.N;for(N1=N1.M.O;L1.R;)t1=L1.ba(t1),L1=L1.R;for(;K0.R;)N1=K0.ba(N1),K0=K0.R;return L1===K0&&t1===N1},u0.prototype.clone=function(){if(this.M.O||V0(this),this.M.aa)return this.M.count.value+=1,this;var N1=p1,L1=Object,t1=L1.create,K0=Object.getPrototypeOf(this),P0=this.M;return N1=N1(t1.call(L1,K0,{M:{value:{count:P0.count,$:P0.$,aa:P0.aa,O:P0.O,P:P0.P,T:P0.T,U:P0.U}}})),N1.M.count.value+=1,N1.M.$=!1,N1},u0.prototype.delete=function(){this.M.O||V0(this),this.M.$&&!this.M.aa&&H0("Object already scheduled for deletion"),bA(this),B6(this.M),this.M.aa||(this.M.T=void 0,this.M.O=void 0)},u0.prototype.isDeleted=function(){return!this.M.O},u0.prototype.deleteLater=function(){return this.M.O||V0(this),this.M.$&&!this.M.aa&&H0("Object already scheduled for deletion"),E1.push(this),E1.length===1&&Q0&&Q0(T1),this.M.$=!0,this},Q1.prototype.qa=function(N1){return this.ka&&(N1=this.ka(N1)),N1},Q1.prototype.ha=function(N1){this.W&&this.W(N1)},Q1.prototype.argPackAdvance=8,Q1.prototype.readValueFromPointer=IA,Q1.prototype.deleteObject=function(N1){if(N1!==null)N1.delete()},Q1.prototype.fromWireType=function(N1){function L1(){return this.da?W1(this.N.X,{P:this.wa,O:t1,U:this,T:N1}):W1(this.N.X,{P:this,O:N1})}var t1=this.qa(N1);if(!t1)return this.ha(N1),null;var K0=ZA(this.N,t1);if(K0!==void 0){if(K0.M.count.value===0)return K0.M.O=t1,K0.M.T=N1,K0.clone();return K0=K0.clone(),this.ha(N1),K0}if(K0=this.N.pa(t1),K0=m0[K0],!K0)return L1.call(this);K0=this.ca?K0.la:K0.pointerType;var P0=R0(t1,this.N,K0.N);return P0===null?L1.call(this):this.da?W1(K0.N.X,{P:K0,O:P0,U:this,T:N1}):W1(K0.N.X,{P:K0,O:P0})},h=_.UnboundTypeError=E0("UnboundTypeError");var v2=typeof atob=="function"?atob:function(N1){var L1="",t1=0;N1=N1.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var K0="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(N1.charAt(t1++)),P0="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(N1.charAt(t1++)),l0="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(N1.charAt(t1++)),FA="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(N1.charAt(t1++));K0=K0<<2|P0>>4,P0=(P0&15)<<4|l0>>2;var zA=(l0&3)<<6|FA;L1+=String.fromCharCode(K0),l0!==64&&(L1+=String.fromCharCode(P0)),FA!==64&&(L1+=String.fromCharCode(zA))}while(t1<N1.length);return L1},P9={l:function(N1,L1,t1,K0){o("Assertion failed: "+(N1?Y(I,N1):"")+", at: "+[L1?L1?Y(I,L1):"":"unknown filename",t1,K0?K0?Y(I,K0):"":"unknown function"])},q:function(N1,L1,t1){N1=H1(N1),L1=VA(L1,"wrapper"),t1=k0(t1);var K0=[].slice,P0=L1.N,l0=P0.X,FA=P0.R.X,zA=P0.R.constructor;N1=V1(N1,function(){P0.R.ja.forEach(function(PA){if(this[PA]===FA[PA])throw new y1("Pure virtual function "+PA+" must be implemented in JavaScript")}.bind(this)),Object.defineProperty(this,"__parent",{value:l0}),this.__construct.apply(this,K0.call(arguments))}),l0.__construct=function(){this===l0&&H0("Pass correct 'this' to __construct");var PA=zA.implement.apply(void 0,[this].concat(K0.call(arguments)));bA(PA);var mA=PA.M;PA.notifyOnDestruction(),mA.aa=!0,Object.defineProperties(this,{M:{value:mA}}),p1(this),PA=mA.O,PA=b0(P0,PA),e1.hasOwnProperty(PA)?H0("Tried to register registered instance: "+PA):e1[PA]=this},l0.__destruct=function(){this===l0&&H0("Pass correct 'this' to __destruct"),bA(this);var PA=this.M.O;PA=b0(P0,PA),e1.hasOwnProperty(PA)?delete e1[PA]:H0("Tried to unregister unregistered instance: "+PA)},N1.prototype=Object.create(l0);for(var vA in t1)N1.prototype[vA]=t1[vA];return y0(N1)},j:function(N1){var L1=L0[N1];delete L0[N1];var{fa:t1,W:K0,ia:P0}=L1,l0=P0.map((FA)=>FA.ta).concat(P0.map((FA)=>FA.za));MA([N1],l0,(FA)=>{var zA={};return P0.forEach((vA,PA)=>{var mA=FA[PA],W6=vA.ra,t6=vA.sa,X1=FA[PA+P0.length],Y1=vA.ya,S1=vA.Aa;zA[vA.oa]={read:(X0)=>mA.fromWireType(W6(t6,X0)),write:(X0,a0)=>{var r0=[];Y1(S1,X0,X1.toWireType(r0,a0)),x0(r0)}}}),[{name:L1.name,fromWireType:function(vA){var PA={},mA;for(mA in zA)PA[mA]=zA[mA].read(vA);return K0(vA),PA},toWireType:function(vA,PA){for(var mA in zA)if(!(mA in PA))throw new TypeError('Missing field: "'+mA+'"');var W6=t1();for(mA in zA)zA[mA].write(W6,PA[mA]);return vA!==null&&vA.push(K0,W6),W6},argPackAdvance:8,readValueFromPointer:IA,V:K0}]})},v:function(){},B:function(N1,L1,t1,K0,P0){var l0=h0(t1);L1=H1(L1),z0(N1,{name:L1,fromWireType:function(FA){return!!FA},toWireType:function(FA,zA){return zA?K0:P0},argPackAdvance:8,readValueFromPointer:function(FA){if(t1===1)var zA=U;else if(t1===2)zA=V;else if(t1===4)zA=q;else throw new TypeError("Unknown boolean type size: "+L1);return this.fromWireType(zA[FA>>l0])},V:null})},f:function(N1,L1,t1,K0,P0,l0,FA,zA,vA,PA,mA,W6,t6){mA=H1(mA),l0=t(P0,l0),zA&&(zA=t(FA,zA)),PA&&(PA=t(vA,PA)),t6=t(W6,t6);var X1=e(mA);i(X1,function(){O1("Cannot construct "+mA+" due to unbound types",[K0])}),MA([N1,L1,t1],K0?[K0]:[],function(Y1){if(Y1=Y1[0],K0)var S1=Y1.N,X0=S1.X;else X0=u0.prototype;Y1=V1(X1,function(){if(Object.getPrototypeOf(this)!==a0)throw new f0("Use 'new' to construct "+mA);if(r0.Y===void 0)throw new f0(mA+" has no accessible constructor");var dA=r0.Y[arguments.length];if(dA===void 0)throw new f0("Tried to invoke ctor of "+mA+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(r0.Y).toString()+") parameters instead!");return dA.apply(this,arguments)});var a0=Object.create(X0,{constructor:{value:Y1}});Y1.prototype=a0;var r0=new w1(mA,Y1,a0,t6,S1,l0,zA,PA);S1=new Q1(mA,r0,!0,!1),X0=new Q1(mA+"*",r0,!1,!1);var nA=new Q1(mA+" const*",r0,!1,!0);return m0[N1]={pointerType:X0,la:nA},k1(X1,Y1),[S1,X0,nA]})},d:function(N1,L1,t1,K0,P0,l0,FA){var zA=w0(t1,K0);L1=H1(L1),l0=t(P0,l0),MA([],[N1],function(vA){function PA(){O1("Cannot call "+mA+" due to unbound types",zA)}vA=vA[0];var mA=vA.name+"."+L1;L1.startsWith("@@")&&(L1=Symbol[L1.substring(2)]);var W6=vA.N.constructor;return W6[L1]===void 0?(PA.Z=t1-1,W6[L1]=PA):(TA(W6,L1,mA),W6[L1].S[t1-1]=PA),MA([],zA,function(t6){return t6=c1(mA,[t6[0],null].concat(t6.slice(1)),null,l0,FA),W6[L1].S===void 0?(t6.Z=t1-1,W6[L1]=t6):W6[L1].S[t1-1]=t6,[]}),[]})},p:function(N1,L1,t1,K0,P0,l0){0<L1||o();var FA=w0(L1,t1);P0=t(K0,P0),MA([],[N1],function(zA){zA=zA[0];var vA="constructor "+zA.name;if(zA.N.Y===void 0&&(zA.N.Y=[]),zA.N.Y[L1-1]!==void 0)throw new f0("Cannot register multiple constructors with identical number of parameters ("+(L1-1)+") for class '"+zA.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return zA.N.Y[L1-1]=()=>{O1("Cannot construct "+zA.name+" due to unbound types",FA)},MA([],FA,function(PA){return PA.splice(1,0,null),zA.N.Y[L1-1]=c1(vA,PA,null,P0,l0),[]}),[]})},a:function(N1,L1,t1,K0,P0,l0,FA,zA){var vA=w0(t1,K0);L1=H1(L1),l0=t(P0,l0),MA([],[N1],function(PA){function mA(){O1("Cannot call "+W6+" due to unbound types",vA)}PA=PA[0];var W6=PA.name+"."+L1;L1.startsWith("@@")&&(L1=Symbol[L1.substring(2)]),zA&&PA.N.ja.push(L1);var t6=PA.N.X,X1=t6[L1];return X1===void 0||X1.S===void 0&&X1.className!==PA.name&&X1.Z===t1-2?(mA.Z=t1-2,mA.className=PA.name,t6[L1]=mA):(TA(t6,L1,W6),t6[L1].S[t1-2]=mA),MA([],vA,function(Y1){return Y1=c1(W6,Y1,PA,l0,FA),t6[L1].S===void 0?(Y1.Z=t1-2,t6[L1]=Y1):t6[L1].S[t1-2]=Y1,[]}),[]})},A:function(N1,L1){L1=H1(L1),z0(N1,{name:L1,fromWireType:function(t1){var K0=k0(t1);return UA(t1),K0},toWireType:function(t1,K0){return y0(K0)},argPackAdvance:8,readValueFromPointer:IA,V:null})},n:function(N1,L1,t1){t1=h0(t1),L1=H1(L1),z0(N1,{name:L1,fromWireType:function(K0){return K0},toWireType:function(K0,P0){return P0},argPackAdvance:8,readValueFromPointer:P6(L1,t1),V:null})},e:function(N1,L1,t1,K0,P0){L1=H1(L1),P0===-1&&(P0=4294967295),P0=h0(t1);var l0=(zA)=>zA;if(K0===0){var FA=32-8*t1;l0=(zA)=>zA<<FA>>>FA}t1=L1.includes("unsigned")?function(zA,vA){return vA>>>0}:function(zA,vA){return vA},z0(N1,{name:L1,fromWireType:l0,toWireType:t1,argPackAdvance:8,readValueFromPointer:a6(L1,P0,K0!==0),V:null})},b:function(N1,L1,t1){function K0(l0){l0>>=2;var FA=M;return new P0(Z,FA[l0+1],FA[l0])}var P0=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][L1];t1=H1(t1),z0(N1,{name:t1,fromWireType:K0,argPackAdvance:8,readValueFromPointer:K0},{ua:!0})},o:function(N1,L1){L1=H1(L1);var t1=L1==="std::string";z0(N1,{name:L1,fromWireType:function(K0){var P0=M[K0>>2],l0=K0+4;if(t1)for(var FA=l0,zA=0;zA<=P0;++zA){var vA=l0+zA;if(zA==P0||I[vA]==0){if(FA=FA?Y(I,FA,vA-FA):"",PA===void 0)var PA=FA;else PA+=String.fromCharCode(0),PA+=FA;FA=vA+1}}else{PA=Array(P0);for(zA=0;zA<P0;++zA)PA[zA]=String.fromCharCode(I[l0+zA]);PA=PA.join("")}return V2(K0),PA},toWireType:function(K0,P0){P0 instanceof ArrayBuffer&&(P0=new Uint8Array(P0));var l0,FA=typeof P0=="string";if(FA||P0 instanceof Uint8Array||P0 instanceof Uint8ClampedArray||P0 instanceof Int8Array||H0("Cannot pass non-string to std::string"),t1&&FA){var zA=0;for(l0=0;l0<P0.length;++l0){var vA=P0.charCodeAt(l0);127>=vA?zA++:2047>=vA?zA+=2:55296<=vA&&57343>=vA?(zA+=4,++l0):zA+=3}l0=zA}else l0=P0.length;if(zA=b5(4+l0+1),vA=zA+4,M[zA>>2]=l0,t1&&FA){if(FA=vA,vA=l0+1,l0=I,0<vA){vA=FA+vA-1;for(var PA=0;PA<P0.length;++PA){var mA=P0.charCodeAt(PA);if(55296<=mA&&57343>=mA){var W6=P0.charCodeAt(++PA);mA=65536+((mA&1023)<<10)|W6&1023}if(127>=mA){if(FA>=vA)break;l0[FA++]=mA}else{if(2047>=mA){if(FA+1>=vA)break;l0[FA++]=192|mA>>6}else{if(65535>=mA){if(FA+2>=vA)break;l0[FA++]=224|mA>>12}else{if(FA+3>=vA)break;l0[FA++]=240|mA>>18,l0[FA++]=128|mA>>12&63}l0[FA++]=128|mA>>6&63}l0[FA++]=128|mA&63}}l0[FA]=0}}else if(FA)for(FA=0;FA<l0;++FA)PA=P0.charCodeAt(FA),255<PA&&(V2(vA),H0("String has UTF-16 code units that do not fit in 8 bits")),I[vA+FA]=PA;else for(FA=0;FA<l0;++FA)I[vA+FA]=P0[FA];return K0!==null&&K0.push(V2,zA),zA},argPackAdvance:8,readValueFromPointer:IA,V:function(K0){V2(K0)}})},i:function(N1,L1,t1){if(t1=H1(t1),L1===2)var K0=y4,P0=E6,l0=P4,FA=()=>W,zA=1;else L1===4&&(K0=e4,P0=d6,l0=n6,FA=()=>M,zA=2);z0(N1,{name:t1,fromWireType:function(vA){for(var PA=M[vA>>2],mA=FA(),W6,t6=vA+4,X1=0;X1<=PA;++X1){var Y1=vA+4+X1*L1;if(X1==PA||mA[Y1>>zA]==0)t6=K0(t6,Y1-t6),W6===void 0?W6=t6:(W6+=String.fromCharCode(0),W6+=t6),t6=Y1+L1}return V2(vA),W6},toWireType:function(vA,PA){typeof PA!="string"&&H0("Cannot pass non-string to C++ string type "+t1);var mA=l0(PA),W6=b5(4+mA+L1);return M[W6>>2]=mA>>zA,P0(PA,W6+4,mA+L1),vA!==null&&vA.push(V2,W6),W6},argPackAdvance:8,readValueFromPointer:IA,V:function(vA){V2(vA)}})},k:function(N1,L1,t1,K0,P0,l0){L0[N1]={name:H1(L1),fa:t(t1,K0),W:t(P0,l0),ia:[]}},h:function(N1,L1,t1,K0,P0,l0,FA,zA,vA,PA){L0[N1].ia.push({oa:H1(L1),ta:t1,ra:t(K0,P0),sa:l0,za:FA,ya:t(zA,vA),Aa:PA})},C:function(N1,L1){L1=H1(L1),z0(N1,{va:!0,name:L1,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},s:function(N1,L1,t1,K0,P0){N1=Q5[N1],L1=k0(L1),t1=W4(t1);var l0=[];return M[K0>>2]=y0(l0),N1(L1,t1,l0,P0)},t:function(N1,L1,t1,K0){N1=Q5[N1],L1=k0(L1),t1=W4(t1),N1(L1,t1,null,K0)},g:UA,m:function(N1,L1){var t1=$9(N1,L1),K0=t1[0];L1=K0.name+"_$"+t1.slice(1).map(function(FA){return FA.name}).join("_")+"$";var P0=S4[L1];if(P0!==void 0)return P0;var l0=Array(N1-1);return P0=L9((FA,zA,vA,PA)=>{for(var mA=0,W6=0;W6<N1-1;++W6)l0[W6]=t1[W6+1].readValueFromPointer(PA+mA),mA+=t1[W6+1].argPackAdvance;FA=FA[zA].apply(FA,l0);for(W6=0;W6<N1-1;++W6)t1[W6+1].ma&&t1[W6+1].ma(l0[W6]);if(!K0.va)return K0.toWireType(vA,FA)}),S4[L1]=P0},D:function(N1){4<N1&&(j1[N1].ga+=1)},r:function(N1){var L1=k0(N1);x0(L1),UA(N1)},c:function(){o("")},x:function(N1,L1,t1){I.copyWithin(N1,L1,L1+t1)},w:function(N1){var L1=I.length;if(N1>>>=0,2147483648<N1)return!1;for(var t1=1;4>=t1;t1*=2){var K0=L1*(1+0.2/t1);K0=Math.min(K0,N1+100663296);var P0=Math;K0=Math.max(N1,K0),P0=P0.min.call(P0,2147483648,K0+(65536-K0%65536)%65536);A:{try{$.grow(P0-Z.byteLength+65535>>>16),T();var l0=1;break A}catch(FA){}l0=void 0}if(l0)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(N1,L1,t1,K0){for(var P0=0,l0=0;l0<t1;l0++){var FA=M[L1>>2],zA=M[L1+4>>2];L1+=8;for(var vA=0;vA<zA;vA++){var PA=I[FA+vA],mA=p8[N1];PA===0||PA===10?((N1===1?J:X)(Y(mA,0)),mA.length=0):mA.push(PA)}P0+=zA}return M[K0>>2]=P0,0}};(function(){function N1(P0){_.asm=P0.exports,$=_.asm.E,T(),u=_.asm.J,r.unshift(_.asm.F),c--,_.monitorRunDependencies&&_.monitorRunDependencies(c),c==0&&(x!==null&&(clearInterval(x),x=null),l&&(P0=l,l=null,P0()))}function L1(P0){N1(P0.instance)}function t1(P0){return G1().then(function(l0){return WebAssembly.instantiate(l0,K0)}).then(function(l0){return l0}).then(P0,function(l0){X("failed to asynchronously prepare wasm: "+l0),o(l0)})}var K0={a:P9};if(c++,_.monitorRunDependencies&&_.monitorRunDependencies(c),_.instantiateWasm)try{return _.instantiateWasm(K0,N1)}catch(P0){X("Module.instantiateWasm callback failed with error: "+P0),B(P0)}return function(){return G||typeof WebAssembly.instantiateStreaming!="function"||_1(I1)||typeof fetch!="function"?t1(L1):fetch(I1,{credentials:"same-origin"}).then(function(P0){return WebAssembly.instantiateStreaming(P0,K0).then(L1,function(l0){return X("wasm streaming compile failed: "+l0),X("falling back to ArrayBuffer instantiation"),t1(L1)})})}().catch(B),{}})(),_.___wasm_call_ctors=function(){return(_.___wasm_call_ctors=_.asm.F).apply(null,arguments)};var e5=_.___getTypeName=function(){return(e5=_.___getTypeName=_.asm.G).apply(null,arguments)};_.__embind_initialize_bindings=function(){return(_.__embind_initialize_bindings=_.asm.H).apply(null,arguments)};var b5=_._malloc=function(){return(b5=_._malloc=_.asm.I).apply(null,arguments)},V2=_._free=function(){return(V2=_._free=_.asm.K).apply(null,arguments)};_.dynCall_jiji=function(){return(_.dynCall_jiji=_.asm.L).apply(null,arguments)};var U2;l=function N1(){U2||r4(),U2||(l=N1)};function r4(){function N1(){if(!U2&&(U2=!0,_.calledRun=!0,!K)){if(D1(r),Q(_),_.onRuntimeInitialized)_.onRuntimeInitialized();if(_.postRun)for(typeof _.postRun=="function"&&(_.postRun=[_.postRun]);_.postRun.length;){var L1=_.postRun.shift();m.unshift(L1)}D1(m)}}if(!(0<c)){if(_.preRun)for(typeof _.preRun=="function"&&(_.preRun=[_.preRun]);_.preRun.length;)s();D1(S),0<c||(_.setStatus?(_.setStatus("Running..."),setTimeout(function(){setTimeout(function(){_.setStatus("")},1),N1()},1)):N1())}}if(_.preInit)for(typeof _.preInit=="function"&&(_.preInit=[_.preInit]);0<_.preInit.length;)_.preInit.pop()();return r4(),D.ready}})(),fv1=wQA;var jK=function(A){return A[A.Auto=0]="Auto",A[A.FlexStart=1]="FlexStart",A[A.Center=2]="Center",A[A.FlexEnd=3]="FlexEnd",A[A.Stretch=4]="Stretch",A[A.Baseline=5]="Baseline",A[A.SpaceBetween=6]="SpaceBetween",A[A.SpaceAround=7]="SpaceAround",A[A.SpaceEvenly=8]="SpaceEvenly",A}({}),uv1=function(A){return A[A.BorderBox=0]="BorderBox",A[A.ContentBox=1]="ContentBox",A}({}),mv1=function(A){return A[A.Width=0]="Width",A[A.Height=1]="Height",A}({}),Vb=function(A){return A[A.Inherit=0]="Inherit",A[A.LTR=1]="LTR",A[A.RTL=2]="RTL",A}({}),$51=function(A){return A[A.Flex=0]="Flex",A[A.None=1]="None",A[A.Contents=2]="Contents",A}({}),bK=function(A){return A[A.Left=0]="Left",A[A.Top=1]="Top",A[A.Right=2]="Right",A[A.Bottom=3]="Bottom",A[A.Start=4]="Start",A[A.End=5]="End",A[A.Horizontal=6]="Horizontal",A[A.Vertical=7]="Vertical",A[A.All=8]="All",A}({}),DL=function(A){return A[A.None=0]="None",A[A.StretchFlexBasis=1]="StretchFlexBasis",A[A.AbsolutePositionWithoutInsetsExcludesPadding=2]="AbsolutePositionWithoutInsetsExcludesPadding",A[A.AbsolutePercentAgainstInnerSize=4]="AbsolutePercentAgainstInnerSize",A[A.All=2147483647]="All",A[A.Classic=2147483646]="Classic",A}({}),IQA=function(A){return A[A.WebFlexBasis=0]="WebFlexBasis",A}({}),Bl=function(A){return A[A.Column=0]="Column",A[A.ColumnReverse=1]="ColumnReverse",A[A.Row=2]="Row",A[A.RowReverse=3]="RowReverse",A}({}),K51=function(A){return A[A.Column=0]="Column",A[A.Row=1]="Row",A[A.All=2]="All",A}({}),_L=function(A){return A[A.FlexStart=0]="FlexStart",A[A.Center=1]="Center",A[A.FlexEnd=2]="FlexEnd",A[A.SpaceBetween=3]="SpaceBetween",A[A.SpaceAround=4]="SpaceAround",A[A.SpaceEvenly=5]="SpaceEvenly",A}({}),QL=function(A){return A[A.Error=0]="Error",A[A.Warn=1]="Warn",A[A.Info=2]="Info",A[A.Debug=3]="Debug",A[A.Verbose=4]="Verbose",A[A.Fatal=5]="Fatal",A}({}),Z51=function(A){return A[A.Undefined=0]="Undefined",A[A.Exactly=1]="Exactly",A[A.AtMost=2]="AtMost",A}({}),hv1=function(A){return A[A.Default=0]="Default",A[A.Text=1]="Text",A}({}),U51=function(A){return A[A.Visible=0]="Visible",A[A.Hidden=1]="Hidden",A[A.Scroll=2]="Scroll",A}({}),w51=function(A){return A[A.Static=0]="Static",A[A.Relative=1]="Relative",A[A.Absolute=2]="Absolute",A}({}),FG=function(A){return A[A.Undefined=0]="Undefined",A[A.Point=1]="Point",A[A.Percent=2]="Percent",A[A.Auto=3]="Auto",A}({}),I51=function(A){return A[A.NoWrap=0]="NoWrap",A[A.Wrap=1]="Wrap",A[A.WrapReverse=2]="WrapReverse",A}({}),CQA={ALIGN_AUTO:jK.Auto,ALIGN_FLEX_START:jK.FlexStart,ALIGN_CENTER:jK.Center,ALIGN_FLEX_END:jK.FlexEnd,ALIGN_STRETCH:jK.Stretch,ALIGN_BASELINE:jK.Baseline,ALIGN_SPACE_BETWEEN:jK.SpaceBetween,ALIGN_SPACE_AROUND:jK.SpaceAround,ALIGN_SPACE_EVENLY:jK.SpaceEvenly,BOX_SIZING_BORDER_BOX:uv1.BorderBox,BOX_SIZING_CONTENT_BOX:uv1.ContentBox,DIMENSION_WIDTH:mv1.Width,DIMENSION_HEIGHT:mv1.Height,DIRECTION_INHERIT:Vb.Inherit,DIRECTION_LTR:Vb.LTR,DIRECTION_RTL:Vb.RTL,DISPLAY_FLEX:$51.Flex,DISPLAY_NONE:$51.None,DISPLAY_CONTENTS:$51.Contents,EDGE_LEFT:bK.Left,EDGE_TOP:bK.Top,EDGE_RIGHT:bK.Right,EDGE_BOTTOM:bK.Bottom,EDGE_START:bK.Start,EDGE_END:bK.End,EDGE_HORIZONTAL:bK.Horizontal,EDGE_VERTICAL:bK.Vertical,EDGE_ALL:bK.All,ERRATA_NONE:DL.None,ERRATA_STRETCH_FLEX_BASIS:DL.StretchFlexBasis,ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING:DL.AbsolutePositionWithoutInsetsExcludesPadding,ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE:DL.AbsolutePercentAgainstInnerSize,ERRATA_ALL:DL.All,ERRATA_CLASSIC:DL.Classic,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:IQA.WebFlexBasis,FLEX_DIRECTION_COLUMN:Bl.Column,FLEX_DIRECTION_COLUMN_REVERSE:Bl.ColumnReverse,FLEX_DIRECTION_ROW:Bl.Row,FLEX_DIRECTION_ROW_REVERSE:Bl.RowReverse,GUTTER_COLUMN:K51.Column,GUTTER_ROW:K51.Row,GUTTER_ALL:K51.All,JUSTIFY_FLEX_START:_L.FlexStart,JUSTIFY_CENTER:_L.Center,JUSTIFY_FLEX_END:_L.FlexEnd,JUSTIFY_SPACE_BETWEEN:_L.SpaceBetween,JUSTIFY_SPACE_AROUND:_L.SpaceAround,JUSTIFY_SPACE_EVENLY:_L.SpaceEvenly,LOG_LEVEL_ERROR:QL.Error,LOG_LEVEL_WARN:QL.Warn,LOG_LEVEL_INFO:QL.Info,LOG_LEVEL_DEBUG:QL.Debug,LOG_LEVEL_VERBOSE:QL.Verbose,LOG_LEVEL_FATAL:QL.Fatal,MEASURE_MODE_UNDEFINED:Z51.Undefined,MEASURE_MODE_EXACTLY:Z51.Exactly,MEASURE_MODE_AT_MOST:Z51.AtMost,NODE_TYPE_DEFAULT:hv1.Default,NODE_TYPE_TEXT:hv1.Text,OVERFLOW_VISIBLE:U51.Visible,OVERFLOW_HIDDEN:U51.Hidden,OVERFLOW_SCROLL:U51.Scroll,POSITION_TYPE_STATIC:w51.Static,POSITION_TYPE_RELATIVE:w51.Relative,POSITION_TYPE_ABSOLUTE:w51.Absolute,UNIT_UNDEFINED:FG.Undefined,UNIT_POINT:FG.Point,UNIT_PERCENT:FG.Percent,UNIT_AUTO:FG.Auto,WRAP_NO_WRAP:I51.NoWrap,WRAP_WRAP:I51.Wrap,WRAP_WRAP_REVERSE:I51.WrapReverse},pv1=CQA;function C51(A){function D(B,E,z){let J=B[E];B[E]=function(){for(var X=arguments.length,G=new Array(X),F=0;F<X;F++)G[F]=arguments[F];return z.call(this,J,...G)}}for(let B of["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding","setGap"]){let E={[FG.Point]:A.Node.prototype[B],[FG.Percent]:A.Node.prototype[`${B}Percent`],[FG.Auto]:A.Node.prototype[`${B}Auto`]};D(A.Node.prototype,B,function(z){for(var J=arguments.length,X=new Array(J>1?J-1:0),G=1;G<J;G++)X[G-1]=arguments[G];let F=X.pop(),$,K;if(F==="auto")$=FG.Auto,K=void 0;else if(typeof F==="object")$=F.unit,K=F.valueOf();else if($=typeof F==="string"&&F.endsWith("%")?FG.Percent:FG.Point,K=parseFloat(F),F!==void 0&&!Number.isNaN(F)&&Number.isNaN(K))throw new Error(`Invalid value ${F} for ${B}`);if(!E[$])throw new Error(`Failed to execute "${B}": Unsupported unit '${F}'`);if(K!==void 0)return E[$].call(this,...X,K);else return E[$].call(this,...X)})}function _(B){return A.MeasureCallback.implement({measure:function(){let{width:E,height:z}=B(...arguments);return{width:E??NaN,height:z??NaN}}})}D(A.Node.prototype,"setMeasureFunc",function(B,E){if(E)return B.call(this,_(E));else return this.unsetMeasureFunc()});function Q(B){return A.DirtiedCallback.implement({dirtied:B})}return D(A.Node.prototype,"setDirtiedFunc",function(B,E){B.call(this,Q(E))}),D(A.Config.prototype,"free",function(){A.Config.destroy(this)}),D(A.Node,"create",(B,E)=>{return E?A.Node.createWithConfig(E):A.Node.createDefault()}),D(A.Node.prototype,"free",function(){A.Node.destroy(this)}),D(A.Node.prototype,"freeRecursive",function(){for(let B=0,E=this.getChildCount();B<E;++B)this.getChild(0).freeRecursive();this.free()}),D(A.Node.prototype,"calculateLayout",function(B){let E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,J=arguments.length>3&&arguments[3]!==void 0?arguments[3]:Vb.LTR;return B.call(this,E,z,J)}),{Config:A.Config,Node:A.Node,...pv1}}var HQA=C51(await fv1()),v6=HQA;function H51({onlyFirst:A=!1}={}){return new RegExp("(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]",A?void 0:"g")}var VQA=H51();function qb(A){if(typeof A!=="string")throw new TypeError(`Expected a \`string\`, got \`${typeof A}\``);return A.replace(VQA,"")}function cv1(A){return A===161||A===164||A===167||A===168||A===170||A===173||A===174||A>=176&&A<=180||A>=182&&A<=186||A>=188&&A<=191||A===198||A===208||A===215||A===216||A>=222&&A<=225||A===230||A>=232&&A<=234||A===236||A===237||A===240||A===242||A===243||A>=247&&A<=250||A===252||A===254||A===257||A===273||A===275||A===283||A===294||A===295||A===299||A>=305&&A<=307||A===312||A>=319&&A<=322||A===324||A>=328&&A<=331||A===333||A===338||A===339||A===358||A===359||A===363||A===462||A===464||A===466||A===468||A===470||A===472||A===474||A===476||A===593||A===609||A===708||A===711||A>=713&&A<=715||A===717||A===720||A>=728&&A<=731||A===733||A===735||A>=768&&A<=879||A>=913&&A<=929||A>=931&&A<=937||A>=945&&A<=961||A>=963&&A<=969||A===1025||A>=1040&&A<=1103||A===1105||A===8208||A>=8211&&A<=8214||A===8216||A===8217||A===8220||A===8221||A>=8224&&A<=8226||A>=8228&&A<=8231||A===8240||A===8242||A===8243||A===8245||A===8251||A===8254||A===8308||A===8319||A>=8321&&A<=8324||A===8364||A===8451||A===8453||A===8457||A===8467||A===8470||A===8481||A===8482||A===8486||A===8491||A===8531||A===8532||A>=8539&&A<=8542||A>=8544&&A<=8555||A>=8560&&A<=8569||A===8585||A>=8592&&A<=8601||A===8632||A===8633||A===8658||A===8660||A===8679||A===8704||A===8706||A===8707||A===8711||A===8712||A===8715||A===8719||A===8721||A===8725||A===8730||A>=8733&&A<=8736||A===8739||A===8741||A>=8743&&A<=8748||A===8750||A>=8756&&A<=8759||A===8764||A===8765||A===8776||A===8780||A===8786||A===8800||A===8801||A>=8804&&A<=8807||A===8810||A===8811||A===8814||A===8815||A===8834||A===8835||A===8838||A===8839||A===8853||A===8857||A===8869||A===8895||A===8978||A>=9312&&A<=9449||A>=9451&&A<=9547||A>=9552&&A<=9587||A>=9600&&A<=9615||A>=9618&&A<=9621||A===9632||A===9633||A>=9635&&A<=9641||A===9650||A===9651||A===9654||A===9655||A===9660||A===9661||A===9664||A===9665||A>=9670&&A<=9672||A===9675||A>=9678&&A<=9681||A>=9698&&A<=9701||A===9711||A===9733||A===9734||A===9737||A===9742||A===9743||A===9756||A===9758||A===9792||A===9794||A===9824||A===9825||A>=9827&&A<=9829||A>=9831&&A<=9834||A===9836||A===9837||A===9839||A===9886||A===9887||A===9919||A>=9926&&A<=9933||A>=9935&&A<=9939||A>=9941&&A<=9953||A===9955||A===9960||A===9961||A>=9963&&A<=9969||A===9972||A>=9974&&A<=9977||A===9979||A===9980||A===9982||A===9983||A===10045||A>=10102&&A<=10111||A>=11094&&A<=11097||A>=12872&&A<=12879||A>=57344&&A<=63743||A>=65024&&A<=65039||A===65533||A>=127232&&A<=127242||A>=127248&&A<=127277||A>=127280&&A<=127337||A>=127344&&A<=127373||A===127375||A===127376||A>=127387&&A<=127404||A>=917760&&A<=917999||A>=983040&&A<=1048573||A>=1048576&&A<=1114109}function hV(A){return A===12288||A>=65281&&A<=65376||A>=65504&&A<=65510}function pV(A){return A>=4352&&A<=4447||A===8986||A===8987||A===9001||A===9002||A>=9193&&A<=9196||A===9200||A===9203||A===9725||A===9726||A===9748||A===9749||A>=9776&&A<=9783||A>=9800&&A<=9811||A===9855||A>=9866&&A<=9871||A===9875||A===9889||A===9898||A===9899||A===9917||A===9918||A===9924||A===9925||A===9934||A===9940||A===9962||A===9970||A===9971||A===9973||A===9978||A===9981||A===9989||A===9994||A===9995||A===10024||A===10060||A===10062||A>=10067&&A<=10069||A===10071||A>=10133&&A<=10135||A===10160||A===10175||A===11035||A===11036||A===11088||A===11093||A>=11904&&A<=11929||A>=11931&&A<=12019||A>=12032&&A<=12245||A>=12272&&A<=12287||A>=12289&&A<=12350||A>=12353&&A<=12438||A>=12441&&A<=12543||A>=12549&&A<=12591||A>=12593&&A<=12686||A>=12688&&A<=12773||A>=12783&&A<=12830||A>=12832&&A<=12871||A>=12880&&A<=42124||A>=42128&&A<=42182||A>=43360&&A<=43388||A>=44032&&A<=55203||A>=63744&&A<=64255||A>=65040&&A<=65049||A>=65072&&A<=65106||A>=65108&&A<=65126||A>=65128&&A<=65131||A>=94176&&A<=94180||A===94192||A===94193||A>=94208&&A<=100343||A>=100352&&A<=101589||A>=101631&&A<=101640||A>=110576&&A<=110579||A>=110581&&A<=110587||A===110589||A===110590||A>=110592&&A<=110882||A===110898||A>=110928&&A<=110930||A===110933||A>=110948&&A<=110951||A>=110960&&A<=111355||A>=119552&&A<=119638||A>=119648&&A<=119670||A===126980||A===127183||A===127374||A>=127377&&A<=127386||A>=127488&&A<=127490||A>=127504&&A<=127547||A>=127552&&A<=127560||A===127568||A===127569||A>=127584&&A<=127589||A>=127744&&A<=127776||A>=127789&&A<=127797||A>=127799&&A<=127868||A>=127870&&A<=127891||A>=127904&&A<=127946||A>=127951&&A<=127955||A>=127968&&A<=127984||A===127988||A>=127992&&A<=128062||A===128064||A>=128066&&A<=128252||A>=128255&&A<=128317||A>=128331&&A<=128334||A>=128336&&A<=128359||A===128378||A===128405||A===128406||A===128420||A>=128507&&A<=128591||A>=128640&&A<=128709||A===128716||A>=128720&&A<=128722||A>=128725&&A<=128727||A>=128732&&A<=128735||A===128747||A===128748||A>=128756&&A<=128764||A>=128992&&A<=129003||A===129008||A>=129292&&A<=129338||A>=129340&&A<=129349||A>=129351&&A<=129535||A>=129648&&A<=129660||A>=129664&&A<=129673||A>=129679&&A<=129734||A>=129742&&A<=129756||A>=129759&&A<=129769||A>=129776&&A<=129784||A>=131072&&A<=196605||A>=196608&&A<=262141}function qQA(A){if(!Number.isSafeInteger(A))throw new TypeError(`Expected a code point, got \`${typeof A}\`.`)}function BL(A,{ambiguousAsWide:D=!1}={}){if(qQA(A),hV(A)||pV(A)||D&&cv1(A))return 2;return 1}var iv1=I0(lv1(),1),WQA=new Intl.Segmenter,MQA=/^\p{Default_Ignorable_Code_Point}$/u;function GY(A,D={}){if(typeof A!=="string"||A.length===0)return 0;let{ambiguousIsNarrow:_=!0,countAnsiEscapeCodes:Q=!1}=D;if(!Q)A=qb(A);if(A.length===0)return 0;let B=0,E={ambiguousAsWide:!_};for(let{segment:z}of WQA.segment(A)){let J=z.codePointAt(0);if(J<=31||J>=127&&J<=159)continue;if(J>=8203&&J<=8207||J===65279)continue;if(J>=768&&J<=879||J>=6832&&J<=6911||J>=7616&&J<=7679||J>=8400&&J<=8447||J>=65056&&J<=65071)continue;if(J>=55296&&J<=57343)continue;if(J>=65024&&J<=65039)continue;if(MQA.test(z))continue;if(iv1.default().test(z)){B+=2;continue}B+=BL(J,E)}return B}var av1=(A=0)=>(D)=>`\x1B[${D+A}m`,nv1=(A=0)=>(D)=>`\x1B[${38+A};5;${D}m`,ov1=(A=0)=>(D,_,Q)=>`\x1B[${38+A};2;${D};${_};${Q}m`,$5={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]}},o$4=Object.keys($5.modifier),OQA=Object.keys($5.color),NQA=Object.keys($5.bgColor),r$4=[...OQA,...NQA];function LQA(){let A=new Map;for(let[D,_]of Object.entries($5)){for(let[Q,B]of Object.entries(_))$5[Q]={open:`\x1B[${B[0]}m`,close:`\x1B[${B[1]}m`},_[Q]=$5[Q],A.set(B[0],B[1]);Object.defineProperty($5,D,{value:_,enumerable:!1})}return Object.defineProperty($5,"codes",{value:A,enumerable:!1}),$5.color.close="\x1B[39m",$5.bgColor.close="\x1B[49m",$5.color.ansi=av1(),$5.color.ansi256=nv1(),$5.color.ansi16m=ov1(),$5.bgColor.ansi=av1(10),$5.bgColor.ansi256=nv1(10),$5.bgColor.ansi16m=ov1(10),Object.defineProperties($5,{rgbToAnsi256:{value:(D,_,Q)=>{if(D===_&&_===Q){if(D<8)return 16;if(D>248)return 231;return Math.round((D-8)/247*24)+232}return 16+36*Math.round(D/255*5)+6*Math.round(_/255*5)+Math.round(Q/255*5)},enumerable:!1},hexToRgb:{value:(D)=>{let _=/[a-f\d]{6}|[a-f\d]{3}/i.exec(D.toString(16));if(!_)return[0,0,0];let[Q]=_;if(Q.length===3)Q=[...Q].map((E)=>E+E).join("");let B=Number.parseInt(Q,16);return[B>>16&255,B>>8&255,B&255]},enumerable:!1},hexToAnsi256:{value:(D)=>$5.rgbToAnsi256(...$5.hexToRgb(D)),enumerable:!1},ansi256ToAnsi:{value:(D)=>{if(D<8)return 30+D;if(D<16)return 90+(D-8);let _,Q,B;if(D>=232)_=((D-232)*10+8)/255,Q=_,B=_;else{D-=16;let J=D%36;_=Math.floor(D/36)/5,Q=Math.floor(J/6)/5,B=J%6/5}let E=Math.max(_,Q,B)*2;if(E===0)return 30;let z=30+(Math.round(B)<<2|Math.round(Q)<<1|Math.round(_));if(E===2)z+=60;return z},enumerable:!1},rgbToAnsi:{value:(D,_,Q)=>$5.ansi256ToAnsi($5.rgbToAnsi256(D,_,Q)),enumerable:!1},hexToAnsi:{value:(D)=>$5.ansi256ToAnsi($5.hexToAnsi256(D)),enumerable:!1}}),$5}var PQA=LQA(),rv1=PQA;var zl=new Set(["\x1B",""]),RQA=39,q51="\x07",ev1="[",TQA="]",Ay1="m",El=`${TQA}8;;`,sv1=(A)=>`${zl.values().next().value}${ev1}${A}${Ay1}`,tv1=(A)=>`${zl.values().next().value}${El}${A}${q51}`,vQA=(A)=>A.split(" ").map((D)=>GY(D)),V51=(A,D,_)=>{let Q=[...D],B=!1,E=!1,z=GY(qb(A.at(-1)));for(let[J,X]of Q.entries()){let G=GY(X);if(z+G<=_)A[A.length-1]+=X;else A.push(X),z=0;if(zl.has(X))B=!0,E=Q.slice(J+1,J+1+El.length).join("")===El;if(B){if(E){if(X===q51)B=!1,E=!1}else if(X===Ay1)B=!1;continue}if(z+=G,z===_&&J<Q.length-1)A.push(""),z=0}if(!z&&A.at(-1).length>0&&A.length>1)A[A.length-2]+=A.pop()},yQA=(A)=>{let D=A.split(" "),_=D.length;while(_>0){if(GY(D[_-1])>0)break;_--}if(_===D.length)return A;return D.slice(0,_).join(" ")+D.slice(_).join("")},SQA=(A,D,_={})=>{if(_.trim!==!1&&A.trim()==="")return"";let Q="",B,E,z=vQA(A),J=[""];for(let[$,K]of A.split(" ").entries()){if(_.trim!==!1)J[J.length-1]=J.at(-1).trimStart();let Y=GY(J.at(-1));if($!==0){if(Y>=D&&(_.wordWrap===!1||_.trim===!1))J.push(""),Y=0;if(Y>0||_.trim===!1)J[J.length-1]+=" ",Y++}if(_.hard&&z[$]>D){let Z=D-Y,U=1+Math.floor((z[$]-Z-1)/D);if(Math.floor((z[$]-1)/D)<U)J.push("");V51(J,K,D);continue}if(Y+z[$]>D&&Y>0&&z[$]>0){if(_.wordWrap===!1&&Y<D){V51(J,K,D);continue}J.push("")}if(Y+z[$]>D&&_.wordWrap===!1){V51(J,K,D);continue}J[J.length-1]+=K}if(_.trim!==!1)J=J.map(($)=>yQA($));let X=J.join(`
|
|
994
994
|
`),G=[...X],F=0;for(let[$,K]of G.entries()){if(Q+=K,zl.has(K)){let{groups:Z}=new RegExp(`(?:\\${ev1}(?<code>\\d+)m|\\${El}(?<uri>.*)${q51})`).exec(X.slice(F))||{groups:{}};if(Z.code!==void 0){let U=Number.parseFloat(Z.code);B=U===RQA?void 0:U}else if(Z.uri!==void 0)E=Z.uri.length===0?void 0:Z.uri}let Y=rv1.codes.get(Number(B));if(G[$+1]===`
|
|
995
995
|
`){if(E)Q+=tv1("");if(B&&Y)Q+=sv1(Y)}else if(K===`
|
|
@@ -1162,7 +1162,7 @@ Please report this to https://github.com/markedjs/marked.`,A){let Q="<p>An error
|
|
|
1162
1162
|
`]},F))})})()]})})};var la=(A)=>{VJ((D,_)=>{if(_.return)A()})},gP=(A)=>{VJ((D,_)=>{if(_.ctrl&&D==="c")A()})},J10=(A)=>{VJ((D,_)=>{if(_.ctrl&&D==="o")A()})},X10=(A)=>{VJ((D,_)=>{if(_.ctrl&&D==="s")A()})};var F10=({input:A,callbacks:D})=>{let[_,Q]=G10.useState(A.lines.join(`
|
|
1163
1163
|
`));return la(()=>{D.onSubmit(_),Q("")}),gP(()=>{if(_.trim())Q("");else D.onExit()}),AA(da,{value:_,onChange:(E)=>{Q(E)},placeholder:"Type your message here... • Ctrl+C to exit"})};var Y10=({input:A,callbacks:D})=>{let _=A.choiceOptions||[],Q=A.selectedChoiceIndex??0;return gP(()=>{D.onExit()}),Y4(QA,{flexDirection:"column",children:[AA(QA,{borderStyle:"single",borderColor:"gray",paddingX:1,children:AA(S0,{color:"dim",children:"Select an option:"})}),AA(QA,{flexDirection:"column",paddingLeft:2,paddingY:1,children:_.map((B,E)=>{let z=E===Q;return Y4(QA,{marginBottom:B.description?0:0,children:[Y4(S0,{color:z?"cyan":"white",bold:z,children:[z?"› ":" ",B.label]}),B.description&&Y4(S0,{color:"dim",children:[" - ",B.description]})]},E)})}),AA(S0,{dimColor:!0,children:"Use ↑/↓ arrows to navigate • Enter to select • Ctrl+C to exit"})]})};var vq={TEXT:"text",CHOICE:"choice"};var $10=({input:A,callbacks:D})=>{switch(VJ((_,Q)=>{D.onKeyPress(_,Q)}),A.inputType){case vq.TEXT:return AA(F10,{input:A,callbacks:D});case vq.CHOICE:return AA(Y10,{input:A,callbacks:D});default:return null}};var K10=()=>{return AA(QA,{paddingLeft:2,children:AA(S0,{color:"yellow",children:"\uD83E\uDD16 Duo is thinking..."})})};var Z10=({error:A})=>{return Y4(QA,{flexDirection:"column",marginY:0,children:[AA(QA,{children:AA(S0,{color:"red",children:"❌ Error:"})}),AA(QA,{paddingLeft:2,children:AA(S0,{color:"red",children:A})}),AA(KG,{})]})};var U10=({state:A,callbacks:D})=>{return J10(D.toggleExpanded),Y4(QA,{flexDirection:"column",height:"100%",children:[AA(QA,{flexDirection:"column",flexGrow:1,marginBottom:1,children:A.elements.map((_,Q)=>{if(_.type==="message")return AA(Ni1,{message:_},`${_.id}-${Q}`);if(_.type==="error")return AA(Z10,{error:_.error},`${_.id}-${Q}`);return AA(z10,{tool:_,expanded:A.expanded},`${_.id}-${Q}`)})}),AA($10,{input:A.input,callbacks:D}),A.isLoading&&AA(K10,{})]})};var b_1=({state:A,callbacks:D})=>{if(A.criticalErrorMessage)return AA(QA,{children:AA(S0,{color:"red",children:A.criticalErrorMessage})});return AA(U10,{state:A,callbacks:D})};var aa=I0(j2(),1);var ia={gitlabRed:"#e2432a",gitlabOrange:"#fc6d27",gitlabYellow:"#fca326",gitlabPurple:"#554488",gitlabGrey:"#8c929d",white:"#FFFFFF"};var w10=()=>{let{gitlabRed:A,gitlabOrange:D,gitlabYellow:_}=ia;return Y4(QA,{flexDirection:"column",children:[AA(S0,{color:A,children:" .. .. "}),AA(S0,{color:A,children:" .+= =+. "}),Y4(S0,{children:[" ",AA(S0,{color:A,children:".-+*"}),AA(S0,{color:A,children:"===="}),AA(S0,{color:A,children:"*+-."})]}),Y4(S0,{children:[" ",AA(S0,{color:D,children:".=="}),AA(S0,{color:A,children:"+****+"}),AA(S0,{color:D,children:"==."})]}),Y4(S0,{children:[AA(S0,{color:D,children:" .==*"}),AA(S0,{color:A,children:"++"}),AA(S0,{color:D,children:"*==. "})]}),Y4(S0,{children:[AA(S0,{color:D,children:" '.="}),AA(S0,{color:_,children:"--"}),AA(S0,{color:D,children:"=.' "})]}),AA(S0,{color:_,children:" '**' "})]})};var I10=({version:A})=>{return Y4(QA,{borderStyle:"round",children:[AA(QA,{children:AA(w10,{})}),Y4(QA,{flexDirection:"column",children:[AA(lb,{}),AA(S0,{children:"GitLab Duo CLI"}),AA(KG,{}),Y4(S0,{children:["Version: ",A]}),AA(lb,{})]})]})};var{gitlabPurple:xvA,white:gvA}=ia,fvA=({entry:A,isActive:D})=>{let _=D?xvA:void 0,Q=D?gvA:void 0,B=A.value?Tq(A.value,A.isSensitive):"Not set";return Y4(QA,{paddingX:1,paddingY:1,children:[AA(QA,{flexGrow:2,flexShrink:0,flexBasis:0,children:Y4(S0,{color:Q,backgroundColor:_,children:[D?"▸ ":" ",A.displayName]})}),AA(QA,{flexGrow:2,flexShrink:0,flexBasis:0,paddingLeft:2,children:AA(S0,{children:B})}),AA(QA,{flexGrow:3,flexShrink:0,flexBasis:0,paddingLeft:2,children:AA(S0,{dimColor:!0,children:A.description})})]})},C10=({state:A,configurationIndex:D})=>{let _=A.configurationEntries[D];return Y4(QA,{flexDirection:"column",children:[Y4(QA,{paddingX:1,paddingTop:1,children:[AA(QA,{flexGrow:2,flexShrink:0,flexBasis:0,children:AA(S0,{bold:!0,children:"Setting"})}),AA(QA,{flexGrow:2,flexShrink:0,flexBasis:0,paddingLeft:2,children:AA(S0,{bold:!0,children:"Current Value"})}),AA(QA,{flexGrow:3,flexShrink:0,flexBasis:0,paddingLeft:2,children:AA(S0,{bold:!0,children:"Description"})})]}),A.configurationEntries.map((Q)=>AA(fvA,{entry:Q,isActive:Q.key===_.key},Q.key))]})};var H10=({initialState:A,controller:D,duoCliVersion:_})=>{let[Q,B]=aa.useState(0),[E,z]=aa.useState(A),J=E.configurationEntries[Q],[X,G]=aa.useState(J.value);gP(()=>D.exit());let F=()=>{B((Y)=>{let Z=Math.min(E.configurationEntries.length-1,Y+1);return G(E.configurationEntries[Z].value),Z})};VJ((Y,Z)=>{if(Z.tab&&!Z.shift)F();if(Z.tab&&Z.shift)B((U)=>{let I=Math.max(0,U-1);return G(E.configurationEntries[I].value),I})}),X10(async()=>{(await D.saveConfig(E)).match(()=>{D.exit()},(Z)=>{throw Z})}),la(()=>{let Y=[...E.configurationEntries];Y[Q].value=X||Y[Q].defaultValue,z({configurationEntries:Y}),F()});let $=(Y)=>{G(Y)},K=J.defaultValue===""?`Please enter your ${J.displayName}.`:`Please enter your ${J.displayName}. Press Enter to use ${J.defaultValue}.`;return Y4(QA,{flexDirection:"column",children:[AA(I10,{version:_}),AA(C10,{state:E,configurationIndex:Q,inputValue:X,onValueChange:$}),AA(da,{value:X,onChange:$,placeholder:K,masked:J.isSensitive}),AA(QA,{paddingX:2,paddingTop:1,children:AA(S0,{dimColor:!0,children:AA(mL,{markdown:"Press *Enter* to apply • *Tab/Shift+Tab* to navigate forward/back • *Ctrl+S* to save and exit • *Ctrl+C* to exit without saving"})})})]})};var fP={inputType:"text",lines:[""],cursorLine:0,cursorColumn:0},k_1={elements:[],isLoading:!1,input:fP,expanded:!1};var pO=I0(j2(),1);var V10=I0(WA(),1),w8=V10.createInterfaceId("GitLabApiService");var M10=I0(GG(),1);function q10(A){return(A.split(`
|
|
1164
1164
|
`).find((D)=>D.trim())??A.replace(`
|
|
1165
|
-
`,"")).trim()}function uvA(A){return q10(A).match(/^(query|mutation|subscription)\s+/)?.[1]}function mvA(A){return q10(A).match(/(?:query|mutation|subscription)\s+(\w+)/)?.[1]}function na(A){let D=uvA(A),_=mvA(A);if(D)return`${D}: ${_??"anonymous"}`;return}var hvA=(A)=>{if(A.method==="GET"||A.method==="HEAD")return;if(!A.body)return;return n9("Body",JSON.stringify(A.body))},pvA=(A)=>{if(A.method==="POST"||A.method==="PATCH"||A.method==="PUT")return;if(!A.searchParams)return;return n9("Search Params",JSON.stringify(A.searchParams))},cvA=(A)=>{if(!A.headers)return;return n9("Headers",JSON.stringify(A.headers))},Yx=(A)=>{switch(A.type){case"graphql":return bB("GraphQL Request",n9("Query",A.query.replace(/[\s\n]+/g," ").trim()),n9("Variables",JSON.stringify(A.variables)));case"rest":return bB("REST Request",n9("Method",A.method),n9("Path",A.path),cvA(A),pvA(A),hvA(A));default:return n9("Unknown request type",A.type)}};var O10=(A)=>{try{return JSON.parse(A)?.error}catch{return}},dvA=(A)=>{if(!A)return"";try{return JSON.parse(A)?.error_description??""}catch{return""}},x_1=(A,D)=>Boolean(A.status===401&&D&&O10(D)==="invalid_token"),g_1=(A,D)=>Boolean(A.status===400&&D&&O10(D)==="invalid_grant");class oa extends Error{request;cause;constructor(A,D,_){super(A);this.request=D,this.cause=_?.cause}get sanitizedMessage(){return"API request failed"}}class f_1 extends oa{status;constructor(A,D,_,Q){super(A,D,Q);this.status=_}}class ra extends f_1{type="rest";response;#A;constructor(A,D,_,Q){let B=`Fetching ${_} from ${D.url} failed. ${dvA(Q)}`;if(x_1(D,Q))B=`Request for ${_} failed because the token is expired or revoked.`;if(g_1(D,Q))B="Request to refresh token failed, because it's revoked or already refreshed.";super(B,A,D.status);this.response=D,this.#A=Q}isInvalidTokenOrInvalidRefresh(){return x_1(this.response,this.#A)||g_1(this.response,this.#A)}get ctx(){return bB("Error details",Yx(this.request),this.#D())}get sanitizedMessage(){if(x_1(this.response,this.#A))return"Request failed because the token is expired or revoked.";if(g_1(this.response,this.#A))return"Request to refresh token failed, because it's revoked or already refreshed.";return`Request failed with error code: ${this.response.status}`}#D(){let A=Object.fromEntries(this.response.headers.entries());return bB("Response",n9("Status",String(this.status)),!M10.default.isEmpty(A)?n9("Headers",JSON.stringify(A)):void 0,this.#A?n9("Response body",this.#A):void 0)}get body(){return this.#A}}var W10=(A)=>A.errors?.map((D)=>D.message).join(",")||"";class u_1 extends f_1{type="graphql";graphQlResponse;#A;constructor(A,D){let _=na(A.query),Q=`GraphQL request "${_}" failed with ${W10(D)}`;super(Q,A,D.status);this.graphQlResponse=D,this.#A=_}get sanitizedMessage(){return`GraphQL request "${this.#A}" failed with status ${this.graphQlResponse.status}`}get ctx(){return bB("Error details",Yx(this.request),this.#D())}#D(){return bB("Response",n9("Status",String(this.graphQlResponse.status)),n9("Errors",W10(this.graphQlResponse)))}}class sa extends oa{type="network";cause;constructor(A,D){let _=D instanceof Error?D.message:`Network error occurred: ${D}`;super(_,A);this.cause=D}get ctx(){return bB("Error details",Yx(this.request),this.#A())}get sanitizedMessage(){let A=this.cause,D=A?.code||A?.errno,_=this.#D(D);return`Network error occurred${_?`: ${_}`:""}`}#A(){if(!this.cause||!(this.cause instanceof Error))return;let A=this.cause;if(A.code||A.errno){let D=A.code||A.errno,_=this.#D(D),Q=_?`${_} (${D})`:`Error code: ${D}`;return n9("Network issue",Q)}return}#D(A){return{ENOTFOUND:"DNS lookup failed - hostname could not be resolved",ECONNREFUSED:"Connection refused - server is not accepting connections",ECONNRESET:"Connection reset by peer - server closed the connection unexpectedly",ETIMEDOUT:"Connection timed out - server did not respond in time",EHOSTUNREACH:"Host unreachable - network route to server not available",ENETUNREACH:"Network unreachable - no network connectivity",ECONNABORTED:"Connection aborted - request was cancelled",EBADF:"Bad file descriptor - network connection issue",EPIPE:"Broken pipe - connection closed while writing data",EAI_AGAIN:"DNS lookup failed temporarily - try again later"}[A]}}class lvA extends oa{type="timeout";#A;constructor(A,D){let _=`Request timed out${D?` after ${D}ms`:""}`;super(_,A);this.#A=_}get ctx(){return bB("Error details",Yx(this.request))}get sanitizedMessage(){return this.#A}}var N10=ra;var $x={type:"rest",method:"GET",path:"/api/v4/version"};var ta=JSON;var L10=(A)=>A.toUpperCase(),P10=(A)=>{let D={};return A.forEach((_,Q)=>{D[Q]=_}),D};var R10=(A,D,_)=>{return A.document?A:{document:A,variables:D,requestHeaders:_,signal:void 0}},T10=(A,D,_)=>{return A.query?A:{query:A,variables:D,requestHeaders:_,signal:void 0}},v10=(A,D)=>{return A.documents?A:{documents:A,requestHeaders:D,signal:void 0}};var sn=I0(M90(),1),O90=(A)=>{let D=void 0,_=A.definitions.filter((Q)=>Q.kind==="OperationDefinition");if(_.length===1)D=_[0]?.name?.value;return D},nq=(A)=>{if(typeof A==="string"){let _=void 0;try{let Q=sn.parse(A);_=O90(Q)}catch(Q){}return{query:A,operationName:_}}let D=O90(A);return{query:sn.print(A),operationName:D}};class Zz extends Error{constructor(A,D){let _=`${Zz.extractMessage(A)}: ${JSON.stringify({response:A,request:D})}`;super(_);if(Object.setPrototypeOf(this,Zz.prototype),this.response=A,this.request=D,typeof Error.captureStackTrace==="function")Error.captureStackTrace(this,Zz)}static extractMessage(A){return A.errors?.[0]?.message??`GraphQL Error (Code: ${A.status})`}}var kI=I0(K50(),1);var MiA="connection_init",OiA="connection_ack",U50="ping",w50="pong",NiA="subscribe",LiA="next",PiA="error",I50="complete";class bI{get type(){return this._type}get id(){return this._id}get payload(){return this._payload}constructor(A,D,_){this._type=A,this._payload=D,this._id=_}get text(){let A={type:this.type};if(this.id!=null&&this.id!=null)A.id=this.id;if(this.payload!=null&&this.payload!=null)A.payload=this.payload;return JSON.stringify(A)}static parse(A,D){let{type:_,payload:Q,id:B}=JSON.parse(A);return new bI(_,D(Q),B)}}class OE1{constructor(A,{onInit:D,onAcknowledged:_,onPing:Q,onPong:B}){this.socketState={acknowledged:!1,lastRequestId:0,subscriptions:{}},this.socket=A,A.addEventListener("open",async(E)=>{this.socketState.acknowledged=!1,this.socketState.subscriptions={},A.send(TiA(D?await D():null).text)}),A.addEventListener("close",(E)=>{this.socketState.acknowledged=!1,this.socketState.subscriptions={}}),A.addEventListener("error",(E)=>{console.error(E)}),A.addEventListener("message",(E)=>{try{let z=RiA(E.data);switch(z.type){case OiA:{if(this.socketState.acknowledged)console.warn("Duplicate CONNECTION_ACK message ignored");else if(this.socketState.acknowledged=!0,_)_(z.payload);return}case U50:{if(Q)Q(z.payload).then((F)=>A.send(Z50(F).text));else A.send(Z50(null).text);return}case w50:{if(B)B(z.payload);return}}if(!this.socketState.acknowledged)return;if(z.id===void 0||z.id===null||!this.socketState.subscriptions[z.id])return;let{query:J,variables:X,subscriber:G}=this.socketState.subscriptions[z.id];switch(z.type){case LiA:{if(!z.payload.errors&&z.payload.data)G.next&&G.next(z.payload.data);if(z.payload.errors)G.error&&G.error(new Zz({...z.payload,status:200},{query:J,variables:X}));return}case PiA:{G.error&&G.error(new Zz({errors:z.payload,status:200},{query:J,variables:X}));return}case I50:{G.complete&&G.complete(),delete this.socketState.subscriptions[z.id];return}}}catch(z){console.error(z),A.close(1006)}A.close(4400,"Unknown graphql-ws message.")})}makeSubscribe(A,D,_,Q){let B=(this.socketState.lastRequestId++).toString();return this.socketState.subscriptions[B]={query:A,variables:Q,subscriber:_},this.socket.send(yiA(B,{query:A,operationName:D,variables:Q}).text),()=>{this.socket.send(SiA(B).text),delete this.socketState.subscriptions[B]}}rawRequest(A,D){return new Promise((_,Q)=>{let B;this.rawSubscribe(A,{next:(E,z)=>B={data:E,extensions:z},error:Q,complete:()=>_(B)},D)})}request(A,D){return new Promise((_,Q)=>{let B;this.subscribe(A,{next:(E)=>B=E,error:Q,complete:()=>_(B)},D)})}subscribe(A,D,_){let{query:Q,operationName:B}=nq(A);return this.makeSubscribe(Q,B,D,_)}rawSubscribe(A,D,_){return this.makeSubscribe(A,void 0,D,_)}ping(A){this.socket.send(viA(A).text)}close(){this.socket.close(1000)}}OE1.PROTOCOL="graphql-transport-ws";function RiA(A,D=(_)=>_){return bI.parse(A,D)}function TiA(A){return new bI(MiA,A)}function viA(A){return new bI(U50,A,void 0)}function Z50(A){return new bI(w50,A,void 0)}function yiA(A,D){return new bI(NiA,D,A)}function SiA(A){return new bI(I50,void 0,A)}var JR=(A)=>{let D={};if(A)if(typeof Headers!=="undefined"&&A instanceof Headers||kI&&kI.Headers&&A instanceof kI.Headers)D=P10(A);else if(Array.isArray(A))A.forEach(([_,Q])=>{if(_&&Q!==void 0)D[_]=Q});else D=A;return D},C50=(A)=>A.replace(/([\s,]|#[^\n\r]+)+/g," ").trim(),jiA=(A)=>{if(!Array.isArray(A.query)){let Q=A,B=[`query=${encodeURIComponent(C50(Q.query))}`];if(A.variables)B.push(`variables=${encodeURIComponent(Q.jsonSerializer.stringify(Q.variables))}`);if(Q.operationName)B.push(`operationName=${encodeURIComponent(Q.operationName)}`);return B.join("&")}if(typeof A.variables!=="undefined"&&!Array.isArray(A.variables))throw new Error("Cannot create query with given variable type, array expected");let D=A,_=A.query.reduce((Q,B,E)=>{return Q.push({query:C50(B),variables:D.variables?D.jsonSerializer.stringify(D.variables[E]):void 0}),Q},[]);return`query=${encodeURIComponent(D.jsonSerializer.stringify(_))}`},biA=(A)=>async(D)=>{let{url:_,query:Q,variables:B,operationName:E,fetch:z,fetchOptions:J,middleware:X}=D,G={...D.headers},F="",$=void 0;if(A==="POST"){if($=kiA(Q,B,E,J.jsonSerializer),typeof $==="string")G["Content-Type"]="application/json"}else F=jiA({query:Q,variables:B,operationName:E,jsonSerializer:J.jsonSerializer??ta});let K={method:A,headers:G,body:$,...J},Y=_,Z=K;if(X){let U=await Promise.resolve(X({...K,url:_,operationName:E,variables:B})),{url:I,...V}=U;Y=I,Z=V}if(F)Y=`${Y}?${F}`;return await z(Y,Z)};class PE1{constructor(A,D={}){this.url=A,this.requestConfig=D,this.rawRequest=async(..._)=>{let[Q,B,E]=_,z=T10(Q,B,E),{headers:J,fetch:X=kI.default,method:G="POST",requestMiddleware:F,responseMiddleware:$,...K}=this.requestConfig,{url:Y}=this;if(z.signal!==void 0)K.signal=z.signal;let{operationName:Z}=nq(z.query);return NE1({url:Y,query:z.query,variables:z.variables,headers:{...JR(LE1(J)),...JR(z.requestHeaders)},operationName:Z,fetch:X,method:G,fetchOptions:K,middleware:F}).then((U)=>{if($)$(U);return U}).catch((U)=>{if($)$(U);throw U})}}async request(A,...D){let[_,Q]=D,B=R10(A,_,Q),{headers:E,fetch:z=kI.default,method:J="POST",requestMiddleware:X,responseMiddleware:G,...F}=this.requestConfig,{url:$}=this;if(B.signal!==void 0)F.signal=B.signal;let{query:K,operationName:Y}=nq(B.document);return NE1({url:$,query:K,variables:B.variables,headers:{...JR(LE1(E)),...JR(B.requestHeaders)},operationName:Y,fetch:z,method:J,fetchOptions:F,middleware:X}).then((Z)=>{if(G)G(Z);return Z.data}).catch((Z)=>{if(G)G(Z);throw Z})}batchRequests(A,D){let _=v10(A,D),{headers:Q,...B}=this.requestConfig;if(_.signal!==void 0)B.signal=_.signal;let E=_.documents.map(({document:J})=>nq(J).query),z=_.documents.map(({variables:J})=>J);return NE1({url:this.url,query:E,variables:z,headers:{...JR(LE1(Q)),...JR(_.requestHeaders)},operationName:void 0,fetch:this.requestConfig.fetch??kI.default,method:this.requestConfig.method||"POST",fetchOptions:B,middleware:this.requestConfig.requestMiddleware}).then((J)=>{if(this.requestConfig.responseMiddleware)this.requestConfig.responseMiddleware(J);return J.data}).catch((J)=>{if(this.requestConfig.responseMiddleware)this.requestConfig.responseMiddleware(J);throw J})}setHeaders(A){return this.requestConfig.headers=A,this}setHeader(A,D){let{headers:_}=this.requestConfig;if(_)_[A]=D;else this.requestConfig.headers={[A]:D};return this}setEndpoint(A){return this.url=A,this}}var NE1=async(A)=>{let{query:D,variables:_,fetchOptions:Q}=A,B=biA(L10(A.method??"post")),E=Array.isArray(A.query),z=await B(A),J=await xiA(z,Q.jsonSerializer??ta),X=Array.isArray(J)?!J.some(({data:F})=>!F):Boolean(J.data),G=Array.isArray(J)||!J.errors||Array.isArray(J.errors)&&!J.errors.length||Q.errorPolicy==="all"||Q.errorPolicy==="ignore";if(z.ok&&G&&X){let{errors:F,...$}=Array.isArray(J)?J:J,K=Q.errorPolicy==="ignore"?$:J;return{...E?{data:K}:K,headers:z.headers,status:z.status}}else throw new Zz({...typeof J==="string"?{error:J}:J,status:z.status,headers:z.headers},{query:D,variables:_})};var kiA=(A,D,_,Q)=>{let B=Q??ta;if(!Array.isArray(A))return B.stringify({query:A,variables:D,operationName:_});if(typeof D!=="undefined"&&!Array.isArray(D))throw new Error("Cannot create request body with given variable type, array expected");let E=A.reduce((z,J,X)=>{return z.push({query:J,variables:D?D[X]:void 0}),z},[]);return B.stringify(E)},xiA=async(A,D)=>{let _;if(A.headers.forEach((Q,B)=>{if(B.toLowerCase()==="content-type")_=Q}),_&&(_.toLowerCase().startsWith("application/json")||_.toLowerCase().startsWith("application/graphql+json")||_.toLowerCase().startsWith("application/graphql-response+json")))return D.parse(await A.text());else return A.text()},LE1=(A)=>{return typeof A==="function"?A():A},fJ=(A,...D)=>{return A.reduce((_,Q,B)=>`${_}${Q}${B in D?String(D[B]):""}`,"")};var H50=async(A,D,_)=>{if(!D.ok){let Q=await D.text().catch(()=>{return});throw new N10(A,D,_,Q)}};function OD(){return"8.32.0"}var V50=(A)=>{let D=A?`${A?.name}:${A?.version}`:"missing client info";return`gitlab-language-server:${OD()} (${D})`};function q50(A){return A!==null&&A!==void 0}var RE1=(A,D)=>{return Object.entries(D).forEach(([_,Q])=>{if(q50(Q))A.searchParams.append(_,String(Q))}),A},Bo=(A)=>A.toString().replace(/\/?$/,"/"),XR=(A)=>A.replace(/^\.?\/?/,"./"),W50=(A)=>{if(A.startsWith("git@")){let D=A.match(/git@([^:]+):(.+)/);if(D){let[,_,Q]=D;return`https://${_}/${Q}`}}if(A.startsWith("git://"))return A.replace("git://","https://");if(A.startsWith("ssh://"))return A.replace("ssh://","https://").replace(/git@([^/]+)/,"$1");return A};var giA=(A)=>A.split("/").pop()||"unknown resource";class TE1{#A;#D;#_;#Q;#B;constructor(A,D,_,Q,B){this.#A=A,this.#D=D,this.#_=new URL(Bo(Q)),this.#Q=B,this.#B=_}getDefaultHeaders(){return{Authorization:`Bearer ${this.#Q}`,"User-Agent":V50(this.#B),"X-Gitlab-Language-Server-Version":OD()}}async fetchFromApiRaw(A){try{let D=`Unknown request method "${A.method}", request type "${A.type}"`;switch(A.method){case"GET":return await this.#z(A);case"POST":return await this.#J(A);case"PATCH":return await this.#X(A);case"PUT":return await this.#F(A);case"HEAD":return await this.#G(A);default:throw new Error(D)}}catch(D){throw new sa(A,D)}}async fetchFromApi(A){if(A.type==="graphql")return this.#E(A);let D=await this.fetchFromApiRaw(A);return await H50(A,D,giA(A.path)),D.json()}fetchOperation=(A)=>(D)=>this.fetchFromApi({...A,signal:D});async#E(A){let D=new URL("./api/graphql",this.#_),_=na(A.query);if(_)this.#A.debug(`[SimpleApiClient] Making GraphQL request: ${_}`);let Q=async(E,z)=>{let J=E instanceof URL?E.toString():E;return this.#D.post(J,{...z,headers:{...z?.headers},signal:A.signal})},B=new PE1(D.href,{fetch:Q,headers:{...this.getDefaultHeaders()}});try{return await B.request(A.query,A.variables)}catch(E){if(E instanceof Zz)throw new u_1(A,E.response);throw new sa(A,E)}}async#z(A){let D=XR(A.path),_=new URL(D,this.#_);return RE1(_,A.searchParams??{}),this.#D.get(_,{headers:{...this.getDefaultHeaders(),...A.headers},signal:A.signal})}async#J(A){let D=XR(A.path),_=new URL(D,this.#_);return this.#D.post(_,{headers:{"Content-Type":"application/json",...this.getDefaultHeaders(),...A.headers},body:JSON.stringify(A.body),signal:A.signal})}async#X(A){let D=XR(A.path),_=new URL(D,this.#_);return this.#D.patch(_,{headers:{"Content-Type":"application/json",...this.getDefaultHeaders(),...A.headers},body:JSON.stringify(A.body),signal:A.signal})}async#F(A){let D=XR(A.path),_=new URL(D,this.#_);return this.#D.put(_,{headers:{"Content-Type":"application/json",...this.getDefaultHeaders(),...A.headers},body:JSON.stringify(A.body),signal:A.signal})}async#G(A){let D=XR(A.path),_=new URL(D,this.#_);return RE1(_,A.searchParams??{}),this.#D.head(_,{headers:{...this.getDefaultHeaders(),...A.headers},signal:A.signal})}}var M50="api",O50=(A)=>{if(!(A instanceof ra)||!A.isInvalidTokenOrInvalidRefresh())return{valid:!1,reason:"unknown",message:`Token validation failed: ${A}`};return{valid:!1,reason:"invalid_token",message:"Token is invalid or expired."}},N50=(A)=>{if(A.includes(M50))return;return{valid:!1,reason:"invalid_scopes",message:`Token has scope(s) ${A.map((_)=>`'${_}'`).join(", ")} (needs ${M50}).`}};async function fiA(A,D){let _={type:"rest",method:"GET",path:"/api/v4/personal_access_tokens/self"},{scopes:Q}=await A.fetchFromApi(_),B=N50(Q);if(B)return B;return{valid:!0,tokenInfo:{scopes:Q,type:"pat",token:D}}}async function uiA(A,D){let _={type:"rest",method:"GET",path:"/oauth/token/info"},{scope:Q}=await A.fetchFromApi(_),B=N50(Q);if(B)return B;return{valid:!0,tokenInfo:{scopes:Q,type:"oauth",token:D}}}async function L50(A,D){if(!D)return{valid:!1,message:"No token provided",reason:"invalid_token"};let _=await Promise.all([fiA(A,D).catch(O50),uiA(A,D).catch(O50)]),Q=_.find((J)=>J.valid);if(Q)return Q;let B=_.filter((J)=>!J.valid),E=B.find((J)=>J.reason==="invalid_scopes");if(E)return E;let z=B.find((J)=>J.reason==="invalid_token");if(z)return z;return _[0]}var Eo=I0(WA(),1);var vE1=Eo.createInterfaceId("ProjectService");class zg{#A;#D;constructor(A,D){this.#A=D,this.#D=yA(A,"[ProjectService]")}async getProjectFromPathWithNamespace(A){return this.#D.debug(`Fetching details for project: ${A}`),this.#A.fetchFromApi({type:"rest",method:"GET",path:`/api/v4/projects/${encodeURIComponent(A)}`})}async getProjectIdsFromPaths(A){return(await this.#A.fetchFromApi({type:"graphql",query:fJ`
|
|
1165
|
+
`,"")).trim()}function uvA(A){return q10(A).match(/^(query|mutation|subscription)\s+/)?.[1]}function mvA(A){return q10(A).match(/(?:query|mutation|subscription)\s+(\w+)/)?.[1]}function na(A){let D=uvA(A),_=mvA(A);if(D)return`${D}: ${_??"anonymous"}`;return}var hvA=(A)=>{if(A.method==="GET"||A.method==="HEAD")return;if(!A.body)return;return n9("Body",JSON.stringify(A.body))},pvA=(A)=>{if(A.method==="POST"||A.method==="PATCH"||A.method==="PUT")return;if(!A.searchParams)return;return n9("Search Params",JSON.stringify(A.searchParams))},cvA=(A)=>{if(!A.headers)return;return n9("Headers",JSON.stringify(A.headers))},Yx=(A)=>{switch(A.type){case"graphql":return bB("GraphQL Request",n9("Query",A.query.replace(/[\s\n]+/g," ").trim()),n9("Variables",JSON.stringify(A.variables)));case"rest":return bB("REST Request",n9("Method",A.method),n9("Path",A.path),cvA(A),pvA(A),hvA(A));default:return n9("Unknown request type",A.type)}};var O10=(A)=>{try{return JSON.parse(A)?.error}catch{return}},dvA=(A)=>{if(!A)return"";try{return JSON.parse(A)?.error_description??""}catch{return""}},x_1=(A,D)=>Boolean(A.status===401&&D&&O10(D)==="invalid_token"),g_1=(A,D)=>Boolean(A.status===400&&D&&O10(D)==="invalid_grant");class oa extends Error{request;cause;constructor(A,D,_){super(A);this.request=D,this.cause=_?.cause}get sanitizedMessage(){return"API request failed"}}class f_1 extends oa{status;constructor(A,D,_,Q){super(A,D,Q);this.status=_}}class ra extends f_1{type="rest";response;#A;constructor(A,D,_,Q){let B=`Fetching ${_} from ${D.url} failed. ${dvA(Q)}`;if(x_1(D,Q))B=`Request for ${_} failed because the token is expired or revoked.`;if(g_1(D,Q))B="Request to refresh token failed, because it's revoked or already refreshed.";super(B,A,D.status);this.response=D,this.#A=Q}isInvalidTokenOrInvalidRefresh(){return x_1(this.response,this.#A)||g_1(this.response,this.#A)}get ctx(){return bB("Error details",Yx(this.request),this.#D())}get sanitizedMessage(){if(x_1(this.response,this.#A))return"Request failed because the token is expired or revoked.";if(g_1(this.response,this.#A))return"Request to refresh token failed, because it's revoked or already refreshed.";return`Request failed with error code: ${this.response.status}`}#D(){let A=Object.fromEntries(this.response.headers.entries());return bB("Response",n9("Status",String(this.status)),!M10.default.isEmpty(A)?n9("Headers",JSON.stringify(A)):void 0,this.#A?n9("Response body",this.#A):void 0)}get body(){return this.#A}}var W10=(A)=>A.errors?.map((D)=>D.message).join(",")||"";class u_1 extends f_1{type="graphql";graphQlResponse;#A;constructor(A,D){let _=na(A.query),Q=`GraphQL request "${_}" failed with ${W10(D)}`;super(Q,A,D.status);this.graphQlResponse=D,this.#A=_}get sanitizedMessage(){return`GraphQL request "${this.#A}" failed with status ${this.graphQlResponse.status}`}get ctx(){return bB("Error details",Yx(this.request),this.#D())}#D(){return bB("Response",n9("Status",String(this.graphQlResponse.status)),n9("Errors",W10(this.graphQlResponse)))}}class sa extends oa{type="network";cause;constructor(A,D){let _=D instanceof Error?D.message:`Network error occurred: ${D}`;super(_,A);this.cause=D}get ctx(){return bB("Error details",Yx(this.request),this.#A())}get sanitizedMessage(){let A=this.cause,D=A?.code||A?.errno,_=this.#D(D);return`Network error occurred${_?`: ${_}`:""}`}#A(){if(!this.cause||!(this.cause instanceof Error))return;let A=this.cause;if(A.code||A.errno){let D=A.code||A.errno,_=this.#D(D),Q=_?`${_} (${D})`:`Error code: ${D}`;return n9("Network issue",Q)}return}#D(A){return{ENOTFOUND:"DNS lookup failed - hostname could not be resolved",ECONNREFUSED:"Connection refused - server is not accepting connections",ECONNRESET:"Connection reset by peer - server closed the connection unexpectedly",ETIMEDOUT:"Connection timed out - server did not respond in time",EHOSTUNREACH:"Host unreachable - network route to server not available",ENETUNREACH:"Network unreachable - no network connectivity",ECONNABORTED:"Connection aborted - request was cancelled",EBADF:"Bad file descriptor - network connection issue",EPIPE:"Broken pipe - connection closed while writing data",EAI_AGAIN:"DNS lookup failed temporarily - try again later"}[A]}}class lvA extends oa{type="timeout";#A;constructor(A,D){let _=`Request timed out${D?` after ${D}ms`:""}`;super(_,A);this.#A=_}get ctx(){return bB("Error details",Yx(this.request))}get sanitizedMessage(){return this.#A}}var N10=ra;var $x={type:"rest",method:"GET",path:"/api/v4/version"};var ta=JSON;var L10=(A)=>A.toUpperCase(),P10=(A)=>{let D={};return A.forEach((_,Q)=>{D[Q]=_}),D};var R10=(A,D,_)=>{return A.document?A:{document:A,variables:D,requestHeaders:_,signal:void 0}},T10=(A,D,_)=>{return A.query?A:{query:A,variables:D,requestHeaders:_,signal:void 0}},v10=(A,D)=>{return A.documents?A:{documents:A,requestHeaders:D,signal:void 0}};var sn=I0(M90(),1),O90=(A)=>{let D=void 0,_=A.definitions.filter((Q)=>Q.kind==="OperationDefinition");if(_.length===1)D=_[0]?.name?.value;return D},nq=(A)=>{if(typeof A==="string"){let _=void 0;try{let Q=sn.parse(A);_=O90(Q)}catch(Q){}return{query:A,operationName:_}}let D=O90(A);return{query:sn.print(A),operationName:D}};class Zz extends Error{constructor(A,D){let _=`${Zz.extractMessage(A)}: ${JSON.stringify({response:A,request:D})}`;super(_);if(Object.setPrototypeOf(this,Zz.prototype),this.response=A,this.request=D,typeof Error.captureStackTrace==="function")Error.captureStackTrace(this,Zz)}static extractMessage(A){return A.errors?.[0]?.message??`GraphQL Error (Code: ${A.status})`}}var kI=I0(K50(),1);var MiA="connection_init",OiA="connection_ack",U50="ping",w50="pong",NiA="subscribe",LiA="next",PiA="error",I50="complete";class bI{get type(){return this._type}get id(){return this._id}get payload(){return this._payload}constructor(A,D,_){this._type=A,this._payload=D,this._id=_}get text(){let A={type:this.type};if(this.id!=null&&this.id!=null)A.id=this.id;if(this.payload!=null&&this.payload!=null)A.payload=this.payload;return JSON.stringify(A)}static parse(A,D){let{type:_,payload:Q,id:B}=JSON.parse(A);return new bI(_,D(Q),B)}}class OE1{constructor(A,{onInit:D,onAcknowledged:_,onPing:Q,onPong:B}){this.socketState={acknowledged:!1,lastRequestId:0,subscriptions:{}},this.socket=A,A.addEventListener("open",async(E)=>{this.socketState.acknowledged=!1,this.socketState.subscriptions={},A.send(TiA(D?await D():null).text)}),A.addEventListener("close",(E)=>{this.socketState.acknowledged=!1,this.socketState.subscriptions={}}),A.addEventListener("error",(E)=>{console.error(E)}),A.addEventListener("message",(E)=>{try{let z=RiA(E.data);switch(z.type){case OiA:{if(this.socketState.acknowledged)console.warn("Duplicate CONNECTION_ACK message ignored");else if(this.socketState.acknowledged=!0,_)_(z.payload);return}case U50:{if(Q)Q(z.payload).then((F)=>A.send(Z50(F).text));else A.send(Z50(null).text);return}case w50:{if(B)B(z.payload);return}}if(!this.socketState.acknowledged)return;if(z.id===void 0||z.id===null||!this.socketState.subscriptions[z.id])return;let{query:J,variables:X,subscriber:G}=this.socketState.subscriptions[z.id];switch(z.type){case LiA:{if(!z.payload.errors&&z.payload.data)G.next&&G.next(z.payload.data);if(z.payload.errors)G.error&&G.error(new Zz({...z.payload,status:200},{query:J,variables:X}));return}case PiA:{G.error&&G.error(new Zz({errors:z.payload,status:200},{query:J,variables:X}));return}case I50:{G.complete&&G.complete(),delete this.socketState.subscriptions[z.id];return}}}catch(z){console.error(z),A.close(1006)}A.close(4400,"Unknown graphql-ws message.")})}makeSubscribe(A,D,_,Q){let B=(this.socketState.lastRequestId++).toString();return this.socketState.subscriptions[B]={query:A,variables:Q,subscriber:_},this.socket.send(yiA(B,{query:A,operationName:D,variables:Q}).text),()=>{this.socket.send(SiA(B).text),delete this.socketState.subscriptions[B]}}rawRequest(A,D){return new Promise((_,Q)=>{let B;this.rawSubscribe(A,{next:(E,z)=>B={data:E,extensions:z},error:Q,complete:()=>_(B)},D)})}request(A,D){return new Promise((_,Q)=>{let B;this.subscribe(A,{next:(E)=>B=E,error:Q,complete:()=>_(B)},D)})}subscribe(A,D,_){let{query:Q,operationName:B}=nq(A);return this.makeSubscribe(Q,B,D,_)}rawSubscribe(A,D,_){return this.makeSubscribe(A,void 0,D,_)}ping(A){this.socket.send(viA(A).text)}close(){this.socket.close(1000)}}OE1.PROTOCOL="graphql-transport-ws";function RiA(A,D=(_)=>_){return bI.parse(A,D)}function TiA(A){return new bI(MiA,A)}function viA(A){return new bI(U50,A,void 0)}function Z50(A){return new bI(w50,A,void 0)}function yiA(A,D){return new bI(NiA,D,A)}function SiA(A){return new bI(I50,void 0,A)}var JR=(A)=>{let D={};if(A)if(typeof Headers!=="undefined"&&A instanceof Headers||kI&&kI.Headers&&A instanceof kI.Headers)D=P10(A);else if(Array.isArray(A))A.forEach(([_,Q])=>{if(_&&Q!==void 0)D[_]=Q});else D=A;return D},C50=(A)=>A.replace(/([\s,]|#[^\n\r]+)+/g," ").trim(),jiA=(A)=>{if(!Array.isArray(A.query)){let Q=A,B=[`query=${encodeURIComponent(C50(Q.query))}`];if(A.variables)B.push(`variables=${encodeURIComponent(Q.jsonSerializer.stringify(Q.variables))}`);if(Q.operationName)B.push(`operationName=${encodeURIComponent(Q.operationName)}`);return B.join("&")}if(typeof A.variables!=="undefined"&&!Array.isArray(A.variables))throw new Error("Cannot create query with given variable type, array expected");let D=A,_=A.query.reduce((Q,B,E)=>{return Q.push({query:C50(B),variables:D.variables?D.jsonSerializer.stringify(D.variables[E]):void 0}),Q},[]);return`query=${encodeURIComponent(D.jsonSerializer.stringify(_))}`},biA=(A)=>async(D)=>{let{url:_,query:Q,variables:B,operationName:E,fetch:z,fetchOptions:J,middleware:X}=D,G={...D.headers},F="",$=void 0;if(A==="POST"){if($=kiA(Q,B,E,J.jsonSerializer),typeof $==="string")G["Content-Type"]="application/json"}else F=jiA({query:Q,variables:B,operationName:E,jsonSerializer:J.jsonSerializer??ta});let K={method:A,headers:G,body:$,...J},Y=_,Z=K;if(X){let U=await Promise.resolve(X({...K,url:_,operationName:E,variables:B})),{url:I,...V}=U;Y=I,Z=V}if(F)Y=`${Y}?${F}`;return await z(Y,Z)};class PE1{constructor(A,D={}){this.url=A,this.requestConfig=D,this.rawRequest=async(..._)=>{let[Q,B,E]=_,z=T10(Q,B,E),{headers:J,fetch:X=kI.default,method:G="POST",requestMiddleware:F,responseMiddleware:$,...K}=this.requestConfig,{url:Y}=this;if(z.signal!==void 0)K.signal=z.signal;let{operationName:Z}=nq(z.query);return NE1({url:Y,query:z.query,variables:z.variables,headers:{...JR(LE1(J)),...JR(z.requestHeaders)},operationName:Z,fetch:X,method:G,fetchOptions:K,middleware:F}).then((U)=>{if($)$(U);return U}).catch((U)=>{if($)$(U);throw U})}}async request(A,...D){let[_,Q]=D,B=R10(A,_,Q),{headers:E,fetch:z=kI.default,method:J="POST",requestMiddleware:X,responseMiddleware:G,...F}=this.requestConfig,{url:$}=this;if(B.signal!==void 0)F.signal=B.signal;let{query:K,operationName:Y}=nq(B.document);return NE1({url:$,query:K,variables:B.variables,headers:{...JR(LE1(E)),...JR(B.requestHeaders)},operationName:Y,fetch:z,method:J,fetchOptions:F,middleware:X}).then((Z)=>{if(G)G(Z);return Z.data}).catch((Z)=>{if(G)G(Z);throw Z})}batchRequests(A,D){let _=v10(A,D),{headers:Q,...B}=this.requestConfig;if(_.signal!==void 0)B.signal=_.signal;let E=_.documents.map(({document:J})=>nq(J).query),z=_.documents.map(({variables:J})=>J);return NE1({url:this.url,query:E,variables:z,headers:{...JR(LE1(Q)),...JR(_.requestHeaders)},operationName:void 0,fetch:this.requestConfig.fetch??kI.default,method:this.requestConfig.method||"POST",fetchOptions:B,middleware:this.requestConfig.requestMiddleware}).then((J)=>{if(this.requestConfig.responseMiddleware)this.requestConfig.responseMiddleware(J);return J.data}).catch((J)=>{if(this.requestConfig.responseMiddleware)this.requestConfig.responseMiddleware(J);throw J})}setHeaders(A){return this.requestConfig.headers=A,this}setHeader(A,D){let{headers:_}=this.requestConfig;if(_)_[A]=D;else this.requestConfig.headers={[A]:D};return this}setEndpoint(A){return this.url=A,this}}var NE1=async(A)=>{let{query:D,variables:_,fetchOptions:Q}=A,B=biA(L10(A.method??"post")),E=Array.isArray(A.query),z=await B(A),J=await xiA(z,Q.jsonSerializer??ta),X=Array.isArray(J)?!J.some(({data:F})=>!F):Boolean(J.data),G=Array.isArray(J)||!J.errors||Array.isArray(J.errors)&&!J.errors.length||Q.errorPolicy==="all"||Q.errorPolicy==="ignore";if(z.ok&&G&&X){let{errors:F,...$}=Array.isArray(J)?J:J,K=Q.errorPolicy==="ignore"?$:J;return{...E?{data:K}:K,headers:z.headers,status:z.status}}else throw new Zz({...typeof J==="string"?{error:J}:J,status:z.status,headers:z.headers},{query:D,variables:_})};var kiA=(A,D,_,Q)=>{let B=Q??ta;if(!Array.isArray(A))return B.stringify({query:A,variables:D,operationName:_});if(typeof D!=="undefined"&&!Array.isArray(D))throw new Error("Cannot create request body with given variable type, array expected");let E=A.reduce((z,J,X)=>{return z.push({query:J,variables:D?D[X]:void 0}),z},[]);return B.stringify(E)},xiA=async(A,D)=>{let _;if(A.headers.forEach((Q,B)=>{if(B.toLowerCase()==="content-type")_=Q}),_&&(_.toLowerCase().startsWith("application/json")||_.toLowerCase().startsWith("application/graphql+json")||_.toLowerCase().startsWith("application/graphql-response+json")))return D.parse(await A.text());else return A.text()},LE1=(A)=>{return typeof A==="function"?A():A},fJ=(A,...D)=>{return A.reduce((_,Q,B)=>`${_}${Q}${B in D?String(D[B]):""}`,"")};var H50=async(A,D,_)=>{if(!D.ok){let Q=await D.text().catch(()=>{return});throw new N10(A,D,_,Q)}};function OD(){return"8.33.1"}var V50=(A)=>{let D=A?`${A?.name}:${A?.version}`:"missing client info";return`gitlab-language-server:${OD()} (${D})`};function q50(A){return A!==null&&A!==void 0}var RE1=(A,D)=>{return Object.entries(D).forEach(([_,Q])=>{if(q50(Q))A.searchParams.append(_,String(Q))}),A},Bo=(A)=>A.toString().replace(/\/?$/,"/"),XR=(A)=>A.replace(/^\.?\/?/,"./"),W50=(A)=>{if(A.startsWith("git@")){let D=A.match(/git@([^:]+):(.+)/);if(D){let[,_,Q]=D;return`https://${_}/${Q}`}}if(A.startsWith("git://"))return A.replace("git://","https://");if(A.startsWith("ssh://"))return A.replace("ssh://","https://").replace(/git@([^/]+)/,"$1");return A};var giA=(A)=>A.split("/").pop()||"unknown resource";class TE1{#A;#D;#_;#Q;#B;constructor(A,D,_,Q,B){this.#A=A,this.#D=D,this.#_=new URL(Bo(Q)),this.#Q=B,this.#B=_}getDefaultHeaders(){return{Authorization:`Bearer ${this.#Q}`,"User-Agent":V50(this.#B),"X-Gitlab-Language-Server-Version":OD()}}async fetchFromApiRaw(A){try{let D=`Unknown request method "${A.method}", request type "${A.type}"`;switch(A.method){case"GET":return await this.#z(A);case"POST":return await this.#J(A);case"PATCH":return await this.#X(A);case"PUT":return await this.#F(A);case"HEAD":return await this.#G(A);default:throw new Error(D)}}catch(D){throw new sa(A,D)}}async fetchFromApi(A){if(A.type==="graphql")return this.#E(A);let D=await this.fetchFromApiRaw(A);return await H50(A,D,giA(A.path)),D.json()}fetchOperation=(A)=>(D)=>this.fetchFromApi({...A,signal:D});async#E(A){let D=new URL("./api/graphql",this.#_),_=na(A.query);if(_)this.#A.debug(`[SimpleApiClient] Making GraphQL request: ${_}`);let Q=async(E,z)=>{let J=E instanceof URL?E.toString():E;return this.#D.post(J,{...z,headers:{...z?.headers},signal:A.signal})},B=new PE1(D.href,{fetch:Q,headers:{...this.getDefaultHeaders()}});try{return await B.request(A.query,A.variables)}catch(E){if(E instanceof Zz)throw new u_1(A,E.response);throw new sa(A,E)}}async#z(A){let D=XR(A.path),_=new URL(D,this.#_);return RE1(_,A.searchParams??{}),this.#D.get(_,{headers:{...this.getDefaultHeaders(),...A.headers},signal:A.signal})}async#J(A){let D=XR(A.path),_=new URL(D,this.#_);return this.#D.post(_,{headers:{"Content-Type":"application/json",...this.getDefaultHeaders(),...A.headers},body:JSON.stringify(A.body),signal:A.signal})}async#X(A){let D=XR(A.path),_=new URL(D,this.#_);return this.#D.patch(_,{headers:{"Content-Type":"application/json",...this.getDefaultHeaders(),...A.headers},body:JSON.stringify(A.body),signal:A.signal})}async#F(A){let D=XR(A.path),_=new URL(D,this.#_);return this.#D.put(_,{headers:{"Content-Type":"application/json",...this.getDefaultHeaders(),...A.headers},body:JSON.stringify(A.body),signal:A.signal})}async#G(A){let D=XR(A.path),_=new URL(D,this.#_);return RE1(_,A.searchParams??{}),this.#D.head(_,{headers:{...this.getDefaultHeaders(),...A.headers},signal:A.signal})}}var M50="api",O50=(A)=>{if(!(A instanceof ra)||!A.isInvalidTokenOrInvalidRefresh())return{valid:!1,reason:"unknown",message:`Token validation failed: ${A}`};return{valid:!1,reason:"invalid_token",message:"Token is invalid or expired."}},N50=(A)=>{if(A.includes(M50))return;return{valid:!1,reason:"invalid_scopes",message:`Token has scope(s) ${A.map((_)=>`'${_}'`).join(", ")} (needs ${M50}).`}};async function fiA(A,D){let _={type:"rest",method:"GET",path:"/api/v4/personal_access_tokens/self"},{scopes:Q}=await A.fetchFromApi(_),B=N50(Q);if(B)return B;return{valid:!0,tokenInfo:{scopes:Q,type:"pat",token:D}}}async function uiA(A,D){let _={type:"rest",method:"GET",path:"/oauth/token/info"},{scope:Q}=await A.fetchFromApi(_),B=N50(Q);if(B)return B;return{valid:!0,tokenInfo:{scopes:Q,type:"oauth",token:D}}}async function L50(A,D){if(!D)return{valid:!1,message:"No token provided",reason:"invalid_token"};let _=await Promise.all([fiA(A,D).catch(O50),uiA(A,D).catch(O50)]),Q=_.find((J)=>J.valid);if(Q)return Q;let B=_.filter((J)=>!J.valid),E=B.find((J)=>J.reason==="invalid_scopes");if(E)return E;let z=B.find((J)=>J.reason==="invalid_token");if(z)return z;return _[0]}var Eo=I0(WA(),1);var vE1=Eo.createInterfaceId("ProjectService");class zg{#A;#D;constructor(A,D){this.#A=D,this.#D=yA(A,"[ProjectService]")}async getProjectFromPathWithNamespace(A){return this.#D.debug(`Fetching details for project: ${A}`),this.#A.fetchFromApi({type:"rest",method:"GET",path:`/api/v4/projects/${encodeURIComponent(A)}`})}async getProjectIdsFromPaths(A){return(await this.#A.fetchFromApi({type:"graphql",query:fJ`
|
|
1166
1166
|
query getProjectIds($fullPaths: [String!]!) {
|
|
1167
1167
|
projects(fullPaths: $fullPaths) {
|
|
1168
1168
|
nodes {
|
|
@@ -1430,11 +1430,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
1430
1430
|
ref
|
|
1431
1431
|
}
|
|
1432
1432
|
`,fallback:(A)=>{if(A.err)throw new Error(`Error querying available models: ${A.err}`,{cause:A.err});return{aiChatAvailableModels:null,metadata:null}}};var kh0={aiChatAvailableModels:bh0};var WA1=I0(WA(),1);var hq1=WA1.createInterfaceId("GraphQLService");class Zh{#A=new NZ;#D;#_;#Q;constructor(A,D){this.#D=A,this.#_=this.#D.instanceInfo?.instanceVersion,this.#Q=D,this.#A.add(this.#D.onApiReconfigured((_)=>{if(_.isInValidState)this.#_=_.instanceInfo.instanceVersion}))}async execute({supportedSinceInstanceVersion:A,fallback:D,query:_},Q={}){if(!this.#B(A))return this.#Q.debug(`GitLab ${A} is required to use this operation falling back to default behaviour.`),D({unsupported:"future_field"});try{return await this.#D.fetchFromApi({type:"graphql",query:_,variables:Q??{}})}catch(B){return D({err:B})}}dispose(){this.#A.dispose()}#B(A){if(A)return h_(this.#_,A,()=>!0,()=>!1);return!1}}Zh=i0([WA1.Injectable(hq1,[w8,$A])],Zh);var MA1=I0(WA(),1);var pq1=MA1.createInterfaceId("WorkflowGraphqlOperations");class Uy{#A=[hH0,pH0,xT,cH0,dH0,lH0,iH0,Ts];containsQuery(A){return A!==null&&this.#A.includes(A)}}Uy=i0([MA1.Injectable(pq1,[])],Uy);var uC=OA1.createInterfaceId("WorkflowRailsService"),Rl6="ide";class wy{#A;#D;#_;#Q;#B;#E=null;#z=null;constructor(A,D,_,Q){this.#A=yA(A,"[WorkflowRailsService]"),this.#D=D,this.#_=mH0,this.#Q=_,this.#B=Q,this.#D.onApiReconfigured(()=>{this.#E=null,this.#z=null})}async updateStatus({workflowId:A,statusEvent:D}){return this.#D?.fetchFromApi({type:"rest",path:`/api/v4/ai/duo_workflows/workflows/${A}`,method:"PATCH",body:{status_event:D}})}async sendEvent(A,D,_){if(!await this.#D?.fetchFromApi({type:"rest",method:"POST",path:`/api/v4/ai/duo_workflows/workflows/${A}/events`,body:{event_type:D,..._||{message:""}},supportedSinceInstanceVersion:{resourceName:"create a workflow event",version:"17.5.0"}}))throw new Error("Failed to create event")}setAgentPrivileges(A){this.#_=A,this.#A.info(`Updated agent privileges: ${A}`)}async createWorkflow(A,D,_,Q,B={}){let E=B?.allowAgentToRequestUser??!0,z=B?.agentPrivileges??this.#_,J=B?.preApprovedAgentPrivileges??void 0;try{let X={...D,goal:A,workflow_definition:_||"software_development",environment:Rl6,allow_agent_to_request_user:E},G={agent_privileges:z},F={...G,pre_approved_agent_privileges:J},$={...F,ai_catalog_item_version_id:Q},K=h_(this.#D?.instanceInfo?.instanceVersion,"18.4.0",()=>({...X,...$}),()=>h_(this.#D?.instanceInfo?.instanceVersion,"18.0.0",()=>({...X,...F}),()=>h_(this.#D?.instanceInfo?.instanceVersion,"17.6.0",()=>({...X,...G}),()=>X))),Y=await this.#D?.fetchFromApiRaw({type:"rest",method:"POST",path:"/api/v4/ai/duo_workflows/workflows",body:K,supportedSinceInstanceVersion:{resourceName:"create a workflow",version:"17.3.0"}});return this.#X(Y),(await Y.json()).id.toString()}catch(X){let G=X;throw this.#A.error("Failed to create the workflow",G),X}}async getWorkflowToken(A){try{return await this.#D?.fetchFromApi({type:"rest",method:"POST",path:"/api/v4/ai/duo_workflows/direct_access",body:{workflow_definition:A||"software_development"},supportedSinceInstanceVersion:{resourceName:"get workflow direct access",version:"18.1.0"}})}catch(D){let _=D;throw this.#A.error("Failed to fetch the workflow token",_),D}}async revokeWorkflowToken(A){try{let D=this.#D?.instanceInfo?.instanceVersion,_=D&&this.#F(D,"18.4.0");await this.#D?.fetchFromApi({type:"rest",method:"POST",path:_?"/api/v4/ai/duo_workflows/revoke_token":"/oauth/revoke",body:{token:A.gitlab_rails.token},supportedSinceInstanceVersion:{resourceName:"revoke workflow token",version:_?"18.4.0":"15.1.0"}}),this.#A.info("Successfully revoked workflow token")}catch(D){let _=D,Q=new Error("Could not revoke workflow token");throw Q.cause=_,Q}}async getGraphqlData({operationName:A,query:D,variables:_,supportedSinceInstanceVersion:Q,fragment:B}){if(A){let E=kh0[A];if(!E)throw new Error(`Unknown GraphQL operation: ${A}`);return this.#B.execute(E,_)}if(D)return this.#J({query:D,variables:_,supportedSinceInstanceVersion:Q,fragment:B});throw new Error('Missing required argument either "operationName" or "query" must be provided.')}async#J({query:A,variables:D,supportedSinceInstanceVersion:_,fragment:Q}){if(!this.#Q.containsQuery(A))throw this.#A.error(`: ${JSON.stringify({query:A})}`),new Error("Provided Graphql query is not meeting performance standards.");try{let B="";if(Q){let{lt:E,gte:z,version:J}=Q;B=h_(this.#D?.instanceInfo?.instanceVersion,J,()=>z,()=>E)}return await this.#D?.fetchFromApi({type:"graphql",query:`${A}
|
|
1433
|
-
${B}`,variables:D||{},supportedSinceInstanceVersion:_})}catch(B){this.#A.info("Graphql fetch failed:",B);let E=B;throw this.#A.error(E),new Error(E.message)}}async getAiChatAvailableModels({rootNamespaceId:A}){if(!this.#E)try{let D={rootNamespaceId:W70(q70,A)};this.#E=await this.getGraphqlData({query:null,operationName:"aiChatAvailableModels",variables:D})}catch(D){this.#A.warn("Unexpected exception fetching aiChatAvailableModels",D),this.#E=null}return this.#E}async getEnabledWorkflowFeatureFlags(A){if(this.#z)return this.#z;try{let D=await this.#D?.fetchFromApiRaw({type:"rest",method:"HEAD",path:`/api/v4/ai/duo_workflows/workflows/${A}`,supportedSinceInstanceVersion:{resourceName:"get workflow",version:"17.3.0"}});return this.#X(D)}catch(D){let _=D;throw this.#A.error("Failed to get enabled feature flags header",_),D}}#X(A){let D=A.headers.get("x-gitlab-enabled-feature-flags");return this.#z=D?D.split(",").filter(Boolean):[],this.#z}#F(A,D){return h_(A,D,()=>!0,()=>!1)}}wy=i0([OA1.Injectable(uC,[$A,w8,pq1,hq1])],wy);var NA1=I0(WA(),1);var mC=NA1.createInterfaceId("WorkflowTokenService"),Tl6=30000;class Cy{#A;#D;#_=new Map;#Q="CHAT_SHARED_TOKEN";constructor(A,D){this.#A=yA(A,"[WorkflowTokenService]"),this.#D=D}getTokenFromCache({workflowType:A,workflowId:D}){let _=A==="chat",Q;if(_)Q=this.#Q;else{if(!D)return null;Q=D}if(this.#_.has(Q)){let{token:B}=this.#_.get(Q);return B}return null}async getToken(A,D){let _=this.getTokenFromCache({workflowType:D,workflowId:A});if(_)return this.#A.debug(`Reusing existing valid token for workflow "${A}"`),_;this.#A.debug(`Fetching new token for workflow "${A}", type: "${D}"`);let Q=await this.#D.getWorkflowToken(D);return this.cacheToken(A,D,Q),Q}cacheToken(A,D,_){let B=D==="chat"?this.#Q:A,E=this.#B(_.duo_workflow_service.token_expires_at),z=this.#B(_.gitlab_rails.token_expires_at),J=Math.min(E,z),X=Date.now(),G=Math.max(0,J-X-Tl6),F=setTimeout(()=>{this.#A.debug(`Token for workflow "${B}" is about to expire, clearing it`),this.#E(B)},G);this.#_.set(B,{token:_,timeoutId:F}),this.#A.debug(`Token for workflow "${B}" will expire at ${new Date(J).toISOString()}, clearing in ${G/1000} seconds`)}async revokeToken(A,D){try{this.#A.debug("Revoking token");let _=this.#_.get(this.#Q),B=_&&D===_.token?this.#Q:A;if(this.#_.has(B))this.#E(B),this.#A.debug(`Removed token for workflow "${B}" from cache`)}catch(_){this.#A.error("Error revoking token",_)}}#B(A){if(typeof A==="number")return A*1000;if(typeof A==="string"){let D=new Date(A);if(Number.isNaN(D.getTime()))throw new Error(`Failed to parse token expiry date string: "${A}"`);return D.getTime()}throw new Error(`Received unexpected token expiry: "${A}"`)}#E(A){if(!this.#_.has(A))return;let D=this.#_.get(A);clearTimeout(D.timeoutId),this.#_.delete(A)}dispose(){for(let A of this.#_.keys())this.#E(A);this.#A.debug("Disposed token service, cleared all tokens and timeouts")}}Cy=i0([NA1.Injectable(mC,[$A,uC])],Cy);class cq1{#A=[];#D=[];push(A){if(this.#D.length>0)this.#D.shift()(A);else this.#A.push(A)}async#_(){if(this.#A.length>0)return this.#A.shift();return new Promise((A)=>{this.#D.push(A)})}async*[Symbol.asyncIterator](){while(!0){let A=await this.#_();if(typeof A==="object"&&A!==null&&"type"in A&&A.type==="completion"){if(A.statusCode!==vs)yield new G_(vD(A.statusCode),A.statusCode);return}yield A}}}var xh0=I0(WA(),1),h8=xh0.createInterfaceId("WorkflowActionHandler");var hC=I0(WA(),1);import{crc32 as vl6}from"node:zlib";class Vy extends Error{name="DuoFileNotReadError";constructor(A){super(`You must read the file "${A}" before modifying it.`)}}class qy extends Error{name="DuoFileModifiedSinceLastReadError";constructor(A){super(`File "${A}" has been modified since it was last read. You must read the file again before modifying it.`)}}var Uh=hC.createInterfaceId("FileStateTracker");class Hy{#A=new Map;recordFileRead(A,D){let _=this.#D(D);this.#A.set(A,_)}assertFileNotModifiedSinceLastRead(A,D){let _=this.#A.get(A);if(_===void 0)throw new Vy(A);if(this.#D(D)!==_)throw new qy(A)}#D(A){return vl6(Buffer.from(A,"utf8")).toString(16)}}Hy=i0([hC.Service({dependencies:[$A],lifetime:hC.ServiceLifetime.Transient}),hC.Implements(Uh)],Hy);var wh=4194304,gh0=20000,fh0=1;var O41=I0(YN1(),1);var Up=I0(JN1(),1);var BB=I0(Be0(),1),LF2=BB.default.v1,PF2=BB.default.v1ToV6,RF2=BB.default.v3,zH=BB.default.v4,TF2=BB.default.v5,vF2=BB.default.v6,yF2=BB.default.v6ToV1,SF2=BB.default.v7,jF2=BB.default.NIL,bF2=BB.default.MAX,kF2=BB.default.version,xF2=BB.default.validate,gF2=BB.default.stringify,fF2=BB.default.parse;import{readFile as CN1}from"node:fs/promises";var Ee0=(A)=>{let D={};for(let[_,Q]of Object.entries(A))D[_.toLowerCase()]=Q;return D};class Zp{getClientHeaders(A,D,_,Q){let B=Ee0(D.duo_workflow_service.headers),E=new Map;for(let[z,J]of Object.entries(B))E.set(z,J);if(E.set("x-gitlab-language-server-version",OD()),E.set("x-request-id",A),Q.projectId)E.set("x-gitlab-project-id",Q.projectId.toString());if(Q.namespaceId)E.set("x-gitlab-namespace-id",Q.namespaceId.toString());if(Q.selectedModelIdentifier?.length)E.set("x-gitlab-agent-platform-model-metadata",JSON.stringify({identifier:Q.selectedModelIdentifier,provider:"vendored"}));if(_.length)E.set("x-gitlab-enabled-feature-flags",_.join(","));if(D.workflow_metadata?.is_team_member!=null)E.set("x-gitlab-is-a-gitlab-member",D.workflow_metadata.is_team_member.toString());return E}getUserAgent(A){let D=(A?.ide?.name??"unknown").replace(/\s+/g,"-").toLowerCase(),_=A?.ide?.version??"unknown",Q=(A?.extension?.name??"unknown").replace(/\s+/g,"-").toLowerCase(),B=A?.extension?.version??"unknown",E=OD()??"unknown";return`${D}/${_} ${Q}/${B} gitlab-language-server/${E}`}async loadCertificateFiles(A,D){let{ca:_,cert:Q,certKey:B}=A||{},E={};try{if(_)E.ca=await CN1(_);if(Q)E.cert=await CN1(Q);if(B)E.certKey=await CN1(B)}catch(z){D.error("Failed to load custom certificates",z)}return E}}class HN1 extends Zp{#A;#D;#_;#Q=null;#B;#E;constructor(A,D,_,Q,B,E){super();this.#A=yA(A,"[GrpcWorkflowClient]"),this.#E=E,this.#B=zH(),this.#D=this.#z(D,_),this.#_=this.#X(this.#B,D,Q,B),this.#A.debug(`Created gRPC Duo Workflow Service client: ${JSON.stringify({correlationId:this.#B,workflowServiceBaseUrl:D.duo_workflow_service.base_url})}`)}async executeWorkflow(){this.#A.debug("Executing workflow - creating bidirectional stream");let A=await this.#D;return this.#Q=A.executeWorkflow(this.#_),this.#A.debug("Bidirectional stream created"),this.#Q.on("close",()=>{this.#A.debug("gRPC stream close event received")}),this.#Q}getResponseByteSize(A){return O41.ClientEvent.encode(A).finish().byteLength}getCorrelationId(){return this.#B}dispose(){if(this.#Q)this.#A.debug("Disposing gRPC client - ending stream"),this.#Q.end(),this.#Q=null,this.#A.debug("gRPC stream ended");else this.#A.debug("Dispose called but stream is already null")}async#z(A,D){let _;if(A.duo_workflow_service.secure){let{httpAgentOptions:Q,ignoreCertificateErrors:B}=D,E=await this.#J(Q,B??!1);_=Up.ChannelCredentials.createSsl(E.rootCerts,E.privateKey,E.certChain,E.verifyOptions)}else _=Up.ChannelCredentials.createInsecure();return new O41.DuoWorkflowClient(A.duo_workflow_service.base_url,_,{"grpc.max_send_message_length":wh,"grpc.keepalive_time_ms":gh0,"grpc.keepalive_permit_without_calls":fh0,"grpc.primary_user_agent":this.getUserAgent(this.#E)})}async#J(A,D=!1){let _=await this.loadCertificateFiles(A,this.#A);return{rootCerts:_.ca||null,privateKey:_.certKey||null,certChain:_.cert||null,verifyOptions:{rejectUnauthorized:!D}}}#X(A,D,_,Q){let B=new Up.Metadata,E=this.getClientHeaders(A,D,_,Q);for(let[z,J]of E.entries())B.add(z.toLowerCase(),J);return B.add("authorization",`bearer ${D.duo_workflow_service.token}`),B.add("x-gitlab-authentication-type","oidc"),B.add("x-gitlab-oauth-token",D.gitlab_rails.token),B.add("x-gitlab-base-url",D.gitlab_rails.base_url),B.add("x-gitlab-unidirectional-streaming","enabled"),B.add("x-gitlab-client-type","node-grpc"),B}}var Fe0=I0(VN1(),1);var WN1=I0(VN1(),1),Xe0=I0(YN1(),1);import{EventEmitter as P84}from"events";class N41 extends Error{code;reason;constructor(A,D,_){super(A);this.name="WebsocketStreamError",this.code=D,this.reason=_}}function qN1(A){let D=A instanceof Error?A.message:String(A);if(D.includes("INTERNAL"))return 6;if(D.includes("UNAVAILABLE: Connection dropped"))return 54;if(D.includes("UNAVAILABLE: Name resolution failed"))return 61;if(D.includes("unable to verify the first certificate"))return 53;if(A instanceof N41)switch(A.code){case 1003:case 1007:return 59;case 1006:return 54;case 1009:return 55;case 1011:return 56;case 1013:return 60;case 1014:return 57;case 1015:return 58}return 1}var Je0=45000;class MN1 extends P84{#A;#D;#_;#Q;constructor(A,D,_){super();this.#A=A,this.#D=D,this.#_=_,this.#B()}#B(){this.#A.on("message",(A)=>{try{let D=A&&typeof A==="object"&&"data"in A?A.data:A,_;if(typeof D==="string")_=D;else if(Buffer.isBuffer(D))_=D.toString("utf8");else if(D instanceof ArrayBuffer)_=Buffer.from(D).toString("utf8");else if(Array.isArray(D))_=Buffer.concat(D).toString("utf8");else{this.#D.warn("Received unknown message format");return}if(!_||_==="undefined"){this.#D.warn("Received empty or undefined message, skipping");return}let Q=Xe0.Action.fromJSON(JSON.parse(_));this.emit("data",Q)}catch(D){this.#D.error("Failed to parse WebSocket message",{event:A,error:D}),this.emit("error",D)}}),this.#A.on("open",()=>{this.#D.debug("WebSocket connection opened"),this.emit("open")}),this.#A.on("error",(A)=>{this.#D.error("WebSocket error:",A),this.emit("error",A instanceof Error?A:new Error(String(A)))}),this.#A.on("close",(A,D)=>{clearInterval(this.#Q);let _=D?.toString("utf8");if(this.#D.debug(`WebSocket connection closed: ${JSON.stringify({code:A,reason:_})}`),A===1000){this.emit("end");return}if(A===1006){let z=!0;if(h_(this.#_?.instanceVersion,"18.5.0",()=>{z=!1},()=>{z=!0}),z){this.emit("end");return}}let E=new N41("WebSocket closed abnormally.",A,_);this.emit("error",E)}),this.#A.on("pong",(A)=>{let D="unknown";try{let _=parseInt(A.toString(),10);D=`${Date.now()-_}ms`}catch(_){this.#D.debug("Failed to parse keepalive `pong` response",_)}this.#D.debug(`WebSocket keepalive ping acknowledged. Round trip time: ${D}`)}),this.#E()}#E(){this.#D.debug(`Starting keepalive ping on websocket every ${Je0/1000}s`),this.#Q=setInterval(()=>{if(this.#A.readyState!==WN1.default.OPEN){this.#D.warn(`Skipped sending keepalive ping because socket readystate is not OPEN. readystate is: "${this.#A.readyState}"`);return}let A=Date.now().toString();this.#A.ping(Buffer.from(A),void 0,(D)=>{if(D)this.#D.error("Keepalive ping failed:",D)})},Je0)}write(A){if(this.#A.readyState!==WN1.default.OPEN)return this.#D.error(`Attempting to write to stream when socket is not open. Socket is in state: "${this.#A.readyState}"`),!1;return this.#A.send(JSON.stringify(A)),!0}end(){this.#A.close()}}var Ge0=15000;class ON1 extends Zp{#A;#D;#_;#Q=null;#B=null;#E;#z;#J=null;#X;constructor(A,D,_,Q,B,E){super();this.#A=yA(A,"[WebSocketWorkflowClient]"),this.#D=_,this.#_=B,this.#X=E,this.#z=zH(),this.#E=this.#K(this.#z,D,Q),this.#J=Q.selectedModelIdentifier??null}dispose(){if(this.#B)this.#B.end(),this.#B=null;if(this.#Q)this.#Q.close(),this.#Q=null}getResponseByteSize(A){return Buffer.byteLength(JSON.stringify(A),"utf8")}getCorrelationId(){return this.#z}async executeWorkflow(){let A=this.#F();this.#A.debug(`Connecting to: ${A}`);let D=await this.#E;return this.#Q=new Fe0.default(A,D),this.#B=new MN1(this.#Q,this.#A,this.#_),await new Promise((Q,B)=>{if(!this.#B){B(new Error("Unexpected error - websocketWorkflowStream was somehow null. This should be impossible because we just created the stream."));return}let E=setTimeout(()=>{if(this.#A.error(`WebSocket connection timeout after ${Ge0}ms`),this.#B)this.#B.removeListener("open",z),this.#B.removeListener("error",J);B(6)},Ge0),z=()=>{if(clearTimeout(E),this.#B)this.#B.removeListener("error",J),Q()},J=(X)=>{if(clearTimeout(E),this.#A.error("WebSocket connection failed",X),this.#B)this.#B.removeListener("open",z);B(6)};this.#B.once("open",z),this.#B.once("error",J)}),this.#B}#F(){let A=new URL(Bo(this.#D.gitlabInstanceUrl)),D=new URL("./api/v4/ai/duo_workflows/ws",A);if(D.protocol=this.#G()?"wss:":"ws:",this.#J)D.searchParams.set("user_selected_model_identifier",this.#J);return D.toString()}#G(){return this.#D.gitlabInstanceUrl.protocol==="https:"}async#Y(A){let{httpAgentOptions:D,ignoreCertificateErrors:_}=A,Q=await this.loadCertificateFiles(D,this.#A);return{rejectUnauthorized:_?!1:void 0,ca:Q.ca||void 0,cert:Q.cert||void 0,key:Q.certKey||void 0}}async#K(A,D,_){let Q={authorization:`Bearer ${this.#D.token}`,"x-request-id":A,"x-gitlab-language-server-version":OD(),"user-agent":this.getUserAgent(this.#X),origin:this.#D.gitlabInstanceUrl.origin};if(_.projectId)Q["x-gitlab-project-id"]=_.projectId.toString();if(_.namespaceId)Q["x-gitlab-namespace-id"]=_.namespaceId.toString();Q["x-gitlab-client-type"]="node-websocket";let B={headers:Q};if(this.#G()){let J=await this.#Y(D);Object.assign(B,J)}let{agent:E,agentType:z}=this.#D;if(E)this.#A.debug(`Using ${z} for WebSocket requests`),Object.assign(B,{agent:E});return B}}function Ip(A){return Object.hasOwn(A,"response")}function R84(A,D){let _=A.response?pY(A.response,1024,{suffix:"[Large response truncated...]"}):"";return{actionResponse:{requestID:D,plainTextResponse:{response:_,error:""}}}}function T84(A,D,_){let Q=A.response?pY(A.response,1024,{suffix:"[Large response truncated...]"}):"",B=_;if(A.error)B+=`
|
|
1433
|
+
${B}`,variables:D||{},supportedSinceInstanceVersion:_})}catch(B){this.#A.info("Graphql fetch failed:",B);let E=B;throw this.#A.error(E),new Error(E.message)}}async getAiChatAvailableModels({rootNamespaceId:A}){if(!this.#E)try{let D={rootNamespaceId:W70(q70,A)};this.#E=await this.getGraphqlData({query:null,operationName:"aiChatAvailableModels",variables:D})}catch(D){this.#A.warn("Unexpected exception fetching aiChatAvailableModels",D),this.#E=null}return this.#E}async getEnabledWorkflowFeatureFlags(A){if(this.#z)return this.#z;try{let D=await this.#D?.fetchFromApiRaw({type:"rest",method:"HEAD",path:`/api/v4/ai/duo_workflows/workflows/${A}`,supportedSinceInstanceVersion:{resourceName:"get workflow",version:"17.3.0"}});return this.#X(D)}catch(D){let _=D;throw this.#A.error("Failed to get enabled feature flags header",_),D}}#X(A){let D=A.headers.get("x-gitlab-enabled-feature-flags");return this.#z=D?D.split(",").filter(Boolean):[],this.#z}#F(A,D){return h_(A,D,()=>!0,()=>!1)}}wy=i0([OA1.Injectable(uC,[$A,w8,pq1,hq1])],wy);var NA1=I0(WA(),1);var mC=NA1.createInterfaceId("WorkflowTokenService"),Tl6=30000;class Cy{#A;#D;#_=new Map;#Q="CHAT_SHARED_TOKEN";constructor(A,D){this.#A=yA(A,"[WorkflowTokenService]"),this.#D=D}getTokenFromCache({workflowType:A,workflowId:D}){let _=A==="chat",Q;if(_)Q=this.#Q;else{if(!D)return null;Q=D}if(this.#_.has(Q)){let{token:B}=this.#_.get(Q);return B}return null}async getToken(A,D){let _=this.getTokenFromCache({workflowType:D,workflowId:A});if(_)return this.#A.debug(`Reusing existing valid token for workflow "${A}"`),_;this.#A.debug(`Fetching new token for workflow "${A}", type: "${D}"`);let Q=await this.#D.getWorkflowToken(D);return this.cacheToken(A,D,Q),Q}cacheToken(A,D,_){let B=D==="chat"?this.#Q:A,E=this.#B(_.duo_workflow_service.token_expires_at),z=this.#B(_.gitlab_rails.token_expires_at),J=Math.min(E,z),X=Date.now(),G=Math.max(0,J-X-Tl6),F=setTimeout(()=>{this.#A.debug(`Token for workflow "${B}" is about to expire, clearing it`),this.#E(B)},G);this.#_.set(B,{token:_,timeoutId:F}),this.#A.debug(`Token for workflow "${B}" will expire at ${new Date(J).toISOString()}, clearing in ${G/1000} seconds`)}async revokeToken(A,D){try{this.#A.debug("Revoking token");let _=this.#_.get(this.#Q),B=_&&D===_.token?this.#Q:A;if(this.#_.has(B))this.#E(B),this.#A.debug(`Removed token for workflow "${B}" from cache`)}catch(_){this.#A.error("Error revoking token",_)}}#B(A){if(typeof A==="number")return A*1000;if(typeof A==="string"){let D=new Date(A);if(Number.isNaN(D.getTime()))throw new Error(`Failed to parse token expiry date string: "${A}"`);return D.getTime()}throw new Error(`Received unexpected token expiry: "${A}"`)}#E(A){if(!this.#_.has(A))return;let D=this.#_.get(A);clearTimeout(D.timeoutId),this.#_.delete(A)}dispose(){for(let A of this.#_.keys())this.#E(A);this.#A.debug("Disposed token service, cleared all tokens and timeouts")}}Cy=i0([NA1.Injectable(mC,[$A,uC])],Cy);class cq1{#A=[];#D=[];push(A){if(this.#D.length>0)this.#D.shift()(A);else this.#A.push(A)}async#_(){if(this.#A.length>0)return this.#A.shift();return new Promise((A)=>{this.#D.push(A)})}async*[Symbol.asyncIterator](){while(!0){let A=await this.#_();if(typeof A==="object"&&A!==null&&"type"in A&&A.type==="completion"){if(A.statusCode!==vs)yield new G_(vD(A.statusCode),A.statusCode);return}yield A}}}var xh0=I0(WA(),1),h8=xh0.createInterfaceId("WorkflowActionHandler");var hC=I0(WA(),1);import{crc32 as vl6}from"node:zlib";class Vy extends Error{name="DuoFileNotReadError";constructor(A){super(`You must read the file "${A}" before modifying it.`)}}class qy extends Error{name="DuoFileModifiedSinceLastReadError";constructor(A){super(`File "${A}" has been modified since it was last read. You must read the file again before modifying it.`)}}var Uh=hC.createInterfaceId("FileStateTracker");class Hy{#A=new Map;recordFileRead(A,D){let _=this.#D(D);this.#A.set(A,_)}assertFileNotModifiedSinceLastRead(A,D){let _=this.#A.get(A);if(_===void 0)throw new Vy(A);if(this.#D(D)!==_)throw new qy(A)}#D(A){return vl6(Buffer.from(A,"utf8")).toString(16)}}Hy=i0([hC.Service({dependencies:[$A],lifetime:hC.ServiceLifetime.Transient}),hC.Implements(Uh)],Hy);var wh=4194304,gh0=20000,fh0=1;var O41=I0(YN1(),1);var Up=I0(JN1(),1);var BB=I0(Be0(),1),LF2=BB.default.v1,PF2=BB.default.v1ToV6,RF2=BB.default.v3,zH=BB.default.v4,TF2=BB.default.v5,vF2=BB.default.v6,yF2=BB.default.v6ToV1,SF2=BB.default.v7,jF2=BB.default.NIL,bF2=BB.default.MAX,kF2=BB.default.version,xF2=BB.default.validate,gF2=BB.default.stringify,fF2=BB.default.parse;import{readFile as CN1}from"node:fs/promises";var Ee0=(A)=>{let D={};for(let[_,Q]of Object.entries(A))D[_.toLowerCase()]=Q;return D};class Zp{getClientHeaders(A,D,_,Q){let B=Ee0(D.duo_workflow_service.headers),E=new Map;for(let[z,J]of Object.entries(B))E.set(z,J);if(E.set("x-gitlab-language-server-version",OD()),E.set("x-request-id",A),Q.projectId)E.set("x-gitlab-project-id",Q.projectId.toString());if(Q.namespaceId)E.set("x-gitlab-namespace-id",Q.namespaceId.toString());if(Q.selectedModelIdentifier?.length)E.set("x-gitlab-agent-platform-model-metadata",JSON.stringify({identifier:Q.selectedModelIdentifier,provider:"vendored"}));if(_.length)E.set("x-gitlab-enabled-feature-flags",_.join(","));if(D.workflow_metadata?.is_team_member!=null)E.set("x-gitlab-is-a-gitlab-member",D.workflow_metadata.is_team_member.toString());return E}getUserAgent(A){let D=(A?.ide?.name??"unknown").replace(/\s+/g,"-").toLowerCase(),_=A?.ide?.version??"unknown",Q=(A?.extension?.name??"unknown").replace(/\s+/g,"-").toLowerCase(),B=A?.extension?.version??"unknown",E=OD()??"unknown";return`${D}/${_} ${Q}/${B} gitlab-language-server/${E}`}async loadCertificateFiles(A,D){let{ca:_,cert:Q,certKey:B}=A||{},E={};try{if(_)E.ca=await CN1(_);if(Q)E.cert=await CN1(Q);if(B)E.certKey=await CN1(B)}catch(z){D.error("Failed to load custom certificates",z)}return E}}class HN1 extends Zp{#A;#D;#_;#Q=null;#B;#E;constructor(A,D,_,Q,B,E){super();this.#A=yA(A,"[GrpcWorkflowClient]"),this.#E=E,this.#B=zH(),this.#D=this.#z(D,_),this.#_=this.#X(this.#B,D,Q,B),this.#A.debug(`Created gRPC Duo Workflow Service client: ${JSON.stringify({correlationId:this.#B,workflowServiceBaseUrl:D.duo_workflow_service.base_url})}`)}async executeWorkflow(){this.#A.debug("Executing workflow - creating bidirectional stream");let A=await this.#D;return this.#Q=A.executeWorkflow(this.#_),this.#A.debug("Bidirectional stream created"),this.#Q.on("close",()=>{this.#A.debug("gRPC stream close event received")}),this.#Q}getResponseByteSize(A){return O41.ClientEvent.encode(A).finish().byteLength}getCorrelationId(){return this.#B}dispose(){if(this.#Q)this.#A.debug("Disposing gRPC client - ending stream"),this.#Q.end(),this.#Q=null,this.#A.debug("gRPC stream ended");else this.#A.debug("Dispose called but stream is already null")}async#z(A,D){let _;if(A.duo_workflow_service.secure){let{httpAgentOptions:Q,ignoreCertificateErrors:B}=D,E=await this.#J(Q,B??!1);_=Up.ChannelCredentials.createSsl(E.rootCerts,E.privateKey,E.certChain,E.verifyOptions)}else _=Up.ChannelCredentials.createInsecure();return new O41.DuoWorkflowClient(A.duo_workflow_service.base_url,_,{"grpc.max_send_message_length":wh,"grpc.keepalive_time_ms":gh0,"grpc.keepalive_permit_without_calls":fh0,"grpc.primary_user_agent":this.getUserAgent(this.#E)})}async#J(A,D=!1){let _=await this.loadCertificateFiles(A,this.#A);return{rootCerts:_.ca||null,privateKey:_.certKey||null,certChain:_.cert||null,verifyOptions:{rejectUnauthorized:!D}}}#X(A,D,_,Q){let B=new Up.Metadata,E=this.getClientHeaders(A,D,_,Q);for(let[z,J]of E.entries())B.add(z.toLowerCase(),J);return B.add("authorization",`bearer ${D.duo_workflow_service.token}`),B.add("x-gitlab-authentication-type","oidc"),B.add("x-gitlab-oauth-token",D.gitlab_rails.token),B.add("x-gitlab-base-url",D.gitlab_rails.base_url),B.add("x-gitlab-unidirectional-streaming","enabled"),B.add("x-gitlab-client-type","node-grpc"),B}}var Fe0=I0(VN1(),1);var WN1=I0(VN1(),1),Xe0=I0(YN1(),1);import{EventEmitter as P84}from"events";class N41 extends Error{code;reason;constructor(A,D,_){super(A);this.name="WebsocketStreamError",this.code=D,this.reason=_}}function qN1(A){let D=A instanceof Error?A.message:String(A);if(D.includes("INTERNAL"))return 6;if(D.includes("UNAVAILABLE: Connection dropped"))return 54;if(D.includes("UNAVAILABLE: Name resolution failed"))return 61;if(D.includes("unable to verify the first certificate"))return 53;if(A instanceof N41)switch(A.code){case 1003:case 1007:return 59;case 1006:return 54;case 1009:return 55;case 1011:return 56;case 1013:return 60;case 1014:return 57;case 1015:return 58}return 1}var Je0=45000;class MN1 extends P84{#A;#D;#_;#Q;constructor(A,D,_){super();this.#A=A,this.#D=D,this.#_=_,this.#B()}#B(){this.#A.on("message",(A)=>{try{let D=A&&typeof A==="object"&&"data"in A?A.data:A,_;if(typeof D==="string")_=D;else if(Buffer.isBuffer(D))_=D.toString("utf8");else if(D instanceof ArrayBuffer)_=Buffer.from(D).toString("utf8");else if(Array.isArray(D))_=Buffer.concat(D).toString("utf8");else{this.#D.warn("Received unknown message format");return}if(!_||_==="undefined"){this.#D.warn("Received empty or undefined message, skipping");return}let Q=Xe0.Action.fromJSON(JSON.parse(_));this.emit("data",Q)}catch(D){this.#D.error("Failed to parse WebSocket message",{event:A,error:D}),this.emit("error",D)}}),this.#A.on("open",()=>{this.#D.debug("WebSocket connection opened"),this.emit("open")}),this.#A.on("error",(A)=>{this.#D.error("WebSocket error:",A),this.emit("error",A instanceof Error?A:new Error(String(A)))}),this.#A.on("close",(A,D)=>{clearInterval(this.#Q);let _=D?.toString("utf8");if(this.#D.debug(`WebSocket connection closed: ${JSON.stringify({code:A,reason:_})}`),A===1000){this.emit("end");return}if(A===1006){let z=!0;if(h_(this.#_?.instanceVersion,"18.5.0",()=>{z=!1},()=>{z=!0}),z){this.emit("end");return}}let E=new N41("WebSocket closed abnormally.",A,_);this.emit("error",E)}),this.#A.on("pong",(A)=>{let D="unknown";try{let _=parseInt(A.toString(),10);D=`${Date.now()-_}ms`}catch(_){this.#D.debug("Failed to parse keepalive `pong` response",_)}this.#D.debug(`WebSocket keepalive ping acknowledged. Round trip time: ${D}`)}),this.#E()}#E(){this.#D.debug(`Starting keepalive ping on websocket every ${Je0/1000}s`),this.#Q=setInterval(()=>{if(this.#A.readyState!==WN1.default.OPEN){this.#D.warn(`Skipped sending keepalive ping because socket readystate is not OPEN. readystate is: "${this.#A.readyState}"`);return}let A=Date.now().toString();this.#A.ping(Buffer.from(A),void 0,(D)=>{if(D)this.#D.error("Keepalive ping failed:",D)})},Je0)}write(A){if(this.#A.readyState!==WN1.default.OPEN)return this.#D.error(`Attempting to write to stream when socket is not open. Socket is in state: "${this.#A.readyState}"`),!1;return this.#A.send(JSON.stringify(A)),!0}end(){this.#A.close(1000)}}var Ge0=15000;class ON1 extends Zp{#A;#D;#_;#Q=null;#B=null;#E;#z;#J=null;#X;constructor(A,D,_,Q,B,E){super();this.#A=yA(A,"[WebSocketWorkflowClient]"),this.#D=_,this.#_=B,this.#X=E,this.#z=zH(),this.#E=this.#K(this.#z,D,Q),this.#J=Q.selectedModelIdentifier??null}dispose(){if(this.#Q)this.#Q.close(1000),this.#Q=null;if(this.#B)this.#B=null}getResponseByteSize(A){return Buffer.byteLength(JSON.stringify(A),"utf8")}getCorrelationId(){return this.#z}async executeWorkflow(){let A=this.#F();this.#A.debug(`Connecting to: ${A}`);let D=await this.#E;return this.#Q=new Fe0.default(A,D),this.#B=new MN1(this.#Q,this.#A,this.#_),await new Promise((Q,B)=>{if(!this.#B){B(new Error("Unexpected error - websocketWorkflowStream was somehow null. This should be impossible because we just created the stream."));return}let E=setTimeout(()=>{if(this.#A.error(`WebSocket connection timeout after ${Ge0}ms`),this.#B)this.#B.removeListener("open",z),this.#B.removeListener("error",J);B(6)},Ge0),z=()=>{if(clearTimeout(E),this.#B)this.#B.removeListener("error",J),Q()},J=(X)=>{if(clearTimeout(E),this.#A.error("WebSocket connection failed",X),this.#B)this.#B.removeListener("open",z);B(6)};this.#B.once("open",z),this.#B.once("error",J)}),this.#B}#F(){let A=new URL(Bo(this.#D.gitlabInstanceUrl)),D=new URL("./api/v4/ai/duo_workflows/ws",A);if(D.protocol=this.#G()?"wss:":"ws:",this.#J)D.searchParams.set("user_selected_model_identifier",this.#J);return D.toString()}#G(){return this.#D.gitlabInstanceUrl.protocol==="https:"}async#Y(A){let{httpAgentOptions:D,ignoreCertificateErrors:_}=A,Q=await this.loadCertificateFiles(D,this.#A);return{rejectUnauthorized:_?!1:void 0,ca:Q.ca||void 0,cert:Q.cert||void 0,key:Q.certKey||void 0}}async#K(A,D,_){let Q={authorization:`Bearer ${this.#D.token}`,"x-request-id":A,"x-gitlab-language-server-version":OD(),"user-agent":this.getUserAgent(this.#X),origin:this.#D.gitlabInstanceUrl.origin};if(_.projectId)Q["x-gitlab-project-id"]=_.projectId.toString();if(_.namespaceId)Q["x-gitlab-namespace-id"]=_.namespaceId.toString();Q["x-gitlab-client-type"]="node-websocket";let B={headers:Q};if(this.#G()){let J=await this.#Y(D);Object.assign(B,J)}let{agent:E,agentType:z}=this.#D;if(E)this.#A.debug(`Using ${z} for WebSocket requests`),Object.assign(B,{agent:E});return B}}function Ip(A){return Object.hasOwn(A,"response")}function R84(A,D){let _=A.response?pY(A.response,1024,{suffix:"[Large response truncated...]"}):"";return{actionResponse:{requestID:D,plainTextResponse:{response:_,error:""}}}}function T84(A,D,_){let Q=A.response?pY(A.response,1024,{suffix:"[Large response truncated...]"}):"",B=_;if(A.error)B+=`
|
|
1434
1434
|
Original result container error:
|
|
1435
1435
|
${pY(A.error,1024,{suffix:"[Large error truncated...]"})}`;return{actionResponse:{requestID:D,plainTextResponse:{response:Q,error:B}}}}function Ye0(A,D,_){let Q=_;if(A.error)Q+=`
|
|
1436
1436
|
Original result container error:
|
|
1437
|
-
${pY(A.error,1024,{suffix:"[Large error truncated...]"})}`;let B=A.body?pY(A.body,1024,{suffix:"[Large response body truncated...]"}):"";return{actionResponse:{requestID:D,httpResponse:{headers:A.headers,statusCode:A.statusCode,body:B,error:Q}}}}function $e0(A,D,_,Q){if(Ip(A))return R84(A,D);return Ye0(A,D,`Maximum allowed size exceeded. Result: ${_} bytes. Maximum allowed: ${Q} bytes`)}function Ke0(A,D){if(Ip(A))return T84(A,D,"Failed to validate response size due to serialization error");return Ye0(A,D,"Failed to validate response size due to serialization error")}var P41=m$.createInterfaceId("NodeExecutor"),L41="[DuoWorkflowNodeExecutor]";class ES{#A=new NZ;#D;#_;#Q;#B;#E;#z;#J;#X;#F;#G;#Y;#K;#Z=null;#U=null;#H;#V;#$;#I;#C=null;#w;constructor(A,D,_,Q,B,E,z,J,X,G,F,$,K,Y){this.#_=D,this.#Q=_,this.#B=Q,this.#E=B,this.#z=E,this.#X=z,this.#J=yA(z,`${L41}`),this.#F=$,this.#G=K,this.#Y=G,this.#V=X,this.#K=Y,this.#I=F,this.#q(E,J),this.#A.add(A.onConfigChange((Z)=>{this.#W(Z),this.#M(Z)})),this.#W(A.get()),this.#M(A.get())}#q(A,D){if(A.instanceInfo&&A.tokenInfo){let _=A.instanceInfo.instanceUrl,Q=D.getWebSocketOptions(_);this.#$={gitlabInstanceUrl:_,token:A.tokenInfo.token,...Q}}this.#A.add(A.onApiReconfigured((_)=>{if(_.isInValidState){let Q=_.instanceInfo.instanceUrl,B=D.getWebSocketOptions(Q);this.#$={gitlabInstanceUrl:Q,token:_.tokenInfo.token,...B}}else this.#$=void 0}))}#W({httpAgentOptions:A,ignoreCertificateErrors:D}){this.#H={httpAgentOptions:A,ignoreCertificateErrors:D}}#M({telemetry:A}){this.#w=A}#N(){this.#J.info("Force disconnecting - aborting any outstanding action handlers, ending stream"),this.#C?.abort(),this.#Z?.dispose(),this.#J.info("Force disconnected")}dispose(){this.#J.info("Disposing executor - initiating graceful shutdown"),this.stopWorkflow(),setTimeout(()=>{this.#J.info("Graceful shutdown timeout reached, forcing disconnect"),this.#N()},3000),this.#A.dispose()}stopWorkflow(){this.#X.debug("Requesting graceful workflow stop"),this.#U?.write({stopWorkflow:{reason:"USER_ACTION_TRIGGERED_STOP"}})}async*runWorkflow(A){let{workflowId:D,goal:_,type:Q,workspaceFolderPath:B,toolApproval:E,flowConfig:z,flowConfigSchemaVersion:J}=A;this.#J=yA(this.#X,`${L41}[${D}]`);let X=new cq1,G=null,F=A.connectionType||"grpc";try{this.#C=new AbortController;let $=await this.#F.getEnabledWorkflowFeatureFlags(D);this.#J.debug(`Running workflow: ${JSON.stringify({...A,enabledFeatureFlags:$},null,4)}`),G=await this.#v(D,Q);let K=await this.#y(G,B);this.#J.debug(`Starting workflow stream with connection type "${F}"`);let Y=null;if(A.metadata.namespaceId)Y=(await this.#F.getAiChatAvailableModels({rootNamespaceId:A.metadata.namespaceId}))?.aiChatAvailableModels??null,this.#J.debug(`Available chat models for workflow: ${JSON.stringify(Y)}`);this.#Z=this.#R(F,G,$,A.metadata,Y),this.#J.debug(`Creating ${F==="grpc"?"gRPC stream":"websocket connection"}...`),this.#U=await this.#Z.executeWorkflow(),this.#J.debug(`${F==="grpc"?"gRPC stream":"websocket connection"} created successfully`),this.#U.on("data",async(V)=>{this.#J.debug(`Received action from stream: ${Object.keys(V).join(", ")}`);try{if(G=await this.#v(D,Q),V.newCheckpoint){let W=await this.#L(D,V);if(W)X.push(W)}else{let W=this.#C?.signal??new AbortController().signal,q=await this.#P(V,{workspaceFolderPath:B,workflowId:D,workflowToken:G,fileStateTracker:this.#E,abortSignal:W});if(!W.aborted)this.#U?.write(this.#S(q,V.requestID))}}catch(W){this.#J.error("Error handling workflow action",W),X.push(new G_("Error handling workflow action",1))}}),this.#U.on("error",(V)=>{this.#J.error("Stream error event received",V),this.#J.error(`Error details: ${JSON.stringify({message:V.message,code:V.code,details:V.details,metadata:V.metadata})}`),this.#C?.abort();let W=qN1(V),q=`${L41} Stream encountered error (code: ${W})`;this.#Q.handleError(q,new jW(q,V),{connectionType:F,correlationId:this.#Z?.getCorrelationId(),statusCode:W}),X.push({type:"completion",statusCode:W})}),this.#U.on("end",()=>{this.#J.debug("Stream end event received"),this.#C?.abort(),X.push({type:"completion",statusCode:vs})});let Z=await this.#V.reload(B,D),U=Z?.filter((V)=>V.isApproved).map((V)=>V.name)??[],I=Array.from(new Set(Z.map((V)=>V.serverName)));this.#J.info(`startRequest: mcp_tools=${Z.length} preapproved_tools=${U.length} servers=${I.length}`),this.#J.debug(`startRequest: approved_tools=${pY(JSON.stringify(U),1024,{suffix:"...[truncated]"})}`),this.#J.debug("Writing startRequest to stream...");try{let V=this.#U.write({startRequest:{workflowID:D,clientVersion:"1.0",workflowDefinition:Q||"software_development",goal:E?"":_,workflowMetadata:JSON.stringify(K),additionalContext:E?[]:this.#j(A.additionalContext),clientCapabilities:[],mcpTools:Z,preapprovedTools:U,flowConfig:fs(z),flowConfigSchemaVersion:J??(z?"experimental":void 0),approval:(E&&{approval:E.userApproved===!0?{}:void 0,rejection:E.userApproved===!1?{message:E.message}:void 0})??void 0}});this.#J.debug(`startRequest write returned: ${V}`)}catch(V){throw this.#J.error("Error during write call",V),V}this.#J.debug("startRequest written to stream"),this.#J.debug("Entering event queue iteration...");for await(let V of X)yield V;this.#J.debug("Event queue iteration completed")}catch($){let K=$ instanceof G_?$.statusCode:qN1($),Y=`${L41} Workflow execution failed`;this.#Q.handleError(Y,new jW(Y,$),{connectionType:F,correlationId:this.#Z?.getCorrelationId(),statusCode:K}),yield new G_(vD(K),K)}finally{if(G&&Q!=="chat")this.#G.revokeToken(D,G).catch(()=>{})}}async#L(A,D){if(this.#J.debug(`Received new checkpoint: ${JSON.stringify({workflowStatus:D.newCheckpoint.status})}`),this.#D!==D.newCheckpoint.status){if(D.newCheckpoint.status==="CREATED")this.#_.trackEvent("start_duo_workflow_execution",{workflow_id:A});else if(D.newCheckpoint.status==="FINISHED")this.#_.trackEvent("finish_duo_workflow_execution",{workflow_id:A});this.#D=D.newCheckpoint.status}return{...D.newCheckpoint,workflowStatus:D.newCheckpoint.status,workflowGoal:D.newCheckpoint.goal}}async#P(A,D){let _=Object.keys(A).find((B)=>B!=="requestID"&&A[B]!==void 0),Q=yA(this.#J,`[actionType: ${_??"missing_workflow_action"}]`);if(A?.requestID?.length)Q=yA(this.#J,`[requestID: ${A.requestID}]`);Q.debug(`Action received: ${JSON.stringify(A)}`);try{let B=this.#K.find((E)=>E.canHandle(A));if(B){if(this.#C?.signal.aborted)return{response:"",error:"Action not executed because workflow has been cancelled or stopped"};let E=await B.execute(A,D);return this.#O(E,`${_}_tool_output`)}return Q.warn("Client version is unable to handle action"),{error:"action not supported",response:""}}catch(B){let E=B instanceof Error?B.message:String(B);return Q.error(`Error handling action: ${E}`),this.#O({error:E,response:""},`${_}_tool_execution_error`)}}#O(A,D){if(Ip(A))return{response:this.#I.redactSecrets(A.response,D),error:this.#I.redactSecrets(A.error,D)};return{...A,body:this.#I.redactSecrets(A.body,D),error:this.#I.redactSecrets(A.error,D)}}#R(A,D,_,Q,B){let E=this.#T(Q,B),z={grpc:()=>new HN1(this.#X,D,this.#H??{},_,E,this.#w),websocket:()=>{return new ON1(this.#X,this.#H??{},this.#$,E,this.#z.instanceInfo,this.#w)}};if(A==="websocket"&&!this.#$)throw new G_("Tried to create a WebSocket client before the GitLab API configuration data was available.",51);let J=z[A];if(!J)throw new G_(`Unsupported connection type: "${A}"`,52);try{return J()}catch(X){throw this.#X.error(`Failed to create "${A}" client: `,X),new G_(`Failed to create "${A}" client`,6)}}#T(A,D){let _=D?.pinnedModel;if(_?.ref)return{...A,selectedModelIdentifier:_.ref};if(!this.#B.isInstanceFlagEnabled("ai_user_model_switching"))return{...A,selectedModelIdentifier:void 0};let Q=D?.selectableModels.find((E)=>E.ref===A.selectedModelIdentifier);if(Q?.ref)return{...A,selectedModelIdentifier:Q.ref};let B=D?.defaultModel;if(B?.ref)return{...A,selectedModelIdentifier:B.ref};return{...A,selectedModelIdentifier:void 0}}async#y(A,D){let _={extended_logging:A.workflow_metadata?.extended_logging??!1},B=(await this.#Y.getRepositoriesForWorkspace(D)).values().next().value;if(B){let E=await B.listRemotes(),z=E.find((J)=>J.remote==="origin")??E[0];_.git_url=z?.url,_.git_sha=await B.getCurrentCommit(),_.git_branch=await B.getCurrentBranchName()||void 0}return _}#S(A,D){let _={actionResponse:{requestID:D,...Ip(A)?{plainTextResponse:A}:{httpResponse:A}}};if(!this.#Z)throw new Error("Workflow client is not initialized. This should not happen during response creation.");try{let Q=this.#Z.getResponseByteSize(_);if(Q<=wh)return _;return $e0(A,D,Q,wh)}catch(Q){return this.#J.error("Failed to serialize ClientEvent for size check",Q),Ke0(A,D)}}#j(A=[]){return A.map((D)=>({...D,metadata:JSON.stringify(D.metadata)}))}async#v(A,D){try{return await this.#G.getToken(A,D)}catch{throw this.#X.debug(`Rejecting with status code ${50}`),new G_("Failed to fetch authentication token",50)}}}ES=i0([m$.Service({dependencies:[X_,cT,mf,AW,Uh,w8,$A,eI,ZX,M3,M$,uC,mC,m$.collection(h8)],lifetime:m$.ServiceLifetime.Transient}),m$.Implements(P41)],ES);var JH=I0(WA(),1);var T41=JH.createInterfaceId("NodeExecutor"),R41=3;class zS{#A;#D;constructor(A,D,_){this.#A=D,this.#D=_}dispose(){this.#A.dispose()}async*runWorkflow(A){for(let D=1;D<=R41;D++)try{if(!(yield*this.#_(A,D)).needsRetry)return;await KF1($F1(D))}catch(_){let Q=this.#Q(_);if(this.#B(D,Q)){let B=vD(Q);this.#D.warn(`Workflow execution failed, retrying (${D}/${R41}): ${B}`),await KF1($F1(D))}else{this.#D.error(`Max retries exceeded or non-retryable error: ${vD(Q)}`),yield new G_(Sf[Q]||vD(Q),Q);return}}}async*#_(A,D){let _=this.#A.runWorkflow(A);for await(let Q of _){if(!vW(Q)){yield Q;continue}if(this.#B(D,Q.statusCode)){let B=vD(Q.statusCode);return this.#D.warn(`Workflow execution failed, retrying (${D}/${R41}): ${B}`),{needsRetry:!0}}return this.#D.error(`Max retries exceeded or non-retryable error: ${vD(Q.statusCode)}`),yield Q,{needsRetry:!1}}return{needsRetry:!1}}#Q(A){if(A instanceof G_)return A.statusCode;if(typeof A==="number")return A;return 1}#B(A,D){return A<R41&&this.#E(D)}#E(A){return![3,51,52].includes(A)}stopWorkflow(){this.#A.stopWorkflow()}}zS=i0([JH.Service({dependencies:[cT,P41,$A],lifetime:JH.ServiceLifetime.Transient}),JH.Implements(T41)],zS);var Ze0=I0(WA(),1);var v84=1800000,Cp=Ze0.createInterfaceId("ExecutorManager");class v41{#A=new Map;#D;#_;constructor(A,D){this.#_=A,this.#D=yA(D,"[ExecutorManager]")}getExecutorForWorkflow(A){if(!this.#A.has(A))this.#A.set(A,{executor:this.#Q()});return this.#A.get(A).executor}setupExecutorDisposal(A){let D=this.#A.get(A);if(!D)return;let _=setTimeout(()=>this.disposeExecutor(A),v84);this.#A.set(A,{executor:D.executor,disposeTimeout:_})}clearExecutorDisposal(A){let D=this.#A.get(A);if(!D?.disposeTimeout)return;clearTimeout(D.disposeTimeout),this.#A.set(A,{executor:D.executor,disposeTimeout:void 0})}disposeExecutor(A){this.#D.debug(`Disposing executor for workflow "${A}".`);let{executor:D,disposeTimeout:_}=this.#A.get(A)||{};clearTimeout(_),D?.dispose(),this.#A.delete(A)}disconnectAllExecutors(){for(let[A]of this.#A)this.disposeExecutor(A)}#Q(){return this.#D.debug('Creating Duo Workflow Executor with type "node"'),this.#_.getRequiredService(T41)}}var Ue0=I0(WA(),1),we0=Ue0.createInterfaceId("WebviewPlugin");var NN1=I0(WA(),1);var MX=I0(WA(),1);var Ie0=I0(WA(),1),y41=Ie0.createInterfaceId("DuoFeatureAccessService");var Ce0=I0(WA(),1),FO=Ce0.createInterfaceId("SystemContextProvider");var Vp=MX.createInterfaceId("SystemContextManager"),I$2=MX.createCollectionId(FO);class Hp{#A=[];#D;#_;constructor(A,D,_){this.#_=yA(A,"SystemContextManager"),this.#A=D,this.#D=_}async#Q(){let A=this.#A.map(async(_)=>{return await this.#B(_)?_:null});return(await Promise.all(A)).filter(Boolean)}async#B(A){try{let D=!0;if(A.chatRequiredFeature)D=await this.#D.isChatFeatureEnabled(A.chatRequiredFeature),this.#_.debug(`System provider with required feature "${A.chatRequiredFeature}": ${D}`);else this.#_.debug("System provider has no feature requirement, enabled by default");return D}catch(D){return this.#_.warn(`Failed to get enabled status for system provider with required feature ${A.chatRequiredFeature} treating it as disabled.`,D),!1}}async precalculate(){let A=await this.#Q();this.#_.info(`Precalculating system context for ${A.length} available providers`);let D=A.map(async(_)=>{if("precalculate"in _&&typeof _.precalculate==="function")try{await _.precalculate()}catch(Q){this.#_.warn("Error precalculating for system context provider",Q)}});await Promise.all(D),this.#_.info("System context precalculation complete")}async getSystemContextItems(){let A=await this.#Q();this.#_.info(`Getting system context from ${A.length} available providers`);let D=A.map(async(B)=>{try{return await B.getItems()}catch(E){return this.#_.error("Error getting items from system context provider",E),[]}}),Q=(await Promise.all(D)).flat();return this.#_.info(`Retrieved ${Q.length} system context items`),Q}}Hp=i0([MX.Service({dependencies:[$A,MX.collection(FO),y41],lifetime:MX.ServiceLifetime.Scoped}),MX.Implements(Vp)],Hp);var He0=d.enum(["file","snippet","terminal","issue","merge_request","dependency","local_git","user_rule","repository","directory","agent_user_environment"]),y84=d.enum(["open_tab","import","local_file_search","issue","merge_request","snippet","dependency","local_git","user_rule","repository","directory","shell","os"]),Ve0=d.object({title:d.string(),enabled:d.boolean(),disabledReasons:d.array(d.string()).optional(),subType:y84,icon:d.string(),secondaryText:d.string(),subTypeLabel:d.string(),languageId:d.string().optional()}),S84=d.object({id:d.string(),category:He0,content:d.string().optional(),metadata:Ve0.optional()}),O$2=S84.extend({metadata:Ve0}),N$2=d.object({category:He0,query:d.string(),workspaceFolders:d.array(d.object({uri:d.string(),name:d.string()})).optional()}),L$2=NN1.createInterfaceId("DuoChatContextManager"),qe0=NN1.createInterfaceId("AgenticChatContextManager");var Ne0=I0(WA(),1);var LN1="agentic-duo-chat",PN1="GitLab Duo Agentic Chat (Beta)";var RN1=(A)=>{let D=A.match(/\d+$/);if(!D?.length)throw new Error(`Invalid graphqlId: ${A}`);return D[0]},TN1=(A)=>{return`gid://gitlab/Ai::DuoWorkflows::Workflow/${A}`},y$2={CREATED:"Created",RUNNING:"Running",FINISHED:"Complete",FAILED:"Failed",STOPPED:"Stopped",INPUT_REQUIRED:"Needs input",PLAN_APPROVAL_REQUIRED:"Needs input",TOOL_CALL_APPROVAL_REQUIRED:"Needs input"};var j84=(A)=>{if(!A.length)return{errors:[],workflowStatus:"RUNNING",checkpoint:{ts:new Date().toISOString(),channel_values:{status:"Planning"}},workflowGoal:""};return[...A].sort((_,Q)=>{return new Date(Q.checkpoint.ts).getTime()-new Date(_.checkpoint.ts).getTime()})[0]},We0=(A)=>{return A?.duoWorkflowEvents?.nodes||[]},Me0=(A)=>{let D=We0(A);if(D.length===0)return null;return D[0]},Oe0=(A)=>{let _=We0(A).map((Q)=>{return{...Q,checkpoint:bf(Q.checkpoint)}});return j84(_)};var C7="noreply";var vN1=(A,D,_,Q,B,E,z,J,X,G)=>{let F=new Map,$={async getWorkflowById({workflowId:K,isRefetch:Y}){try{B.debug(`GETTING WORKFLOW BY ID ${K}`);let Z=`gid://gitlab/Ai::DuoWorkflows::Workflow/${K}`,U=await h_(X.instanceInfo?.instanceVersion,"18.3.0",async()=>{let W=await A.getGraphqlData({query:Ts,variables:{workflowId:Z}});return eH0(W).match((M)=>M,(M)=>{return B.error("Failed to parse latest workflow checkpoint, using default",M),VF1()})},async()=>{let W=await A.getGraphqlData({query:xT,variables:{workflowId:Z}});return Oe0(W)}),I=AV0(U);if(!aH0(I)&&!Y)F.set(K,_);let V=[{eventName:"workflowStarted",data:K},{eventName:"workflowCheckpoint",data:U},{eventName:"workflowStatus",data:I}];if(U.workflowGoal)V.push({eventName:"workflowGoal",data:U.workflowGoal});return V}catch(Z){let U=Z;return B.error(`Failed to get workflow by ID ${K}`,U),[{eventName:"workflowError",data:`Error fetching workflow: ${U?.message}`}]}},async startSubscriptions({workflowId:K}){return F.set(K,_),C7},async preCreateWorkflow({draftGoal:K,type:Y,aiCatalogItemVersionId:Z}){try{let U=await A.preCreateWorkflow(K,Y,Z);return Ig(z.precalculate()),{eventName:"workflowPreCreated",data:U}}catch(U){return B.error("Failed while attempting to optimistically pre-create the workflow. Workflow will be created normally once prompt has been submitted.",U),C7}},async startWorkflow({goal:K,type:Y,existingWorkflowId:Z,preCreatedWorkflowId:U,metadata:I,toolApproval:V,flowConfig:W,aiCatalogItemVersionId:q}){let M=[],R=[];try{R=await E.retrieveContextItemsWithContent()}catch(r){B.error("Error getting additional context",r),M.push({eventName:"workflowError",data:"An error occurred while retrieving attached context items. Chat will proceed without them."}),R=[]}let y=[];if(!Z)try{y=await z.getSystemContextItems()}catch(r){B.error("Error getting system context",r),y=[]}let T=[...y,...R],u;try{if(Z||U)u=Z||U;else u=await A.createWorkflow(K,Y||"chat",q)}catch(r){B.error(`Failed to create a workflow with goal ${K}`,r)}if(u===void 0)return[{eventName:"workflowError",data:vD(4)},{eventName:"workflowStatus",data:"FAILED"}];try{await k84(D,u,V)}catch(r){B.warn?.("Failed to register tool approval; continuing",{error:String(r)})}F.set(u,_);let S=A.runWorkflow({goal:K,type:Y,existingWorkflowId:u,metadata:{...I,projectId:I?.projectId?RN1(I.projectId):void 0,namespaceId:I?.namespaceId?RN1(I.namespaceId):void 0},additionalContext:T,toolApproval:V,flowConfig:W});if(Ig($.processWorkflowEvents(u,S,K)),Z)return[];return await E.clearSelectedContextItems(),[{eventName:"workflowStarted",data:u},{eventName:"setContextCurrentItemsResult",data:[]},...M]},async processWorkflowEvents(K,Y,Z){try{for await(let U of Y){if(vW(U)){B.error(`Workflow failed with status code "${U.statusCode}": ${U.message}`),F.delete(K),Q.sendNotification("workflowError",U.message),Q.sendNotification("workflowStatus","FAILED");return}let I=F.get(K);if(I)I(U);else break}F.delete(K)}catch(U){B.error(`Failed to start workflow with goal ${Z}`,U),F.delete(K);let I=null;if(vW(U))I=vD(U.statusCode);if(typeof U==="number")I=vD(U);else if(U instanceof Error)I=U.message;else if(typeof U==="string")I=U;else I=vD(null);Q.sendNotification("workflowError",I),Q.sendNotification("workflowStatus","FAILED")}},stopWorkflow({workflowId:K}){return F.delete(K),A.stopWorkflow(K),C7},trackWorkflowStop({reason:K,workflowId:Y}){return G.trackEvent("workflow_stopped",{source:"chat",workflowId:Y,reason:K}),C7},redactUserMessage(K){let{content:Y}=K;try{let Z=J.redactSecrets(Y,"user-input");return SD(Z)}catch(Z){return B.error("Failed to redact user message",Z),t_("An error occurred while performing secret redaction checks on your message. Your message was not sent.")}}};return $};async function k84(A,D,_){if(!_||!_.userApproved)return;if(sQ.is(_.toolName))switch(_.type){case"approve-for-session":if(D)await A.approveToolForSession(D,_.toolName);break;default:break}}var yN1=(A,D)=>{return{async openUrl(_){return await D.sendNotification("openUrl",_),C7},async appReady(){return await D.sendNotification("appReady"),C7},async copyCodeSnippet(_){return await D.sendNotification("copyCodeSnippet",_),C7},async insertCodeSnippet(_){return await D.sendNotification("insertCodeSnippet",_),C7},async copyMessage(_){return await D.sendNotification("copyMessage",_),C7},async openFile(_){return await A.sendNotification("$/gitlab/openFile",_),C7},async copyText({text:_}){return await A.sendNotification("$/gitlab/copyText",{text:_}),C7}}};var SN1=(A,D)=>{return{logToOutputChannel({message:_,level:Q}){let B=`[Duo Workflow Plugin] ${_}`;switch(Q){case"log":D.info(B);break;case"warn":D.warn(B);break;case"error":D.error(B);break;default:D.info(B);break}return C7},async getGraphqlData({eventName:_,query:Q,variables:B,supportedSinceInstanceVersion:E,fragment:z,operationName:J}){try{let X=await A.getGraphqlData({query:Q,fragment:z,variables:B,supportedSinceInstanceVersion:E,operationName:J});return{eventName:_,data:X}}catch(X){let G=X;return D.error(`Failed to get graphql data for query ${Q}`,G),{eventName:"workflowError",data:G.message}}},async getProjectPath(){return{eventName:"setProjectPath",data:await A.getProjectPath()}},async getNamespacePath(){return{eventName:"setNamespacePath",data:await A.getNamespacePath()}},async pullDockerImage(){return{eventName:"pullDockerImageCompleted",data:{success:!0}}},async verifyDockerImage(){return[{eventName:"dockerConfigured",data:!0},{eventName:"isDockerImageAvailable",data:!0}]}}};var jN1=(A)=>{let D=async()=>{return{eventName:"setContextCurrentItemsResult",data:await A.getSelectedContextItems()}};return{async addContextItem(_){return await A.addSelectedContextItem(_),D()},async removeContextItem(_){return await A.removeSelectedContextItem(_),D()},async clearSelectedContextItems(){return await A.clearSelectedContextItems(),D()},async searchContextItems(_){try{return{eventName:"setContextItemSearchResult",data:{results:await A.searchContextItems(_)}}}catch(Q){return{eventName:"setContextItemSearchResult",data:{errorMessage:Q.message}}}},async getContextCategories(){return{eventName:"setContextCategoriesResult",data:await A.getAvailableCategories()}},async getSelectedContextItemContent({contextItem:_}){let Q=await A.getItemWithContent(_);return{eventName:"setContextCurrentItemsResult",data:(await A.getSelectedContextItems()).map((z)=>z.id===_.id?Q:z)}}}};var bN1=(A)=>({trackFeedback(D){return A.trackEvent("click_button",D),C7}});var kN1=(A,D)=>{return{async getUserInfo(){try{let{user:_}=A;if(!_)return D.warn("[User Controller] User information not available"),{eventName:"setUserInfo",data:null};return{eventName:"setUserInfo",data:{id:_.id,username:_.username,name:_.name,avatarUrl:_.avatarUrl}}}catch(_){return D.error("[User Controller] Failed to get user info",_),{eventName:"setUserInfo",data:null}}}}};var xN1=(A,D)=>{D.forEach((_)=>{A.onNotification(_.name,async(...Q)=>{try{let B=await _(...Q);if(B===C7)return;[B].flat().forEach(async(E)=>{let z=await Promise.resolve(E);if(z===C7)return;[z].flat().forEach(({eventName:J,data:X})=>{A.sendNotification(J,X)})})}catch(B){let E=B;A.sendNotification("workflowError",E.message||"An unexpected error occured while processing your request.")}})})},gN1=(A,D)=>{D.forEach((_)=>{A.onRequest(_.name,async(Q)=>{try{return await _(Q)}catch(B){throw new Error(B.message||"An unexpected error occurred while processing your request.")}})})};class S41{id=LN1;title=PN1;#A;#D;#_;#Q;#B;#E;#z;#J;#X;#F;#G;constructor(A,D,_,Q,B,E,z,J,X,G,F){this.#A=A,this.#D=D,this.#_=_,this.#Q=Q,this.#B=B,this.#E=E,this.#z=z,this.#J=J,this.#X=X,this.#F=G,this.#G=F}init(A,D){this.id=A,this.title=D}setup(A){let{webview:D,extension:_}=A;D.onInstanceConnected((Q,B)=>{let E=async(K)=>{this.#z.info("[Duo Agentic Chat Plugin] Received new event");let Y=bf(K.checkpoint),Z={...K,checkpoint:Y};B.sendNotification("workflowCheckpoint",Z),B.sendNotification("workflowStatus",K.workflowStatus)},z=SN1(this.#A,this.#z),J=yN1(this.#E,_),X=vN1(this.#A,this.#X,E,B,this.#z,this.#D,this.#_,this.#J,this.#F,this.#G),G=jN1(this.#D);B.onNotification("webviewReady",()=>{_.onNotification("switchView",(K)=>{B.sendNotification("switchView",K)})});let F=bN1(this.#Q),$=kN1(this.#B,this.#z);gN1(B,[X.redactUserMessage]),xN1(B,[X.startWorkflow,X.stopWorkflow,X.getWorkflowById,X.startSubscriptions,X.preCreateWorkflow,X.trackWorkflowStop,z.logToOutputChannel,z.getGraphqlData,z.getProjectPath,z.getNamespacePath,z.pullDockerImage,z.verifyDockerImage,J.appReady,J.openUrl,J.openFile,J.copyCodeSnippet,J.insertCodeSnippet,J.copyMessage,J.copyText,G.addContextItem,G.removeContextItem,G.clearSelectedContextItems,G.searchContextItems,G.getContextCategories,G.getSelectedContextItemContent,F.trackFeedback,$.getUserInfo])})}}S41=i0([Ne0.Injectable(we0,[pT,qe0,Vp,oV0,tq,Oo,$A,M$,zC,w8,tV0])],S41);var x41=I0(WA(),1);var Le0=()=>({events:{},emit(A,...D){let _=this.events[A]||[];for(let Q=0,B=_.length;Q<B;Q++)_[Q](...D)},on(A,D){return this.events[A]?.push(D)||(this.events[A]=[D]),()=>{this.events[A]=this.events[A]?.filter((_)=>D!==_)}}});class fN1 extends Error{constructor(A,D){if(A instanceof Error){super(A.message);this.cause=A}else super(A);this.reason=D,this.name="ReasonError"}}function Pe0(A){if(!A)return"";return`{${Object.keys(A).sort().filter((_)=>A[_]!==void 0).map((_)=>{let Q=JSON.stringify(A[_]);return`${JSON.stringify(_)}:${Q}`}).join(",")}}`}var YO=Symbol("state");class j41{constructor(A={}){this.emitter=Le0(),this.params=Object.freeze(A),this.initialConnect=!0,this[YO]="idle"}get identifier(){if(this._identifier)return this._identifier;return this._identifier=Pe0({channel:this.channelId,...this.params}),this._identifier}get channelId(){return this.constructor.identifier}get state(){return this[YO]}attached(A){if(this.receiver){if(this.receiver!==A)throw Error("Already connected to a different receiver");return!1}return this.receiver=A,!0}connecting(){this[YO]="connecting"}connected(){if(this.state==="connected")return;if(this.state==="closed")return;this[YO]="connected";let A=!1;if(this.initialConnect)this.initialConnect=!1,this.emit("connect",{reconnect:!1,restored:A});else this.emit("connect",{reconnect:!0,restored:A})}restored(){if(this.state==="connected")throw Error("Already connected");this[YO]="connected";let A=!0,D=!0;this.initialConnect=!1,this.emit("connect",{reconnect:D,restored:A})}disconnected(A){if(this.state==="disconnected"||this.state==="closed")return;this[YO]="disconnected",this.emit("disconnect",A)}closed(A){if(this.state==="closed")return;this[YO]="closed",delete this.receiver,this.initialConnect=!0,this.emit("close",A)}disconnect(){if(this.state==="idle"||this.state==="closed")return;this.receiver.unsubscribe(this)}async perform(A,D){if(this.state==="idle"||this.state==="closed")throw Error("Channel is not subscribed");return this.receiver.perform(this.identifier,A,D)}async send(A){return this.perform(void 0,A)}async whisper(A){try{await this.perform("$whisper",A)}catch(D){let _=this.receiver?this.receiver.logger:null;if(_)_.warn("whisper failed: ",D)}}receive(A,D){this.emit("message",A,D)}on(A,D){return this.emitter.on(A,D)}once(A,D){let _=this.emitter.on(A,(...Q)=>{_(),D(...Q)});return _}emit(A,...D){return this.emitter.emit(A,...D)}ensureSubscribed(){if(this.state==="connected")return Promise.resolve();if(this.state==="closed")return Promise.reject(Error("Channel is unsubscribed"));return this.pendingSubscribe()}pendingSubscribe(){if(this._pendingSubscribe)return this._pendingSubscribe;return this._pendingSubscribe=new Promise((A,D)=>{let _=[()=>delete this._pendingSubscribe];_.push(this.on("connect",()=>{_.forEach((Q)=>Q()),A()})),_.push(this.on("close",(Q)=>{_.forEach((B)=>B()),D(Q||new fN1("Channel was disconnected before subscribing","canceled"))}))}),this._pendingSubscribe}}var x84=fJ`
|
|
1437
|
+
${pY(A.error,1024,{suffix:"[Large error truncated...]"})}`;let B=A.body?pY(A.body,1024,{suffix:"[Large response body truncated...]"}):"";return{actionResponse:{requestID:D,httpResponse:{headers:A.headers,statusCode:A.statusCode,body:B,error:Q}}}}function $e0(A,D,_,Q){if(Ip(A))return R84(A,D);return Ye0(A,D,`Maximum allowed size exceeded. Result: ${_} bytes. Maximum allowed: ${Q} bytes`)}function Ke0(A,D){if(Ip(A))return T84(A,D,"Failed to validate response size due to serialization error");return Ye0(A,D,"Failed to validate response size due to serialization error")}var P41=m$.createInterfaceId("NodeExecutor"),L41="[DuoWorkflowNodeExecutor]";class ES{#A=new NZ;#D;#_;#Q;#B;#E;#z;#J;#X;#F;#G;#Y;#K;#Z=null;#U=null;#H;#V;#$;#I;#C=null;#w;constructor(A,D,_,Q,B,E,z,J,X,G,F,$,K,Y){this.#_=D,this.#Q=_,this.#B=Q,this.#E=B,this.#z=E,this.#X=z,this.#J=yA(z,`${L41}`),this.#F=$,this.#G=K,this.#Y=G,this.#V=X,this.#K=Y,this.#I=F,this.#q(E,J),this.#A.add(A.onConfigChange((Z)=>{this.#W(Z),this.#M(Z)})),this.#W(A.get()),this.#M(A.get())}#q(A,D){if(A.instanceInfo&&A.tokenInfo){let _=A.instanceInfo.instanceUrl,Q=D.getWebSocketOptions(_);this.#$={gitlabInstanceUrl:_,token:A.tokenInfo.token,...Q}}this.#A.add(A.onApiReconfigured((_)=>{if(_.isInValidState){let Q=_.instanceInfo.instanceUrl,B=D.getWebSocketOptions(Q);this.#$={gitlabInstanceUrl:Q,token:_.tokenInfo.token,...B}}else this.#$=void 0}))}#W({httpAgentOptions:A,ignoreCertificateErrors:D}){this.#H={httpAgentOptions:A,ignoreCertificateErrors:D}}#M({telemetry:A}){this.#w=A}#N(){this.#J.info("Force disconnecting - aborting any outstanding action handlers, ending stream"),this.#C?.abort(),this.#Z?.dispose(),this.#J.info("Force disconnected")}dispose(){this.#J.info("Disposing executor - starting shutdown"),this.#N(),this.#A.dispose()}stopWorkflow(){this.#X.debug("Requesting graceful workflow stop"),this.#U?.write({stopWorkflow:{reason:"USER_ACTION_TRIGGERED_STOP"}})}async*runWorkflow(A){let{workflowId:D,goal:_,type:Q,workspaceFolderPath:B,toolApproval:E,flowConfig:z,flowConfigSchemaVersion:J}=A;this.#J=yA(this.#X,`${L41}[${D}]`);let X=new cq1,G=null,F=A.connectionType||"grpc";try{this.#C=new AbortController;let $=await this.#F.getEnabledWorkflowFeatureFlags(D);this.#J.debug(`Running workflow: ${JSON.stringify({...A,enabledFeatureFlags:$},null,4)}`),G=await this.#v(D,Q);let K=await this.#y(G,B);this.#J.debug(`Starting workflow stream with connection type "${F}"`);let Y=null;if(A.metadata.namespaceId)Y=(await this.#F.getAiChatAvailableModels({rootNamespaceId:A.metadata.namespaceId}))?.aiChatAvailableModels??null,this.#J.debug(`Available chat models for workflow: ${JSON.stringify(Y)}`);this.#Z=this.#R(F,G,$,A.metadata,Y),this.#J.debug(`Creating ${F==="grpc"?"gRPC stream":"websocket connection"}...`),this.#U=await this.#Z.executeWorkflow(),this.#J.debug(`${F==="grpc"?"gRPC stream":"websocket connection"} created successfully`),this.#U.on("data",async(V)=>{this.#J.debug(`Received action from stream: ${Object.keys(V).join(", ")}`);try{if(G=await this.#v(D,Q),V.newCheckpoint){let W=await this.#L(D,V);if(W)X.push(W)}else{let W=this.#C?.signal??new AbortController().signal,q=await this.#P(V,{workspaceFolderPath:B,workflowId:D,workflowToken:G,fileStateTracker:this.#E,abortSignal:W});if(!W.aborted)this.#U?.write(this.#S(q,V.requestID))}}catch(W){this.#J.error("Error handling workflow action",W),X.push(new G_("Error handling workflow action",1))}}),this.#U.on("error",(V)=>{this.#J.error("Stream error event received",V),this.#J.error(`Error details: ${JSON.stringify({message:V.message,code:V.code,details:V.details,metadata:V.metadata})}`),this.#C?.abort();let W=qN1(V),q=`${L41} Stream encountered error (code: ${W})`;this.#Q.handleError(q,new jW(q,V),{connectionType:F,correlationId:this.#Z?.getCorrelationId(),statusCode:W}),X.push({type:"completion",statusCode:W})}),this.#U.on("end",()=>{this.#J.debug("Stream end event received"),this.#C?.abort(),X.push({type:"completion",statusCode:vs})});let Z=await this.#V.reload(B,D),U=Z?.filter((V)=>V.isApproved).map((V)=>V.name)??[],I=Array.from(new Set(Z.map((V)=>V.serverName)));this.#J.info(`startRequest: mcp_tools=${Z.length} preapproved_tools=${U.length} servers=${I.length}`),this.#J.debug(`startRequest: approved_tools=${pY(JSON.stringify(U),1024,{suffix:"...[truncated]"})}`),this.#J.debug("Writing startRequest to stream...");try{let V=this.#U.write({startRequest:{workflowID:D,clientVersion:"1.0",workflowDefinition:Q||"software_development",goal:E?"":_,workflowMetadata:JSON.stringify(K),additionalContext:E?[]:this.#j(A.additionalContext),clientCapabilities:[],mcpTools:Z,preapprovedTools:U,flowConfig:fs(z),flowConfigSchemaVersion:J??(z?"experimental":void 0),approval:(E&&{approval:E.userApproved===!0?{}:void 0,rejection:E.userApproved===!1?{message:E.message}:void 0})??void 0}});this.#J.debug(`startRequest write returned: ${V}`)}catch(V){throw this.#J.error("Error during write call",V),V}this.#J.debug("startRequest written to stream"),this.#J.debug("Entering event queue iteration...");for await(let V of X)yield V;this.#J.debug("Event queue iteration completed")}catch($){let K=$ instanceof G_?$.statusCode:qN1($),Y=`${L41} Workflow execution failed`;this.#Q.handleError(Y,new jW(Y,$),{connectionType:F,correlationId:this.#Z?.getCorrelationId(),statusCode:K}),yield new G_(vD(K),K)}finally{if(G&&Q!=="chat")this.#G.revokeToken(D,G).catch(()=>{})}}async#L(A,D){if(this.#J.debug(`Received new checkpoint: ${JSON.stringify({workflowStatus:D.newCheckpoint.status})}`),this.#D!==D.newCheckpoint.status){if(D.newCheckpoint.status==="CREATED")this.#_.trackEvent("start_duo_workflow_execution",{workflow_id:A});else if(D.newCheckpoint.status==="FINISHED")this.#_.trackEvent("finish_duo_workflow_execution",{workflow_id:A});this.#D=D.newCheckpoint.status}return{...D.newCheckpoint,workflowStatus:D.newCheckpoint.status,workflowGoal:D.newCheckpoint.goal}}async#P(A,D){let _=Object.keys(A).find((B)=>B!=="requestID"&&A[B]!==void 0),Q=yA(this.#J,`[actionType: ${_??"missing_workflow_action"}]`);if(A?.requestID?.length)Q=yA(this.#J,`[requestID: ${A.requestID}]`);Q.debug(`Action received: ${JSON.stringify(A)}`);try{let B=this.#K.find((E)=>E.canHandle(A));if(B){if(this.#C?.signal.aborted)return{response:"",error:"Action not executed because workflow has been cancelled or stopped"};let E=await B.execute(A,D);return this.#O(E,`${_}_tool_output`)}return Q.warn("Client version is unable to handle action"),{error:"action not supported",response:""}}catch(B){let E=B instanceof Error?B.message:String(B);return Q.error(`Error handling action: ${E}`),this.#O({error:E,response:""},`${_}_tool_execution_error`)}}#O(A,D){if(Ip(A))return{response:this.#I.redactSecrets(A.response,D),error:this.#I.redactSecrets(A.error,D)};return{...A,body:this.#I.redactSecrets(A.body,D),error:this.#I.redactSecrets(A.error,D)}}#R(A,D,_,Q,B){let E=this.#T(Q,B),z={grpc:()=>new HN1(this.#X,D,this.#H??{},_,E,this.#w),websocket:()=>{return new ON1(this.#X,this.#H??{},this.#$,E,this.#z.instanceInfo,this.#w)}};if(A==="websocket"&&!this.#$)throw new G_("Tried to create a WebSocket client before the GitLab API configuration data was available.",51);let J=z[A];if(!J)throw new G_(`Unsupported connection type: "${A}"`,52);try{return J()}catch(X){throw this.#X.error(`Failed to create "${A}" client: `,X),new G_(`Failed to create "${A}" client`,6)}}#T(A,D){let _=D?.pinnedModel;if(_?.ref)return{...A,selectedModelIdentifier:_.ref};if(!this.#B.isInstanceFlagEnabled("ai_user_model_switching"))return{...A,selectedModelIdentifier:void 0};let Q=D?.selectableModels.find((E)=>E.ref===A.selectedModelIdentifier);if(Q?.ref)return{...A,selectedModelIdentifier:Q.ref};let B=D?.defaultModel;if(B?.ref)return{...A,selectedModelIdentifier:B.ref};return{...A,selectedModelIdentifier:void 0}}async#y(A,D){let _={extended_logging:A.workflow_metadata?.extended_logging??!1},B=(await this.#Y.getRepositoriesForWorkspace(D)).values().next().value;if(B){let E=await B.listRemotes(),z=E.find((J)=>J.remote==="origin")??E[0];_.git_url=z?.url,_.git_sha=await B.getCurrentCommit(),_.git_branch=await B.getCurrentBranchName()||void 0}return _}#S(A,D){let _={actionResponse:{requestID:D,...Ip(A)?{plainTextResponse:A}:{httpResponse:A}}};if(!this.#Z)throw new Error("Workflow client is not initialized. This should not happen during response creation.");try{let Q=this.#Z.getResponseByteSize(_);if(Q<=wh)return _;return $e0(A,D,Q,wh)}catch(Q){return this.#J.error("Failed to serialize ClientEvent for size check",Q),Ke0(A,D)}}#j(A=[]){return A.map((D)=>({...D,metadata:JSON.stringify(D.metadata)}))}async#v(A,D){try{return await this.#G.getToken(A,D)}catch{throw this.#X.debug(`Rejecting with status code ${50}`),new G_("Failed to fetch authentication token",50)}}}ES=i0([m$.Service({dependencies:[X_,cT,mf,AW,Uh,w8,$A,eI,ZX,M3,M$,uC,mC,m$.collection(h8)],lifetime:m$.ServiceLifetime.Transient}),m$.Implements(P41)],ES);var JH=I0(WA(),1);var T41=JH.createInterfaceId("NodeExecutor"),R41=3;class zS{#A;#D;constructor(A,D,_){this.#A=D,this.#D=_}dispose(){this.#A.dispose()}async*runWorkflow(A){for(let D=1;D<=R41;D++)try{if(!(yield*this.#_(A,D)).needsRetry)return;await KF1($F1(D))}catch(_){let Q=this.#Q(_);if(this.#B(D,Q)){let B=vD(Q);this.#D.warn(`Workflow execution failed, retrying (${D}/${R41}): ${B}`),await KF1($F1(D))}else{this.#D.error(`Max retries exceeded or non-retryable error: ${vD(Q)}`),yield new G_(Sf[Q]||vD(Q),Q);return}}}async*#_(A,D){let _=this.#A.runWorkflow(A);for await(let Q of _){if(!vW(Q)){yield Q;continue}if(this.#B(D,Q.statusCode)){let B=vD(Q.statusCode);return this.#D.warn(`Workflow execution failed, retrying (${D}/${R41}): ${B}`),{needsRetry:!0}}return this.#D.error(`Max retries exceeded or non-retryable error: ${vD(Q.statusCode)}`),yield Q,{needsRetry:!1}}return{needsRetry:!1}}#Q(A){if(A instanceof G_)return A.statusCode;if(typeof A==="number")return A;return 1}#B(A,D){return A<R41&&this.#E(D)}#E(A){return![3,51,52].includes(A)}stopWorkflow(){this.#A.stopWorkflow()}}zS=i0([JH.Service({dependencies:[cT,P41,$A],lifetime:JH.ServiceLifetime.Transient}),JH.Implements(T41)],zS);var Ze0=I0(WA(),1);var v84=1800000,Cp=Ze0.createInterfaceId("ExecutorManager");class v41{#A=new Map;#D;#_;constructor(A,D){this.#_=A,this.#D=yA(D,"[ExecutorManager]")}getExecutorForWorkflow(A){if(!this.#A.has(A))this.#A.set(A,{executor:this.#Q()});return this.#A.get(A).executor}setupExecutorDisposal(A){let D=this.#A.get(A);if(!D)return;let _=setTimeout(()=>this.disposeExecutor(A),v84);this.#A.set(A,{executor:D.executor,disposeTimeout:_})}clearExecutorDisposal(A){let D=this.#A.get(A);if(!D?.disposeTimeout)return;clearTimeout(D.disposeTimeout),this.#A.set(A,{executor:D.executor,disposeTimeout:void 0})}disposeExecutor(A){this.#D.debug(`Disposing executor for workflow "${A}".`);let{executor:D,disposeTimeout:_}=this.#A.get(A)||{};clearTimeout(_),D?.dispose(),this.#A.delete(A)}disconnectAllExecutors(){for(let[A]of this.#A)this.disposeExecutor(A)}#Q(){return this.#D.debug('Creating Duo Workflow Executor with type "node"'),this.#_.getRequiredService(T41)}}var Ue0=I0(WA(),1),we0=Ue0.createInterfaceId("WebviewPlugin");var NN1=I0(WA(),1);var MX=I0(WA(),1);var Ie0=I0(WA(),1),y41=Ie0.createInterfaceId("DuoFeatureAccessService");var Ce0=I0(WA(),1),FO=Ce0.createInterfaceId("SystemContextProvider");var Vp=MX.createInterfaceId("SystemContextManager"),I$2=MX.createCollectionId(FO);class Hp{#A=[];#D;#_;constructor(A,D,_){this.#_=yA(A,"SystemContextManager"),this.#A=D,this.#D=_}async#Q(){let A=this.#A.map(async(_)=>{return await this.#B(_)?_:null});return(await Promise.all(A)).filter(Boolean)}async#B(A){try{let D=!0;if(A.chatRequiredFeature)D=await this.#D.isChatFeatureEnabled(A.chatRequiredFeature),this.#_.debug(`System provider with required feature "${A.chatRequiredFeature}": ${D}`);else this.#_.debug("System provider has no feature requirement, enabled by default");return D}catch(D){return this.#_.warn(`Failed to get enabled status for system provider with required feature ${A.chatRequiredFeature} treating it as disabled.`,D),!1}}async precalculate(){let A=await this.#Q();this.#_.info(`Precalculating system context for ${A.length} available providers`);let D=A.map(async(_)=>{if("precalculate"in _&&typeof _.precalculate==="function")try{await _.precalculate()}catch(Q){this.#_.warn("Error precalculating for system context provider",Q)}});await Promise.all(D),this.#_.info("System context precalculation complete")}async getSystemContextItems(){let A=await this.#Q();this.#_.info(`Getting system context from ${A.length} available providers`);let D=A.map(async(B)=>{try{return await B.getItems()}catch(E){return this.#_.error("Error getting items from system context provider",E),[]}}),Q=(await Promise.all(D)).flat();return this.#_.info(`Retrieved ${Q.length} system context items`),Q}}Hp=i0([MX.Service({dependencies:[$A,MX.collection(FO),y41],lifetime:MX.ServiceLifetime.Scoped}),MX.Implements(Vp)],Hp);var He0=d.enum(["file","snippet","terminal","issue","merge_request","dependency","local_git","user_rule","repository","directory","agent_user_environment"]),y84=d.enum(["open_tab","import","local_file_search","issue","merge_request","snippet","dependency","local_git","user_rule","repository","directory","shell","os"]),Ve0=d.object({title:d.string(),enabled:d.boolean(),disabledReasons:d.array(d.string()).optional(),subType:y84,icon:d.string(),secondaryText:d.string(),subTypeLabel:d.string(),languageId:d.string().optional()}),S84=d.object({id:d.string(),category:He0,content:d.string().optional(),metadata:Ve0.optional()}),O$2=S84.extend({metadata:Ve0}),N$2=d.object({category:He0,query:d.string(),workspaceFolders:d.array(d.object({uri:d.string(),name:d.string()})).optional()}),L$2=NN1.createInterfaceId("DuoChatContextManager"),qe0=NN1.createInterfaceId("AgenticChatContextManager");var Ne0=I0(WA(),1);var LN1="agentic-duo-chat",PN1="GitLab Duo Agentic Chat (Beta)";var RN1=(A)=>{let D=A.match(/\d+$/);if(!D?.length)throw new Error(`Invalid graphqlId: ${A}`);return D[0]},TN1=(A)=>{return`gid://gitlab/Ai::DuoWorkflows::Workflow/${A}`},y$2={CREATED:"Created",RUNNING:"Running",FINISHED:"Complete",FAILED:"Failed",STOPPED:"Stopped",INPUT_REQUIRED:"Needs input",PLAN_APPROVAL_REQUIRED:"Needs input",TOOL_CALL_APPROVAL_REQUIRED:"Needs input"};var j84=(A)=>{if(!A.length)return{errors:[],workflowStatus:"RUNNING",checkpoint:{ts:new Date().toISOString(),channel_values:{status:"Planning"}},workflowGoal:""};return[...A].sort((_,Q)=>{return new Date(Q.checkpoint.ts).getTime()-new Date(_.checkpoint.ts).getTime()})[0]},We0=(A)=>{return A?.duoWorkflowEvents?.nodes||[]},Me0=(A)=>{let D=We0(A);if(D.length===0)return null;return D[0]},Oe0=(A)=>{let _=We0(A).map((Q)=>{return{...Q,checkpoint:bf(Q.checkpoint)}});return j84(_)};var C7="noreply";var vN1=(A,D,_,Q,B,E,z,J,X,G)=>{let F=new Map,$={async getWorkflowById({workflowId:K,isRefetch:Y}){try{B.debug(`GETTING WORKFLOW BY ID ${K}`);let Z=`gid://gitlab/Ai::DuoWorkflows::Workflow/${K}`,U=await h_(X.instanceInfo?.instanceVersion,"18.3.0",async()=>{let W=await A.getGraphqlData({query:Ts,variables:{workflowId:Z}});return eH0(W).match((M)=>M,(M)=>{return B.error("Failed to parse latest workflow checkpoint, using default",M),VF1()})},async()=>{let W=await A.getGraphqlData({query:xT,variables:{workflowId:Z}});return Oe0(W)}),I=AV0(U);if(!aH0(I)&&!Y)F.set(K,_);let V=[{eventName:"workflowStarted",data:K},{eventName:"workflowCheckpoint",data:U},{eventName:"workflowStatus",data:I}];if(U.workflowGoal)V.push({eventName:"workflowGoal",data:U.workflowGoal});return V}catch(Z){let U=Z;return B.error(`Failed to get workflow by ID ${K}`,U),[{eventName:"workflowError",data:`Error fetching workflow: ${U?.message}`}]}},async startSubscriptions({workflowId:K}){return F.set(K,_),C7},async preCreateWorkflow({draftGoal:K,type:Y,aiCatalogItemVersionId:Z}){try{let U=await A.preCreateWorkflow(K,Y,Z);return Ig(z.precalculate()),{eventName:"workflowPreCreated",data:U}}catch(U){return B.error("Failed while attempting to optimistically pre-create the workflow. Workflow will be created normally once prompt has been submitted.",U),C7}},async startWorkflow({goal:K,type:Y,existingWorkflowId:Z,preCreatedWorkflowId:U,metadata:I,toolApproval:V,flowConfig:W,aiCatalogItemVersionId:q}){let M=[],R=[];try{R=await E.retrieveContextItemsWithContent()}catch(r){B.error("Error getting additional context",r),M.push({eventName:"workflowError",data:"An error occurred while retrieving attached context items. Chat will proceed without them."}),R=[]}let y=[];if(!Z)try{y=await z.getSystemContextItems()}catch(r){B.error("Error getting system context",r),y=[]}let T=[...y,...R],u;try{if(Z||U)u=Z||U;else u=await A.createWorkflow(K,Y||"chat",q)}catch(r){B.error(`Failed to create a workflow with goal ${K}`,r)}if(u===void 0)return[{eventName:"workflowError",data:vD(4)},{eventName:"workflowStatus",data:"FAILED"}];try{await k84(D,u,V)}catch(r){B.warn?.("Failed to register tool approval; continuing",{error:String(r)})}F.set(u,_);let S=A.runWorkflow({goal:K,type:Y,existingWorkflowId:u,metadata:{...I,projectId:I?.projectId?RN1(I.projectId):void 0,namespaceId:I?.namespaceId?RN1(I.namespaceId):void 0},additionalContext:T,toolApproval:V,flowConfig:W});if(Ig($.processWorkflowEvents(u,S,K)),Z)return[];return await E.clearSelectedContextItems(),[{eventName:"workflowStarted",data:u},{eventName:"setContextCurrentItemsResult",data:[]},...M]},async processWorkflowEvents(K,Y,Z){try{for await(let U of Y){if(vW(U)){B.error(`Workflow failed with status code "${U.statusCode}": ${U.message}`),F.delete(K),Q.sendNotification("workflowError",U.message),Q.sendNotification("workflowStatus","FAILED");return}let I=F.get(K);if(I)I(U);else break}F.delete(K)}catch(U){B.error(`Failed to start workflow with goal ${Z}`,U),F.delete(K);let I=null;if(vW(U))I=vD(U.statusCode);if(typeof U==="number")I=vD(U);else if(U instanceof Error)I=U.message;else if(typeof U==="string")I=U;else I=vD(null);Q.sendNotification("workflowError",I),Q.sendNotification("workflowStatus","FAILED")}},stopWorkflow({workflowId:K}){return F.delete(K),A.stopWorkflow(K),C7},trackWorkflowStop({reason:K,workflowId:Y}){return G.trackEvent("workflow_stopped",{source:"chat",workflowId:Y,reason:K}),C7},redactUserMessage(K){let{content:Y}=K;try{let Z=J.redactSecrets(Y,"user-input");return SD(Z)}catch(Z){return B.error("Failed to redact user message",Z),t_("An error occurred while performing secret redaction checks on your message. Your message was not sent.")}}};return $};async function k84(A,D,_){if(!_||!_.userApproved)return;if(sQ.is(_.toolName))switch(_.type){case"approve-for-session":if(D)await A.approveToolForSession(D,_.toolName);break;default:break}}var yN1=(A,D)=>{return{async openUrl(_){return await D.sendNotification("openUrl",_),C7},async appReady(){return await D.sendNotification("appReady"),C7},async copyCodeSnippet(_){return await D.sendNotification("copyCodeSnippet",_),C7},async insertCodeSnippet(_){return await D.sendNotification("insertCodeSnippet",_),C7},async copyMessage(_){return await D.sendNotification("copyMessage",_),C7},async openFile(_){return await A.sendNotification("$/gitlab/openFile",_),C7},async copyText({text:_}){return await A.sendNotification("$/gitlab/copyText",{text:_}),C7}}};var SN1=(A,D)=>{return{logToOutputChannel({message:_,level:Q}){let B=`[Duo Workflow Plugin] ${_}`;switch(Q){case"log":D.info(B);break;case"warn":D.warn(B);break;case"error":D.error(B);break;default:D.info(B);break}return C7},async getGraphqlData({eventName:_,query:Q,variables:B,supportedSinceInstanceVersion:E,fragment:z,operationName:J}){try{let X=await A.getGraphqlData({query:Q,fragment:z,variables:B,supportedSinceInstanceVersion:E,operationName:J});return{eventName:_,data:X}}catch(X){let G=X;return D.error(`Failed to get graphql data for query ${Q}`,G),{eventName:"workflowError",data:G.message}}},async getProjectPath(){return{eventName:"setProjectPath",data:await A.getProjectPath()}},async getNamespacePath(){return{eventName:"setNamespacePath",data:await A.getNamespacePath()}},async pullDockerImage(){return{eventName:"pullDockerImageCompleted",data:{success:!0}}},async verifyDockerImage(){return[{eventName:"dockerConfigured",data:!0},{eventName:"isDockerImageAvailable",data:!0}]}}};var jN1=(A)=>{let D=async()=>{return{eventName:"setContextCurrentItemsResult",data:await A.getSelectedContextItems()}};return{async addContextItem(_){return await A.addSelectedContextItem(_),D()},async removeContextItem(_){return await A.removeSelectedContextItem(_),D()},async clearSelectedContextItems(){return await A.clearSelectedContextItems(),D()},async searchContextItems(_){try{return{eventName:"setContextItemSearchResult",data:{results:await A.searchContextItems(_)}}}catch(Q){return{eventName:"setContextItemSearchResult",data:{errorMessage:Q.message}}}},async getContextCategories(){return{eventName:"setContextCategoriesResult",data:await A.getAvailableCategories()}},async getSelectedContextItemContent({contextItem:_}){let Q=await A.getItemWithContent(_);return{eventName:"setContextCurrentItemsResult",data:(await A.getSelectedContextItems()).map((z)=>z.id===_.id?Q:z)}}}};var bN1=(A)=>({trackFeedback(D){return A.trackEvent("click_button",D),C7}});var kN1=(A,D)=>{return{async getUserInfo(){try{let{user:_}=A;if(!_)return D.warn("[User Controller] User information not available"),{eventName:"setUserInfo",data:null};return{eventName:"setUserInfo",data:{id:_.id,username:_.username,name:_.name,avatarUrl:_.avatarUrl}}}catch(_){return D.error("[User Controller] Failed to get user info",_),{eventName:"setUserInfo",data:null}}}}};var xN1=(A,D)=>{D.forEach((_)=>{A.onNotification(_.name,async(...Q)=>{try{let B=await _(...Q);if(B===C7)return;[B].flat().forEach(async(E)=>{let z=await Promise.resolve(E);if(z===C7)return;[z].flat().forEach(({eventName:J,data:X})=>{A.sendNotification(J,X)})})}catch(B){let E=B;A.sendNotification("workflowError",E.message||"An unexpected error occured while processing your request.")}})})},gN1=(A,D)=>{D.forEach((_)=>{A.onRequest(_.name,async(Q)=>{try{return await _(Q)}catch(B){throw new Error(B.message||"An unexpected error occurred while processing your request.")}})})};class S41{id=LN1;title=PN1;#A;#D;#_;#Q;#B;#E;#z;#J;#X;#F;#G;constructor(A,D,_,Q,B,E,z,J,X,G,F){this.#A=A,this.#D=D,this.#_=_,this.#Q=Q,this.#B=B,this.#E=E,this.#z=z,this.#J=J,this.#X=X,this.#F=G,this.#G=F}init(A,D){this.id=A,this.title=D}setup(A){let{webview:D,extension:_}=A;D.onInstanceConnected((Q,B)=>{let E=async(K)=>{this.#z.info("[Duo Agentic Chat Plugin] Received new event");let Y=bf(K.checkpoint),Z={...K,checkpoint:Y};B.sendNotification("workflowCheckpoint",Z),B.sendNotification("workflowStatus",K.workflowStatus)},z=SN1(this.#A,this.#z),J=yN1(this.#E,_),X=vN1(this.#A,this.#X,E,B,this.#z,this.#D,this.#_,this.#J,this.#F,this.#G),G=jN1(this.#D);B.onNotification("webviewReady",()=>{_.onNotification("switchView",(K)=>{B.sendNotification("switchView",K)})});let F=bN1(this.#Q),$=kN1(this.#B,this.#z);gN1(B,[X.redactUserMessage]),xN1(B,[X.startWorkflow,X.stopWorkflow,X.getWorkflowById,X.startSubscriptions,X.preCreateWorkflow,X.trackWorkflowStop,z.logToOutputChannel,z.getGraphqlData,z.getProjectPath,z.getNamespacePath,z.pullDockerImage,z.verifyDockerImage,J.appReady,J.openUrl,J.openFile,J.copyCodeSnippet,J.insertCodeSnippet,J.copyMessage,J.copyText,G.addContextItem,G.removeContextItem,G.clearSelectedContextItems,G.searchContextItems,G.getContextCategories,G.getSelectedContextItemContent,F.trackFeedback,$.getUserInfo])})}}S41=i0([Ne0.Injectable(we0,[pT,qe0,Vp,oV0,tq,Oo,$A,M$,zC,w8,tV0])],S41);var x41=I0(WA(),1);var Le0=()=>({events:{},emit(A,...D){let _=this.events[A]||[];for(let Q=0,B=_.length;Q<B;Q++)_[Q](...D)},on(A,D){return this.events[A]?.push(D)||(this.events[A]=[D]),()=>{this.events[A]=this.events[A]?.filter((_)=>D!==_)}}});class fN1 extends Error{constructor(A,D){if(A instanceof Error){super(A.message);this.cause=A}else super(A);this.reason=D,this.name="ReasonError"}}function Pe0(A){if(!A)return"";return`{${Object.keys(A).sort().filter((_)=>A[_]!==void 0).map((_)=>{let Q=JSON.stringify(A[_]);return`${JSON.stringify(_)}:${Q}`}).join(",")}}`}var YO=Symbol("state");class j41{constructor(A={}){this.emitter=Le0(),this.params=Object.freeze(A),this.initialConnect=!0,this[YO]="idle"}get identifier(){if(this._identifier)return this._identifier;return this._identifier=Pe0({channel:this.channelId,...this.params}),this._identifier}get channelId(){return this.constructor.identifier}get state(){return this[YO]}attached(A){if(this.receiver){if(this.receiver!==A)throw Error("Already connected to a different receiver");return!1}return this.receiver=A,!0}connecting(){this[YO]="connecting"}connected(){if(this.state==="connected")return;if(this.state==="closed")return;this[YO]="connected";let A=!1;if(this.initialConnect)this.initialConnect=!1,this.emit("connect",{reconnect:!1,restored:A});else this.emit("connect",{reconnect:!0,restored:A})}restored(){if(this.state==="connected")throw Error("Already connected");this[YO]="connected";let A=!0,D=!0;this.initialConnect=!1,this.emit("connect",{reconnect:D,restored:A})}disconnected(A){if(this.state==="disconnected"||this.state==="closed")return;this[YO]="disconnected",this.emit("disconnect",A)}closed(A){if(this.state==="closed")return;this[YO]="closed",delete this.receiver,this.initialConnect=!0,this.emit("close",A)}disconnect(){if(this.state==="idle"||this.state==="closed")return;this.receiver.unsubscribe(this)}async perform(A,D){if(this.state==="idle"||this.state==="closed")throw Error("Channel is not subscribed");return this.receiver.perform(this.identifier,A,D)}async send(A){return this.perform(void 0,A)}async whisper(A){try{await this.perform("$whisper",A)}catch(D){let _=this.receiver?this.receiver.logger:null;if(_)_.warn("whisper failed: ",D)}}receive(A,D){this.emit("message",A,D)}on(A,D){return this.emitter.on(A,D)}once(A,D){let _=this.emitter.on(A,(...Q)=>{_(),D(...Q)});return _}emit(A,...D){return this.emitter.emit(A,...D)}ensureSubscribed(){if(this.state==="connected")return Promise.resolve();if(this.state==="closed")return Promise.reject(Error("Channel is unsubscribed"));return this.pendingSubscribe()}pendingSubscribe(){if(this._pendingSubscribe)return this._pendingSubscribe;return this._pendingSubscribe=new Promise((A,D)=>{let _=[()=>delete this._pendingSubscribe];_.push(this.on("connect",()=>{_.forEach((Q)=>Q()),A()})),_.push(this.on("close",(Q)=>{_.forEach((B)=>B()),D(Q||new fN1("Channel was disconnected before subscribing","canceled"))}))}),this._pendingSubscribe}}var x84=fJ`
|
|
1438
1438
|
subscription workflowEventsUpdated($workflowId: AiDuoWorkflowsWorkflowID!) {
|
|
1439
1439
|
workflowEventsUpdated(workflowId: $workflowId) {
|
|
1440
1440
|
checkpoint
|
|
@@ -1796,5 +1796,5 @@ Use this for any git operations like status, log, diff, branch operations, etc.
|
|
|
1796
1796
|
<current_time>${_}</current_time>
|
|
1797
1797
|
<user_timezone>${Q}</user_timezone>`}}wd=i0([I3A.Injectable(FO,[$A])],wd);function C3A(A){A.addClass(wd)}var S81=I0(WA(),1);class oR1{#A;#D;constructor(A,D){this.#A=yA(A,"[PreConfiguredWorkflowTokenService]"),this.#D=D}async getToken(A,D){if(!this.#D)throw new Error("Token service has been disposed");return this.#A.debug(`Returning pre-configured token for workflow "${A}", type: "${D}"`),this.#D}getTokenFromCache(){return this.#D}cacheToken(A,D,_){this.#A.warn(`Ignoring cache request for workflow "${A}", type "${D}" - using pre-configured tokens which are immutable`)}async revokeToken(A,D){this.#A.debug(`Ignoring revoke request for workflow "${A}" - pre-configured tokens cannot be revoked`)}dispose(){this.#D=null,this.#A.debug("Disposed pre-configured token")}}function H3A(A,D){if(D.command.name==="run"&&D.command.workflowToken)A.add(S81.createFactoryDescriptor({aliases:[mC],factory:(_)=>new oR1(_.getRequiredService($A),D.command.workflowToken),lifetime:S81.ServiceLifetime.Singleton}));else A.addClass(Cy)}function V3A(A,D){if(y81()==="anthropic")C3A(A);else H3A(A,D)}async function j81(A,D){let _=new yF.ServiceCollection;if(_.add(yF.createInstanceDescriptor({instance:D,aliases:[RX]})),A?.logDestination==="stdout")_.addClass(Tc);else _.addClass(bO);_.addClass(Rc,yK,vf,Oc),_.add(yF.createFactoryDescriptor({aliases:[Cp],factory:(E)=>new v41(E,E.getRequiredService($A)),lifetime:yF.ServiceLifetime.Singleton})),_.addClass(yf,Uy,wy,iS,Zh),_.addClass(Fc),_.addClass(vc,cS),gq1(_),_.addClass(Wc,aS,ES,zS,Hy,Zy,pS,YS,$S,XS,Mc,KS,ZS,lS,JS,FS,US,GS),_.add(yF.createInstanceDescriptor({instance:{getDiagnostics:async()=>[]},aliases:[Wp]})),_.add(yF.createInstanceDescriptor({instance:{isClientFlagEnabled:()=>!1,isInstanceFlagEnabled:()=>!1,updateInstanceFeatureFlags:async()=>{}},aliases:[AW]})),_.addClass(zg),_.addClass(hf),_.add(yF.createInstanceDescriptor({instance:{isChatFeatureEnabled:()=>Promise.resolve(!0),isSuggestionsFeatureEnabled:()=>Promise.resolve(!0)},aliases:[y41]})),_.addClass(Hp,Yc),_.addClass(Zd),_.addClass(Nc),_.addClass(Pc),_.addClass(Kd,$d),V3A(_,D);let Q=_.build();return await Q.getRequiredService(eI).initialize(),global.__logger=Q.getRequiredService($A),Q}class rR1{#A;#D;constructor(){this.#A={...k_1}}initialize(A){this.#D=A}getState(){return this.#A}setState(A){if(this.#A=A,!this.#D)throw new Error("AppStore is not initialized");this.#D(this.#A)}}class sR1{onSubmit=()=>{};onStateChange=()=>{};clear=()=>{};handleKeyPress=(A,D)=>{}}class tR1{onSubmit=()=>{};onStateChange=()=>{};#A=[];#D=0;setChoice(A){this.#A=A,this.#D=0,this.#_()}handleKeyPress=(A,D)=>{if(D.return){this.onSubmit(this.#A[this.#D]?.value);return}if(D.upArrow)this.#D=Math.max(0,this.#D-1);if(D.downArrow)this.#D=Math.min(this.#A.length-1,this.#D+1);this.#_()};#_(){this.onStateChange({inputType:vq.CHOICE,choiceOptions:this.#A,selectedChoiceIndex:this.#D})}}class eR1{#A;#D;#_=new rR1;#Q;#B;#E;#z=new Map;#J=new sR1;#X=new tR1;#F;#G;constructor(A,D){this.#A=A,this.#B=D,this.#J.onSubmit=(_)=>this.#H({type:"SEND_PROMPT",prompt:_}),this.#X.onSubmit=(_)=>this.#U(_),this.#J.onStateChange=(_)=>this.#_.setState({...this.#_.getState(),input:_}),this.#X.onStateChange=(_)=>this.#_.setState({...this.#_.getState(),input:_})}async initialize(){this.#_.initialize((A)=>this.#A(A)),this.#K(),this.#G=this.#Y()}async#Y(){let A=await j81({logDestination:"file"},this.#B),D=A.getRequiredService(Ud);this.#D=D.backend,this.#Q=A.getRequiredService($A);let _=A.getRequiredService(w8);if(Q5A(_)){let Q=await _.initialize();if(Q.isErr()){this.#Q.error("API initialization failed:",Q.error),this.#_.setState({...this.#_.getState(),criticalErrorMessage:Q.error.message}),setTimeout(()=>process.exit(1),1);return}}this.#Q.info("Successfully initialized API"),await this.#D.initialize(),await this.#Z()}getCallbacks(){return{onKeyPress:(A,D)=>{if(D.escape&&this.#_.getState().isLoading&&this.#F){this.#Q?.info("Cancelling stream due to ESC key press"),this.#F.abort();return}if(this.#_.getState().input.inputType===vq.TEXT)this.#J.handleKeyPress(A,D);else this.#X.handleKeyPress(A,D)},onSubmit:(A)=>{this.#J.onSubmit(A)},onExit:()=>this.#w(),toggleExpanded:()=>{let A=this.#_.getState();this.#_.setState({...A,expanded:!A.expanded})}}}#K(){let A={type:"message",id:"welcome",role:"assistant",content:"Hi!"};this.#_.setState({elements:[A],isLoading:!1,input:fP,expanded:!1})}async#Z(){if(!this.#D)throw new Error("Backend not initialized");let A=await this.#D.getWelcomeMessage(),D=this.#_.getState();this.#_.setState({...D,elements:D.elements.map((_)=>{return _.id==="welcome"?{..._,content:A}:_}),isLoading:!1})}async#U(A){let D=this.#_.getState();if(D.isLoading)return;this.#_.setState({...D,input:fP}),await this.#V(A)}async#H(A){if(this.#_.getState().isLoading||!A.prompt.trim())return;this.#J.clear();let _={id:Date.now().toString(),type:"message",role:"user",content:A.prompt};this.#$(_),await this.#V(A)}async#V(A){if(this.#_.setState({...this.#_.getState(),input:fP,isLoading:!0}),await this.#G,!this.#D)throw new Error("Backend not initialized");this.#F=new AbortController;try{let D;for await(let _ of this.#D.sendMessageStream(A,this.#F.signal))D=_,this.#I(_);if(D?.type==="TOOL_AWAITING_APPROVAL"){let _={type:"SEND_TOOL_APPROVAL",scope:"session",toolId:D.toolId,toolName:D.toolName};this.#X.setChoice([{label:"Approve",value:{..._,approved:!0}},{label:"Reject",value:{..._,approved:!1}}])}}catch(D){this.#Q?.error("Error in message streaming",D),this.#I({type:"ERROR",message:"Sorry, there was an error processing your message. Please try again."})}finally{this.#E=void 0,this.#z.clear(),this.#F=void 0,this.#_.setState({...this.#_.getState(),isLoading:!1})}}#$(A){let D=this.#_.getState();this.#_.setState({...D,elements:[...D.elements,A]})}#I(A){if(!this.#_)throw new Error("Store not initialized");let D=this.#_.getState();switch(A.type){case"TEXT_CHUNK":{if(!this.#E||this.#E.id!==A.messageId)this.#E={id:A.messageId,type:"message",role:"assistant",content:A.content},this.#$(this.#E);else{this.#E.content+=A.content;let _=D.elements.map((Q)=>Q.type==="message"&&Q.id===A.messageId&&this.#E?this.#E:Q);this.#_.setState({...D,elements:_})}break}case"TOOL_START":{let _={id:A.toolId,type:"tool",name:A.name,input:A.input,state:{type:"loading"}};this.#z.set(A.toolId,_),this.#C(_);break}case"TOOL_AWAITING_APPROVAL":{let _={id:A.toolId,type:"tool",name:A.toolName,input:A.input,state:{type:"approval_request",content:""}};this.#z.set(A.toolId,_),this.#C(_);break}case"TOOL_COMPLETE":{let _=this.#z.get(A.toolId);if(_){let Q={..._,state:A.error?{type:"error",error:A.error}:{type:"success",output:A.result}};this.#C(Q),this.#z.delete(A.toolId)}break}case"ERROR":{this.#Q?.error("Agent error:",A.message);let _={id:`error-${Date.now()}`,type:"error",error:`${A.message}`};this.#$(_);break}default:this.#Q?.warn("Unknown agent event type:",A);break}}#C(A){let D=this.#_.getState(),_=D.elements.findIndex((B)=>B.type==="tool"&&B.id===A.id);if(_<0){this.#$(A);return}let Q=[...D.elements];Q[_]=A,this.#_.setState({...D,elements:Q})}#w(){process.exit(0)}}var jG4=({runConfig:A,children:D})=>{if(A.environment==="development")return AA(pO.StrictMode,{children:D});return AA(tw,{children:D})},bG4=({runConfig:A})=>{let[D,_]=pO.useState(void 0),[Q]=pO.useState(()=>new eR1(_,A));if(pO.useEffect(()=>{Ig(Q.initialize())},[Q]),!D)return AA(S0,{children:"Initializing..."});return AA(b_1,{state:D,callbacks:Q.getCallbacks()})},q3A=(A)=>{process.stdout.write("\x1B[?2004h");let{waitUntilExit:D}=db(AA(jG4,{runConfig:A,children:AA(bG4,{runConfig:A})}),{exitOnCtrlC:!1});D().then(()=>{process.exit(0)}).catch((_)=>{console.error(_),process.exit(1)}),process.on("exit",()=>{process.stdout.write("\x1B[?2004l")})};class AT1{#A;#D;#_;#Q=null;constructor(A){this.#_=A}async initialize(){let A=await j81({logDestination:"stdout"},this.#_),D=A.getRequiredService(Ud);this.#A=D.backend,this.#D=A.getRequiredService($A),await this.#A.initialize()}async execute(){if(!this.#A||this.#_.command?.name!=="run")throw new Error("Controller not initialized. Call initialize() first.");let{goal:A}=this.#_.command;this.#D?.info(`Executing workflow: ${JSON.stringify({goal:A},null,4)}`);let D={id:Date.now().toString(),type:"message",role:"user",content:A};try{let _;for await(let Q of this.#A.sendMessageStream({type:"SEND_PROMPT",prompt:D.content}))this.#B(Q),_=Q;if(this.#Q)this.#D?.info(JSON.stringify(this.#Q,null,2));process.exit(_?.type==="ERROR"?1:0)}catch(_){throw this.#D?.error("Workflow failed:",_ instanceof Error?_.message:String(_)),_}}#B(A){switch(A.type){case"TEXT_CHUNK":{if(!this.#Q||this.#Q.id!==A.messageId){if(this.#Q)this.#D?.info(JSON.stringify(this.#Q,null,4));this.#Q={id:A.messageId,type:"message",role:"assistant",content:A.content}}else this.#Q.content+=A.content;break}case"TOOL_START":{this.#D?.info(`Tool started: ${A.name}`);break}case"TOOL_COMPLETE":{if(this.#D?.info(`Tool completed: ${A.toolId}`),A.error)this.#D?.error(`Tool error: ${A.error}`);break}case"TOOL_AWAITING_APPROVAL":break;case"ERROR":{this.#D?.error(`Error: ${A.message}`);break}default:{let D=A;this.#D?.warn(`Unexpected event received: ${JSON.stringify(D)}`);break}}}}var DT1=()=>{return"production"};import{statSync as kG4}from"node:fs";import{isAbsolute as xG4,normalize as gG4,resolve as fG4}from"node:path";function W3A(A,D=process.cwd()){let _;if(xG4(A))_=gG4(A);else _=fG4(D,A);return uG4(_),_}function uG4(A){try{if(!kG4(A).isDirectory())throw new jw(`Path "${A}" exists but is not a directory`)}catch(D){if(D instanceof Error&&D.code==="ENOENT")throw new jw(`Directory "${A}" does not exist`);throw D}}function M3A(A){try{let D=JSON.parse(A);return Array.isArray(D)?D.map((Q)=>({category:Q.Category||Q.category,content:Q.Content||Q.content,metadata:Q.metadata||{}})):[]}catch(D){if(D instanceof SyntaxError)throw new jw(`Invalid JSON format: ${D.message}`);throw new jw(`AI Context Item schema error: ${D}`)}}var m3A=I0(f3A(),1),f81=I0(WA(),1);import{join as IF4,dirname as CF4}from"path";import{mkdirSync as HF4,existsSync as g81,writeFileSync as VF4,accessSync as u3A,constants as XT1,promises as Hd}from"fs";import{homedir as qF4}from"node:os";var u81=f81.createInterfaceId("PersistentStorage");class Zj{#A;#D;#_;constructor(A,D){this.#D=yA(A,"[PersistentStorage]");try{if(D)this.#A=D;else{let _=process.env.GITLAB_LSP_STORAGE_DIR||qF4();this.#A=IF4(_,".gitlab","storage.json")}this.#D.info(`Initializing storage at: ${this.#A}`),this.#Q()}catch(_){this.#D.error("Failed to construct PersistentStorage:",_),this.#_={status:"failed",error:_}}}#Q(){try{let A=CF4(this.#A);if(this.#D.debug(`Creating directory: ${A}`),!g81(A))HF4(A,{recursive:!0}),this.#D.debug(`Directory created: ${A}`);try{u3A(A,XT1.W_OK)}catch(D){let _=new Error(`Cannot write to directory: ${A}`);throw this.#D.error("Directory write permission error:",D),_}if(!g81(this.#A))this.#D.debug("Creating initial storage file"),VF4(this.#A,JSON.stringify({}),"utf8");else try{u3A(this.#A,XT1.R_OK|XT1.W_OK),this.#D.debug("Storage file is accessible")}catch(D){let _=new Error(`Cannot access storage file: ${this.#A}`);throw this.#D.error("Storage access error:",D),_}this.#_={status:"initialized"},this.#D.info("Persistent storage initialized successfully")}catch(A){this.#_={status:"failed",error:A},this.#D.error("Failed to initialize persistent storage",A)}}isInitialized(){return this.#_?.status==="initialized"}async#B(){try{let A=await Hd.readFile(this.#A,"utf8");return JSON.parse(A)}catch(A){this.#D.error("Failed to read storage file, recreating with empty data",A);try{if(g81(this.#A))await Hd.unlink(this.#A),this.#D.info("Corrupted storage file removed");let D={};return await Hd.writeFile(this.#A,JSON.stringify(D,null,2),"utf8"),this.#D.info("Storage file recreated with empty data"),D}catch(D){return this.#D.error("Failed to recreate storage file",D),{}}}}async#E(A){try{await Hd.writeFile(this.#A,JSON.stringify(A,null,2),"utf8")}catch(D){throw this.#D.error("Failed to write storage file",D),D}}async#z(A){let D=null;try{if(!g81(this.#A))this.#D.debug("Storage file does not exist, creating it before locking"),await Hd.writeFile(this.#A,JSON.stringify({}),"utf8");return D=await m3A.lock(this.#A,{retries:{retries:5,minTimeout:100,maxTimeout:1000},stale:5000}),await A()}catch(_){throw this.#D.error("Lock operation failed",_),_}finally{if(D)try{await D()}catch(_){this.#D.error("Failed to release lock",_)}}}async get(A){try{if(!this.isInitialized())throw this.#D.error(`Storage is not initialized: ${this.#_?.status==="failed"&&this.#_.error.message||"unknown error"}`),new Error("Storage is not initialized");this.#D.debug(`Getting value for key: ${A}`);let _=(await this.#B())[A];if(_===void 0){this.#D.debug(`No value found for key: ${A}`);return}return _}catch(D){throw this.#D.error(`Storage get error for key: ${A}`,D),D}}async set(A,D){if(!this.isInitialized())throw new Error("Storage is not initialized");this.#D.debug(`Setting value for key: ${A}`),await this.#z(async()=>{let _=await this.#B();_[A]=D,await this.#E(_),this.#D.debug(`Successfully set value for key: ${A}`)})}async delete(A){if(!this.isInitialized())throw new Error("Storage is not initialized");this.#D.debug(`Deleting value for key: ${A}`),await this.#z(async()=>{let D=await this.#B();if(D[A]!==void 0)delete D[A],await this.#E(D),this.#D.debug(`Successfully deleted value for key: ${A}`);else this.#D.debug(`Key not found for deletion: ${A}`)})}close(){this.#D.info("Storage closed"),this.#_={status:"closed"}}}Zj=i0([f81.Injectable(u81,[$A])],Zj);var h81=I0(WA(),1);var h3A="selectedProjectInRepository",WF4=d.object({accountId:d.string(),namespaceWithPath:d.string(),remoteName:d.string(),remoteUrl:d.string(),repositoryRootPath:d.string()}),GT1={telemetry:d.object({enabled:d.boolean()})},FT1={telemetry:d.object({enabled:d.boolean()}),[h3A]:d.array(WF4)};var p3A=h81.createInterfaceId("UserPersistentStorage"),YT1="__global__";class m81{#A;#D;#_;#Q;constructor(A,D,_,Q){this.#A=A,this.#D=D,this.#_=_,this.#Q=yA(Q,"[UserPersistentStorage]")}#B(A,D,_){let Q=_.safeParse(D);if(Q.success)return Q.data;this.#Q.warn(`Validation failed for key: ${A} - error: ${JSON.stringify(Q.error.format())}, value: ${JSON.stringify(D)}`);return}#E(A,D,_){return`${A}:${D}:${_}`}async#z(A,D,_){try{let Q=this.#G;if(!Q){this.#Q.warn("No user ID available");return}let B=this.#E(Q,A,D);this.#Q.debug(`Getting value for key: ${D} - userId: ${Q}, client: ${A}`);let E=await this.#A.get(B);if(E===void 0){this.#Q.debug(`No value found for key: ${D}`);return}let z=this.#B(D,E,_);if(z===void 0)this.#Q.warn(`Stored value failed validation for key: ${D}`);return z}catch(Q){this.#Q.error(`Storage get error for key: ${D}`,Q);return}}async#J(A,D,_,Q){let B=this.#G;if(!B){this.#Q.warn("No user ID available, cannot set value");return}let E;try{E=Q.parse(_)}catch(J){throw this.#Q.error(`Validation failed for key: ${D}`,J),new Error(`Invalid value for key ${D}: ${J}`)}let z=this.#E(B,A,D);this.#Q.debug(`Setting value for key: ${D} - userId: ${B}, client: ${A}`),await this.#A.set(z,E),this.#Q.debug(`Successfully set value for key: ${D}`)}async#X(A,D){let _=this.#G;if(!_){this.#Q.warn("No user ID available, cannot delete value");return}let Q=this.#E(_,A,D);this.#Q.debug(`Deleting value for key: ${D} - userId: ${_}, client: ${A}`),await this.#A.delete(Q),this.#Q.debug(`Successfully deleted value for key: ${D}`)}async get(A){let D=this.#F;if(!D)return;return await this.#z(D,A,FT1[A])}async set(A,D){let _=this.#F;if(!_){this.#Q.warn("No client name available, cannot set value");return}await this.#J(_,A,D,FT1[A])}async delete(A){let D=this.#F;if(!D){this.#Q.warn("No client name available, cannot delete value");return}await this.#X(D,A)}async getGlobal(A){return await this.#z(YT1,A,GT1[A])}async setGlobal(A,D){return this.#J(YT1,A,D,GT1[A])}async deleteGlobal(A){return this.#X(YT1,A)}get#F(){let A=this.#D.get("clientInfo.name");if(!A){this.#Q.warn("No client name in config");return}return A}get#G(){let A=this.#_.user?.id;if(!A)this.#Q.debug("No user ID available from UserService");return A}}m81=i0([h81.Injectable(p3A,[u81,X_,tq,$A])],m81);var MF4=d.object({gitlabBaseUrl:d.string().optional(),gitlabAuthToken:d.string().optional()}),c3A="duo-cli-config";class d3A{#A;#D;#_;constructor(A,D,_){this.#A=A,this.#_=_,this.#D=D}async saveConfig(A){try{let{configurationEntries:D}=A,_={gitlabAuthToken:"",gitlabBaseUrl:""};for(let Q of D){let B=Q.key;if(B in _)_[B]=Q.value}return this.#A=_,await this.#D.set(c3A,_),SD()}catch(D){return this.#_.error("Failed to save configuration:",D),t_(D)}}exit(){process.exit(0)}getDuoConfiguration(){return this.#A}async initialize(){let A=await this.#D.get(c3A),D=MF4.safeParse(A);if(D.success)this.#A={...D.data,...this.#A}}isMissingConfiguration(){let{gitlabAuthToken:A,gitlabBaseUrl:D}=this.#A;return!A||!D}getConfigurationModel(){return{configurationEntries:[{key:"gitlabBaseUrl",value:this.#A.gitlabBaseUrl??"",displayName:"\uD83D\uDD17 GitLab Instance URL",description:"The URL of the GitLab instance to connect to.",defaultValue:"https://gitlab.com",isSensitive:!1},{key:"gitlabAuthToken",value:this.#A.gitlabAuthToken??"",displayName:"\uD83D\uDD16 GitLab Token",description:"GitLab access token with API permissions. Create one here: https://gitlab.com/-/user_settings/personal_access_tokens",defaultValue:"",isSensitive:!0}]}}}var $T1=async(A={})=>{let D=new bO,_=new _81("info"),Q=new yK(D,_),B=new Zj(Q),E=new d3A(A,B,Q);return await E.initialize(),E};var KT1=(A)=>{process.stdout.write("\x1B[?2004h");let D=A.getConfigurationModel(),_=OD(),{waitUntilExit:Q}=db(AA(H10,{initialState:D,controller:A,duoCliVersion:_}),{exitOnCtrlC:!1});Q().then(()=>{process.exit(0)}).catch((B)=>{console.error(B),process.exit(1)}),process.on("exit",()=>{process.stdout.write("\x1B[?2004l")})};var OF4=process.platform==="win32",p81=w3A(),jH=new jT1,ZT1=(A)=>{(global.__logger||console).error(A),process.exit(1)};process.on("unhandledRejection",ZT1);process.on("uncaughtException",ZT1);jH.name("duo").description("GitLab Duo for your command line").version(Fv1,"-v, --version","Display version number").option("-C, --cwd <path>","change working directory",(A)=>W3A(A),process.cwd()).addOption(new a9("--gitlab-base-url <url>","Base URL of GitLab instance").env("GITLAB_URL").default(process.env.GITLAB_BASE_URL||"https://gitlab.com")).addOption(new a9("--gitlab-auth-token <token>","Authentication token for GitLab instance").env("GITLAB_TOKEN").default(process.env.GITLAB_OAUTH_TOKEN)).addOption(new a9("--log-level <level>","Set logging level").choices(Object.values(j_)).env("LOG_LEVEL").default(j_.DEBUG)).addOption(new a9("--git-http-user <user>","Username for git HTTP authentication credentials").env("DUO_WORKFLOW_GIT_HTTP_USER")).addOption(new a9("--git-http-password <password>","Password for git HTTP authentication credentials").env("DUO_WORKFLOW_GIT_HTTP_PASSWORD"));p81.registerOptions(jH.action(async(A)=>{let D=jH.opts(),{cwd:_,logLevel:Q,gitHttpUser:B,gitHttpPassword:E}=D,z=await $T1(D);if(z.isMissingConfiguration()){KT1(z);return}let X=z.getDuoConfiguration(),G=p81.mapConfig({cwd:_,logLevel:Q,gitlabBaseUrl:X.gitlabBaseUrl,gitlabAuthToken:X.gitlabAuthToken,environment:DT1(),gitHttpUser:B,gitHttpPassword:E,command:{name:"tui"}},{programConfig:D,commandConfig:A});q3A(G)}));var NF4=jH.command("config").description("configuration management commands");NF4.command("edit").description("edit duo CLI configuration").action(async()=>{let A=await $T1();KT1(A)});var c81=jH.command("log").description("log management commands");c81.command("last").description("open the last log file").action(()=>{Kv1()});c81.command("list").description("list all log files").action(()=>{Zv1()});c81.command("tail [args...]").description(`tail the last log file. "args" can be any standard ${OF4?'PowerShell "Get-Content"':'"tail"'} arguments`).allowUnknownOption().action((A)=>Uv1(A||[]));c81.command("clear").description("remove all existing log files").action(()=>{wv1()});p81.registerOptions(jH.command("run").description("Run a workflow in non-interactive / headless mode").addOption(new a9("-g, --goal <goal>","Goal/prompt for the session").default(process.env.DUO_WORKFLOW_GOAL).makeOptionMandatory()).addOption(new a9("--ai-context-items <contextItems>","JSON encoded array of additional context items").env("DUO_WORKFLOW_ADDITIONAL_CONTEXT_CONTENT").argParser((A)=>M3A(A))).addOption(new a9("--existing-session-id <sessionId>","ID of existing session to resume").default(process.env.DUO_WORKFLOW_WORKFLOW_ID)).action(async(A)=>{let D=jH.opts(),{cwd:_,gitlabBaseUrl:Q,gitlabAuthToken:B,logLevel:E,gitHttpUser:z,gitHttpPassword:J}=D,{goal:X,aiContextItems:G,existingSessionId:F}=A;if(!B)throw new jw("--gitlab-auth-token / GITLAB_AUTH_TOKEN option is required.");let $=p81.mapConfig({cwd:_,gitlabBaseUrl:Q,gitlabAuthToken:B,logLevel:E,environment:DT1(),gitHttpUser:z,gitHttpPassword:J,command:{name:"run",goal:X,aiContextItems:G,existingSessionId:F}},{programConfig:D,commandConfig:A}),K=new AT1($);await K.initialize(),await K.execute()}));try{await jH.parseAsync(process.argv)}catch(A){ZT1(A)}
|
|
1798
1798
|
|
|
1799
|
-
//# debugId=
|
|
1799
|
+
//# debugId=46DC99F7DC75AF0064756E2164756E21
|
|
1800
1800
|
//# sourceMappingURL=index.js.map
|