@succsoft/succapp 5.0.5 → 5.0.6
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/CHANGELOG.md +11 -0
- package/README.md +2 -1
- package/dist/cli/l10n/bundle.l10n.json +154 -39
- package/dist/cli/l10n/bundle.l10n.zh-cn.json +152 -37
- package/dist/cli/succapp.js +100 -86
- package/package.json +1 -1
package/dist/cli/succapp.js
CHANGED
|
@@ -1,51 +1,62 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var
|
|
3
|
-
`)}function
|
|
4
|
-
`)}function
|
|
5
|
-
`):t.stack??"",this.cause=t.cause,t.properties&&(this.properties={...t.properties})}}});function
|
|
6
|
-
${n}`:t}function
|
|
7
|
-
Wrapped by: ${m}`:
|
|
8
|
-
GFS4: `),console.error(r)});Oe[mt]||(xy=global[mt]||[],Fy(Oe,xy),Oe.close=function(r){function e(t,n){return r.call(Oe,t,function(o){o||Iy(),typeof n=="function"&&n.apply(this,arguments)})}return Object.defineProperty(e,sc,{value:r}),e}(Oe.close),Oe.closeSync=function(r){function e(t){r.apply(Oe,arguments),Iy()}return Object.defineProperty(e,sc,{value:r}),e}(Oe.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",function(){ko(Oe[mt]),require("assert").equal(Oe[mt].length,0)}));var xy;global[mt]||Fy(global,Oe[mt]);jd.exports=Wd(lx(Oe));process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!Oe.__patched&&(jd.exports=Wd(Oe),Oe.__patched=!0);function Wd(r){sx(r),r.gracefulify=Wd,r.createReadStream=k,r.createWriteStream=b;var e=r.readFile;r.readFile=t;function t(M,z,j){return typeof z=="function"&&(j=z,z=null),ee(M,z,j);function ee(V,q,K,oe){return e(V,q,function(ae){ae&&(ae.code==="EMFILE"||ae.code==="ENFILE")?di([ee,[V,q,K],ae,oe||Date.now(),Date.now()]):typeof K=="function"&&K.apply(this,arguments)})}}var n=r.writeFile;r.writeFile=o;function o(M,z,j,ee){return typeof j=="function"&&(ee=j,j=null),V(M,z,j,ee);function V(q,K,oe,ae,A){return n(q,K,oe,function(B){B&&(B.code==="EMFILE"||B.code==="ENFILE")?di([V,[q,K,oe,ae],B,A||Date.now(),Date.now()]):typeof ae=="function"&&ae.apply(this,arguments)})}}var i=r.appendFile;i&&(r.appendFile=a);function a(M,z,j,ee){return typeof j=="function"&&(ee=j,j=null),V(M,z,j,ee);function V(q,K,oe,ae,A){return i(q,K,oe,function(B){B&&(B.code==="EMFILE"||B.code==="ENFILE")?di([V,[q,K,oe,ae],B,A||Date.now(),Date.now()]):typeof ae=="function"&&ae.apply(this,arguments)})}}var s=r.copyFile;s&&(r.copyFile=c);function c(M,z,j,ee){return typeof j=="function"&&(ee=j,j=0),V(M,z,j,ee);function V(q,K,oe,ae,A){return s(q,K,oe,function(B){B&&(B.code==="EMFILE"||B.code==="ENFILE")?di([V,[q,K,oe,ae],B,A||Date.now(),Date.now()]):typeof ae=="function"&&ae.apply(this,arguments)})}}var l=r.readdir;r.readdir=u;var p=/^v[0-5]\./;function u(M,z,j){typeof z=="function"&&(j=z,z=null);var ee=p.test(process.version)?function(K,oe,ae,A){return l(K,V(K,oe,ae,A))}:function(K,oe,ae,A){return l(K,oe,V(K,oe,ae,A))};return ee(M,z,j);function V(q,K,oe,ae){return function(A,B){A&&(A.code==="EMFILE"||A.code==="ENFILE")?di([ee,[q,K,oe],A,ae||Date.now(),Date.now()]):(B&&B.sort&&B.sort(),typeof oe=="function"&&oe.call(this,A,B))}}}if(process.version.substr(0,4)==="v0.8"){var g=cx(r);v=g.ReadStream,f=g.WriteStream}var m=r.ReadStream;m&&(v.prototype=Object.create(m.prototype),v.prototype.open=w);var h=r.WriteStream;h&&(f.prototype=Object.create(h.prototype),f.prototype.open=S),Object.defineProperty(r,"ReadStream",{get:function(){return v},set:function(M){v=M},enumerable:!0,configurable:!0}),Object.defineProperty(r,"WriteStream",{get:function(){return f},set:function(M){f=M},enumerable:!0,configurable:!0});var y=v;Object.defineProperty(r,"FileReadStream",{get:function(){return y},set:function(M){y=M},enumerable:!0,configurable:!0});var C=f;Object.defineProperty(r,"FileWriteStream",{get:function(){return C},set:function(M){C=M},enumerable:!0,configurable:!0});function v(M,z){return this instanceof v?(m.apply(this,arguments),this):v.apply(Object.create(v.prototype),arguments)}function w(){var M=this;Q(M.path,M.flags,M.mode,function(z,j){z?(M.autoClose&&M.destroy(),M.emit("error",z)):(M.fd=j,M.emit("open",j),M.read())})}function f(M,z){return this instanceof f?(h.apply(this,arguments),this):f.apply(Object.create(f.prototype),arguments)}function S(){var M=this;Q(M.path,M.flags,M.mode,function(z,j){z?(M.destroy(),M.emit("error",z)):(M.fd=j,M.emit("open",j))})}function k(M,z){return new r.ReadStream(M,z)}function b(M,z){return new r.WriteStream(M,z)}var P=r.open;r.open=Q;function Q(M,z,j,ee){return typeof j=="function"&&(ee=j,j=null),V(M,z,j,ee);function V(q,K,oe,ae,A){return P(q,K,oe,function(B,se){B&&(B.code==="EMFILE"||B.code==="ENFILE")?di([V,[q,K,oe,ae],B,A||Date.now(),Date.now()]):typeof ae=="function"&&ae.apply(this,arguments)})}}return r}function di(r){ko("ENQUEUE",r[0].name,r[1]),Oe[mt].push(r),Ud()}var ac;function Iy(){for(var r=Date.now(),e=0;e<Oe[mt].length;++e)Oe[mt][e].length>2&&(Oe[mt][e][3]=r,Oe[mt][e][4]=r);Ud()}function Ud(){if(clearTimeout(ac),ac=void 0,Oe[mt].length!==0){var r=Oe[mt].shift(),e=r[0],t=r[1],n=r[2],o=r[3],i=r[4];if(o===void 0)ko("RETRY",e.name,t),e.apply(null,t);else if(Date.now()-o>=6e4){ko("TIMEOUT",e.name,t);var a=t.pop();typeof a=="function"&&a.call(null,n)}else{var s=Date.now()-i,c=Math.max(i-o,1),l=Math.min(c*1.2,100);s>=l?(ko("RETRY",e.name,t),e.apply(null,t.concat([o]))):Oe[mt].push(r)}ac===void 0&&(ac=setTimeout(Ud,0))}}});var Ay=Y((dV,Dy)=>{function ir(r,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(r)),this._timeouts=r,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}Dy.exports=ir;ir.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};ir.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null};ir.prototype.retry=function(r){if(this._timeout&&clearTimeout(this._timeout),!r)return!1;var e=new Date().getTime();if(r&&e-this._operationStart>=this._maxRetryTime)return this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(r);var t=this._timeouts.shift();if(t===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),t=this._timeouts.shift();else return!1;var n=this,o=setTimeout(function(){n._attempts++,n._operationTimeoutCb&&(n._timeout=setTimeout(function(){n._operationTimeoutCb(n._attempts)},n._operationTimeout),n._options.unref&&n._timeout.unref()),n._fn(n._attempts)},t);return this._options.unref&&o.unref(),!0};ir.prototype.attempt=function(r,e){this._fn=r,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var t=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){t._operationTimeoutCb()},t._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};ir.prototype.try=function(r){console.log("Using RetryOperation.try() is deprecated"),this.attempt(r)};ir.prototype.start=function(r){console.log("Using RetryOperation.start() is deprecated"),this.attempt(r)};ir.prototype.start=ir.prototype.try;ir.prototype.errors=function(){return this._errors};ir.prototype.attempts=function(){return this._attempts};ir.prototype.mainError=function(){if(this._errors.length===0)return null;for(var r={},e=null,t=0,n=0;n<this._errors.length;n++){var o=this._errors[n],i=o.message,a=(r[i]||0)+1;r[i]=a,a>=t&&(e=o,t=a)}return e}});var Oy=Y(wo=>{var dx=Ay();wo.operation=function(r){var e=wo.timeouts(r);return new dx(e,{forever:r&&r.forever,unref:r&&r.unref,maxRetryTime:r&&r.maxRetryTime})};wo.timeouts=function(r){if(r instanceof Array)return[].concat(r);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var t in r)e[t]=r[t];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var n=[],o=0;o<e.retries;o++)n.push(this.createTimeout(o,e));return r&&r.forever&&!n.length&&n.push(this.createTimeout(o,e)),n.sort(function(i,a){return i-a}),n};wo.createTimeout=function(r,e){var t=e.randomize?Math.random()+1:1,n=Math.round(t*e.minTimeout*Math.pow(e.factor,r));return n=Math.min(n,e.maxTimeout),n};wo.wrap=function(r,e,t){if(e instanceof Array&&(t=e,e=null),!t){t=[];for(var n in r)typeof r[n]=="function"&&t.push(n)}for(var o=0;o<t.length;o++){var i=t[o],a=r[i];r[i]=function(c){var l=wo.operation(e),p=Array.prototype.slice.call(arguments,1),u=p.pop();p.push(function(g){l.retry(g)||(g&&(arguments[0]=l.mainError()),u.apply(this,arguments))}),l.attempt(function(){c.apply(r,p)})}.bind(r,a),r[i].options=e}}});var Ly=Y((mV,_y)=>{_y.exports=Oy()});var Ny=Y((fV,cc)=>{cc.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];process.platform!=="win32"&&cc.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&cc.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var By=Y((hV,fi)=>{var Fe=global.process,Po=function(r){return r&&typeof r=="object"&&typeof r.removeListener=="function"&&typeof r.emit=="function"&&typeof r.reallyExit=="function"&&typeof r.listeners=="function"&&typeof r.kill=="function"&&typeof r.pid=="number"&&typeof r.on=="function"};Po(Fe)?(Wy=require("assert"),ui=Ny(),Uy=/^win/i.test(Fe.platform),xa=require("events"),typeof xa!="function"&&(xa=xa.EventEmitter),Fe.__signal_exit_emitter__?pt=Fe.__signal_exit_emitter__:(pt=Fe.__signal_exit_emitter__=new xa,pt.count=0,pt.emitted={}),pt.infinite||(pt.setMaxListeners(1/0),pt.infinite=!0),fi.exports=function(r,e){if(!Po(global.process))return function(){};Wy.equal(typeof r,"function","a callback must be provided for exit handler"),mi===!1&&Bd();var t="exit";e&&e.alwaysLast&&(t="afterexit");var n=function(){pt.removeListener(t,r),pt.listeners("exit").length===0&&pt.listeners("afterexit").length===0&&lc()};return pt.on(t,r),n},lc=function(){!mi||!Po(global.process)||(mi=!1,ui.forEach(function(e){try{Fe.removeListener(e,pc[e])}catch{}}),Fe.emit=dc,Fe.reallyExit=qd,pt.count-=1)},fi.exports.unload=lc,Ro=function(e,t,n){pt.emitted[e]||(pt.emitted[e]=!0,pt.emit(e,t,n))},pc={},ui.forEach(function(r){pc[r]=function(){if(Po(global.process)){var t=Fe.listeners(r);t.length===pt.count&&(lc(),Ro("exit",null,r),Ro("afterexit",null,r),Uy&&r==="SIGHUP"&&(r="SIGINT"),Fe.kill(Fe.pid,r))}}}),fi.exports.signals=function(){return ui},mi=!1,Bd=function(){mi||!Po(global.process)||(mi=!0,pt.count+=1,ui=ui.filter(function(e){try{return Fe.on(e,pc[e]),!0}catch{return!1}}),Fe.emit=Vy,Fe.reallyExit=jy)},fi.exports.load=Bd,qd=Fe.reallyExit,jy=function(e){Po(global.process)&&(Fe.exitCode=e||0,Ro("exit",Fe.exitCode,null),Ro("afterexit",Fe.exitCode,null),qd.call(Fe,Fe.exitCode))},dc=Fe.emit,Vy=function(e,t){if(e==="exit"&&Po(global.process)){t!==void 0&&(Fe.exitCode=t);var n=dc.apply(this,arguments);return Ro("exit",Fe.exitCode,null),Ro("afterexit",Fe.exitCode,null),n}else return dc.apply(this,arguments)}):fi.exports=function(){return function(){}};var Wy,ui,Uy,xa,pt,lc,Ro,pc,mi,Bd,qd,jy,dc,Vy});var $y=Y((gV,$d)=>{"use strict";var qy=Symbol();function ux(r,e,t){let n=e[qy];if(n)return e.stat(r,(i,a)=>{if(i)return t(i);t(null,a.mtime,n)});let o=new Date(Math.ceil(Date.now()/1e3)*1e3+5);e.utimes(r,o,o,i=>{if(i)return t(i);e.stat(r,(a,s)=>{if(a)return t(a);let c=s.mtime.getTime()%1e3===0?"s":"ms";Object.defineProperty(e,qy,{value:c}),t(null,s.mtime,c)})})}function mx(r){let e=Date.now();return r==="s"&&(e=Math.ceil(e/1e3)*1e3),new Date(e)}$d.exports.probe=ux;$d.exports.getMtime=mx});var Jy=Y((yV,Fa)=>{"use strict";var fx=require("path"),Gd=Vd(),hx=Ly(),gx=By(),Hy=$y(),cn={};function Ia(r,e){return e.lockfilePath||`${r}.lock`}function Kd(r,e,t){if(!e.realpath)return t(null,fx.resolve(r));e.fs.realpath(r,t)}function zd(r,e,t){let n=Ia(r,e);e.fs.mkdir(n,o=>{if(!o)return Hy.probe(n,e.fs,(i,a,s)=>{if(i)return e.fs.rmdir(n,()=>{}),t(i);t(null,a,s)});if(o.code!=="EEXIST")return t(o);if(e.stale<=0)return t(Object.assign(new Error("Lock file is already being held"),{code:"ELOCKED",file:r}));e.fs.stat(n,(i,a)=>{if(i)return i.code==="ENOENT"?zd(r,{...e,stale:0},t):t(i);if(!zy(a,e))return t(Object.assign(new Error("Lock file is already being held"),{code:"ELOCKED",file:r}));Gy(r,e,s=>{if(s)return t(s);zd(r,{...e,stale:0},t)})})})}function zy(r,e){return r.mtime.getTime()<Date.now()-e.stale}function Gy(r,e,t){e.fs.rmdir(Ia(r,e),n=>{if(n&&n.code!=="ENOENT")return t(n);t()})}function uc(r,e){let t=cn[r];t.updateTimeout||(t.updateDelay=t.updateDelay||e.update,t.updateTimeout=setTimeout(()=>{t.updateTimeout=null,e.fs.stat(t.lockfilePath,(n,o)=>{let i=t.lastUpdate+e.stale<Date.now();if(n)return n.code==="ENOENT"||i?Hd(r,t,Object.assign(n,{code:"ECOMPROMISED"})):(t.updateDelay=1e3,uc(r,e));if(!(t.mtime.getTime()===o.mtime.getTime()))return Hd(r,t,Object.assign(new Error("Unable to update lock within the stale threshold"),{code:"ECOMPROMISED"}));let s=Hy.getMtime(t.mtimePrecision);e.fs.utimes(t.lockfilePath,s,s,c=>{let l=t.lastUpdate+e.stale<Date.now();if(!t.released){if(c)return c.code==="ENOENT"||l?Hd(r,t,Object.assign(c,{code:"ECOMPROMISED"})):(t.updateDelay=1e3,uc(r,e));t.mtime=s,t.lastUpdate=Date.now(),t.updateDelay=null,uc(r,e)}})})},t.updateDelay),t.updateTimeout.unref&&t.updateTimeout.unref())}function Hd(r,e,t){e.released=!0,e.updateTimeout&&clearTimeout(e.updateTimeout),cn[r]===e&&delete cn[r],e.options.onCompromised(t)}function yx(r,e,t){e={stale:1e4,update:null,realpath:!0,retries:0,fs:Gd,onCompromised:n=>{throw n},...e},e.retries=e.retries||0,e.retries=typeof e.retries=="number"?{retries:e.retries}:e.retries,e.stale=Math.max(e.stale||0,2e3),e.update=e.update==null?e.stale/2:e.update||0,e.update=Math.max(Math.min(e.update,e.stale/2),1e3),Kd(r,e,(n,o)=>{if(n)return t(n);let i=hx.operation(e.retries);i.attempt(()=>{zd(o,e,(a,s,c)=>{if(i.retry(a))return;if(a)return t(i.mainError());let l=cn[o]={lockfilePath:Ia(o,e),mtime:s,mtimePrecision:c,options:e,lastUpdate:Date.now()};uc(o,e),t(null,p=>{if(l.released)return p&&p(Object.assign(new Error("Lock is already released"),{code:"ERELEASED"}));Ky(o,{...e,realpath:!1},p)})})})})}function Ky(r,e,t){e={fs:Gd,realpath:!0,...e},Kd(r,e,(n,o)=>{if(n)return t(n);let i=cn[o];if(!i)return t(Object.assign(new Error("Lock is not acquired/owned by you"),{code:"ENOTACQUIRED"}));i.updateTimeout&&clearTimeout(i.updateTimeout),i.released=!0,delete cn[o],Gy(o,e,t)})}function Cx(r,e,t){e={stale:1e4,realpath:!0,fs:Gd,...e},e.stale=Math.max(e.stale||0,2e3),Kd(r,e,(n,o)=>{if(n)return t(n);e.fs.stat(Ia(o,e),(i,a)=>i?i.code==="ENOENT"?t(null,!1):t(i):t(null,!zy(a,e)))})}function Sx(){return cn}gx(()=>{for(let r in cn){let e=cn[r].options;try{e.fs.rmdirSync(Ia(r,e))}catch{}}});Fa.exports.lock=yx;Fa.exports.unlock=Ky;Fa.exports.check=Cx;Fa.exports.getLocks=Sx});var Yy=Y((CV,Qy)=>{"use strict";var vx=Vd();function kx(r){let e=["mkdir","realpath","stat","rmdir","utimes"],t={...r};return e.forEach(n=>{t[n]=(...o)=>{let i=o.pop(),a;try{a=r[`${n}Sync`](...o)}catch(s){return i(s)}i(null,a)}}),t}function wx(r){return(...e)=>new Promise((t,n)=>{e.push((o,i)=>{o?n(o):t(i)}),r(...e)})}function Px(r){return(...e)=>{let t,n;if(e.push((o,i)=>{t=o,n=i}),r(...e),t)throw t;return n}}function Rx(r){if(r={...r},r.fs=kx(r.fs||vx),typeof r.retries=="number"&&r.retries>0||r.retries&&typeof r.retries.retries=="number"&&r.retries.retries>0)throw Object.assign(new Error("Cannot use retries with the sync api"),{code:"ESYNC"});return r}Qy.exports={toPromise:wx,toSync:Px,toSyncOptions:Rx}});var Qd=Y((SV,Wn)=>{"use strict";var hi=Jy(),{toPromise:mc,toSync:fc,toSyncOptions:Jd}=Yy();async function Xy(r,e){let t=await mc(hi.lock)(r,e);return mc(t)}function bx(r,e){let t=fc(hi.lock)(r,Jd(e));return fc(t)}function Ex(r,e){return mc(hi.unlock)(r,e)}function Tx(r,e){return fc(hi.unlock)(r,Jd(e))}function Mx(r,e){return mc(hi.check)(r,e)}function xx(r,e){return fc(hi.check)(r,Jd(e))}Wn.exports=Xy;Wn.exports.lock=Xy;Wn.exports.unlock=Ex;Wn.exports.lockSync=bx;Wn.exports.unlockSync=Tx;Wn.exports.check=Mx;Wn.exports.checkSync=xx});async function Da(r){return ar.promises.readFile(r,"utf8")}async function Re(r,e=""){try{return await Da(r)}catch(t){if(x(t))return Yd.debug("optional text file does not exist: %s",r),e;throw t}}async function nC(r){try{return await ar.promises.stat(r)}catch(e){if(x(e))return;throw e}}async function vt(r,e){await ar.promises.mkdir(hc.dirname(r),{recursive:!0}),await ar.promises.writeFile(r,e,"utf8")}async function oC(r,e,t={}){await ar.promises.mkdir(hc.dirname(r),{recursive:!0});let n,o=t.timeoutMs??Ix,i=t.retryDelayMs??Fx;try{n=await rC.lock(r,{lockfilePath:r,realpath:!1,stale:t.staleMs??Dx,retries:{retries:Math.ceil(o/i),factor:1,minTimeout:i,maxTimeout:i}})}catch(a){throw rc(a)?new ut("err.lock.busy",{lockPath:r,timeoutMs:o},{category:"lockBusy",cause:a instanceof Error?a:void 0,message:`file lock is held by another process: ${r}`}):a}try{return await e()}finally{if(n)try{await n()}catch(a){Yd.warn(`release file lock failed: ${r}`,a)}}}async function It(r,e){await ar.promises.mkdir(hc.dirname(r),{recursive:!0});let t=`${r}.succapp-tmp.${process.pid}.${Date.now()}.${(0,eC.randomUUID)()}`;try{typeof e=="string"||Buffer.isBuffer(e)?await ar.promises.writeFile(t,e):await(0,tC.pipeline)(e,ar.createWriteStream(t)),await ar.promises.rename(t,r)}catch(n){throw await ar.promises.rm(t,{force:!0}).catch(o=>{Yd.debug("cleanup temporary write file failed: %s",t,o)}),n}}var ar,hc,eC,tC,rC,Yd,Ix,Fx,Dx,tt=ge(()=>{ar=E(require("fs")),hc=E(require("path")),eC=require("crypto"),tC=require("stream/promises"),rC=E(Qd());F();_();J();Yd=T("common.file");Ix=5e3,Fx=100,Dx=3e4});function pe(r){let e=r.replace(Wx,"/").replace(/^\/+|\/+$/g,"");return e?"/"+e:"/"}function cC(r){let e=pe(r);if(e.split("/").filter(Boolean).includes(Ux))throw new Error(`Unsafe metadata path: ${r}`);return e}function lC(r){if(!r.startsWith("/"))throw new R("err.meta.invalidPath",{path:r,reason:"notAbsolute"});try{return cC(r)}catch(e){throw new R("err.meta.invalidPath",{path:r,reason:"unsafe"},{cause:e})}}function ce(r,e){return ye.join(r,pe(e).replace(/^\//,""))}function pC(r,e){let t=ye.resolve(r),n=ye.resolve(t,cC(e).replace(/^\//,""));if(n!==t&&!n.startsWith(t+ye.sep))throw new Error(`Metadata path escapes root: ${e}`);return n}function Wr(r){return ye.join(r,ln)}function Ur(r){return ye.join(r,$x,Hx)}function pn(r){let e=r.replace(jx,"/");if(!e||ye.posix.isAbsolute(e)||ye.win32.isAbsolute(r)||ye.win32.isAbsolute(e))return;let t=e.split("/");return t.some(Jx)?void 0:t.join("/")}function Un(r,e="relative path"){let t=pn(r);if(!t)throw new Error(`invalid ${e}: ${r}`);return t}function jr(r,e,t="relative path"){return ye.join(r,...Un(e,t).split("/"))}function He(r,e){return ye.isAbsolute(e)?ye.normalize(e):ye.resolve(r,e)}async function ie(r){try{return await yc.promises.access(r),!0}catch(e){if(x(e))return!1;throw e}}async function Sc(r){let e;try{e=await yc.promises.stat(r)}catch(t){throw x(t)?new R("err.file.notFound",{path:r},{cause:t}):t}if(!e.isDirectory())throw new R("err.file.notDirectory",{path:r})}function yr(r){return r.trim().replace(Lx,"").replace(Nx,"-")}function Vr(r,e){let t=ye.resolve(r),n=ye.resolve(e);if(n===t||!n.startsWith(t+ye.sep))return;let o=ye.relative(t,n);if(!o)return"/";let i=o.split(ye.sep);if(!i[0].startsWith("."))return pe(i.join("/"))}function De(r){return r.replace(/^\//,"")}function ze(r){let e=pe(r);if(e==="/")return;let[t]=e.slice(1).split("/");return t?`/${t}`:void 0}function kt(r){let e=r.trim();if(!e||e.startsWith(".")||e.includes("/")||e.includes("\\"))throw new Error(`invalid project name: ${r}`);return`/${e}`}function re(r,e){let t=sC(r),n=sC(e);return t===n||n==="/"?!0:t.length<=n.length?!1:t.charCodeAt(n.length)===47&&t.startsWith(n)}function jn(r,e,t,n){return gc(r,t)||e&&gc(e,t)?!0:!!n&&(gc(r,n)||!!e&&gc(e,n))}function gc(r,e){return re(r,e)||re(e,r)}function dC(r){let e;for(let t of r){let n=zx(t);if(!e){e=n;continue}e=Gx(e,n)}if(e)return pe(e.join("/"))}function zx(r){let e=pe(r);if(e==="/")return[];let t=e.split("/").filter(Boolean);return t.pop(),t}function Gx(r,e){let t=Math.min(r.length,e.length),n=[];for(let o=0;o<t&&r[o]===e[o];o++)n.push(r[o]);return n}function wt(r){let e=[...r].sort((n,o)=>{let i=aC(n)-aC(o);return i===0?n.localeCompare(o):i}),t=[];for(let n of e)Kx(n,r)||t.push(n);return t}function Kx(r,e){let t=ye.posix.dirname(r);for(;t!==r;){if(e.has(t))return!0;if(t==="/")return!1;r=t,t=ye.posix.dirname(r)}return!1}function aC(r){return r.split("/").filter(Boolean).length}function sC(r){return ye.posix.normalize(pe(r))}function Jx(r){return!r||r===Vx||r===Bx}async function sr(r){try{await yc.promises.rm(r,{recursive:!0,force:!0})}catch(e){if(!x(e))throw e;_x.debug(`remove ignored missing path: ${r}`)}}function Br(r){return r.split("/").filter(Boolean).length}var yc,ye,_x,Lx,Nx,Wx,Ux,jx,Vx,Bx,ln,qx,Xd,Cc,$x,Hx,$=ge(()=>{yc=E(require("fs")),ye=E(require("path"));F();_();J();_x=T("common.path"),Lx=/^https?:\/\/|\/+$/gi,Nx=/[^a-zA-Z0-9.]+/g,Wx=/[\\/]+/g,Ux="..",jx=/\\/g,Vx=".",Bx="..",ln=".succapp",qx=".agents",Xd=[ln,qx],Cc=[".git",...Xd,"node_modules"],$x=".vscode",Hx="settings.json"});function tu(r){return r.reason instanceof Error?r.reason:new or}function Pt(r){if(r?.aborted)throw tu(r)}function bc(...r){let e=r.filter(n=>n!==void 0);if(e.length===0)return Rc;if(e.length===1)return e[0];let t=new AbortController;for(let n of e){let o=()=>{t.signal.aborted||t.abort(n.reason instanceof Error?n.reason:new or)};n.addEventListener("abort",o),n.aborted&&o()}return t.signal}var EI,Rc,Bn=ge(()=>{F();EI=new AbortController,Rc=EI.signal});var qn,Ec,nt,qr=ge(()=>{F();Ie();Bn();qn=class r{children=[];parent;weight;signal;total=0;done=0;ratio=0;message;constructor(e,t=0,n){this.parent=e,this.weight=Math.max(t,0),this.signal=n??Rc}retainOnFinish=!1;retainedFinishReported=!1;start(e,t){this.total=Math.max(e??0,0),this.done=0,this.ratio=0,this.children.length=0,this.retainOnFinish=t?.retainOnFinish===!0,this.retainedFinishReported=!1,t?.message!==void 0&&this.setMessage(t.message),this.doStart(e),this.reportToParent()}progress(e){this.assertNoSubTasks(),this.reportProgress(Math.max(this.done,e,0))}step(e){this.assertNoSubTasks(),this.reportProgress(Math.max(this.done+Math.max(e??1,0),0))}setMessage(e){this.message=e||void 0,this.parent&&this.parent.setMessage(this.message)}finish(){this.total<=0&&(this.total=Math.max(this.done,1),this.doStart(this.total),this.reportToParent()),this.reportProgress(Math.max(this.done,this.total)),this.reportRetainedFinish()}subTaskMonitor(e){let t=new r(this,e);return this.children.push(t),t}isCancellationRequested(){return this.parent?this.parent.isCancellationRequested():this.signal.aborted}getAbortSignal(){return this.parent?this.parent.getAbortSignal():this.signal}setAbortSignal(e){this.parent?this.parent.setAbortSignal(e):this.signal=e}throwIfAborted(){this.parent?this.parent.throwIfAborted():Pt(this.signal)}onSubTaskProgress(){let e=this.children.reduce((o,i)=>o+i.getWeight(),0);if(e<=0){this.reportProgress(this.done);return}let t=this.children.reduce((o,i)=>o+i.getWeight()*i.getCompletionRatio(),0),n=this.total>0?this.total:e;this.reportProgress(Math.max(this.done,n*t/e))}doStart(e){}doProgress(e,t){}doRetainedFinish(e){}getProgressTotal(){return this.total}reportProgress(e){let t=this.done;this.done=e,this.refreshRatio(),this.doProgress(this.done,t),this.reportToParent()}assertNoSubTasks(){H(this.children.length===0,"TaskMonitor with subtasks must report progress from subtasks")}refreshRatio(){let e=this.getProgressTotal();e>0&&(this.ratio=Math.max(this.ratio,Math.min(this.done/e,1)))}reportToParent(){this.parent?.onSubTaskProgress()}reportRetainedFinish(){!this.retainOnFinish||this.retainedFinishReported||!this.message||(this.retainedFinishReported=!0,this.reportRetainedFinishMessage(this.message))}reportRetainedFinishMessage(e){this.parent?this.parent.reportRetainedFinishMessage(e):this.doRetainedFinish(e)}getWeight(){return this.weight}getCompletionRatio(){return this.ratio}},Ec=class{constructor(e){this.delegate=e}start(e,t){this.delegate.start(e,t)}progress(e){this.delegate.progress(e)}step(e){this.delegate.step(e)}setMessage(e){this.delegate.setMessage(e)}finish(){this.delegate.finish()}subTaskMonitor(e){return this.delegate.subTaskMonitor(e)}isCancellationRequested(){return this.delegate.isCancellationRequested()}getAbortSignal(){return this.delegate.getAbortSignal()}setAbortSignal(e){this.delegate.setAbortSignal(e)}throwIfAborted(){this.delegate.throwIfAborted()}},nt=class r{static INSTANCE=new r;start(e,t){}progress(e){}step(e){}setMessage(e){}finish(){}subTaskMonitor(e){return this}isCancellationRequested(){return!1}getAbortSignal(){return Rc}setAbortSignal(e){}throwIfAborted(){}}});function lu(r){return pF(r)??dF(Fc(r))}function Fc(r){if(!r)return"";let e=r.replace(/\\/g,"/"),t=e.substring(e.lastIndexOf("/")+1),n=t.lastIndexOf(".");return(n>=0?t.substring(n+1):t).toLowerCase()}function sF(r){if(!r)return!1;let e=pu(r);return e.startsWith("text/")?!0:e==="image/svg+xml"||e==="application/json"||e==="application/manifest+json"||e==="application/yaml"||e==="application/atom+xml"||e==="application/rss+xml"||e==="application/javascript"||e==="application/xml"||e==="application/xhtml+xml"||e==="application/x-javascript"}function cF(r){return r?pu(r)==="application/json":!1}function UC(r){if(!r)return!1;let e=pu(r);return e==="application/json"||e.endsWith("+json")}function jC(r){return sF(lu(r))}function VC(r){return cF(lu(r))}function lF(r){let e=new Map;for(let t of r.split(/\r?\n/)){let n=t.trim();if(!n||n.startsWith("#")||n.startsWith("!"))continue;let o=n.indexOf(":");o<0||e.set(BC(n.substring(0,o)),n.substring(o+1).trim())}return e}function pF(r){let e=r.replace(/\\/g,"/").toLowerCase(),t=e.substring(e.lastIndexOf("/")+1),n=t.lastIndexOf("."),o=n>=0?t.substring(n+1):"";for(let i of aF)if(i.basename===t||i.extension===o)return i.contentType}function dF(r,e=nF){return uF().get(BC(r))??e}function uF(){let r=mF(),e=Mo.statSync(r);return(!Na||Na.filePath!==r||Na.mtimeMs!==e.mtimeMs)&&(Na={filePath:r,mtimeMs:e.mtimeMs,contents:lF(Mo.readFileSync(r,"utf8"))}),Na.contents}function BC(r){return(r??"").trim().replace(/^\./,"").toLowerCase()}function pu(r){let e=r.indexOf(";");return(e>=0?r.substring(0,e):r).trim().toLowerCase()}function mF(){let r=Ci.join(fF(),"resources",oF);return H(Mo.existsSync(r),`Content-Type resource not found: ${r}. Run build/watch to sync it from BI project.`),r}function fF(){for(let r=__dirname;;r=Ci.dirname(r)){if(Mo.existsSync(Ci.join(r,iF)))return r;Ci.dirname(r)===r&&ii(`Extension root not found from ${__dirname}`)}}var Mo,Ci,nF,oF,iF,Na,aF,Si=ge(()=>{Mo=E(require("fs")),Ci=E(require("path"));Ie();nF="application/octet-stream",oF="contents.properties",iF="package.json",aF=[]});async function qa(r,e,t){let n=typeof e=="function"?e:t;if(H(n,"runConcurrently task is required"),r.length===0)return;let o=typeof e=="function"?void 0:e,i=new it(o);await Promise.all(r.map(a=>i.addTask(()=>n(a))))}var cD,it,fn=ge(()=>{Bn();Ie();F();cD=8,it=class{activeCount=0;canceledError;pendingSlots=[];idleWaiters=[];signal;abortListener;maxConcurrency;constructor(e){typeof e=="number"?this.maxConcurrency=e:(this.maxConcurrency=e?.maxConcurrency??cD,this.signal=e?.signal),this.maxConcurrency=Math.max(1,this.maxConcurrency),this.signal&&(this.abortListener=()=>this.cancel(tu(this.signal)),this.signal.aborted?this.abortListener():this.signal.addEventListener("abort",this.abortListener,{once:!0}))}async addTask(e){let t=await this.acquire();try{return Pt(this.signal),await e()}catch(n){throw n instanceof or&&this.cancel(n),n}finally{t.release()}}async acquire(){if(Pt(this.signal),this.canceledError)throw this.canceledError;if(this.activeCount<this.maxConcurrency)return this.activeCount++,this.createSlot();if(await new Promise((e,t)=>{this.pendingSlots.push({resolve:e,reject:t})}),Pt(this.signal),this.canceledError)throw this.canceledError;return this.createSlot()}async waitAll(){this.isIdle()||await new Promise(e=>this.idleWaiters.push(e))}cancel(e){if(this.canceledError)return;this.canceledError=e instanceof Error?e:new Error(String(e??"ConTasksRunner cancelled")),this.disposeAbortListener();let t=this.pendingSlots.splice(0);for(let n of t)n.reject(this.canceledError);this.notifyIdleIfNeeded()}createSlot(){let e=!1;return{release:()=>{e||(e=!0,this.releaseSlot())}}}releaseSlot(){let e=this.pendingSlots.shift();if(e){e.resolve();return}this.activeCount--,this.notifyIdleIfNeeded()}isIdle(){return this.activeCount===0&&this.pendingSlots.length===0}notifyIdleIfNeeded(){if(this.isIdle())for(let e of this.idleWaiters.splice(0))e()}disposeAbortListener(){this.signal&&this.abortListener&&this.signal.removeEventListener("abort",this.abortListener)}}});function ev(r){let e=r.split(".").map(t=>{let n=t.match(/^\d+/);return n?Number(n[0]):Number.NaN});return e.some(Number.isNaN)?void 0:e}function Xt(r){return(typeof r=="string"?r.trim():"")||void 0}function Gn(r,e){if(!r||!e)return;let t=ev(r),n=ev(e);if(!t||!n)return;let o=Math.max(t.length,n.length);for(let i=0;i<o;i++){let a=t[i]??0,s=n[i]??0;if(a!==s)return a>s?1:-1}return 0}function Hc(r,e){if(!r)return!0;let t=Gn(r,e);return t===void 0?r!==e:t<0}function zc(r,e){let t=Gn(r,e);return t!==void 0&&t>0}var xi=ge(()=>{});var Pr,Lu=ge(()=>{Pr=class extends Error{constructor(e,t){super(`${e} at position ${t}`),this.position=t}}});function rv(r){return/^[0-9A-Fa-f]$/.test(r)}function Jn(r){return r>="0"&&r<="9"}function nv(r){return r>=" "}function Ga(r){return`,:[]/{}()
|
|
9
|
-
+`.includes(r)}function
|
|
10
|
-
+`.includes(r)}function
|
|
11
|
-
`||r==="\r"||r===" "||r==="\b"||r==="\f"}function
|
|
12
|
-
`;)e++;return!0}return!1}function l(
|
|
2
|
+
"use strict";var OL=Object.create;var vu=Object.defineProperty;var LL=Object.getOwnPropertyDescriptor;var NL=Object.getOwnPropertyNames;var WL=Object.getPrototypeOf,UL=Object.prototype.hasOwnProperty;var xe=(r,e)=>()=>(r&&(e=r(r=0)),e);var T=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Xf=(r,e)=>{for(var t in e)vu(r,t,{get:e[t],enumerable:!0})},sw=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of NL(e))!UL.call(r,o)&&o!==t&&vu(r,o,{get:()=>e[o],enumerable:!(n=LL(e,o))||n.enumerable});return r};var E=(r,e,t)=>(t=r!=null?OL(WL(r)):{},sw(e||!r||!r.__esModule?vu(t,"default",{value:r,enumerable:!0}):t,r)),cw=r=>sw(vu({},"__esModule",{value:!0}),r);var Wr=xe(()=>{});function K(r,e,t){if(!r)throw new ku(e,t)}function Ta(r,e){throw new ku(r,e)}var ku,ze=xe(()=>{ku=class extends Error{cause;constructor(e,t={}){super(e),this.name="AssertError",this.cause=t.cause}}});function dw(r){let e=r.trim();return K(e,"logger module name cannot be empty"),e}function VL(r,e){let t=dw(e);return r?`${r}.${t}`:t}function fc(r,e){return r?`[${r}] ${e}`:e}function qL(r,e){let t=Ma(e);if(!r)return t;let n=`[${r}]`;return typeof t[0]=="string"?[`${n} ${t[0]}`,...t.slice(1)]:[n,...t]}function hc(r,e){if(e.length===0||!wu.test(r))return wu.lastIndex=0,{message:r,args:e};wu.lastIndex=0;let t=new Set;return{message:r.replace(wu,(o,i)=>{let a=Number(i);return!Number.isSafeInteger(a)||a<0||a>=e.length?o:(t.add(a),String(e[a]))}),args:e.filter((o,i)=>!t.has(i))}}function Ma(r){let e;for(let t=0;t<r.length;t++){let n=r[t];n instanceof Error?(e??=r.slice(0,t),e.push(BL(n))):e?.push(n)}return e??r}function BL(r){return r.stack?r.stack:r.name&&r.message?`${r.name}: ${r.message}`:r.message||String(r)}function pw(r){return new Pu(r===void 0?void 0:dw(r))}function M(r){return pw(r)}function mw(r){Pu.setAppender(r)}var eh,Pu,wu,f8,Y=xe(()=>{ze();eh=class{isTraceEnabled(){return!1}isDebugEnabled(){return!1}isInfoEnabled(){return!1}isWarnEnabled(){return!1}isErrorEnabled(){return!1}trace(e,...t){}debug(e,...t){}info(e,...t){}warn(e,...t){}error(e,...t){}},Pu=class r{constructor(e){this.moduleName=e}static appender=new eh;static setAppender(e){r.appender=e}static getAppender(){return r.appender}isTraceEnabled(){return r.appender.isTraceEnabled()}isDebugEnabled(){return r.appender.isDebugEnabled()}createModuleLogger(e){return new r(VL(this.moduleName,e))}trace(e,...t){let n=r.appender;if(!n.isTraceEnabled())return;let o=hc(e,t);n.trace(fc(this.moduleName,o.message),...Ma(o.args))}debug(e,...t){let n=r.appender;if(!n.isDebugEnabled())return;let o=hc(e,t);n.debug(fc(this.moduleName,o.message),...Ma(o.args))}info(e,...t){let n=r.appender;if(!n.isInfoEnabled())return;let o=hc(e,t);n.info(fc(this.moduleName,o.message),...Ma(o.args))}warn(e,...t){let n=r.appender;if(!n.isWarnEnabled())return;let o=hc(e,t);n.warn(fc(this.moduleName,o.message),...Ma(o.args))}error(e,...t){let n=r.appender;if(!n.isErrorEnabled())return;if(e instanceof Error){n.error(e,...qL(this.moduleName,t));return}let o=hc(e,t);n.error(fc(this.moduleName,o.message),...Ma(o.args))}};wu=/\{(\d+)\}/g;f8=pw()});function d(r,...e){return th.t(r,...e)}function tr(r,...e){let t=th.t(r,...e);return t===r?void 0:t}function hw(r){th=r}function Fn(r,...e){return bu(e)?JL(r,e[0]):e.reduce((t,n,o)=>t.split(`{${o}}`).join(String(n)),r)}function bu(r){return r.length===1&&typeof r[0]=="object"&&r[0]!==null&&!Array.isArray(r[0])}function JL(r,e){return r.replace(KL,(t,n)=>Object.hasOwn(e,n)?String(e[n]):t)}function QL(){let r=rh(__dirname);if(!r)return{};let e=Ao.join(r,fw);try{let t=JSON.parse(Ru.readFileSync(e,"utf8"));return YL(t)?t:{}}catch(t){return XL(t)?{}:(HL.warn("failed to load default l10n bundle: {0}",e,t),{})}}function rh(r){let e=Ao.resolve(r),t=[Ao.join(e,"l10n"),Ao.resolve(e,"..","..","l10n"),Ao.resolve(e,"..","..","..","l10n")];for(let n of t)if(Ru.existsSync(Ao.join(n,fw)))return n}function YL(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)&&Object.values(r).every(e=>typeof e=="string")}function XL(r){return typeof r=="object"&&r!==null&&"code"in r&&r.code==="ENOENT"}var Ru,Ao,fw,HL,GL,zL,th,KL,I=xe(()=>{Ru=E(require("fs")),Ao=E(require("path"));Y();fw="bundle.l10n.json",HL=M("i18n"),GL=QL(),zL={t(r,...e){let t=GL[r]??r;return bu(e)?Fn(t,e[0]):Fn(t,...e)}},th=zL;KL=/\{([A-Za-z_][A-Za-z0-9_]*)\}/g});var O=xe(()=>{});function W(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)}function Qe(r){return typeof r=="string"&&r.length>0?r:void 0}function Zn(r){if(!Array.isArray(r))return;let e=r.filter(t=>typeof t=="string"&&t.length>0);return e.length>0?e:void 0}function D(r){let e={};for(let[t,n]of Object.entries(r))n!==void 0&&(e[t]=n);return e}function xu(r){return r.startsWith("{")||r.startsWith("[")}function Da(r){if(Array.isArray(r))return r.map(e=>Da(e));if(W(r)){let e={};return Object.keys(r).forEach(t=>{e[t]=Da(r[t])}),e}return r}function Xn(r,e){if(r===e)return!0;if(Array.isArray(r)||Array.isArray(e))return Array.isArray(r)&&Array.isArray(e)&&r.length===e.length&&r.every((o,i)=>Xn(o,e[i]));if(!W(r)||!W(e))return!1;let t=Object.keys(r),n=Object.keys(e);return t.length===n.length&&t.every(o=>Object.prototype.hasOwnProperty.call(e,o)&&Xn(r[o],e[o]))}var re=xe(()=>{});function l0(r){let e=u0(r);if(xu(e))try{let t=JSON.parse(e);return!W(t)||W(t.errorInfo)?void 0:ah(t)}catch{return}}function xw(r){let e=l0(r);return e?vc(e):void 0}function vc(r){let e=new ih(r.message??"",{platform:r.platform,stack:r.stack,properties:r.properties});return e.name=r.className||r.name||e.name,e.errorCode=r.errorCode,e.errorType=r.errorType,e.errorDialogStyle=r.errorDialogStyle,e.hintMessage=r.hintMessage,e.locationPath=r.locationPath,e.__httpStatusErrorCode__=r.__httpStatusErrorCode__,r.cause&&(e.cause=vc(r.cause)),Array.isArray(r.suppressed)&&(e.suppressed=r.suppressed.map(t=>vc(t))),e}function Lo(r){let e=r,t=new Set;for(let n=0;n<100&&!t.has(e);n++){t.add(e);let o=Dw(e);if(!o)break;e=o}return e}function Iw(r){let e=[],t=r,n=new Set;for(;t&&!n.has(t)&&e.length<100;)e.push(t),n.add(t),t=Dw(t);return e.reverse().map((o,i)=>h0(o,i===0?"":"Wrapped by: ")).join(`
|
|
3
|
+
`)}function jt(r){return kc(r)||W(r)?$r(r.errorCode):void 0}function un(r){return kc(r)?r.errorType:W(r)?_w(r.errorType):void 0}function dr(r){return kc(r)||W(r)&&W(r.properties)?r.properties:void 0}function u0(r){let e=r.indexOf(Mw);return(e>=0?r.slice(e+Mw.length):r).trim()}function ah(r){if(!d0(r))return;let e={};e.message=$r(r.message),e.name=$r(r.name),e.errorCode=$r(r.errorCode),e.errorType=_w(r.errorType),e.className=$r(r.className),e.platform=$r(r.platform),e.hintMessage=$r(r.hintMessage),e.errorDialogStyle=$r(r.errorDialogStyle),e.__httpStatusErrorCode__=p0(r.__httpStatusErrorCode__),W(r.properties)&&(e.properties=r.properties);let t=m0(r.locationPath);t&&(e.locationPath=t);let n=f0(r.stack);if(n&&(e.stack=n),W(r.cause)&&(e.cause=ah(r.cause)),Array.isArray(r.suppressed)){let o=r.suppressed.filter(W).map(i=>ah(i)).filter(i=>i!==void 0);o.length>0&&(e.suppressed=o)}return e}function d0(r){return["message","name","errorCode","errorType","className","platform","hintMessage","locationPath","errorDialogStyle","__httpStatusErrorCode__","properties","cause","suppressed","stack"].some(e=>e in r)}function $r(r){return typeof r=="string"&&r.length>0?r:void 0}function _w(r){return r===null?null:$r(r)}function p0(r){return typeof r=="number"?r:void 0}function m0(r){if(!Array.isArray(r))return;let e=r.filter(W).map(t=>({type:$r(t.type),value:$r(t.value)})).filter(t=>t.type!==void 0&&t.value!==void 0);return e.length>0?e:void 0}function f0(r){if(typeof r=="string")return r.split(/\r?\n/).filter(t=>t.length>0);if(!Array.isArray(r))return;let e=r.filter(t=>typeof t=="string");return e.length>0?e:void 0}function Dw(r){let e=r.cause;return e instanceof Error?e:void 0}function kc(r){return r instanceof Error}function h0(r,e){let t=[],n=g0(r);t.push(e?`${e}${n}`:n),Sc(t,"errorCode",jt(r));let o=un(r);if(Sc(t,"errorType",o==null?void 0:String(o)),kc(r)&&(Sc(t,"errorDialogStyle",r.errorDialogStyle),Sc(t,"hintMessage",r.hintMessage),y0(t,r.locationPath),r.properties))for(let[a,s]of Object.entries(r.properties))Sc(t,a,C0(s));let i=r.stack?.split(/\r?\n/).map(a=>a.trim()).filter(a=>a.startsWith("at ")||a.startsWith("... "));return i&&t.push(...i),t.join(`
|
|
4
|
+
`)}function g0(r){let e=r.name||kc(r)&&r.platform||"Error";return r.message?`${e}: ${r.message}`:e}function Sc(r,e,t){t&&r.push(`${e}: ${t}`)}function y0(r,e){if(!(!e||e.length===0))for(let t of e)r.push(`location: ${t.type} ${t.value}`)}function C0(r){if(r!=null){if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);try{return JSON.stringify(r)}catch{return String(r)}}}var Mw,ih,wi=xe(()=>{re();Mw="===SUCC=ERROR=INFO=START===",ih=class extends Error{platform;errorCode;errorType;errorDialogStyle;hintMessage;locationPath;properties;__httpStatusErrorCode__;cause;suppressed;constructor(e="",t={}){super(e),this.name="RemotePlatformError",this.platform=t.platform,this.stack=Array.isArray(t.stack)?t.stack.join(`
|
|
5
|
+
`):t.stack??"",this.cause=t.cause,t.properties&&(this.properties={...t.properties})}}});function _(r){return No(r)==="ENOENT"}function _u(r){return No(r)==="EEXIST"}function Pc(r){let e=No(r);return e!==void 0&&S0.has(e)}function Fw(r){return lh(r)&&r.status===404}function sh(r){return lh(r)&&r.status===401&&r.errorCode!=="err.login.busy"}function v0(r){return r instanceof Pe?r.errorCode:void 0}function ch(r){let e=v0(r);return e==="err.login.busy"?!1:e==="err.login.notlogin"||e==="err.oauth2.tokenExpired"||e?.startsWith("err.oauth2.")||e?.startsWith("err.auth.pat")?!0:sh(r)}function Aw(r){return r instanceof ft?!0:ch(r)||r instanceof Pe&&r.errorCode==="err.login.oauthTokenInvalid"}function Du(r){return No(r)==="ENOTDIR"}function Fu(r){return No(r)==="ELOCKED"}function lh(r){return r instanceof jr}function No(r){if(!r||typeof r!="object"||!("code"in r))return;let e=r.code;return typeof e=="string"?e:void 0}function uh(r){if(!(!r||typeof r!="object"||!("cause"in r)))return r.cause}function Ow(r){return Lw(r,0)}function Lw(r,e){if(e>w0||!r||typeof r!="object"||Rc(r)||lh(r))return!1;let t=No(r);return t!==void 0&&k0.has(t)?!0:Lw(uh(r),e+1)}function Rc(r){return r instanceof Pe}function Ir(r,e){return Rc(r)&&r.errorCode===e}function Nw(r){let e=dh(r.properties),t=tr(r.errorCode,e);if(!t)return r.message||r.errorCode;let n=tr(`${r.errorCode}.desc`,e);return n?`${t}
|
|
6
|
+
${n}`:t}function Ww(r){if(r.hintMessage)return r.hintMessage;if(r.hint)return d(r.hint,dh(r.properties))}function Ri(r){if(r==null)return"";if(r instanceof Error)return r.message;if(typeof r=="string")return r;let e=P0(r);if(e)return e;try{return JSON.stringify(r)}catch{return String(r)}}function P0(r){if(typeof r!="object"||r===null||Array.isArray(r))return"";let e=r.message;return typeof e=="string"?e:""}function R0(r,e){let t=dh(e);return tr(r,t)??r}function dh(r){let e={};for(let[t,n]of Object.entries(r))b0(n)&&(e[t]=n);return e}function b0(r){return typeof r=="string"||typeof r=="number"||typeof r=="boolean"}function Uw(r){return r instanceof ft||Ir(r,"err.login.notlogin")}var S0,k0,w0,Pe,jr,P,_t,xr,Vt,ft,wc,Iu,Pi,eo,Vr,F=xe(()=>{I();O();wi();S0=new Set(["ENOENT","EACCES","EPERM","EISDIR","ENOTDIR","ELOOP","ENAMETOOLONG"]);k0=new Set(["ECONNRESET","EPIPE","ETIMEDOUT","ECONNABORTED","UND_ERR_SOCKET","UND_ERR_BODY_TIMEOUT","UND_ERR_HEADERS_TIMEOUT"]),w0=4;Pe=class extends Error{errorCode;style;category;properties;errorType;errorDialogStyle;hintMessage;locationPath;hint;cause;constructor(e,t={}){let n=t.properties??{};super(t.message??R0(e,n)),this.name="BaseError",this.errorCode=e,this.style=t.style??"error",this.category=t.category??"generic",this.properties=n,this.errorType=t.errorType,this.errorDialogStyle=t.errorDialogStyle,this.hintMessage=t.hintMessage,this.locationPath=t.locationPath,this.hint=t.hint,this.cause=t.cause}setProperty(e,t){return this.properties[e]=t,this}setPropertyIf(e,t){return t!=null&&t!==""&&(this.properties[e]=t),this}setProperties(e){return Object.assign(this.properties,e),this}},jr=class r extends Pe{constructor(t,n,o,i,a){let s=xw(n),c=s?Lo(s):void 0,l=dr(c)??dr(s)??{},u=r.formatSummary(n,o,a,c,s),p=un(c)??un(s),g=c?.errorDialogStyle??s?.errorDialogStyle;super(jt(c)??jt(s)??"err.net.httpStatusUnexpected",{message:`HTTP ${t}: ${u}`,properties:r.createProperties(l,t,o,a,n,s),style:r.getDisplayStyle(p,g),errorType:p,errorDialogStyle:g,hintMessage:c?.hintMessage??s?.hintMessage,locationPath:c?.locationPath??s?.locationPath,cause:s});this.status=t;this.responseText=n;this.statusText=o;this.contentType=a;this.name="SuccHttpError",this.remoteError=s;let m=i?.stack??this.stack,f=s?Iw(s):r.isServerStack(n)?n.trim():"";f&&(this.stack=m?`${f}
|
|
7
|
+
Wrapped by: ${m}`:f)}remoteError;static createProperties(t,n,o,i,a,s){let c={...t,status:n,statusText:o};if(i!==void 0&&(c.contentType=i),!s){let l=r.createResponsePreview(a);l!==void 0&&(c.responsePreview=l)}return c}static formatSummary(t,n,o,i,a){return i||a?i?.message||jt(i)||a?.message||jt(a)||n.trim()||"Request failed":r.isServerStack(t)?n.trim()||"Request failed":r.isHtmlResponse(t,o)?n.trim()||"server returned HTML error response":t.split(/\r?\n/).map(s=>s.trim()).find(Boolean)?.slice(0,240)||"Request failed"}static createResponsePreview(t){let n=t.trim();if(n)return n.length>512?`${n.slice(0,512)}...`:n}static isHtmlResponse(t,n){return(n?.toLowerCase()??"").includes("text/html")?!0:/^<!doctype html\b|^<html[\s>]/i.test(t.trimStart())}static isServerStack(t){let n=t.trim();return!n||n.startsWith("{")||n.startsWith("[")?!1:n.split(/\r?\n/).some(o=>{let i=o.trimStart();return i.startsWith("at ")||i.startsWith("... ")||i.startsWith("Caused by:")||i.startsWith("Wrapped by:")})}static getDisplayStyle(t,n){return t==="info"?"info":t==="warn"?"warn":t===void 0&&n==="quietly"?"info":"error"}};P=class extends Pe{constructor(e,t={},n={}){super(e,{...n,category:n.category??"usage",style:n.style??"warn",properties:t}),this.name="UsageError"}},_t=class extends Pe{constructor(e,t={},n={}){super(e,{...n,style:n.style??"warn",properties:t}),this.name="OperationBlockedError"}},xr=class extends Pe{constructor(e,t={},n={}){super(e,{...n,category:n.category??"conflict",style:n.style??"error",properties:t}),this.name="ConflictError"}},Vt=class extends Pe{constructor(e,t){super("err.net.connectionFailed",{category:"networkAuth",properties:{url:e,causeMessage:t?` - ${t.message}`:""},cause:t}),this.name="ConnectionError"}},ft=class extends Pe{constructor(e={}){super("err.login.notlogin",{category:"networkAuth",hint:"Log in again, then retry the command.",cause:e.cause}),this.name="AuthError",this.withContext(e)}withContext(e){return e.workspaceRoot&&!this.workspaceRoot&&this.setProperty("workspaceRoot",e.workspaceRoot),e.serverUrl&&!this.serverUrl&&this.setProperty("serverUrl",e.serverUrl),this}get context(){return{workspaceRoot:this.workspaceRoot,serverUrl:this.serverUrl}}get workspaceRoot(){return typeof this.properties.workspaceRoot=="string"?this.properties.workspaceRoot:void 0}get serverUrl(){return typeof this.properties.serverUrl=="string"?this.properties.serverUrl:void 0}};wc=class extends Pe{constructor(t,n,o={}){super("err.workspace.problem",{style:"warn",properties:{root:t,code:n,count:o.count??o.projectPaths?.length??o.remotePaths?.length??0}});this.root=t;this.code=n;this.options=o;this.name="WorkspaceProblemError"}get projectPaths(){return this.options.projectPaths}get remotePaths(){return this.options.remotePaths}get count(){return this.options.count}},Iu=class extends P{constructor(t,n){super("err.net.invalidUrl",{url:t},{cause:n});this.url=t;this.name="InvalidUrlError"}},Pi=class extends Pe{constructor(t,n,o,i){super("err.lock.busy",{category:"lockBusy",style:"warn",properties:{attemptedCommand:t,conflictScope:o,...i?{pid:i.pid,host:i.hostname,command:i.command,source:i.source,scope:i.scope,startTime:i.startTime,lastHeartbeat:i.lastHeartbeat}:{}},hint:"Wait for the running SuccApp process to finish, then retry."});this.attemptedCommand=t;this.attemptedScopes=n;this.conflictScope=o;this.holder=i;this.name="LockBusyError"}},eo=class extends Pe{constructor(t,n={}){super("err.lock.compromised",{category:"lockCompromised",style:"warn",properties:{attemptedCommand:t},cause:n.cause});this.attemptedCommand=t;this.name="LockCompromisedError"}},Vr=class extends Pe{constructor(){super("err.base.cancel",{category:"cancel",style:"silent"}),this.name="CancelledError"}}});var jw=T((U8,$w)=>{var Wo=require("constants"),E0=process.cwd,Au=null,T0=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return Au||(Au=E0.call(process)),Au};try{process.cwd()}catch{}typeof process.chdir=="function"&&(ph=process.chdir,process.chdir=function(r){Au=null,ph.call(process,r)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,ph));var ph;$w.exports=M0;function M0(r){Wo.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&e(r),r.lutimes||t(r),r.chown=i(r.chown),r.fchown=i(r.fchown),r.lchown=i(r.lchown),r.chmod=n(r.chmod),r.fchmod=n(r.fchmod),r.lchmod=n(r.lchmod),r.chownSync=a(r.chownSync),r.fchownSync=a(r.fchownSync),r.lchownSync=a(r.lchownSync),r.chmodSync=o(r.chmodSync),r.fchmodSync=o(r.fchmodSync),r.lchmodSync=o(r.lchmodSync),r.stat=s(r.stat),r.fstat=s(r.fstat),r.lstat=s(r.lstat),r.statSync=c(r.statSync),r.fstatSync=c(r.fstatSync),r.lstatSync=c(r.lstatSync),r.chmod&&!r.lchmod&&(r.lchmod=function(u,p,g){g&&process.nextTick(g)},r.lchmodSync=function(){}),r.chown&&!r.lchown&&(r.lchown=function(u,p,g,m){m&&process.nextTick(m)},r.lchownSync=function(){}),T0==="win32"&&(r.rename=typeof r.rename!="function"?r.rename:function(u){function p(g,m,f){var y=Date.now(),C=0;u(g,m,function S(w){if(w&&(w.code==="EACCES"||w.code==="EPERM"||w.code==="EBUSY")&&Date.now()-y<6e4){setTimeout(function(){r.stat(m,function(h,k){h&&h.code==="ENOENT"?u(g,m,S):f(w)})},C),C<100&&(C+=10);return}f&&f(w)})}return Object.setPrototypeOf&&Object.setPrototypeOf(p,u),p}(r.rename)),r.read=typeof r.read!="function"?r.read:function(u){function p(g,m,f,y,C,S){var w;if(S&&typeof S=="function"){var h=0;w=function(k,v,b){if(k&&k.code==="EAGAIN"&&h<10)return h++,u.call(r,g,m,f,y,C,w);S.apply(this,arguments)}}return u.call(r,g,m,f,y,C,w)}return Object.setPrototypeOf&&Object.setPrototypeOf(p,u),p}(r.read),r.readSync=typeof r.readSync!="function"?r.readSync:function(u){return function(p,g,m,f,y){for(var C=0;;)try{return u.call(r,p,g,m,f,y)}catch(S){if(S.code==="EAGAIN"&&C<10){C++;continue}throw S}}}(r.readSync);function e(u){u.lchmod=function(p,g,m){u.open(p,Wo.O_WRONLY|Wo.O_SYMLINK,g,function(f,y){if(f){m&&m(f);return}u.fchmod(y,g,function(C){u.close(y,function(S){m&&m(C||S)})})})},u.lchmodSync=function(p,g){var m=u.openSync(p,Wo.O_WRONLY|Wo.O_SYMLINK,g),f=!0,y;try{y=u.fchmodSync(m,g),f=!1}finally{if(f)try{u.closeSync(m)}catch{}else u.closeSync(m)}return y}}function t(u){Wo.hasOwnProperty("O_SYMLINK")&&u.futimes?(u.lutimes=function(p,g,m,f){u.open(p,Wo.O_SYMLINK,function(y,C){if(y){f&&f(y);return}u.futimes(C,g,m,function(S){u.close(C,function(w){f&&f(S||w)})})})},u.lutimesSync=function(p,g,m){var f=u.openSync(p,Wo.O_SYMLINK),y,C=!0;try{y=u.futimesSync(f,g,m),C=!1}finally{if(C)try{u.closeSync(f)}catch{}else u.closeSync(f)}return y}):u.futimes&&(u.lutimes=function(p,g,m,f){f&&process.nextTick(f)},u.lutimesSync=function(){})}function n(u){return u&&function(p,g,m){return u.call(r,p,g,function(f){l(f)&&(f=null),m&&m.apply(this,arguments)})}}function o(u){return u&&function(p,g){try{return u.call(r,p,g)}catch(m){if(!l(m))throw m}}}function i(u){return u&&function(p,g,m,f){return u.call(r,p,g,m,function(y){l(y)&&(y=null),f&&f.apply(this,arguments)})}}function a(u){return u&&function(p,g,m){try{return u.call(r,p,g,m)}catch(f){if(!l(f))throw f}}}function s(u){return u&&function(p,g,m){typeof g=="function"&&(m=g,g=null);function f(y,C){C&&(C.uid<0&&(C.uid+=4294967296),C.gid<0&&(C.gid+=4294967296)),m&&m.apply(this,arguments)}return g?u.call(r,p,g,f):u.call(r,p,f)}}function c(u){return u&&function(p,g){var m=g?u.call(r,p,g):u.call(r,p);return m&&(m.uid<0&&(m.uid+=4294967296),m.gid<0&&(m.gid+=4294967296)),m}}function l(u){if(!u||u.code==="ENOSYS")return!0;var p=!process.getuid||process.getuid()!==0;return!!(p&&(u.code==="EINVAL"||u.code==="EPERM"))}}});var Bw=T(($8,qw)=>{var Vw=require("stream").Stream;qw.exports=x0;function x0(r){return{ReadStream:e,WriteStream:t};function e(n,o){if(!(this instanceof e))return new e(n,o);Vw.call(this);var i=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=64*1024,o=o||{};for(var a=Object.keys(o),s=0,c=a.length;s<c;s++){var l=a[s];this[l]=o[l]}if(this.encoding&&this.setEncoding(this.encoding),this.start!==void 0){if(typeof this.start!="number")throw TypeError("start must be a Number");if(this.end===void 0)this.end=1/0;else if(typeof this.end!="number")throw TypeError("end must be a Number");if(this.start>this.end)throw new Error("start must be <= end");this.pos=this.start}if(this.fd!==null){process.nextTick(function(){i._read()});return}r.open(this.path,this.flags,this.mode,function(u,p){if(u){i.emit("error",u),i.readable=!1;return}i.fd=p,i.emit("open",p),i._read()})}function t(n,o){if(!(this instanceof t))return new t(n,o);Vw.call(this),this.path=n,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,o=o||{};for(var i=Object.keys(o),a=0,s=i.length;a<s;a++){var c=i[a];this[c]=o[c]}if(this.start!==void 0){if(typeof this.start!="number")throw TypeError("start must be a Number");if(this.start<0)throw new Error("start must be >= zero");this.pos=this.start}this.busy=!1,this._queue=[],this.fd===null&&(this._open=r.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}});var Gw=T((j8,Hw)=>{"use strict";Hw.exports=_0;var I0=Object.getPrototypeOf||function(r){return r.__proto__};function _0(r){if(r===null||typeof r!="object")return r;if(r instanceof Object)var e={__proto__:I0(r)};else var e=Object.create(null);return Object.getOwnPropertyNames(r).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}),e}});var gh=T((V8,hh)=>{var Ye=require("fs"),D0=jw(),F0=Bw(),A0=Gw(),Ou=require("util"),Dt,Nu;typeof Symbol=="function"&&typeof Symbol.for=="function"?(Dt=Symbol.for("graceful-fs.queue"),Nu=Symbol.for("graceful-fs.previous")):(Dt="___graceful-fs.queue",Nu="___graceful-fs.previous");function O0(){}function Jw(r,e){Object.defineProperty(r,Dt,{get:function(){return e}})}var bi=O0;Ou.debuglog?bi=Ou.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(bi=function(){var r=Ou.format.apply(Ou,arguments);r="GFS4: "+r.split(/\n/).join(`
|
|
8
|
+
GFS4: `),console.error(r)});Ye[Dt]||(zw=global[Dt]||[],Jw(Ye,zw),Ye.close=function(r){function e(t,n){return r.call(Ye,t,function(o){o||Kw(),typeof n=="function"&&n.apply(this,arguments)})}return Object.defineProperty(e,Nu,{value:r}),e}(Ye.close),Ye.closeSync=function(r){function e(t){r.apply(Ye,arguments),Kw()}return Object.defineProperty(e,Nu,{value:r}),e}(Ye.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",function(){bi(Ye[Dt]),require("assert").equal(Ye[Dt].length,0)}));var zw;global[Dt]||Jw(global,Ye[Dt]);hh.exports=mh(A0(Ye));process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!Ye.__patched&&(hh.exports=mh(Ye),Ye.__patched=!0);function mh(r){D0(r),r.gracefulify=mh,r.createReadStream=v,r.createWriteStream=b;var e=r.readFile;r.readFile=t;function t(x,H,j){return typeof H=="function"&&(j=H,H=null),oe(x,H,j);function oe(B,G,X,pe){return e(B,G,function(fe){fe&&(fe.code==="EMFILE"||fe.code==="ENFILE")?Fa([oe,[B,G,X],fe,pe||Date.now(),Date.now()]):typeof X=="function"&&X.apply(this,arguments)})}}var n=r.writeFile;r.writeFile=o;function o(x,H,j,oe){return typeof j=="function"&&(oe=j,j=null),B(x,H,j,oe);function B(G,X,pe,fe,U){return n(G,X,pe,function(z){z&&(z.code==="EMFILE"||z.code==="ENFILE")?Fa([B,[G,X,pe,fe],z,U||Date.now(),Date.now()]):typeof fe=="function"&&fe.apply(this,arguments)})}}var i=r.appendFile;i&&(r.appendFile=a);function a(x,H,j,oe){return typeof j=="function"&&(oe=j,j=null),B(x,H,j,oe);function B(G,X,pe,fe,U){return i(G,X,pe,function(z){z&&(z.code==="EMFILE"||z.code==="ENFILE")?Fa([B,[G,X,pe,fe],z,U||Date.now(),Date.now()]):typeof fe=="function"&&fe.apply(this,arguments)})}}var s=r.copyFile;s&&(r.copyFile=c);function c(x,H,j,oe){return typeof j=="function"&&(oe=j,j=0),B(x,H,j,oe);function B(G,X,pe,fe,U){return s(G,X,pe,function(z){z&&(z.code==="EMFILE"||z.code==="ENFILE")?Fa([B,[G,X,pe,fe],z,U||Date.now(),Date.now()]):typeof fe=="function"&&fe.apply(this,arguments)})}}var l=r.readdir;r.readdir=p;var u=/^v[0-5]\./;function p(x,H,j){typeof H=="function"&&(j=H,H=null);var oe=u.test(process.version)?function(X,pe,fe,U){return l(X,B(X,pe,fe,U))}:function(X,pe,fe,U){return l(X,pe,B(X,pe,fe,U))};return oe(x,H,j);function B(G,X,pe,fe){return function(U,z){U&&(U.code==="EMFILE"||U.code==="ENFILE")?Fa([oe,[G,X,pe],U,fe||Date.now(),Date.now()]):(z&&z.sort&&z.sort(),typeof pe=="function"&&pe.call(this,U,z))}}}if(process.version.substr(0,4)==="v0.8"){var g=F0(r);S=g.ReadStream,h=g.WriteStream}var m=r.ReadStream;m&&(S.prototype=Object.create(m.prototype),S.prototype.open=w);var f=r.WriteStream;f&&(h.prototype=Object.create(f.prototype),h.prototype.open=k),Object.defineProperty(r,"ReadStream",{get:function(){return S},set:function(x){S=x},enumerable:!0,configurable:!0}),Object.defineProperty(r,"WriteStream",{get:function(){return h},set:function(x){h=x},enumerable:!0,configurable:!0});var y=S;Object.defineProperty(r,"FileReadStream",{get:function(){return y},set:function(x){y=x},enumerable:!0,configurable:!0});var C=h;Object.defineProperty(r,"FileWriteStream",{get:function(){return C},set:function(x){C=x},enumerable:!0,configurable:!0});function S(x,H){return this instanceof S?(m.apply(this,arguments),this):S.apply(Object.create(S.prototype),arguments)}function w(){var x=this;Q(x.path,x.flags,x.mode,function(H,j){H?(x.autoClose&&x.destroy(),x.emit("error",H)):(x.fd=j,x.emit("open",j),x.read())})}function h(x,H){return this instanceof h?(f.apply(this,arguments),this):h.apply(Object.create(h.prototype),arguments)}function k(){var x=this;Q(x.path,x.flags,x.mode,function(H,j){H?(x.destroy(),x.emit("error",H)):(x.fd=j,x.emit("open",j))})}function v(x,H){return new r.ReadStream(x,H)}function b(x,H){return new r.WriteStream(x,H)}var R=r.open;r.open=Q;function Q(x,H,j,oe){return typeof j=="function"&&(oe=j,j=null),B(x,H,j,oe);function B(G,X,pe,fe,U){return R(G,X,pe,function(z,he){z&&(z.code==="EMFILE"||z.code==="ENFILE")?Fa([B,[G,X,pe,fe],z,U||Date.now(),Date.now()]):typeof fe=="function"&&fe.apply(this,arguments)})}}return r}function Fa(r){bi("ENQUEUE",r[0].name,r[1]),Ye[Dt].push(r),fh()}var Lu;function Kw(){for(var r=Date.now(),e=0;e<Ye[Dt].length;++e)Ye[Dt][e].length>2&&(Ye[Dt][e][3]=r,Ye[Dt][e][4]=r);fh()}function fh(){if(clearTimeout(Lu),Lu=void 0,Ye[Dt].length!==0){var r=Ye[Dt].shift(),e=r[0],t=r[1],n=r[2],o=r[3],i=r[4];if(o===void 0)bi("RETRY",e.name,t),e.apply(null,t);else if(Date.now()-o>=6e4){bi("TIMEOUT",e.name,t);var a=t.pop();typeof a=="function"&&a.call(null,n)}else{var s=Date.now()-i,c=Math.max(i-o,1),l=Math.min(c*1.2,100);s>=l?(bi("RETRY",e.name,t),e.apply(null,t.concat([o]))):Ye[Dt].push(r)}Lu===void 0&&(Lu=setTimeout(fh,0))}}});var Yw=T((q8,Qw)=>{function qr(r,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(r)),this._timeouts=r,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}Qw.exports=qr;qr.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};qr.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null};qr.prototype.retry=function(r){if(this._timeout&&clearTimeout(this._timeout),!r)return!1;var e=new Date().getTime();if(r&&e-this._operationStart>=this._maxRetryTime)return this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(r);var t=this._timeouts.shift();if(t===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),t=this._timeouts.shift();else return!1;var n=this,o=setTimeout(function(){n._attempts++,n._operationTimeoutCb&&(n._timeout=setTimeout(function(){n._operationTimeoutCb(n._attempts)},n._operationTimeout),n._options.unref&&n._timeout.unref()),n._fn(n._attempts)},t);return this._options.unref&&o.unref(),!0};qr.prototype.attempt=function(r,e){this._fn=r,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var t=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){t._operationTimeoutCb()},t._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};qr.prototype.try=function(r){console.log("Using RetryOperation.try() is deprecated"),this.attempt(r)};qr.prototype.start=function(r){console.log("Using RetryOperation.start() is deprecated"),this.attempt(r)};qr.prototype.start=qr.prototype.try;qr.prototype.errors=function(){return this._errors};qr.prototype.attempts=function(){return this._attempts};qr.prototype.mainError=function(){if(this._errors.length===0)return null;for(var r={},e=null,t=0,n=0;n<this._errors.length;n++){var o=this._errors[n],i=o.message,a=(r[i]||0)+1;r[i]=a,a>=t&&(e=o,t=a)}return e}});var Xw=T(Ei=>{var L0=Yw();Ei.operation=function(r){var e=Ei.timeouts(r);return new L0(e,{forever:r&&r.forever,unref:r&&r.unref,maxRetryTime:r&&r.maxRetryTime})};Ei.timeouts=function(r){if(r instanceof Array)return[].concat(r);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var t in r)e[t]=r[t];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var n=[],o=0;o<e.retries;o++)n.push(this.createTimeout(o,e));return r&&r.forever&&!n.length&&n.push(this.createTimeout(o,e)),n.sort(function(i,a){return i-a}),n};Ei.createTimeout=function(r,e){var t=e.randomize?Math.random()+1:1,n=Math.round(t*e.minTimeout*Math.pow(e.factor,r));return n=Math.min(n,e.maxTimeout),n};Ei.wrap=function(r,e,t){if(e instanceof Array&&(t=e,e=null),!t){t=[];for(var n in r)typeof r[n]=="function"&&t.push(n)}for(var o=0;o<t.length;o++){var i=t[o],a=r[i];r[i]=function(c){var l=Ei.operation(e),u=Array.prototype.slice.call(arguments,1),p=u.pop();u.push(function(g){l.retry(g)||(g&&(arguments[0]=l.mainError()),p.apply(this,arguments))}),l.attempt(function(){c.apply(r,u)})}.bind(r,a),r[i].options=e}}});var eP=T((H8,Zw)=>{Zw.exports=Xw()});var tP=T((G8,Wu)=>{Wu.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];process.platform!=="win32"&&Wu.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&Wu.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var aP=T((z8,La)=>{var Ke=global.process,Ti=function(r){return r&&typeof r=="object"&&typeof r.removeListener=="function"&&typeof r.emit=="function"&&typeof r.reallyExit=="function"&&typeof r.listeners=="function"&&typeof r.kill=="function"&&typeof r.pid=="number"&&typeof r.on=="function"};Ti(Ke)?(rP=require("assert"),Aa=tP(),nP=/^win/i.test(Ke.platform),bc=require("events"),typeof bc!="function"&&(bc=bc.EventEmitter),Ke.__signal_exit_emitter__?xt=Ke.__signal_exit_emitter__:(xt=Ke.__signal_exit_emitter__=new bc,xt.count=0,xt.emitted={}),xt.infinite||(xt.setMaxListeners(1/0),xt.infinite=!0),La.exports=function(r,e){if(!Ti(global.process))return function(){};rP.equal(typeof r,"function","a callback must be provided for exit handler"),Oa===!1&&yh();var t="exit";e&&e.alwaysLast&&(t="afterexit");var n=function(){xt.removeListener(t,r),xt.listeners("exit").length===0&&xt.listeners("afterexit").length===0&&Uu()};return xt.on(t,r),n},Uu=function(){!Oa||!Ti(global.process)||(Oa=!1,Aa.forEach(function(e){try{Ke.removeListener(e,$u[e])}catch{}}),Ke.emit=ju,Ke.reallyExit=Ch,xt.count-=1)},La.exports.unload=Uu,Mi=function(e,t,n){xt.emitted[e]||(xt.emitted[e]=!0,xt.emit(e,t,n))},$u={},Aa.forEach(function(r){$u[r]=function(){if(Ti(global.process)){var t=Ke.listeners(r);t.length===xt.count&&(Uu(),Mi("exit",null,r),Mi("afterexit",null,r),nP&&r==="SIGHUP"&&(r="SIGINT"),Ke.kill(Ke.pid,r))}}}),La.exports.signals=function(){return Aa},Oa=!1,yh=function(){Oa||!Ti(global.process)||(Oa=!0,xt.count+=1,Aa=Aa.filter(function(e){try{return Ke.on(e,$u[e]),!0}catch{return!1}}),Ke.emit=iP,Ke.reallyExit=oP)},La.exports.load=yh,Ch=Ke.reallyExit,oP=function(e){Ti(global.process)&&(Ke.exitCode=e||0,Mi("exit",Ke.exitCode,null),Mi("afterexit",Ke.exitCode,null),Ch.call(Ke,Ke.exitCode))},ju=Ke.emit,iP=function(e,t){if(e==="exit"&&Ti(global.process)){t!==void 0&&(Ke.exitCode=t);var n=ju.apply(this,arguments);return Mi("exit",Ke.exitCode,null),Mi("afterexit",Ke.exitCode,null),n}else return ju.apply(this,arguments)}):La.exports=function(){return function(){}};var rP,Aa,nP,bc,xt,Uu,Mi,$u,Oa,yh,Ch,oP,ju,iP});var cP=T((K8,Sh)=>{"use strict";var sP=Symbol();function N0(r,e,t){let n=e[sP];if(n)return e.stat(r,(i,a)=>{if(i)return t(i);t(null,a.mtime,n)});let o=new Date(Math.ceil(Date.now()/1e3)*1e3+5);e.utimes(r,o,o,i=>{if(i)return t(i);e.stat(r,(a,s)=>{if(a)return t(a);let c=s.mtime.getTime()%1e3===0?"s":"ms";Object.defineProperty(e,sP,{value:c}),t(null,s.mtime,c)})})}function W0(r){let e=Date.now();return r==="s"&&(e=Math.ceil(e/1e3)*1e3),new Date(e)}Sh.exports.probe=N0;Sh.exports.getMtime=W0});var mP=T((J8,Tc)=>{"use strict";var U0=require("path"),wh=gh(),$0=eP(),j0=aP(),lP=cP(),to={};function Ec(r,e){return e.lockfilePath||`${r}.lock`}function Ph(r,e,t){if(!e.realpath)return t(null,U0.resolve(r));e.fs.realpath(r,t)}function kh(r,e,t){let n=Ec(r,e);e.fs.mkdir(n,o=>{if(!o)return lP.probe(n,e.fs,(i,a,s)=>{if(i)return e.fs.rmdir(n,()=>{}),t(i);t(null,a,s)});if(o.code!=="EEXIST")return t(o);if(e.stale<=0)return t(Object.assign(new Error("Lock file is already being held"),{code:"ELOCKED",file:r}));e.fs.stat(n,(i,a)=>{if(i)return i.code==="ENOENT"?kh(r,{...e,stale:0},t):t(i);if(!uP(a,e))return t(Object.assign(new Error("Lock file is already being held"),{code:"ELOCKED",file:r}));dP(r,e,s=>{if(s)return t(s);kh(r,{...e,stale:0},t)})})})}function uP(r,e){return r.mtime.getTime()<Date.now()-e.stale}function dP(r,e,t){e.fs.rmdir(Ec(r,e),n=>{if(n&&n.code!=="ENOENT")return t(n);t()})}function Vu(r,e){let t=to[r];t.updateTimeout||(t.updateDelay=t.updateDelay||e.update,t.updateTimeout=setTimeout(()=>{t.updateTimeout=null,e.fs.stat(t.lockfilePath,(n,o)=>{let i=t.lastUpdate+e.stale<Date.now();if(n)return n.code==="ENOENT"||i?vh(r,t,Object.assign(n,{code:"ECOMPROMISED"})):(t.updateDelay=1e3,Vu(r,e));if(!(t.mtime.getTime()===o.mtime.getTime()))return vh(r,t,Object.assign(new Error("Unable to update lock within the stale threshold"),{code:"ECOMPROMISED"}));let s=lP.getMtime(t.mtimePrecision);e.fs.utimes(t.lockfilePath,s,s,c=>{let l=t.lastUpdate+e.stale<Date.now();if(!t.released){if(c)return c.code==="ENOENT"||l?vh(r,t,Object.assign(c,{code:"ECOMPROMISED"})):(t.updateDelay=1e3,Vu(r,e));t.mtime=s,t.lastUpdate=Date.now(),t.updateDelay=null,Vu(r,e)}})})},t.updateDelay),t.updateTimeout.unref&&t.updateTimeout.unref())}function vh(r,e,t){e.released=!0,e.updateTimeout&&clearTimeout(e.updateTimeout),to[r]===e&&delete to[r],e.options.onCompromised(t)}function V0(r,e,t){e={stale:1e4,update:null,realpath:!0,retries:0,fs:wh,onCompromised:n=>{throw n},...e},e.retries=e.retries||0,e.retries=typeof e.retries=="number"?{retries:e.retries}:e.retries,e.stale=Math.max(e.stale||0,2e3),e.update=e.update==null?e.stale/2:e.update||0,e.update=Math.max(Math.min(e.update,e.stale/2),1e3),Ph(r,e,(n,o)=>{if(n)return t(n);let i=$0.operation(e.retries);i.attempt(()=>{kh(o,e,(a,s,c)=>{if(i.retry(a))return;if(a)return t(i.mainError());let l=to[o]={lockfilePath:Ec(o,e),mtime:s,mtimePrecision:c,options:e,lastUpdate:Date.now()};Vu(o,e),t(null,u=>{if(l.released)return u&&u(Object.assign(new Error("Lock is already released"),{code:"ERELEASED"}));pP(o,{...e,realpath:!1},u)})})})})}function pP(r,e,t){e={fs:wh,realpath:!0,...e},Ph(r,e,(n,o)=>{if(n)return t(n);let i=to[o];if(!i)return t(Object.assign(new Error("Lock is not acquired/owned by you"),{code:"ENOTACQUIRED"}));i.updateTimeout&&clearTimeout(i.updateTimeout),i.released=!0,delete to[o],dP(o,e,t)})}function q0(r,e,t){e={stale:1e4,realpath:!0,fs:wh,...e},e.stale=Math.max(e.stale||0,2e3),Ph(r,e,(n,o)=>{if(n)return t(n);e.fs.stat(Ec(o,e),(i,a)=>i?i.code==="ENOENT"?t(null,!1):t(i):t(null,!uP(a,e)))})}function B0(){return to}j0(()=>{for(let r in to){let e=to[r].options;try{e.fs.rmdirSync(Ec(r,e))}catch{}}});Tc.exports.lock=V0;Tc.exports.unlock=pP;Tc.exports.check=q0;Tc.exports.getLocks=B0});var hP=T((Q8,fP)=>{"use strict";var H0=gh();function G0(r){let e=["mkdir","realpath","stat","rmdir","utimes"],t={...r};return e.forEach(n=>{t[n]=(...o)=>{let i=o.pop(),a;try{a=r[`${n}Sync`](...o)}catch(s){return i(s)}i(null,a)}}),t}function z0(r){return(...e)=>new Promise((t,n)=>{e.push((o,i)=>{o?n(o):t(i)}),r(...e)})}function K0(r){return(...e)=>{let t,n;if(e.push((o,i)=>{t=o,n=i}),r(...e),t)throw t;return n}}function J0(r){if(r={...r},r.fs=G0(r.fs||H0),typeof r.retries=="number"&&r.retries>0||r.retries&&typeof r.retries.retries=="number"&&r.retries.retries>0)throw Object.assign(new Error("Cannot use retries with the sync api"),{code:"ESYNC"});return r}fP.exports={toPromise:z0,toSync:K0,toSyncOptions:J0}});var bh=T((Y8,Uo)=>{"use strict";var Na=mP(),{toPromise:qu,toSync:Bu,toSyncOptions:Rh}=hP();async function gP(r,e){let t=await qu(Na.lock)(r,e);return qu(t)}function Q0(r,e){let t=Bu(Na.lock)(r,Rh(e));return Bu(t)}function Y0(r,e){return qu(Na.unlock)(r,e)}function X0(r,e){return Bu(Na.unlock)(r,Rh(e))}function Z0(r,e){return qu(Na.check)(r,e)}function eN(r,e){return Bu(Na.check)(r,Rh(e))}Uo.exports=gP;Uo.exports.lock=gP;Uo.exports.unlock=Y0;Uo.exports.lockSync=Q0;Uo.exports.unlockSync=X0;Uo.exports.check=Z0;Uo.exports.checkSync=eN});async function ro(r){return Br.promises.readFile(r,"utf8")}async function Ue(r,e=""){try{return await ro(r)}catch(t){if(_(t))return Th.debug("optional text file does not exist: %s",r),e;throw t}}async function xi(r){try{return await Br.promises.stat(r)}catch(e){if(_(e))return;throw e}}async function qt(r,e){await Br.promises.mkdir(Hu.dirname(r),{recursive:!0}),await Br.promises.writeFile(r,e,"utf8")}async function vP(r,e,t={}){await Br.promises.mkdir(Hu.dirname(r),{recursive:!0});let n,o=t.timeoutMs??tN,i=t.retryDelayMs??rN;try{n=await SP.lock(r,{lockfilePath:r,realpath:!1,stale:t.staleMs??nN,retries:{retries:Math.ceil(o/i),factor:1,minTimeout:i,maxTimeout:i}})}catch(a){throw Fu(a)?new _t("err.lock.busy",{lockPath:r,timeoutMs:o},{category:"lockBusy",cause:a instanceof Error?a:void 0,message:`file lock is held by another process: ${r}`}):a}try{return await e()}finally{if(n)try{await n()}catch(a){Th.warn(`release file lock failed: ${r}`,a)}}}async function rr(r,e){await Br.promises.mkdir(Hu.dirname(r),{recursive:!0});let t=`${r}.succapp-tmp.${process.pid}.${Date.now()}.${(0,yP.randomUUID)()}`;try{typeof e=="string"||Buffer.isBuffer(e)?await Br.promises.writeFile(t,e):await(0,CP.pipeline)(e,Br.createWriteStream(t)),await Br.promises.rename(t,r)}catch(n){throw await Br.promises.rm(t,{force:!0}).catch(o=>{Th.debug("cleanup temporary write file failed: %s",t,o)}),n}}var Br,Hu,yP,CP,SP,Th,tN,rN,nN,nt=xe(()=>{Br=E(require("fs")),Hu=E(require("path")),yP=require("crypto"),CP=require("stream/promises"),SP=E(bh());F();O();Y();Th=M("common.file");tN=5e3,rN=100,nN=3e4});function ie(r){let e=r.replace(lN,"/").replace(/^\/+|\/+$/g,"");return e?"/"+e:"/"}function RP(r){let e=ie(r);if(e.split("/").filter(Boolean).includes(uN))throw new Error(`Unsafe metadata path: ${r}`);return e}function $o(r){if(!r.startsWith("/"))throw new P("err.meta.invalidPath",{path:r,reason:"notAbsolute"});try{return RP(r)}catch(e){throw new P("err.meta.invalidPath",{path:r,reason:"unsafe"},{cause:e})}}function ge(r,e){return Ie.join(r,Je(ie(e)))}function bP(r,e){let t=Ie.resolve(r),n=Ie.resolve(t,Je(RP(e)));if(n!==t&&!n.startsWith(t+Ie.sep))throw new Error(`Metadata path escapes root: ${e}`);return n}function An(r){return Ie.join(r,no)}function Hr(r){return Ie.join(r,fN,hN)}function ht(r){return r.includes("\\")?r.replaceAll("\\","/"):r}function Je(r){let e=0;for(;e<r.length&&r.charCodeAt(e)===47;)e++;return e===0?r:r.slice(e)}function EP(r){return r.charCodeAt(r.length-1)===47?r:`${r}/`}function Gr(r){let e=ht(r);if(!e||Ie.posix.isAbsolute(e)||Ie.win32.isAbsolute(r)||Ie.win32.isAbsolute(e))return;let t=e.split("/");return t.some(SN)?void 0:t.join("/")}function jo(r,e="relative path"){let t=Gr(r);if(!t)throw new Error(`invalid ${e}: ${r}`);return t}function mr(r,e,t="relative path"){return Ie.join(r,...jo(e,t).split("/"))}function ut(r,e){return Ie.isAbsolute(e)?Ie.normalize(e):Ie.resolve(r,e)}async function Se(r){try{return await zu.promises.access(r),!0}catch(e){if(_(e))return!1;throw e}}async function Ku(r){let e;try{e=await zu.promises.stat(r)}catch(t){throw _(t)?new P("err.file.notFound",{path:r},{cause:t}):t}if(!e.isDirectory())throw new P("err.file.notDirectory",{path:r})}function dn(r){return r.trim().replace(sN,"").replace(cN,"-")}function On(r,e){let t=Ie.resolve(r),n=Ie.resolve(e);if(n===t||!n.startsWith(t+Ie.sep))return;let o=Ie.relative(t,n);if(!o)return"/";let i=o.split(Ie.sep);if(!i[0].startsWith("."))return ie(i.join("/"))}function Ee(r){return Je(r)}function dt(r){let e=ie(r);if(e==="/")return;let[t]=e.slice(1).split("/");return t?`/${t}`:void 0}function Bt(r){let e=r.trim();if(!e||e.startsWith(".")||e.includes("/")||e.includes("\\"))throw new Error(`invalid project name: ${r}`);return`/${e}`}function le(r,e){let t=PP(r),n=PP(e);return t===n||n==="/"?!0:t.length<=n.length?!1:t.charCodeAt(n.length)===47&&t.startsWith(n)}function Vo(r,e,t,n){return Gu(r,t)||e&&Gu(e,t)?!0:!!n&&(Gu(r,n)||!!e&&Gu(e,n))}function Gu(r,e){return le(r,e)||le(e,r)}function TP(r){let e;for(let t of r){let n=gN(t);if(!e){e=n;continue}e=yN(e,n)}if(e)return ie(e.join("/"))}function gN(r){let e=ie(r);if(e==="/")return[];let t=e.split("/").filter(Boolean);return t.pop(),t}function yN(r,e){let t=Math.min(r.length,e.length),n=[];for(let o=0;o<t&&r[o]===e[o];o++)n.push(r[o]);return n}function Ht(r){let e=[...r].sort((n,o)=>{let i=wP(n)-wP(o);return i===0?n.localeCompare(o):i}),t=[];for(let n of e)CN(n,r)||t.push(n);return t}function CN(r,e){let t=Ie.posix.dirname(r);for(;t!==r;){if(e.has(t))return!0;if(t==="/")return!1;r=t,t=Ie.posix.dirname(r)}return!1}function wP(r){return r.split("/").filter(Boolean).length}function PP(r){return Ie.posix.normalize(ie(r))}function SN(r){return!r||r===dN||r===pN}async function zr(r){try{await zu.promises.rm(r,{recursive:!0,force:!0})}catch(e){if(!_(e))throw e;aN.debug(`remove ignored missing path: ${r}`)}}function Ln(r){return r.split("/").filter(Boolean).length}var zu,Ie,aN,sN,cN,lN,uN,dN,pN,no,mN,Mh,Wa,fN,hN,V=xe(()=>{zu=E(require("fs")),Ie=E(require("path"));F();O();Y();aN=M("common.path"),sN=/^https?:\/\/|\/+$/gi,cN=/[^a-zA-Z0-9.]+/g,lN=/[\\/]+/g,uN="..",dN=".",pN="..",no=".succapp",mN=".agents",Mh=[no,mN],Wa=[".git",...Mh,"node_modules"],fN=".vscode",hN="settings.json"});function Dc(r){return r.reason instanceof Error?r.reason:new Vr}function Gt(r){if(r?.aborted)throw Dc(r)}function ed(...r){let e=r.filter(n=>n!==void 0);if(e.length===0)return Zu;if(e.length===1)return e[0];let t=new AbortController;for(let n of e){let o=()=>{t.signal.aborted||t.abort(n.reason instanceof Error?n.reason:new Vr)};n.addEventListener("abort",o),n.aborted&&o()}return t.signal}var YN,Zu,oo=xe(()=>{F();YN=new AbortController,Zu=YN.signal});var Bo,td,Pt,Nn=xe(()=>{F();ze();oo();Bo=class r{children=[];parent;weight;signal;total=0;done=0;ratio=0;message;constructor(e,t=0,n){this.parent=e,this.weight=Math.max(t,0),this.signal=n??Zu}retainOnFinish=!1;retainedFinishReported=!1;start(e,t){this.total=Math.max(e??0,0),this.done=0,this.ratio=0,this.children.length=0,this.retainOnFinish=t?.retainOnFinish===!0,this.retainedFinishReported=!1,t?.message!==void 0&&this.setMessage(t.message),this.doStart(e),this.reportToParent()}progress(e){this.assertNoSubTasks(),this.reportProgress(Math.max(this.done,e,0))}step(e){this.assertNoSubTasks(),this.reportProgress(Math.max(this.done+Math.max(e??1,0),0))}setMessage(e){this.message=e||void 0,this.parent&&this.parent.setMessage(this.message)}finish(){this.total<=0&&(this.total=Math.max(this.done,1),this.doStart(this.total),this.reportToParent()),this.reportProgress(Math.max(this.done,this.total)),this.reportRetainedFinish()}subTaskMonitor(e){let t=new r(this,e);return this.children.push(t),t}isCancellationRequested(){return this.parent?this.parent.isCancellationRequested():this.signal.aborted}getAbortSignal(){return this.parent?this.parent.getAbortSignal():this.signal}setAbortSignal(e){this.parent?this.parent.setAbortSignal(e):this.signal=e}throwIfAborted(){this.parent?this.parent.throwIfAborted():Gt(this.signal)}onSubTaskProgress(){let e=this.children.reduce((o,i)=>o+i.getWeight(),0);if(e<=0){this.reportProgress(this.done);return}let t=this.children.reduce((o,i)=>o+i.getWeight()*i.getCompletionRatio(),0),n=this.total>0?this.total:e;this.reportProgress(Math.max(this.done,n*t/e))}doStart(e){}doProgress(e,t){}doRetainedFinish(e){}getProgressTotal(){return this.total}reportProgress(e){let t=this.done;this.done=e,this.refreshRatio(),this.doProgress(this.done,t),this.reportToParent()}assertNoSubTasks(){K(this.children.length===0,"TaskMonitor with subtasks must report progress from subtasks")}refreshRatio(){let e=this.getProgressTotal();e>0&&(this.ratio=Math.max(this.ratio,Math.min(this.done/e,1)))}reportToParent(){this.parent?.onSubTaskProgress()}reportRetainedFinish(){!this.retainOnFinish||this.retainedFinishReported||!this.message||(this.retainedFinishReported=!0,this.reportRetainedFinishMessage(this.message))}reportRetainedFinishMessage(e){this.parent?this.parent.reportRetainedFinishMessage(e):this.doRetainedFinish(e)}getWeight(){return this.weight}getCompletionRatio(){return this.ratio}},td=class{constructor(e){this.delegate=e}start(e,t){this.delegate.start(e,t)}progress(e){this.delegate.progress(e)}step(e){this.delegate.step(e)}setMessage(e){this.delegate.setMessage(e)}finish(){this.delegate.finish()}subTaskMonitor(e){return this.delegate.subTaskMonitor(e)}isCancellationRequested(){return this.delegate.isCancellationRequested()}getAbortSignal(){return this.delegate.getAbortSignal()}setAbortSignal(e){this.delegate.setAbortSignal(e)}throwIfAborted(){this.delegate.throwIfAborted()}},Pt=class r{static INSTANCE=new r;start(e,t){}progress(e){}step(e){}setMessage(e){}finish(){}subTaskMonitor(e){return this}isCancellationRequested(){return!1}getAbortSignal(){return Zu}setAbortSignal(e){}throwIfAborted(){}}});async function Oi(r,e,t){let n=typeof e=="function"?e:t;if(K(n,"runConcurrently task is required"),r.length===0)return;let o=typeof e=="function"?void 0:e,i=new bt(o);await Promise.all(r.map(a=>i.addTask(()=>n(a))))}var bU,bt,$n=xe(()=>{oo();ze();F();bU=8,bt=class{activeCount=0;canceledError;pendingSlots=[];idleWaiters=[];signal;abortListener;maxConcurrency;constructor(e){typeof e=="number"?this.maxConcurrency=e:(this.maxConcurrency=e?.maxConcurrency??bU,this.signal=e?.signal),this.maxConcurrency=Math.max(1,this.maxConcurrency),this.signal&&(this.abortListener=()=>this.cancel(Dc(this.signal)),this.signal.aborted?this.abortListener():this.signal.addEventListener("abort",this.abortListener,{once:!0}))}async addTask(e){let t=await this.acquire();try{return Gt(this.signal),await e()}catch(n){throw n instanceof Vr&&this.cancel(n),n}finally{t.release()}}async acquire(){if(Gt(this.signal),this.canceledError)throw this.canceledError;if(this.activeCount<this.maxConcurrency)return this.activeCount++,this.createSlot();if(await new Promise((e,t)=>{this.pendingSlots.push({resolve:e,reject:t})}),Gt(this.signal),this.canceledError)throw this.canceledError;return this.createSlot()}async waitAll(){this.isIdle()||await new Promise(e=>this.idleWaiters.push(e))}cancel(e){if(this.canceledError)return;this.canceledError=e instanceof Error?e:new Error(String(e??"ConTasksRunner cancelled")),this.disposeAbortListener();let t=this.pendingSlots.splice(0);for(let n of t)n.reject(this.canceledError);this.notifyIdleIfNeeded()}createSlot(){let e=!1;return{release:()=>{e||(e=!0,this.releaseSlot())}}}releaseSlot(){let e=this.pendingSlots.shift();if(e){e.resolve();return}this.activeCount--,this.notifyIdleIfNeeded()}isIdle(){return this.activeCount===0&&this.pendingSlots.length===0}notifyIdleIfNeeded(){if(this.isIdle())for(let e of this.idleWaiters.splice(0))e()}disposeAbortListener(){this.signal&&this.abortListener&&this.signal.removeEventListener("abort",this.abortListener)}}});function ag(r){return FU(r)??AU(Sd(r))}function Sd(r){if(!r)return"";let e=ht(r),t=e.substring(e.lastIndexOf("/")+1),n=t.lastIndexOf(".");return(n>=0?t.substring(n+1):t).toLowerCase()}function IU(r){if(!r)return!1;let e=ZR(r);return e.startsWith("text/")?!0:e==="image/svg+xml"||e==="application/json"||e==="application/manifest+json"||e==="application/yaml"||e==="application/atom+xml"||e==="application/rss+xml"||e==="application/javascript"||e==="application/xml"||e==="application/xhtml+xml"||e==="application/x-javascript"}function _U(r){return r?ZR(r)==="application/json":!1}function QR(r){return IU(ag(r))}function YR(r){return _U(ag(r))}function DU(r){let e=new Map;for(let t of r.split(/\r?\n/)){let n=t.trim();if(!n||n.startsWith("#")||n.startsWith("!"))continue;let o=n.indexOf(":");o<0||e.set(XR(n.substring(0,o)),n.substring(o+1).trim())}return e}function FU(r){let e=ht(r).toLowerCase(),t=e.substring(e.lastIndexOf("/")+1),n=t.lastIndexOf("."),o=n>=0?t.substring(n+1):"";for(let i of xU)if(i.basename===t||i.extension===o)return i.contentType}function AU(r,e=EU){return OU().get(XR(r))??e}function OU(){let r=LU(),e=Li.statSync(r);return(!Uc||Uc.filePath!==r||Uc.mtimeMs!==e.mtimeMs)&&(Uc={filePath:r,mtimeMs:e.mtimeMs,contents:DU(Li.readFileSync(r,"utf8"))}),Uc.contents}function XR(r){return(r??"").trim().replace(/^\./,"").toLowerCase()}function ZR(r){let e=r.indexOf(";");return(e>=0?r.substring(0,e):r).trim().toLowerCase()}function LU(){let r=za.join(NU(),"resources",TU);return K(Li.existsSync(r),`Content-Type resource not found: ${r}. Run build/watch to sync it from BI project.`),r}function NU(){for(let r=__dirname;;r=za.dirname(r)){if(Li.existsSync(za.join(r,MU)))return r;za.dirname(r)===r&&Ta(`Extension root not found from ${__dirname}`)}}var Li,za,EU,TU,MU,Uc,xU,$c=xe(()=>{Li=E(require("fs")),za=E(require("path"));ze();V();EU="application/octet-stream",TU="contents.properties",MU="package.json",xU=[]});function pb(r){let e=r.split(".").map(t=>{let n=t.match(/^\d+/);return n?Number(n[0]):Number.NaN});return e.some(Number.isNaN)?void 0:e}function Or(r){return(typeof r=="string"?r.trim():"")||void 0}function zo(r,e){if(!r||!e)return;let t=pb(r),n=pb(e);if(!t||!n)return;let o=Math.max(t.length,n.length);for(let i=0;i<o;i++){let a=t[i]??0,s=n[i]??0;if(a!==s)return a>s?1:-1}return 0}function Ya(r,e){if(!r)return!0;let t=zo(r,e);return t===void 0?r!==e:t<0}function Xa(r,e){let t=zo(r,e);return t!==void 0&&t>0}var $i=xe(()=>{});var Cn,ug=xe(()=>{Cn=class extends Error{constructor(e,t){super(`${e} at position ${t}`),this.position=t}}});function fb(r){return/^[0-9A-Fa-f]$/.test(r)}function Jo(r){return r>="0"&&r<="9"}function hb(r){return r>=" "}function zc(r){return`,:[]/{}()
|
|
9
|
+
+`.includes(r)}function dg(r){return r>="a"&&r<="z"||r>="A"&&r<="Z"||r==="_"||r==="$"}function pg(r){return r>="a"&&r<="z"||r>="A"&&r<="Z"||r==="_"||r==="$"||r>="0"&&r<="9"}function hg(r){return`,[]/{}
|
|
10
|
+
+`.includes(r)}function gg(r){return Kc(r)||t$.test(r)}function gb(r){return r===`
|
|
11
|
+
`||r==="\r"||r===" "||r==="\b"||r==="\f"}function Ko(r,e){let t=r.charCodeAt(e);return t===32||t===10||t===9||t===13}function yb(r,e){let t=r.charCodeAt(e);return t===32||t===9||t===13}function Cb(r,e){let t=r.charCodeAt(e);return t===160||t>=8192&&t<=8202||t===8239||t===8287||t===12288}function Kc(r){return yg(r)||wd(r)}function yg(r){return r==='"'||r==="\u201C"||r==="\u201D"}function Cg(r){return r==='"'}function wd(r){return r==="'"||r==="\u2018"||r==="\u2019"||r==="`"||r==="\xB4"}function Sg(r){return r==="'"}function Za(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=r.lastIndexOf(e);return n!==-1?r.substring(0,n)+(t?"":r.substring(n+1)):r}function Kr(r,e){let t=r.length;if(!Ko(r,t-1))return r+e;for(;Ko(r,t-1);)t--;return r.substring(0,t)+e+r.substring(t)}function Sb(r,e,t){return r.substring(0,e)+r.substring(e+t)}function vb(r){return/[,\n][ \t\r]*$/.test(r)}var mg,fg,t$,kb=xe(()=>{mg=/^(http|https|ftp|mailto|file|data|irc):\/\/$/,fg=/^[A-Za-z0-9-._~:/?#@!$&'()*+;=]$/;t$=/^[[{\w-]$/});function wb(r){let e=0,t="";l(["```","[```","{```"]),i()||G(),l(["```","```]","```}"]);let o=p(",");for(o&&a(),gg(r[e])&&vb(t)?(o||(t=Kr(t,",")),S()):o&&(t=Za(t,","));r[e]==="}"||r[e]==="]";)e++,a();if(e>=r.length)return t;B();function i(){a();let U=y()||C()||w()||k()||v()||R(!1)||Q();return a(),U}function a(){let U=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,z=e,he=s(U);do he=c(),he&&(he=s(U));while(he);return e>z}function s(U){let z=U?Ko:yb,he="";for(;;)if(z(r,e))he+=r[e],e++;else if(Cb(r,e))he+=" ",e++;else break;return he.length>0?(t+=he,!0):!1}function c(){if(r[e]==="/"&&r[e+1]==="*"){for(;e<r.length&&!o$(r,e);)e++;return e+=2,!0}if(r[e]==="/"&&r[e+1]==="/"){for(;e<r.length&&r[e]!==`
|
|
12
|
+
`;)e++;return!0}return!1}function l(U){if(u(U)){if(dg(r[e]))for(;e<r.length&&pg(r[e]);)e++;return a(),!0}return!1}function u(U){s(!0);for(let z of U){let he=e+z.length;if(r.slice(e,he)===z)return e=he,!0}return!1}function p(U){return r[e]===U?(t+=r[e],e++,!0):!1}function g(U){return r[e]===U?(e++,!0):!1}function m(){return g("\\")}function f(){return a(),r[e]==="."&&r[e+1]==="."&&r[e+2]==="."?(e+=3,a(),g(","),!0):!1}function y(){if(r[e]==="{"){t+="{",e++,a(),g(",")&&a();let U=!0;for(;e<r.length&&r[e]!=="}";){let z;if(U?(z=!0,U=!1):(z=p(","),z||(t=Kr(t,",")),a()),f(),!(w()||R(!0))){r[e]==="}"||r[e]==="{"||r[e]==="]"||r[e]==="["||r[e]===void 0?t=Za(t,","):X();break}a();let Do=p(":"),sn=e>=r.length;Do||(gg(r[e])||sn?t=Kr(t,":"):pe()),i()||(Do||sn?t+="null":pe())}return r[e]==="}"?(t+="}",e++):t=Kr(t,"}"),!0}return!1}function C(){if(r[e]==="["){t+="[",e++,a(),g(",")&&a();let U=!0;for(;e<r.length&&r[e]!=="]";)if(U?U=!1:p(",")||(t=Kr(t,",")),f(),!i()){t=Za(t,",");break}return r[e]==="]"?(t+="]",e++):t=Kr(t,"]"),!0}return!1}function S(){let U=!0,z=!0;for(;z;)U?U=!1:p(",")||(t=Kr(t,",")),z=i();z||(t=Za(t,",")),t=`[
|
|
13
13
|
${t}
|
|
14
|
-
]`}function w(){let
|
|
15
|
-
`,r:"\r",t:" "}});var
|
|
14
|
+
]`}function w(){let U=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,z=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,he=r[e]==="\\";if(he&&(e++,he=!0),Kc(r[e])){let Do=Cg(r[e])?Cg:Sg(r[e])?Sg:wd(r[e])?wd:yg,sn=e,Ve=t.length,we='"';for(e++;;){if(e>=r.length){let vt=x(e-1);return!U&&zc(r.charAt(vt))?(e=sn,t=t.substring(0,Ve),w(!0)):(we=Kr(we,'"'),t+=we,!0)}if(e===z)return we=Kr(we,'"'),t+=we,!0;if(Do(r[e])){let vt=e,pc=we.length;if(we+='"',e++,t+=we,a(!1),U||e>=r.length||zc(r[e])||Kc(r[e])||Jo(r[e]))return h(),!0;let Er=x(vt-1),vi=r.charAt(Er);if(vi===",")return e=sn,t=t.substring(0,Ve),w(!1,Er);if(zc(vi))return e=sn,t=t.substring(0,Ve),w(!0);t=t.substring(0,Ve),e=vt+1,we=`${we.substring(0,pc)}\\${we.substring(pc)}`}else if(U&&hg(r[e])){if(r[e-1]===":"&&mg.test(r.substring(sn+1,e+2)))for(;e<r.length&&fg.test(r[e]);)we+=r[e],e++;return we=Kr(we,'"'),t+=we,h(),!0}else if(r[e]==="\\"){let vt=r.charAt(e+1);if(n$[vt]!==void 0)we+=r.slice(e,e+2),e+=2;else if(vt==="u"){let Er=2;for(;Er<6&&fb(r[e+Er]);)Er++;Er===6?(we+=r.slice(e,e+6),e+=6):e+Er>=r.length?e=r.length:fe()}else we+=vt,e+=2}else{let vt=r.charAt(e);vt==='"'&&r[e-1]!=="\\"?(we+=`\\${vt}`,e++):gb(vt)?(we+=r$[vt],e++):(hb(vt)||oe(vt),we+=vt,e++)}he&&m()}}return!1}function h(){let U=!1;for(a();r[e]==="+";){U=!0,e++,a(),t=Za(t,'"',!0);let z=t.length;w()?t=Sb(t,z,1):t=Kr(t,'"')}return U}function k(){let U=e;if(r[e]==="-"){if(e++,H())return j(U),!0;if(!Jo(r[e]))return e=U,!1}for(;Jo(r[e]);)e++;if(r[e]==="."){if(e++,H())return j(U),!0;if(!Jo(r[e]))return e=U,!1;for(;Jo(r[e]);)e++}if(r[e]==="e"||r[e]==="E"){if(e++,(r[e]==="-"||r[e]==="+")&&e++,H())return j(U),!0;if(!Jo(r[e]))return e=U,!1;for(;Jo(r[e]);)e++}if(!H())return e=U,!1;if(e>U){let z=r.slice(U,e),he=/^0\d/.test(z);return t+=he?`"${z}"`:z,!0}return!1}function v(){return b("true","true")||b("false","false")||b("null","null")||b("True","true")||b("False","false")||b("None","null")}function b(U,z){return r.slice(e,e+U.length)===U?(t+=z,e+=U.length,!0):!1}function R(U){let z=e;if(dg(r[e])){for(;e<r.length&&pg(r[e]);)e++;let he=e;for(;Ko(r,he);)he++;if(r[he]==="(")return e=he+1,i(),r[e]===")"&&(e++,r[e]===";"&&e++),!0}for(;e<r.length&&!hg(r[e])&&!Kc(r[e])&&(!U||r[e]!==":");)e++;if(r[e-1]===":"&&mg.test(r.substring(z,e+2)))for(;e<r.length&&fg.test(r[e]);)e++;if(e>z){for(;Ko(r,e-1)&&e>0;)e--;let he=r.slice(z,e);return t+=he==="undefined"?"null":JSON.stringify(he),r[e]==='"'&&e++,!0}}function Q(){if(r[e]==="/"){let U=e;for(e++;e<r.length&&(r[e]!=="/"||r[e-1]==="\\");)e++;return e++,t+=`"${r.substring(U,e)}"`,!0}}function x(U){let z=U;for(;z>0&&Ko(r,z);)z--;return z}function H(){return e>=r.length||zc(r[e])||Ko(r,e)}function j(U){t+=`${r.slice(U,e)}0`}function oe(U){throw new Cn(`Invalid character ${JSON.stringify(U)}`,e)}function B(){throw new Cn(`Unexpected character ${JSON.stringify(r[e])}`,e)}function G(){throw new Cn("Unexpected end of json string",r.length)}function X(){throw new Cn("Object key expected",e)}function pe(){throw new Cn("Colon expected",e)}function fe(){let U=r.slice(e,e+6);throw new Cn(`Invalid unicode character "${U}"`,e)}}function o$(r,e){return r[e]==="*"&&r[e+1]==="/"}var r$,n$,Pb=xe(()=>{ug();kb();r$={"\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t"},n$={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
|
|
15
|
+
`,r:"\r",t:" "}});var Rb={};Xf(Rb,{JSONRepairError:()=>Cn,jsonrepair:()=>wb});var bb=xe(()=>{Pb();ug()});function Ab(r){return r!==void 0&&r.length>=20&&r.length<30&&!r.includes("/")&&!r.includes(".")}function Pd(r,e){let t=Lr.posix.dirname(ie(e));return Lr.join(ge(r,t),te)}function Rd(r){return Lr.posix.basename(ie(r))}function kg(r){for(let e=0;e<r.length;e++){let t=r.charCodeAt(e);if(t!==32&&t!==9&&t!==10&&t!==13)return!1}return!0}function Ob(r){if(kg(r))return!0;try{let e=JSON.parse(r);return W(e)&&Object.keys(e).length===0}catch{return!1}}async function wg(r){let e;try{e=await Jr.promises.stat(r)}catch(a){if(_(a))return!1;throw a}if(!e.isDirectory())return!1;let t=Lr.join(Lr.dirname(r),te),n;try{n=await Jr.promises.readFile(t,"utf-8")}catch(a){if(_(a))return!1;throw a}if(Ob(n))return!1;let o;try{o=JSON.parse(n)}catch{return!1}if(!W(o))return!1;let i=o[Lr.basename(r)];return W(i)}async function Lb(r){if(!await wg(r))return!0;let e=Lr.join(r,te);try{let t=await Jr.promises.readFile(e,"utf-8");return Ob(t)}catch(t){if(_(t))return!0;throw t}}async function bd(r){let e=Buffer.alloc(100),t=await Jr.promises.open(r,"r"),n;try{let{bytesRead:a}=await t.read(e,0,e.length,0);n=e.toString("utf-8",0,a)}finally{await t.close()}let o=_b.exec(n);if(o)return String(JSON.parse(o[1]));let i=await Jr.promises.readFile(r,"utf-8");return Qc(i)}function Qc(r){let e=r.slice(0,100),t=_b.exec(e);if(t)return String(JSON.parse(t[1]));let n=JSON.parse(r);return n.version==null?void 0:String(n.version)}async function Yc(r,e,t){let n=Pd(r,e);return await Vb(n),Nb(n,t)}async function vn(r,e){let t=ge(r,e);await Vb(t);try{let n=await Jr.promises.readFile(t,"utf-8");if(kg(n))return{dotMeta:{},exists:!0,readable:!0};try{return{dotMeta:Jc(t,n),exists:!0,readable:!0}}catch(o){try{let i=await Wb(n),a=Jc(t,i);return ji.debug(`read repaired damaged .meta file without writing: ${t}`,o),{dotMeta:a,exists:!0,readable:!1,damaged:!0,repairable:!0}}catch(i){return ji.debug(`failed to parse damaged .meta file without writing: ${t}`,i),{dotMeta:{},exists:!0,readable:!1,damaged:!0,repairable:!1}}}}catch(n){if(_(n))return ji.debug(`.meta file does not exist: ${t}`),{dotMeta:{},exists:!1,readable:!0};throw n}}async function Xc(r,e){let t=Pd(r,e);await xd(t,!0,n=>{delete n[Rd(e)]})}async function Ed(r,e,t){let n=ge(r,e),i=(co.get(n)??Promise.resolve()).catch(()=>{}).then(()=>Pg(n,t));co.set(n,i);try{await i}finally{co.get(n)===i&&co.delete(n)}}async function Nb(r,e={}){let t=e.strict??!1,n=e.silentMissing??!0;try{let o=await Jr.promises.readFile(r,"utf-8");return kg(o)?{}:await l$(r,o)}catch(o){if(_(o))return n||ji.debug(`read missing .meta as empty: ${r}`),{};if(t)throw new es(r,o);return ji.warn(`failed to read .meta file: ${r}`,o),{}}}async function l$(r,e){try{return Jc(r,e)}catch(t){let n=await Wb(e),o=Jc(r,n);return await Pg(r,o),ji.debug(`repaired invalid .meta file: ${r}`,t),o}}async function Wb(r){vg||(vg=Promise.resolve().then(()=>(bb(),Rb)));let e=await vg;for(let t of Ub(r))try{let n=e.jsonrepair(t);return Jc(".meta",n),n}catch(n){ji.debug("failed to repair .meta git conflict candidate",n)}return e.jsonrepair(r)}function Ub(r){let e=u$(r);if(!e)return[];let t=[d$(e.left,e.right),e.right,e.left],n=[];for(let o of t){let i=r.slice(0,e.start)+o+r.slice(e.end),a=Ub(i);a.length===0?n.push(i):n.push(...a)}return Array.from(new Set(n))}function u$(r){let e=r.indexOf("<<<<<<<");if(e<0)return;let t=r.indexOf(`
|
|
16
16
|
`,e),n=r.indexOf(`
|
|
17
17
|
=======`,t),o=r.indexOf(`
|
|
18
18
|
>>>>>>>`,n);if(t<0||n<0||o<0)return;let i=r.indexOf(`
|
|
19
|
-
`,o+1),a=i<0?r.length:i+1;return{start:e,end:a,left:r.slice(t+1,n),right:r.slice(n+8,o)}}function
|
|
20
|
-
`)}function ND(r){return/^\s*"([^"]+)"\s*:/.exec(r)?.[1]}function Ja(r,e){let t=JSON.parse(e);if(W(t))return t;throw new Fi(r,new Error(".meta root must be an object"))}async function je(r,e,t){return(await Qa(r,e,t))[Qc(e)]}async function Xa(r,e,t){let n=Jc(r,e.path);await tl(n,!1,o=>{o[Qc(e.path)]=Wt(e,t)})}async function Mv(r,e,t){let n=new Map;for(let o of e){let i=Jc(r,o.path),a=n.get(i);a?a.push(o):n.set(i,[o])}await Promise.all([...n].map(async([o,i])=>{await tl(o,!1,a=>{for(let s of i)a[Qc(s.path)]=Wt(s,t)})}))}async function Zc(r,e,t){let n=Zt.join(ce(r,e),X);await tl(n,!1,o=>{for(let[i,a]of Object.entries(t))a?o[i]=a:delete o[i]})}async function Oo(r){return(await Promise.all(r.map(async t=>(await lr.promises.stat(t)).isDirectory()?1+await xv(t):1))).reduce((t,n)=>t+n,0)}async function xv(r){let e=await lr.promises.readdir(r,{withFileTypes:!0});return(await Promise.all(e.filter(n=>n.name!==X).map(async n=>n.isDirectory()?1+await xv(Zt.join(r,n.name)):1))).reduce((n,o)=>n+o,0)}async function el(r){let e=(0,hv.createHash)("sha256");return await(0,yv.pipeline)(lr.createReadStream(r,{highWaterMark:64*1024}),new gv.Writable({write(t,n,o){e.update(t),o()}})),e.digest("hex")}function Wt(r,e){let t={};if(Rr(t,"id",r.id),Rr(t,"revision",r.revision),e?.writeContentInfo){if(r.size!==void 0){if(!Number.isSafeInteger(r.size)||r.size<0)throw new Error(`invalid file content size: ${r.path}`);t.size=r.size}if(r.hash!==void 0){let n=r.hash.trim().toLowerCase();if(!DD.test(n))throw new Error(`invalid file content hash: ${r.path}`);t.hash=n}}return Rr(t,"icon",r.icon),Rr(t,"desc",r.desc),r.isFolder&&r.type&&r.type!==FD&&(t.type=r.type),Rr(t,"order",r.order),Rr(t,"creator",r.creator),Rr(t,"createTime",r.createTime),Rr(t,"modifier",r.modifier),Rr(t,"modifyTime",r.modifyTime),r.hidden&&(t.hidden=!0),Rr(t,"subFileType",r.subFileType),Rr(t,"labels",r.labels),fv(t,"option",r.option),fv(t,"customOption",r.customOption),Fv(t)}function _o(r,e,t=!0){for(let n of vv)if(!(t&&AD.has(n))&&!WD(r,e,n))return!1;return!0}function WD(r,e,t){let n=r[t],o=e[t];return(n===""||n===!1)&&(n=void 0),(o===""||o===!1)&&(o=void 0),n===o?!0:t==="option"||t==="customOption"?(0,Cv.isDeepStrictEqual)(n,o)?!0:(n&&Object.keys(n).length===0&&(n=void 0),o&&Object.keys(o).length===0&&(o=void 0),n===o):!1}function Lo(r){if(!r)return{};let e={...r};for(let t of kv)delete e[t];return e}async function tl(r,e,t){let o=(gn.get(r)??Promise.resolve()).catch(()=>{}).then(async()=>{let i=await bv(r,{strict:e});t(i),await Qu(r,i)});gn.set(r,o);try{await o}finally{gn.get(r)===o&&gn.delete(r)}}async function Iv(r){let e=gn.get(r);e&&await e.catch(()=>{})}async function Qu(r,e){await It(r,JSON.stringify(UD(e),null,ID))}function UD(r){let e={};for(let t of Object.keys(r))e[t]=Fv(r[t]);return e}function Fv(r){let e={};for(let t of vv)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t]);return e}function Rr(r,e,t){t==null||t===""||typeof t=="number"&&t===0||(r[e]=t)}function fv(r,e,t){!t||Object.keys(t).length===0||(r[e]=t)}var lr,Zt,hv,gv,yv,Cv,Ao,X,ID,FD,Sv,DD,vv,kv,AD,gn,zu,Fi,Ge=ge(()=>{lr=E(require("fs")),Zt=E(require("path")),hv=require("node:crypto"),gv=require("node:stream"),yv=require("node:stream/promises"),Cv=require("node:util");$();J();F();Si();Z();tt();Ao=T("common.meta"),X=".meta",ID=" ",FD="fold",Sv=/"version"\s*:\s*("(?:\\.|[^"\\])*")/,DD=/^[0-9a-f]{64}$/,vv=["id","revision","size","hash","icon","desc","type","order","creator","createTime","modifier","modifyTime","hidden","subFileType","labels","option","customOption"],kv=["id","revision","size","hash","type","creator","createTime","modifier","modifyTime","subFileType"],AD=new Set(kv),gn=new Map,Fi=class extends Error{constructor(t,n){super(`invalid .meta file: ${t}`);this.filePath=t;this.cause=n;this.name="DotMetaParseError"}}});function Yu(r,e){return Dv.join(ce(r,e),Za)}async function nl(r,e){await rl.promises.mkdir(ce(r,e),{recursive:!0}),await rl.promises.writeFile(Yu(r,e),"","utf8")}async function ol(r,e){await rl.promises.rm(Yu(r,e),{force:!0})}function il(r,e){return ie(Yu(r,e))}var rl,Dv,Za,Di=ge(()=>{rl=E(require("fs")),Dv=E(require("path"));$();Za=".succapp-clone-in-progress"});var Qn,al,Av,Rt,No=ge(()=>{Qn=E(require("fs")),al=E(require("path"));$();Ge();F();J();Di();Di();Av=T("sync.mirror-store"),Rt=class{constructor(e){this.root=e}toLocalPath(e){return ce(this.root,e)}readMeta(e){return je(this.root,e)}readMetaStrict(e){return je(this.root,e,{strict:!0})}async writeMeta(e,t){t?.throwIfAborted(),await Xa(this.root,e,{writeContentInfo:!0})}async writeMetas(e,t){t?.throwIfAborted(),await Mv(this.root,e,{writeContentInfo:!0})}async patchMeta(e,t,n){n?.throwIfAborted(),await Zc(this.root,e,t)}async listDirectChildren(e){try{return(await Qn.promises.readdir(this.toLocalPath(e),{withFileTypes:!0})).filter(n=>n.name!==X&&!n.name.startsWith(".")).map(n=>({path:this.joinRemotePath(e,n.name),isFolder:n.isDirectory()}))}catch(t){if(x(t))return Av.debug(`mirror directory does not exist: ${e}`),[];throw t}}async listDirectMetaChildren(e){let t=await Qa(this.root,this.joinRemotePath(e,X));return Object.keys(t).map(n=>{let o=t[n];return{path:this.joinRemotePath(e,n),isFolder:!!o.type&&o.type!=="file",meta:o}})}async countMetaResources(e){if(!e)return Oo([this.root]);let t=await Promise.all(e.map(async i=>{let a=this.toLocalPath(i);return await ie(a)?a:void 0})),n=t.filter(i=>i!==void 0);return t.length-n.length+await Oo(n)}async exists(e){return ie(this.toLocalPath(e))}markCloneInProgress(e){return nl(this.root,e)}clearCloneInProgress(e){return ol(this.root,e)}isCloneInProgress(e){return il(this.root,e)}async isFolder(e){try{return(await Qn.promises.stat(this.toLocalPath(e))).isDirectory()}catch(t){if(x(t))return Av.debug(`mirror path is not a folder: ${e}`),!1;throw t}}async removePath(e,t){if(t?.throwIfAborted(),t){await this.removeLocalResource(this.toLocalPath(e),e,t);return}await Qn.promises.rm(this.toLocalPath(e),{force:!0,recursive:!0})}async removeLocalResource(e,t,n){let o;try{o=await Qn.promises.stat(e)}catch(a){if(x(a)){n?.step(1);return}throw a}if(!o.isDirectory()){await Qn.promises.rm(e,{force:!0}),n?.step(1);return}let i=await Qn.promises.readdir(e,{withFileTypes:!0});await Promise.all(i.filter(a=>a.name!==X).map(a=>(n?.throwIfAborted(),this.removeLocalResource(al.join(e,a.name),al.posix.join(t,a.name),n)))),await Qn.promises.rm(e,{force:!0,recursive:!0}),n?.step(1)}removeMeta(e){return Ya(this.root,e)}async listProjectPaths(){return(await this.listDirectChildren("/")).filter(t=>t.isFolder).map(t=>t.path).sort((t,n)=>t.localeCompare(n))}joinRemotePath(e,t){return e==="/"?"/"+t:e+"/"+t}}});var ve,be,Ft,jD,Zu,VD,pr,es=ge(()=>{ve=E(require("fs")),be=E(require("path"));$();Ge();J();F();fn();Di();Di();Ft=T("sync.workspace-store"),jD=8,Zu=20,VD=new Set([".git",ln,".agents","node_modules"]),pr=class{constructor(e,t){this.workspaceRoot=e;this.mirror=t}toLocalPath(e){return ce(this.workspaceRoot,e)}async countFiles(e,t={}){let n=t.limit;if(n!==void 0&&n<=0)return 0;let o=await Promise.all(e.map(async a=>{let s=this.toLocalPath(a),c;try{c=await ve.promises.stat(s)}catch(l){if(x(l)||tc(l))return 0;throw l}return c.isDirectory()?this.countDirectoryFiles(s,n):1})),i=0;for(let a of o)if(i+=a,n!==void 0&&i>=n)return i;return i}async writeMeta(e,t){t?.throwIfAborted(),await Xa(this.workspaceRoot,e)}async patchMeta(e,t,n){n?.throwIfAborted(),await Zc(this.workspaceRoot,e,t)}async deletePath(e,t){t?.throwIfAborted(),t?await this.removeLocalResource(this.toLocalPath(e),e,t):await ve.promises.rm(this.toLocalPath(e),{force:!0,recursive:!0});let n=be.dirname(this.toLocalPath(e));await ie(n)&&await Ya(this.workspaceRoot,e),t?.step(1)}async removeEmptyOrphanDirectory(e){let t=this.toLocalPath(e),n;try{n=await ve.promises.stat(t)}catch(s){if(x(s))return Ft.debug(`orphan cleanup skip missing: remotePath=${e}`),!1;throw s}if(!n.isDirectory())return Ft.debug(`orphan cleanup skip non-directory: remotePath=${e}`),!1;let i=(await ve.promises.readdir(t)).filter(s=>s!==X);if(i.length>0)return Ft.debug(`orphan cleanup skip non-empty: remotePath=${e} nonMetaChildren=${i.length} samples=${i.slice(0,5).join("|")}`),!1;await ve.promises.rm(t,{force:!0,recursive:!0});let a=be.dirname(t);return await ie(a)&&await Ya(this.workspaceRoot,e),Ft.debug(`orphan cleanup removed: remotePath=${e}`),!0}async countResources(e){return(await Promise.all(e.map(async n=>{let o=this.toLocalPath(n),i;try{i=await ie(o)?await Oo([o]):1}catch(a){if(!tc(a))throw a;i=1}return i+1}))).reduce((n,o)=>n+o,0)}async countCheckoutResources(e){let t=this.mirror.toLocalPath(e),n=await this.statCheckoutSource(t);if(!n)return 1;if(!n.isDirectory())return 2;let[o,i,a]=await Promise.all([this.countExistingResources(e),Oo([t]),this.countDirectories(t)]);return Math.max(o+i+a+1,1)}async statCheckoutSource(e){try{return await ve.promises.stat(e)}catch(t){if(x(t))return;throw t}}async copyMirrorContent(e,t){t?.throwIfAborted();let n=this.toLocalPath(e);await ve.promises.mkdir(be.dirname(n),{recursive:!0}),await ve.promises.copyFile(this.mirror.toLocalPath(e),n)}async checkoutFromMirror(e,t){t?.throwIfAborted();let n=Date.now(),o=this.mirror.toLocalPath(e),i=this.toLocalPath(e),s=(await ve.promises.stat(o)).isDirectory();if(Ft.debug(`checkout from mirror start: remotePath=${e} isFolder=${s} source=${o} target=${i}`),await this.copyMirrorMetaInfo(e,s),t?.step(1),s){await this.prepareCheckoutDirectory(e,t),await this.checkoutMirrorDirectory(e,t),Ft.debug(`checkout from mirror done: remotePath=${e} elapsed=${Date.now()-n}ms`);return}await this.copyMirrorContent(e),t?.step(1),Ft.debug(`checkout from mirror done: remotePath=${e} elapsed=${Date.now()-n}ms`)}async prepareCheckoutDirectory(e,t){t?.throwIfAborted();let n=this.toLocalPath(e),o=await ie(n);t&&o?await this.removeLocalResource(n,e,t):await ve.promises.rm(n,{force:!0,recursive:!0}),Ft.debug(`checkout prepared workspace target: remotePath=${e} targetExisted=${o}`)}async checkoutMirrorDirectory(e,t){let n=this.toLocalPath(e),o=new it({maxConcurrency:jD,signal:t?.getAbortSignal()});try{await this.copyMirrorDirectory(e,t,o),await o.waitAll()}catch(a){throw o.cancel(a),await o.waitAll(),a}Ft.debug(`checkout copied mirror tree: remotePath=${e}`),t?.step(1),await this.ensureFolderDotMetas(n,t,e);let i=await this.listResidualEntries(n);i.length>0&&Ft.info(`checkout from mirror left workspace-only entries: remotePath=${e} count=${i.length} samples=${i.slice(0,Zu).join("|")}`)}isCloneInProgress(e){return il(this.workspaceRoot,e)}async listResidualEntries(e){let t=be.join(this.mirror.toLocalPath("/"),be.relative(this.workspaceRoot,e)),n=[];return await this.collectResidualEntries(e,t,"",n),n}async collectResidualEntries(e,t,n,o){if(o.length>=Zu)return;let i;try{i=await ve.promises.readdir(e,{withFileTypes:!0})}catch{return}let a;try{a=new Set(await ve.promises.readdir(t))}catch{a=new Set}for(let s of i){if(s.name===X||s.name===Za||o.length>=Zu)continue;let c=n?`${n}/${s.name}`:s.name;if(!a.has(s.name)){o.push(c);continue}s.isDirectory()&&await this.collectResidualEntries(be.join(e,s.name),be.join(t,s.name),c,o)}}async copyMirrorDirectory(e,t,n){let o=this.mirror.toLocalPath(e),i=this.toLocalPath(e);await ve.promises.mkdir(i,{recursive:!0});let a=await ve.promises.readdir(o,{withFileTypes:!0});Ft.debug(`copy mirror dir: remotePath=${e} children=${a.length}`),await Promise.all(a.map(async s=>{if(t?.throwIfAborted(),s.name===Za)return;let c=be.join(o,s.name),l=be.join(i,s.name);if(s.isDirectory()){await this.copyMirrorDirectory(be.posix.join(e,s.name),t,n),t?.step(1);return}await n.addTask(async()=>{t?.throwIfAborted(),await ve.promises.mkdir(be.dirname(l),{recursive:!0}),await ve.promises.copyFile(c,l),s.name!==X&&t?.step(1)})}))}async countExistingResources(e){let t=this.toLocalPath(e);return await ie(t)?Oo([t]):0}async countDirectoryFiles(e,t){let n;try{n=await ve.promises.readdir(e,{withFileTypes:!0})}catch(c){if(x(c)||tc(c))return 0;throw c}let o=0,i=[];for(let c of n)c.name!==X&&(c.isDirectory()?VD.has(c.name)||i.push(c):o++);if(t!==void 0&&o>=t)return o;let a=await Promise.all(i.map(c=>this.countDirectoryFiles(be.join(e,c.name),t))),s=o;for(let c of a)if(s+=c,t!==void 0&&s>=t)return s;return s}toParentDotMetaPath(e){return this.toFolderDotMetaPath(be.posix.dirname(e))}toFolderDotMetaPath(e){return e==="/"?`/${X}`:`${e}/${X}`}async countDirectories(e){let t=await ve.promises.readdir(e,{withFileTypes:!0});return 1+(await Promise.all(t.filter(o=>o.isDirectory()).map(o=>this.countDirectories(be.join(e,o.name))))).reduce((o,i)=>o+i,0)}async removeLocalResource(e,t,n){let o;try{o=await ve.promises.stat(e)}catch(a){if(x(a)){n?.step(1);return}throw a}if(!o.isDirectory()){await ve.promises.rm(e,{force:!0}),n?.step(1);return}let i=await ve.promises.readdir(e,{withFileTypes:!0});Ft.debug(`remove local dir: remotePath=${t} children=${i.length}`+(i.length>0?` names=${i.slice(0,10).map(a=>a.name).join("|")}`:"")),await Promise.all(i.filter(a=>a.name!==X).map(a=>(n?.throwIfAborted(),this.removeLocalResource(be.join(e,a.name),be.posix.join(t,a.name),n)))),await ve.promises.rm(e,{force:!0,recursive:!0}),n?.step(1)}async copyMirrorMetaInfo(e,t,n){n?.throwIfAborted();let o=await je(this.mirror.root,e);o&&await Xa(this.workspaceRoot,{...o,id:o.id??"",path:e,parentDir:be.posix.dirname(e),name:be.posix.basename(e),isFolder:t})}async listProjectPaths(){try{let e=await ve.promises.readdir(this.workspaceRoot,{withFileTypes:!0});return(await Promise.all(e.filter(n=>n.isDirectory()&&!n.name.startsWith(".")).map(async n=>await this.hasProjectMetaFile(n.name)?"/"+n.name:void 0))).filter(n=>n!==void 0)}catch(e){if(x(e))return Ft.debug(`workspace root has no local projects yet: ${this.workspaceRoot}`),[];throw e}}async ensureFolderDotMetas(e,t,n){let o=await ve.promises.readdir(e,{withFileTypes:!0}),i=be.join(e,X);try{await ve.promises.access(i)}catch(a){if(!x(a))throw a;Ft.debug(`create missing folder .meta: ${i}`),await ve.promises.writeFile(i,"{}","utf-8")}t?.step(1),await Promise.all(o.filter(a=>a.isDirectory()).map(a=>this.ensureFolderDotMetas(be.join(e,a.name),t,n?be.posix.join(n,a.name):void 0)))}async hasProjectMetaFile(e){try{let t=be.join(this.workspaceRoot,e,X);return(await ve.promises.stat(t)).isFile()}catch(t){if(x(t))return Ft.debug(`project .meta does not exist: ${e}`),!1;throw t}}}});var Yn,Qe,BD,Ai,em=ge(()=>{Yn=E(require("fs")),Qe=E(require("path"));J();$();Ge();BD=T("sync.file-mutation-baseline"),Ai=class{constructor(e){this.options=e}workspaceMetaPatches=new Map;mirrorMetaPatches=new Map;physicalDeletes=new Set;mirrorPhysicalDeletes=new Set;mirrorFolderCreates=new Set;mirrorSubtreeSyncs=new Set;mirrorContentSyncs=new Set;authoritativeMetaPaths=new Set;deletedPaths=new Set;folderPathMutations=[];async apply(e,t){t?.throwIfAborted(),this.resetEffects(),await this.collectEffects(e),t?.throwIfAborted(),await this.applyPhysicalDeletes(),t?.throwIfAborted(),await this.applyMirrorFolderCreates(),t?.throwIfAborted(),await this.applyWorkspaceMetaPatches(t),t?.throwIfAborted(),await this.syncMirrorSubtrees(),t?.throwIfAborted(),await this.applyMirrorMetaPatches(t),t?.throwIfAborted(),await this.syncMirrorContents()}resetEffects(){this.workspaceMetaPatches=new Map,this.mirrorMetaPatches=new Map,this.physicalDeletes=new Set,this.mirrorPhysicalDeletes=new Set,this.mirrorFolderCreates=new Set,this.mirrorSubtreeSyncs=new Set,this.mirrorContentSyncs=new Set,this.authoritativeMetaPaths=new Set,this.deletedPaths=new Set,this.folderPathMutations=[]}async collectEffects(e){for(let t of e){if(!t.success)continue;let n=this.isNoWritableChangeResponse(t);await this.collectResponseEffects(t),n||await this.collectParentWatermarkEffects(t)}}async collectResponseEffects(e){if(e.pathMutation&&e.pathMutation!=="none"&&e.oldPath&&e.metaInfo){await this.collectPathMutationEffects(e);return}if(e.contentMutation==="deleted"){this.collectDeleteEffects(e);return}await this.collectContentOrMetaEffects(e)}async collectPathMutationEffects(e){let t=e.metaInfo,n=e.oldPath;if(this.mirrorPhysicalDeletes.add(n),this.addMetaPatch(this.workspaceMetaPatches,Qe.posix.dirname(n),Qe.posix.basename(n),void 0),this.addMetaPatch(this.mirrorMetaPatches,Qe.posix.dirname(n),Qe.posix.basename(n),void 0),this.addAuthoritativeMetaPatch(t),t.isFolder){this.folderPathMutations.push({oldPath:n,newPath:t.path}),this.collectMappedDeleteEffectsForFolderMove(n,t.path),this.mirrorSubtreeSyncs.add(t.path);for(let o of await this.getAuthoritativeDescendants(t.path))this.addAuthoritativeMetaPatch(o);return}this.mirrorContentSyncs.add(t.path)}collectDeleteEffects(e){let t=e.metaInfo?.path??e.path;this.deletedPaths.add(t),this.physicalDeletes.add(t);let n=Qe.posix.dirname(t),o=Qe.posix.basename(t);this.addMetaPatch(this.workspaceMetaPatches,n,o,void 0),this.addMetaPatch(this.mirrorMetaPatches,n,o,void 0);for(let i of this.folderPathMutations)this.collectMappedDeleteEffectsForFolderMove(i.oldPath,i.newPath)}collectMappedDeleteEffectsForFolderMove(e,t){for(let n of[...this.deletedPaths])this.collectMappedDeleteEffect(n,e,t)}collectMappedDeleteEffect(e,t,n){if(e===t||!re(e,t))return;let o=n+e.slice(t.length);this.addMetaPatch(this.workspaceMetaPatches,Qe.posix.dirname(o),Qe.posix.basename(o),void 0),this.addMetaPatch(this.mirrorMetaPatches,Qe.posix.dirname(o),Qe.posix.basename(o),void 0),this.deletedPaths.add(o)}async collectContentOrMetaEffects(e){let t=e.metaInfo;if(t){if(this.isNoWritableChangeResponse(e)){await this.collectNoWritableChangeEffects(t);return}this.addAuthoritativeMetaPatch(t),t.isFolder?this.mirrorFolderCreates.add(t.path):(e.contentMutation==="created"||e.contentMutation==="modified")&&this.mirrorContentSyncs.add(t.path)}}async collectNoWritableChangeEffects(e){await this.addBaselineOnlyMetaPatch(this.workspaceMetaPatches,this.options.workspace.workspaceRoot,e),await this.addBaselineOnlyMetaPatch(this.mirrorMetaPatches,this.options.mirror.root,e,{writeContentInfo:!0}),this.authoritativeMetaPaths.add(e.path)}async collectParentWatermarkEffects(e){if(typeof e.modifyTime!="number")return;let t=e.metaInfo?.path??e.path,n=e.oldPath?[e.oldPath,t]:[t];for(let o of this.getUniqueParentPaths(n))this.authoritativeMetaPaths.has(o)||await this.addParentWatermarkPatch(o,e.modifyTime)}async addParentWatermarkPatch(e,t){let n=Qe.posix.dirname(e),o=Qe.posix.basename(e);await this.addStoreParentWatermarkPatch(this.workspaceMetaPatches,this.options.workspace.workspaceRoot,e,n,o,t),await this.addStoreParentWatermarkPatch(this.mirrorMetaPatches,this.options.mirror.root,e,n,o,t)}async addStoreParentWatermarkPatch(e,t,n,o,i,a){let s=e.get(o);if(s&&Object.prototype.hasOwnProperty.call(s,i)){let u=s[i];u&&(s[i]={...u,modifyTime:a});return}let c=await je(t,n),l=this.toServerMetaFromExisting(n,c,a);if(!l)return;let p=e.get(o);p||(p={},e.set(o,p)),p[i]=Wt(l)}async applyPhysicalDeletes(){for(let e of this.physicalDeletes)await Yn.promises.rm(this.options.workspace.toLocalPath(e),{force:!0,recursive:!0}),await this.options.mirror.removePath(e);for(let e of this.mirrorPhysicalDeletes)await this.options.mirror.removePath(e)}async applyMirrorFolderCreates(){for(let e of this.mirrorFolderCreates)await Yn.promises.mkdir(this.options.mirror.toLocalPath(e),{recursive:!0})}async applyWorkspaceMetaPatches(e){for(let[t,n]of this.workspaceMetaPatches)this.isInsidePhysicalDelete(t)||await this.options.workspace.patchMeta(t,n,e)}async syncMirrorSubtrees(){for(let e of this.mirrorSubtreeSyncs)this.isInsidePhysicalDelete(e)||await this.syncWorkspaceSubtreeToMirror(e)}async applyMirrorMetaPatches(e){for(let[t,n]of this.mirrorMetaPatches)this.isInsidePhysicalDelete(t)||await this.options.mirror.patchMeta(t,n,e)}async syncMirrorContents(){for(let e of this.mirrorContentSyncs){let t=this.options.workspace.toLocalPath(e),n=this.options.mirror.toLocalPath(e);await Yn.promises.mkdir(Qe.dirname(n),{recursive:!0}),await Yn.promises.copyFile(t,n)}}addAuthoritativeMetaPatch(e){let t=Qe.posix.dirname(e.path),n=Qe.posix.basename(e.path);this.addMetaPatch(this.workspaceMetaPatches,t,n,this.toWorkspaceMetaInfo(e)),this.addMetaPatch(this.mirrorMetaPatches,t,n,this.toMirrorMetaInfo(e)),this.authoritativeMetaPaths.add(e.path)}async addBaselineOnlyMetaPatch(e,t,n,o){this.addMetaPatch(e,n.parentDir,n.name,this.toBaselineOnlyMetaInfo(n,await je(t,n.path),o))}toBaselineOnlyMetaInfo(e,t,n){if(!t)return Wt(e,n);let o=Wt(e,n);return{...t,...o.id!==void 0?{id:o.id}:{},...o.revision!==void 0?{revision:o.revision}:{},...o.modifyTime!==void 0?{modifyTime:o.modifyTime}:{},...n?.writeContentInfo&&o.size!==void 0?{size:o.size}:{},...n?.writeContentInfo&&o.hash!==void 0?{hash:o.hash}:{}}}toWorkspaceMetaInfo(e){return Wt(e)}toMirrorMetaInfo(e){return Wt(e,{writeContentInfo:!0})}isNoWritableChangeResponse(e){return e.contentMutation==="none"&&(e.pathMutation===void 0||e.pathMutation==="none")&&e.metaInfoChanged===!1}async getAuthoritativeDescendants(e){try{return await(await this.options.getApiClient()).getFileDescendant(e)}catch(t){return BD.warn(`failed to fetch authoritative descendants after folder mutation: ${e}`,t),[]}}async syncWorkspaceSubtreeToMirror(e){let t=this.options.workspace.toLocalPath(e),n=this.options.mirror.toLocalPath(e);await Yn.promises.rm(n,{force:!0,recursive:!0}),await Yn.promises.mkdir(Qe.dirname(n),{recursive:!0}),await Yn.promises.cp(t,n,{force:!0,recursive:!0})}addMetaPatch(e,t,n,o){let i=e.get(t);i||(i={},e.set(t,i)),i[n]=o}isInsidePhysicalDelete(e){return[...this.physicalDeletes,...this.mirrorPhysicalDeletes].some(t=>re(e,t))}getUniqueParentPaths(e){let t=new Set;for(let n of e)for(let o of this.getParentPaths(n))t.add(o);return[...t]}getParentPaths(e){let t=e.replace(/^\/+|\/+$/g,"").split("/").filter(Boolean),n=[];for(let o=0;o<t.length-1;o++)n.push("/"+t.slice(0,o+1).join("/"));return n}toServerMetaFromExisting(e,t,n){if(t)return{...t,id:t.id??e,path:e,parentDir:Qe.posix.dirname(e),name:Qe.posix.basename(e),isFolder:!0,type:t.type??"fold",modifyTime:n}}}});var Wo,Oi,tm=ge(()=>{Wo=E(require("path"));F();_();$();Oi=class{constructor(e){this.options=e}async resolve(e,t){let n=Wo.resolve(this.options.workspaceRoot),o=Wo.resolve(e);if(o===n||o.startsWith(n+Wo.sep))return this.requireMetaPath(e);if(Wo.isAbsolute(e)){let i=pe(e);if(await this.isKnownRemoteProjectPath(i,t))return i;throw new Kt("err.sync.pathOutOfScope",{remotePath:e,reason:"notInSyncScope"},{style:"warn"})}return pe(e)}requireMetaPath(e){let t=Vr(this.options.workspaceRoot,e);if(!t)throw new Error(`file is not in sync scope: ${e}`);return pe(t)}async isKnownRemoteProjectPath(e,t){let n=ze(e);if(!n)return!1;let o=n.replace(/^\//,"");if(t==="server-backed")return(await this.options.getServerProjects()).some(c=>c.name===o);let[i,a]=await Promise.all([this.options.workspace.listProjectPaths(),this.options.mirror.listProjectPaths()]);return i.includes(n)||a.includes(n)}}});var rm,_i,nm=ge(()=>{rm=E(require("fs"));F();Ge();xi();_i=class{client;constructor(e){this.client=e.client}async upgradeContent(e){let t=this.createContentBaseResult(e),n=e.versionInfo;if(!n?.upgradeSupported)return{...t,reason:"unsupported"};let o=n.contentVersion;if(!o)return{...t,reason:"unsupported"};let i;try{i=e.currentVersion??Ju(e.content)}catch(l){return{...t,reason:"invalidContent",errorInfo:l}}let a={...t,currentVersion:i,targetVersion:o};if(zc(i,o))return{...a,reason:"newerVersion"};if(!Hc(i,o))return{...a,reason:"upToDate"};let s={...a,upgradeRequired:!0};if(e.dryRun)return s;let c;try{c=await this.client.upgradeFileContent({path:e.path,content:e.content})}catch(l){return{...s,reason:"upgradeFailed",errorInfo:l}}return!c.changed||c.content===e.content?{...s,reason:"upToDate"}:{...s,content:c.content,changed:!0}}async upgradeFile(e){let t;if(e.content!==void 0)t=e.content;else try{t=await rm.promises.readFile(e.localPath,"utf-8")}catch(o){return{path:e.path,localPath:e.localPath,targetVersion:e.versionInfo?.contentVersion,content:"",changed:!1,upgradeRequired:!1,reason:x(o)?"fileNotFound":"readFailed",errorInfo:o}}let n=await this.upgradeContent({path:e.path,content:t,versionInfo:e.versionInfo,currentVersion:e.currentVersion,dryRun:e.dryRun});if(!n.changed||e.dryRun)return{...n,localPath:e.localPath};try{return await rm.promises.writeFile(e.localPath,n.content,"utf-8"),{...n,localPath:e.localPath}}catch(o){return{...n,localPath:e.localPath,changed:!1,reason:"writeFailed",errorInfo:o}}}createContentBaseResult(e){return{path:e.path,targetVersion:e.versionInfo?.contentVersion,content:e.content,changed:!1,upgradeRequired:!1}}}});var Nv={};Ed(Nv,{SyncCommandUpgradeMetadata:()=>ts});var om,Xn,Ov,_v,Lv,qD,yn,ts,im=ge(()=>{om=E(require("fs")),Xn=E(require("path"));F();J();D();Ge();fn();$();ft();nm();Ov=8,_v=5,Lv=95,qD=new Set(Cc),yn=T("sync.upgrade-metadata"),ts=class extends Ve{upgrader=new _i({client:{upgradeFileContent:async e=>(await this.getApiClient()).upgradeFileContent(e)}});scannedContent=new Map;async execute(){let e=await this.resolveInputTargetPaths();if(e.length===0)return this.createResult();let t=this.formatTargetScope(e);if(this.options.dryRun?(yn.info("metadata version check start: {0}",t),yn.info("scan metadata version files")):(yn.info("metadata upgrade start: {0}",t),yn.info("scan metadata upgrade files")),this.options.dryRun){let s=await this.scanCandidates(e,this.task,{finish:!1,retainOnFinish:!0});return this.task.setMessage(d("workspace.sync.progress.upgradeMeta.checked",s.checked,s.candidates.length)),this.task.finish(),s}this.task.start(_v+Lv,{message:d("workspace.sync.progress.upgradeMeta.apply"),retainOnFinish:!0});let n=this.task.subTaskMonitor(_v),o=this.task.subTaskMonitor(Lv),i=await this.scanCandidates(e,n);await this.options.onChecked?.(i);let a=this.createUpgradeResult(i);return await this.upgradeCandidates(a,o),this.sortResult(a),yn.info("metadata upgrade done: changed={0} candidates={1} skipped={2} failures={3} checked={4}",a.changed.length,a.candidates.length,a.skipped.length,a.failures.length,a.checked),this.task.setMessage(d("workspace.sync.progress.upgradeMeta.done",a.changed.length,a.failures.length,a.checked)),this.task.finish(),a}formatTargetScope(e){return e.length===1?e[0]:`targets=${e.length}`}async resolveInputTargetPaths(){if(!this.options.paths||this.options.paths.length===0)return this.resolveDefaultTargetPaths();let e=new Set;for(let t of this.options.paths){this.task.throwIfAborted();let n=await this.resolveInputMetaPath(t);n&&e.add(n)}return wt(e)}async resolveDefaultTargetPaths(){let e=await this.createWorkspaceStore().listProjectPaths();return wt(new Set(e))}async resolveInputMetaPath(e){if(e==="/")return"/";let t=Vr(this.context.root,e);if(t)return t;if(!(Xn.isAbsolute(e)&&await ie(e))&&e.startsWith("/"))return pe(e)}async scanCandidates(e,t,n={}){let o=new it(Ov),i=this.createResult(),a=[],s=0,c=l=>{s++,a.push(async()=>this.checkFile(l,i))};return await Promise.all(e.map(l=>this.scanInputPath(l,c))),t.start(Math.max(s,1),{message:d("workspace.sync.progress.upgradeMeta.scan"),retainOnFinish:n.retainOnFinish===!0}),await Promise.all(a.map(l=>o.addTask(async()=>{try{t.throwIfAborted(),await l()}finally{t.step()}}))),await o.waitAll(),n.finish!==!1&&t.finish(),this.sortResult(i),yn.info("metadata version check done: candidates={0} skipped={1} failures={2} checked={3}",i.candidates.length,i.skipped.length,i.failures.length,i.checked),i}async upgradeCandidates(e,t){let n=e.candidates.length;if(n===0){t.finish();return}yn.info("metadata upgrade apply start: candidates={0}",n),t.start(n,{message:d("workspace.sync.progress.upgradeMeta.apply")});let o=new it(Ov),i=0;await Promise.all(e.candidates.map(a=>o.addTask(async()=>{try{t.throwIfAborted();let s=await this.upgradeCandidate(a,e);i++,await this.options.onFileUpgraded?.({...s,index:i,total:n})}finally{t.step()}}))),await o.waitAll(),t.finish()}async scanInputPath(e,t){let n=pe(e),o=ce(this.context.root,n);try{if((await om.promises.stat(o)).isDirectory()){(this.options.recursive??!0)&&await this.scanDirectory(n,o,t);return}if(Xn.basename(o)===X)return;t({path:n,localPath:o})}catch(i){if(x(i)){t({path:n,localPath:o});return}throw i}}async scanDirectory(e,t,n){let o=(await om.promises.readdir(t,{withFileTypes:!0})).sort((a,s)=>a.name.localeCompare(s.name)),i=[];for(let a of o){if(this.task.throwIfAborted(),a.name===X)continue;let s=Xn.join(t,a.name),c=pe(Xn.posix.join(e,a.name));if(a.isDirectory()){qD.has(a.name)||i.push(this.scanDirectory(c,s,n));continue}n({path:c,localPath:s})}await Promise.all(i)}createResult(){return{checked:0,candidates:[],changed:[],skipped:[],failures:[]}}createUpgradeResult(e){return{checked:e.checked,candidates:[...e.candidates],changed:[],skipped:[...e.skipped],failures:[...e.failures]}}sortResult(e){let t=(n,o)=>n.remotePath.localeCompare(o.remotePath);e.candidates.sort(t),e.changed.sort(t),e.skipped.sort(t),e.failures.sort(t)}async checkFile(e,t){let n=(await this.context.getMetadataVersionCatalog()).getInfoByPath(e.path);if(!n?.upgradeSupported)return;t.checked++;let o=await this.upgrader.upgradeFile({path:e.path,localPath:e.localPath,versionInfo:n,dryRun:!0}),i=this.createItemResult(o);if(o.upgradeRequired&&(t.candidates.push(i),this.scannedContent.set(e.localPath,{content:o.content,currentVersion:o.currentVersion})),!o.reason){o.upgradeRequired&&this.logMetadataFile(i,"candidate","check");return}if(this.isSkippedReason(o.reason)){t.skipped.push({...i,reason:o.reason}),this.logMetadataFile(i,o.reason,"check");return}this.logUpgradeFailure(e.path,o.errorInfo),t.failures.push({...i,reason:o.reason,errorInfo:o.errorInfo})}async upgradeCandidate(e,t){let n=(await this.context.getMetadataVersionCatalog()).getInfoByPath(e.remotePath),o=this.scannedContent.get(e.localPath),i=await this.upgrader.upgradeFile({path:e.remotePath,localPath:e.localPath,versionInfo:n,content:o?.content,currentVersion:o?.currentVersion}),a=this.createItemResult(i);if(i.changed){let c={...a,changed:!0};return t.changed.push(c),this.logMetadataFile(a,"changed","upgrade"),{item:c,status:"upgraded"}}if(i.reason&&this.isSkippedReason(i.reason)){let c={...a,reason:i.reason};return t.skipped.push(c),this.logMetadataFile(a,i.reason,"upgrade"),{item:c,status:"skipped"}}if(!i.reason){let c={...a,reason:"upToDate"};return t.skipped.push(c),this.logMetadataFile(a,"upToDate","upgrade"),{item:c,status:"skipped"}}this.logUpgradeFailure(e.remotePath,i.errorInfo);let s={...a,reason:i.reason,errorInfo:i.errorInfo};return t.failures.push(s),{item:s,status:"failed"}}logUpgradeFailure(e,t){yn.error("metadata upgrade failed: {0}",e,t)}logMetadataFile(e,t,n){yn.info("{0}: {1} current={2} target={3} result={4}",n==="check"?"metadata version check file":"metadata upgrade file",e.remotePath,e.currentVersion??"",e.targetVersion??"",t)}createItemResult(e){return{remotePath:e.path,localPath:e.localPath,currentVersion:e.currentVersion,targetVersion:e.targetVersion}}isSkippedReason(e){return e==="upToDate"||e==="newerVersion"}}});async function cl(r,e,t){if(t.length===0)return[];let n=(im(),Yg(Nv)),{SyncCommandUpgradeMetadata:o}=n;return(await new o(r,{paths:t,dryRun:!0,task:e}).execute()).candidates}async function Bv(r){return jC(r)?GD(r):!1}async function GD(r){let e=jv.createReadStream(r,{encoding:"utf-8"}),t=Vv.createInterface({input:e,crlfDelay:1/0}),n="start",o=0;try{for await(let i of t){let a=$D.exec(i);if(a){n="separator",o=a[1].length;continue}if(n==="start")continue;let s=HD.exec(i);if(n==="separator"&&s?.[1].length===o){n="end";continue}let c=zD.exec(i);if(n==="end"&&c?.[1].length===o)return!0}return!1}finally{t.close(),e.destroy()}}function rs(r){let e=new Set([r.remotePath]);return r.oldRemotePath&&e.add(r.oldRemotePath),[...e]}function ll(r){let e=new Set;for(let t of r)for(let n of rs(t))e.add(n);return[...e]}function qv(r){return wt(new Set(ll(r)))}function $v(r){let e=new Set;for(let t of r)for(let n of rs(t))KD(e,n);return[...e].sort()}function KD(r,e){let t=Li.posix.dirname(e);for(;;){if(r.add(JD(t)),t==="/")return;t=Li.posix.dirname(t)}}function JD(r){return r==="/"?"/"+X:r+"/"+X}function ht(r){return r.type==="added"||r.type==="modified"||r.type==="deleted"||r.type==="renamed"||r.type==="conflict"}function Er(r){return r.type==="remoteAdded"||r.type==="remoteModified"||r.type==="remoteDeleted"||r.type==="remoteRenamed"||r.type==="conflict"}function am(r){return r.type!=="remoteRenamed"||!r.isFolder||!r.oldRemotePath?!1:ze(r.remotePath)===r.remotePath&&ze(r.oldRemotePath)===r.oldRemotePath}function sm(r){return r.type!=="remoteRenamed"||!r.oldRemotePath?!1:ze(r.remotePath)!==ze(r.oldRemotePath)}function ns(r){let e=r.filter(n=>Er(n)),t=new Set(ll(e.filter(n=>n.type!=="conflict")));return t.size===0?e:e.filter(n=>n.type!=="conflict"||!rs(n).some(o=>t.has(o)))}function sl(r){return!!r.isFolder&&(r.type==="added"||r.type==="deleted"||r.type==="renamed"||r.type==="remoteAdded"||r.type==="remoteDeleted"||r.type==="remoteRenamed")}function cm(r,e){return e.some(t=>re(r.remotePath,t)||!!r.oldRemotePath&&re(r.oldRemotePath,t))}function Ni(r){let e=new Set(r.map(pe));return t=>Wv(t.remotePath,e)||!!t.oldRemotePath&&Wv(t.oldRemotePath,e)}function Wv(r,e){let t=pe(r);for(;;){if(e.has(t))return!0;if(t==="/")return!1;t=Li.posix.dirname(t)}}function Hv(r,e){return e.some(t=>r.remotePath===t||r.oldRemotePath===t)}function pl(r){return[r.type,r.remotePath,r.oldRemotePath??""].join("\0")}function zv(r,e){let t=[];for(let n of e)r.some(o=>QD(o,n))&&t.push({path:n.path,remotePath:n.remotePath,...n.fileId!==void 0?{fileId:n.fileId}:{},oldPath:n.oldPath,oldRemotePath:n.oldRemotePath,type:"conflict",isFolder:n.isFolder,contentChanged:n.contentChanged,metaChanged:n.metaChanged});return t}function QD(r,e){return jn(r.remotePath,r.oldRemotePath,e.remotePath,e.oldRemotePath)?YD(r,e):!1}function YD(r,e){return Uv(r)&&Uv(e)||!!r.metaChanged&&!!e.metaChanged||sl(r)||sl(e)}function Uv(r){return r.contentChanged===!0||r.type==="added"||r.type==="deleted"||r.type==="renamed"||r.type==="remoteAdded"||r.type==="remoteDeleted"||r.type==="remoteRenamed"?!0:r.contentChanged===void 0&&r.metaChanged===void 0&&(r.type==="modified"||r.type==="remoteModified")}var jv,Li,Vv,$D,HD,zD,Tr=ge(()=>{jv=E(require("fs")),Li=E(require("path")),Vv=E(require("readline"));Ge();Si();$();tr();$D=/^(<{7,})(?:\s.*)?$/,HD=/^(={7,})$/,zD=/^(>{7,})(?:\s.*)?$/});function Gv(r){let e=r.map(o=>o.remotePath),t=e.slice(0,XD),n=e.length-t.length;return n<=0?t.join(", "):`${t.join(", ")} (+${n})`}var lm,os,XD,Wi,Ui,Ut,Ve,ft=ge(()=>{lm=E(require("path"));$();No();es();em();tm();Tr();tr();qr();F();_();J();os=T("sync.command"),XD=3,Wi=class{runs=0;durationMs=0;api={total:0,byApi:{},byPath:{},droppedPathKeys:0,recentCallsDropped:0};startRun(){return this.runs++,Date.now()}finishRun(e){this.durationMs+=Date.now()-e}captureApiDiagnostics(e){this.api=e}describeForLog(){return`
|
|
21
|
-
`+JSON.stringify(this.createSnapshot(),null,2).replace(/^\{\n/,"").replace(/\n\}$/,"")}},
|
|
19
|
+
`,o+1),a=i<0?r.length:i+1;return{start:e,end:a,left:r.slice(t+1,n),right:r.slice(n+8,o)}}function d$(r,e){let t=new Map;for(let o of[...r.split(/\r?\n/),...e.split(/\r?\n/)]){let i=p$(o);i&&t.set(i,o)}if(t.size===0)return e;let n=Array.from(t.values());return n.map((o,i)=>i>=n.length-1||/,\s*$/.test(o)?o:o+",").join(`
|
|
20
|
+
`)}function p$(r){return/^\s*"([^"]+)"\s*:/.exec(r)?.[1]}function Jc(r,e){let t=JSON.parse(e);if(W(t))return t;throw new es(r,new Error(".meta root must be an object"))}async function ot(r,e,t){return(await Yc(r,e,t))[Rd(e)]}async function Zc(r,e,t){let n=Pd(r,e.path);await xd(n,!1,o=>{o[Rd(e.path)]=fr(e,t)})}async function $b(r,e,t){let n=new Map;for(let o of e){let i=Pd(r,o.path),a=n.get(i);a?a.push(o):n.set(i,[o])}await Promise.all([...n].map(async([o,i])=>{await xd(o,!1,a=>{for(let s of i)a[Rd(s.path)]=fr(s,t)})}))}async function Td(r,e,t){let n=Lr.join(ge(r,e),te);await xd(n,!1,o=>{for(let[i,a]of Object.entries(t))a?o[i]=a:delete o[i]})}async function Vi(r){return(await Promise.all(r.map(async t=>(await Jr.promises.stat(t)).isDirectory()?1+await jb(t):1))).reduce((t,n)=>t+n,0)}async function jb(r){let e=await Jr.promises.readdir(r,{withFileTypes:!0});return(await Promise.all(e.filter(n=>n.name!==te).map(async n=>n.isDirectory()?1+await jb(Lr.join(r,n.name)):1))).reduce((n,o)=>n+o,0)}async function Md(r){let e=(0,Tb.createHash)("sha256");return await(0,xb.pipeline)(Jr.createReadStream(r,{highWaterMark:64*1024}),new Mb.Writable({write(t,n,o){e.update(t),o()}})),e.digest("hex")}function fr(r,e){let t={};if(Sn(t,"id",r.id),Sn(t,"revision",r.revision),e?.writeContentInfo){if(r.size!==void 0){if(!Number.isSafeInteger(r.size)||r.size<0)throw new Error(`invalid file content size: ${r.path}`);t.size=r.size}if(r.hash!==void 0){let n=r.hash.trim().toLowerCase();if(!s$.test(n))throw new Error(`invalid file content hash: ${r.path}`);t.hash=n}}return Sn(t,"icon",r.icon),Sn(t,"desc",r.desc),r.isFolder&&r.type&&r.type!==a$&&(t.type=r.type),Sn(t,"order",r.order),Sn(t,"creator",r.creator),Sn(t,"createTime",r.createTime),Sn(t,"modifier",r.modifier),Sn(t,"modifyTime",r.modifyTime),r.hidden&&(t.hidden=!0),Sn(t,"subFileType",r.subFileType),Sn(t,"labels",r.labels),Eb(t,"option",r.option),Eb(t,"customOption",r.customOption),qb(t)}function qi(r,e,t=!0){for(let n of Db)if(!(t&&c$.has(n))&&!m$(r,e,n))return!1;return!0}function m$(r,e,t){let n=r[t],o=e[t];return(n===""||n===!1)&&(n=void 0),(o===""||o===!1)&&(o=void 0),n===o?!0:t==="option"||t==="customOption"?(0,Ib.isDeepStrictEqual)(n,o)?!0:(n&&Object.keys(n).length===0&&(n=void 0),o&&Object.keys(o).length===0&&(o=void 0),n===o):!1}function Bi(r){if(!r)return{};let e={...r};for(let t of Fb)delete e[t];return e}async function xd(r,e,t){let o=(co.get(r)??Promise.resolve()).catch(()=>{}).then(async()=>{let i=await Nb(r,{strict:e});t(i),await Pg(r,i)});co.set(r,o);try{await o}finally{co.get(r)===o&&co.delete(r)}}async function Vb(r){let e=co.get(r);e&&await e.catch(()=>{})}async function Pg(r,e){await rr(r,JSON.stringify(f$(e),null,i$))}function f$(r){let e={};for(let t of Object.keys(r))e[t]=qb(r[t]);return e}function qb(r){let e={};for(let t of Db)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t]);return e}function Sn(r,e,t){t==null||t===""||typeof t=="number"&&t===0||(r[e]=t)}function Eb(r,e,t){!t||Object.keys(t).length===0||(r[e]=t)}var Jr,Lr,Tb,Mb,xb,Ib,ji,te,i$,a$,_b,s$,Db,Fb,c$,co,vg,es,it=xe(()=>{Jr=E(require("fs")),Lr=E(require("path")),Tb=require("node:crypto"),Mb=require("node:stream"),xb=require("node:stream/promises"),Ib=require("node:util");V();Y();F();$c();re();nt();ji=M("common.meta"),te=".meta",i$=" ",a$="fold",_b=/"version"\s*:\s*("(?:\\.|[^"\\])*")/,s$=/^[0-9a-f]{64}$/,Db=["id","revision","size","hash","icon","desc","type","order","creator","createTime","modifier","modifyTime","hidden","subFileType","labels","option","customOption"],Fb=["id","revision","size","hash","type","creator","createTime","modifier","modifyTime","subFileType"],c$=new Set(Fb),co=new Map,es=class extends Error{constructor(t,n){super(`invalid .meta file: ${t}`);this.filePath=t;this.cause=n;this.name="DotMetaParseError"}}});function Rg(r,e){return Bb.join(ge(r,e),el)}async function _d(r,e){await Id.promises.mkdir(ge(r,e),{recursive:!0}),await Id.promises.writeFile(Rg(r,e),"","utf8")}async function Dd(r,e){await Id.promises.rm(Rg(r,e),{force:!0})}function Fd(r,e){return Se(Rg(r,e))}var Id,Bb,el,ts=xe(()=>{Id=E(require("fs")),Bb=E(require("path"));V();el=".succapp-clone-in-progress"});var Qo,Ad,Hb,zt,Hi=xe(()=>{Qo=E(require("fs")),Ad=E(require("path"));V();it();F();Y();ts();ts();Hb=M("sync.mirror-store"),zt=class{constructor(e){this.root=e}toLocalPath(e){return ge(this.root,e)}readMeta(e){return ot(this.root,e)}readMetaStrict(e){return ot(this.root,e,{strict:!0})}async writeMeta(e,t){t?.throwIfAborted(),await Zc(this.root,e,{writeContentInfo:!0})}async writeMetas(e,t){t?.throwIfAborted(),await $b(this.root,e,{writeContentInfo:!0})}async patchMeta(e,t,n){n?.throwIfAborted(),await Td(this.root,e,t)}async listDirectChildren(e){try{return(await Qo.promises.readdir(this.toLocalPath(e),{withFileTypes:!0})).filter(n=>n.name!==te&&!n.name.startsWith(".")).map(n=>({path:this.joinRemotePath(e,n.name),isFolder:n.isDirectory()}))}catch(t){if(_(t))return Hb.debug(`mirror directory does not exist: ${e}`),[];throw t}}async listDirectMetaChildren(e){let t=await Yc(this.root,this.joinRemotePath(e,te));return Object.keys(t).map(n=>{let o=t[n];return{path:this.joinRemotePath(e,n),isFolder:!!o.type&&o.type!=="file",meta:o}})}async countMetaResources(e){if(!e)return Vi([this.root]);let t=await Promise.all(e.map(async i=>{let a=this.toLocalPath(i);return await Se(a)?a:void 0})),n=t.filter(i=>i!==void 0);return t.length-n.length+await Vi(n)}async exists(e){return Se(this.toLocalPath(e))}markCloneInProgress(e){return _d(this.root,e)}clearCloneInProgress(e){return Dd(this.root,e)}isCloneInProgress(e){return Fd(this.root,e)}async isFolder(e){try{return(await Qo.promises.stat(this.toLocalPath(e))).isDirectory()}catch(t){if(_(t))return Hb.debug(`mirror path is not a folder: ${e}`),!1;throw t}}async removePath(e,t){if(t?.throwIfAborted(),t){await this.removeLocalResource(this.toLocalPath(e),e,t);return}await Qo.promises.rm(this.toLocalPath(e),{force:!0,recursive:!0})}async removeLocalResource(e,t,n){let o;try{o=await Qo.promises.stat(e)}catch(a){if(_(a)){n?.step(1);return}throw a}if(!o.isDirectory()){await Qo.promises.rm(e,{force:!0}),n?.step(1);return}let i=await Qo.promises.readdir(e,{withFileTypes:!0});await Promise.all(i.filter(a=>a.name!==te).map(a=>(n?.throwIfAborted(),this.removeLocalResource(Ad.join(e,a.name),Ad.posix.join(t,a.name),n)))),await Qo.promises.rm(e,{force:!0,recursive:!0}),n?.step(1)}removeMeta(e){return Xc(this.root,e)}async listProjectPaths(){return(await this.listDirectChildren("/")).filter(t=>t.isFolder).map(t=>t.path).sort((t,n)=>t.localeCompare(n))}joinRemotePath(e,t){return e==="/"?"/"+t:e+"/"+t}}});var Fe,$e,nr,h$,Eg,g$,Qr,tl=xe(()=>{Fe=E(require("fs")),$e=E(require("path"));V();it();Y();F();$n();ts();ts();nr=M("sync.workspace-store"),h$=8,Eg=20,g$=new Set([".git",no,".agents","node_modules"]),Qr=class{constructor(e,t){this.workspaceRoot=e;this.mirror=t}toLocalPath(e){return ge(this.workspaceRoot,e)}async countFiles(e,t={}){let n=t.limit;if(n!==void 0&&n<=0)return 0;let o=await Promise.all(e.map(async a=>{let s=this.toLocalPath(a),c;try{c=await Fe.promises.stat(s)}catch(l){if(_(l)||Du(l))return 0;throw l}return c.isDirectory()?this.countDirectoryFiles(s,n):1})),i=0;for(let a of o)if(i+=a,n!==void 0&&i>=n)return i;return i}async writeMeta(e,t){t?.throwIfAborted(),await Zc(this.workspaceRoot,e)}async patchMeta(e,t,n){n?.throwIfAborted(),await Td(this.workspaceRoot,e,t)}async deletePath(e,t){t?.throwIfAborted(),t?await this.removeLocalResource(this.toLocalPath(e),e,t):await Fe.promises.rm(this.toLocalPath(e),{force:!0,recursive:!0});let n=$e.dirname(this.toLocalPath(e));await Se(n)&&await Xc(this.workspaceRoot,e),t?.step(1)}async removeEmptyOrphanDirectory(e){let t=this.toLocalPath(e),n;try{n=await Fe.promises.stat(t)}catch(s){if(_(s))return nr.debug(`orphan cleanup skip missing: remotePath=${e}`),!1;throw s}if(!n.isDirectory())return nr.debug(`orphan cleanup skip non-directory: remotePath=${e}`),!1;let i=(await Fe.promises.readdir(t)).filter(s=>s!==te);if(i.length>0)return nr.debug(`orphan cleanup skip non-empty: remotePath=${e} nonMetaChildren=${i.length} samples=${i.slice(0,5).join("|")}`),!1;await Fe.promises.rm(t,{force:!0,recursive:!0});let a=$e.dirname(t);return await Se(a)&&await Xc(this.workspaceRoot,e),nr.debug(`orphan cleanup removed: remotePath=${e}`),!0}async countResources(e){return(await Promise.all(e.map(async n=>{let o=this.toLocalPath(n),i;try{i=await Se(o)?await Vi([o]):1}catch(a){if(!Du(a))throw a;i=1}return i+1}))).reduce((n,o)=>n+o,0)}async countCheckoutResources(e){let t=this.mirror.toLocalPath(e),n=await this.statCheckoutSource(t);if(!n)return 1;if(!n.isDirectory())return 2;let[o,i,a]=await Promise.all([this.countExistingResources(e),Vi([t]),this.countDirectories(t)]);return Math.max(o+i+a+1,1)}async statCheckoutSource(e){try{return await Fe.promises.stat(e)}catch(t){if(_(t))return;throw t}}async copyMirrorContent(e,t){t?.throwIfAborted();let n=this.toLocalPath(e);await Fe.promises.mkdir($e.dirname(n),{recursive:!0}),await Fe.promises.copyFile(this.mirror.toLocalPath(e),n)}async checkoutFromMirror(e,t){t?.throwIfAborted();let n=Date.now(),o=this.mirror.toLocalPath(e),i=this.toLocalPath(e),s=(await Fe.promises.stat(o)).isDirectory();if(nr.debug(`checkout from mirror start: remotePath=${e} isFolder=${s} source=${o} target=${i}`),await this.copyMirrorMetaInfo(e,s),t?.step(1),s){await this.prepareCheckoutDirectory(e,t),await this.checkoutMirrorDirectory(e,t),nr.debug(`checkout from mirror done: remotePath=${e} elapsed=${Date.now()-n}ms`);return}await this.copyMirrorContent(e),t?.step(1),nr.debug(`checkout from mirror done: remotePath=${e} elapsed=${Date.now()-n}ms`)}async prepareCheckoutDirectory(e,t){t?.throwIfAborted();let n=this.toLocalPath(e),o=await Se(n);t&&o?await this.removeLocalResource(n,e,t):await Fe.promises.rm(n,{force:!0,recursive:!0}),nr.debug(`checkout prepared workspace target: remotePath=${e} targetExisted=${o}`)}async checkoutMirrorDirectory(e,t){let n=this.toLocalPath(e),o=new bt({maxConcurrency:h$,signal:t?.getAbortSignal()});try{await this.copyMirrorDirectory(e,t,o),await o.waitAll()}catch(a){throw o.cancel(a),await o.waitAll(),a}nr.debug(`checkout copied mirror tree: remotePath=${e}`),t?.step(1),await this.ensureFolderDotMetas(n,t,e);let i=await this.listResidualEntries(n);i.length>0&&nr.info(`checkout from mirror left workspace-only entries: remotePath=${e} count=${i.length} samples=${i.slice(0,Eg).join("|")}`)}isCloneInProgress(e){return Fd(this.workspaceRoot,e)}async listResidualEntries(e){let t=$e.join(this.mirror.toLocalPath("/"),$e.relative(this.workspaceRoot,e)),n=[];return await this.collectResidualEntries(e,t,"",n),n}async collectResidualEntries(e,t,n,o){if(o.length>=Eg)return;let i;try{i=await Fe.promises.readdir(e,{withFileTypes:!0})}catch{return}let a;try{a=new Set(await Fe.promises.readdir(t))}catch{a=new Set}for(let s of i){if(s.name===te||s.name===el||o.length>=Eg)continue;let c=n?`${n}/${s.name}`:s.name;if(!a.has(s.name)){o.push(c);continue}s.isDirectory()&&await this.collectResidualEntries($e.join(e,s.name),$e.join(t,s.name),c,o)}}async copyMirrorDirectory(e,t,n){let o=this.mirror.toLocalPath(e),i=this.toLocalPath(e);await Fe.promises.mkdir(i,{recursive:!0});let a=await Fe.promises.readdir(o,{withFileTypes:!0});nr.debug(`copy mirror dir: remotePath=${e} children=${a.length}`),await Promise.all(a.map(async s=>{if(t?.throwIfAborted(),s.name===el)return;let c=$e.join(o,s.name),l=$e.join(i,s.name);if(s.isDirectory()){await this.copyMirrorDirectory($e.posix.join(e,s.name),t,n),t?.step(1);return}await n.addTask(async()=>{t?.throwIfAborted(),await Fe.promises.mkdir($e.dirname(l),{recursive:!0}),await Fe.promises.copyFile(c,l),s.name!==te&&t?.step(1)})}))}async countExistingResources(e){let t=this.toLocalPath(e);return await Se(t)?Vi([t]):0}async countDirectoryFiles(e,t){let n;try{n=await Fe.promises.readdir(e,{withFileTypes:!0})}catch(c){if(_(c)||Du(c))return 0;throw c}let o=0,i=[];for(let c of n)c.name!==te&&(c.isDirectory()?g$.has(c.name)||i.push(c):o++);if(t!==void 0&&o>=t)return o;let a=await Promise.all(i.map(c=>this.countDirectoryFiles($e.join(e,c.name),t))),s=o;for(let c of a)if(s+=c,t!==void 0&&s>=t)return s;return s}toParentDotMetaPath(e){return this.toFolderDotMetaPath($e.posix.dirname(e))}toFolderDotMetaPath(e){return e==="/"?`/${te}`:`${e}/${te}`}async countDirectories(e){let t=await Fe.promises.readdir(e,{withFileTypes:!0});return 1+(await Promise.all(t.filter(o=>o.isDirectory()).map(o=>this.countDirectories($e.join(e,o.name))))).reduce((o,i)=>o+i,0)}async removeLocalResource(e,t,n){let o;try{o=await Fe.promises.stat(e)}catch(a){if(_(a)){n?.step(1);return}throw a}if(!o.isDirectory()){await Fe.promises.rm(e,{force:!0}),n?.step(1);return}let i=await Fe.promises.readdir(e,{withFileTypes:!0});nr.debug(`remove local dir: remotePath=${t} children=${i.length}`+(i.length>0?` names=${i.slice(0,10).map(a=>a.name).join("|")}`:"")),await Promise.all(i.filter(a=>a.name!==te).map(a=>(n?.throwIfAborted(),this.removeLocalResource($e.join(e,a.name),$e.posix.join(t,a.name),n)))),await Fe.promises.rm(e,{force:!0,recursive:!0}),n?.step(1)}async copyMirrorMetaInfo(e,t,n){n?.throwIfAborted();let o=await ot(this.mirror.root,e);o&&await Zc(this.workspaceRoot,{...o,id:o.id??"",path:e,parentDir:$e.posix.dirname(e),name:$e.posix.basename(e),isFolder:t})}async listProjectPaths(){try{let e=await Fe.promises.readdir(this.workspaceRoot,{withFileTypes:!0});return(await Promise.all(e.filter(n=>n.isDirectory()&&!n.name.startsWith(".")).map(async n=>await this.hasProjectMetaFile(n.name)?"/"+n.name:void 0))).filter(n=>n!==void 0)}catch(e){if(_(e))return nr.debug(`workspace root has no local projects yet: ${this.workspaceRoot}`),[];throw e}}async ensureFolderDotMetas(e,t,n){let o=await Fe.promises.readdir(e,{withFileTypes:!0}),i=$e.join(e,te);try{await Fe.promises.access(i)}catch(a){if(!_(a))throw a;nr.debug(`create missing folder .meta: ${i}`),await Fe.promises.writeFile(i,"{}","utf-8")}t?.step(1),await Promise.all(o.filter(a=>a.isDirectory()).map(a=>this.ensureFolderDotMetas($e.join(e,a.name),t,n?$e.posix.join(n,a.name):void 0)))}async hasProjectMetaFile(e){try{let t=$e.join(this.workspaceRoot,e,te);return(await Fe.promises.stat(t)).isFile()}catch(t){if(_(t))return nr.debug(`project .meta does not exist: ${e}`),!1;throw t}}}});var Yo,yt,y$,rs,Tg=xe(()=>{Yo=E(require("fs")),yt=E(require("path"));Y();V();it();y$=M("sync.file-mutation-baseline"),rs=class{constructor(e){this.options=e}workspaceMetaPatches=new Map;mirrorMetaPatches=new Map;physicalDeletes=new Set;mirrorPhysicalDeletes=new Set;mirrorFolderCreates=new Set;mirrorSubtreeSyncs=new Set;mirrorContentSyncs=new Set;authoritativeMetaPaths=new Set;deletedPaths=new Set;folderPathMutations=[];async apply(e,t){t?.throwIfAborted(),this.resetEffects(),await this.collectEffects(e),t?.throwIfAborted(),await this.applyPhysicalDeletes(),t?.throwIfAborted(),await this.applyMirrorFolderCreates(),t?.throwIfAborted(),await this.applyWorkspaceMetaPatches(t),t?.throwIfAborted(),await this.syncMirrorSubtrees(),t?.throwIfAborted(),await this.applyMirrorMetaPatches(t),t?.throwIfAborted(),await this.syncMirrorContents()}resetEffects(){this.workspaceMetaPatches=new Map,this.mirrorMetaPatches=new Map,this.physicalDeletes=new Set,this.mirrorPhysicalDeletes=new Set,this.mirrorFolderCreates=new Set,this.mirrorSubtreeSyncs=new Set,this.mirrorContentSyncs=new Set,this.authoritativeMetaPaths=new Set,this.deletedPaths=new Set,this.folderPathMutations=[]}async collectEffects(e){for(let t of e){if(!t.success)continue;let n=this.isNoWritableChangeResponse(t);await this.collectResponseEffects(t),n||await this.collectParentWatermarkEffects(t)}}async collectResponseEffects(e){if(e.pathMutation&&e.pathMutation!=="none"&&e.oldPath&&e.metaInfo){await this.collectPathMutationEffects(e);return}if(e.contentMutation==="deleted"){this.collectDeleteEffects(e);return}await this.collectContentOrMetaEffects(e)}async collectPathMutationEffects(e){let t=e.metaInfo,n=e.oldPath;if(this.mirrorPhysicalDeletes.add(n),this.addMetaPatch(this.workspaceMetaPatches,yt.posix.dirname(n),yt.posix.basename(n),void 0),this.addMetaPatch(this.mirrorMetaPatches,yt.posix.dirname(n),yt.posix.basename(n),void 0),this.addAuthoritativeMetaPatch(t),t.isFolder){this.folderPathMutations.push({oldPath:n,newPath:t.path}),this.collectMappedDeleteEffectsForFolderMove(n,t.path),this.mirrorSubtreeSyncs.add(t.path);for(let o of await this.getAuthoritativeDescendants(t.path))this.addAuthoritativeMetaPatch(o);return}this.mirrorContentSyncs.add(t.path)}collectDeleteEffects(e){let t=e.metaInfo?.path??e.path;this.deletedPaths.add(t),this.physicalDeletes.add(t);let n=yt.posix.dirname(t),o=yt.posix.basename(t);this.addMetaPatch(this.workspaceMetaPatches,n,o,void 0),this.addMetaPatch(this.mirrorMetaPatches,n,o,void 0);for(let i of this.folderPathMutations)this.collectMappedDeleteEffectsForFolderMove(i.oldPath,i.newPath)}collectMappedDeleteEffectsForFolderMove(e,t){for(let n of[...this.deletedPaths])this.collectMappedDeleteEffect(n,e,t)}collectMappedDeleteEffect(e,t,n){if(e===t||!le(e,t))return;let o=n+e.slice(t.length);this.addMetaPatch(this.workspaceMetaPatches,yt.posix.dirname(o),yt.posix.basename(o),void 0),this.addMetaPatch(this.mirrorMetaPatches,yt.posix.dirname(o),yt.posix.basename(o),void 0),this.deletedPaths.add(o)}async collectContentOrMetaEffects(e){let t=e.metaInfo;if(t){if(this.isNoWritableChangeResponse(e)){await this.collectNoWritableChangeEffects(t);return}this.addAuthoritativeMetaPatch(t),t.isFolder?this.mirrorFolderCreates.add(t.path):(e.contentMutation==="created"||e.contentMutation==="modified")&&this.mirrorContentSyncs.add(t.path)}}async collectNoWritableChangeEffects(e){await this.addBaselineOnlyMetaPatch(this.workspaceMetaPatches,this.options.workspace.workspaceRoot,e),await this.addBaselineOnlyMetaPatch(this.mirrorMetaPatches,this.options.mirror.root,e,{writeContentInfo:!0}),this.authoritativeMetaPaths.add(e.path)}async collectParentWatermarkEffects(e){if(typeof e.modifyTime!="number")return;let t=e.metaInfo?.path??e.path,n=e.oldPath?[e.oldPath,t]:[t];for(let o of this.getUniqueParentPaths(n))this.authoritativeMetaPaths.has(o)||await this.addParentWatermarkPatch(o,e.modifyTime)}async addParentWatermarkPatch(e,t){let n=yt.posix.dirname(e),o=yt.posix.basename(e);await this.addStoreParentWatermarkPatch(this.workspaceMetaPatches,this.options.workspace.workspaceRoot,e,n,o,t),await this.addStoreParentWatermarkPatch(this.mirrorMetaPatches,this.options.mirror.root,e,n,o,t)}async addStoreParentWatermarkPatch(e,t,n,o,i,a){let s=e.get(o);if(s&&Object.prototype.hasOwnProperty.call(s,i)){let p=s[i];p&&(s[i]={...p,modifyTime:a});return}let c=await ot(t,n),l=this.toServerMetaFromExisting(n,c,a);if(!l)return;let u=e.get(o);u||(u={},e.set(o,u)),u[i]=fr(l)}async applyPhysicalDeletes(){for(let e of this.physicalDeletes)await Yo.promises.rm(this.options.workspace.toLocalPath(e),{force:!0,recursive:!0}),await this.options.mirror.removePath(e);for(let e of this.mirrorPhysicalDeletes)await this.options.mirror.removePath(e)}async applyMirrorFolderCreates(){for(let e of this.mirrorFolderCreates)await Yo.promises.mkdir(this.options.mirror.toLocalPath(e),{recursive:!0})}async applyWorkspaceMetaPatches(e){for(let[t,n]of this.workspaceMetaPatches)this.isInsidePhysicalDelete(t)||await this.options.workspace.patchMeta(t,n,e)}async syncMirrorSubtrees(){for(let e of this.mirrorSubtreeSyncs)this.isInsidePhysicalDelete(e)||await this.syncWorkspaceSubtreeToMirror(e)}async applyMirrorMetaPatches(e){for(let[t,n]of this.mirrorMetaPatches)this.isInsidePhysicalDelete(t)||await this.options.mirror.patchMeta(t,n,e)}async syncMirrorContents(){for(let e of this.mirrorContentSyncs){let t=this.options.workspace.toLocalPath(e),n=this.options.mirror.toLocalPath(e);await Yo.promises.mkdir(yt.dirname(n),{recursive:!0}),await Yo.promises.copyFile(t,n)}}addAuthoritativeMetaPatch(e){let t=yt.posix.dirname(e.path),n=yt.posix.basename(e.path);this.addMetaPatch(this.workspaceMetaPatches,t,n,this.toWorkspaceMetaInfo(e)),this.addMetaPatch(this.mirrorMetaPatches,t,n,this.toMirrorMetaInfo(e)),this.authoritativeMetaPaths.add(e.path)}async addBaselineOnlyMetaPatch(e,t,n,o){this.addMetaPatch(e,n.parentDir,n.name,this.toBaselineOnlyMetaInfo(n,await ot(t,n.path),o))}toBaselineOnlyMetaInfo(e,t,n){if(!t)return fr(e,n);let o=fr(e,n);return{...t,...o.id!==void 0?{id:o.id}:{},...o.revision!==void 0?{revision:o.revision}:{},...o.modifyTime!==void 0?{modifyTime:o.modifyTime}:{},...n?.writeContentInfo&&o.size!==void 0?{size:o.size}:{},...n?.writeContentInfo&&o.hash!==void 0?{hash:o.hash}:{}}}toWorkspaceMetaInfo(e){return fr(e)}toMirrorMetaInfo(e){return fr(e,{writeContentInfo:!0})}isNoWritableChangeResponse(e){return e.contentMutation==="none"&&(e.pathMutation===void 0||e.pathMutation==="none")&&e.metaInfoChanged===!1}async getAuthoritativeDescendants(e){try{return await(await this.options.getApiClient()).getFileDescendant(e)}catch(t){return y$.warn(`failed to fetch authoritative descendants after folder mutation: ${e}`,t),[]}}async syncWorkspaceSubtreeToMirror(e){let t=this.options.workspace.toLocalPath(e),n=this.options.mirror.toLocalPath(e);await Yo.promises.rm(n,{force:!0,recursive:!0}),await Yo.promises.mkdir(yt.dirname(n),{recursive:!0}),await Yo.promises.cp(t,n,{force:!0,recursive:!0})}addMetaPatch(e,t,n,o){let i=e.get(t);i||(i={},e.set(t,i)),i[n]=o}isInsidePhysicalDelete(e){return[...this.physicalDeletes,...this.mirrorPhysicalDeletes].some(t=>le(e,t))}getUniqueParentPaths(e){let t=new Set;for(let n of e)for(let o of this.getParentPaths(n))t.add(o);return[...t]}getParentPaths(e){let t=Ee(ie(e)).split("/").filter(Boolean),n=[];for(let o=0;o<t.length-1;o++)n.push("/"+t.slice(0,o+1).join("/"));return n}toServerMetaFromExisting(e,t,n){if(t)return{...t,id:t.id??e,path:e,parentDir:yt.posix.dirname(e),name:yt.posix.basename(e),isFolder:!0,type:t.type??"fold",modifyTime:n}}}});var Gi,ns,Mg=xe(()=>{Gi=E(require("path"));F();O();V();ns=class{constructor(e){this.options=e}async resolve(e,t){let n=Gi.resolve(this.options.workspaceRoot),o=Gi.resolve(e);if(o===n||o.startsWith(n+Gi.sep))return this.requireMetaPath(e);if(Gi.isAbsolute(e)){let i=ie(e);if(await this.isKnownRemoteProjectPath(i,t))return i;throw new xr("err.sync.pathOutOfScope",{remotePath:e,reason:"notInSyncScope"},{style:"warn"})}return ie(e)}requireMetaPath(e){let t=On(this.options.workspaceRoot,e);if(!t)throw new Error(`file is not in sync scope: ${e}`);return ie(t)}async isKnownRemoteProjectPath(e,t){let n=dt(e);if(!n)return!1;let o=Je(n);if(t==="server-backed")return(await this.options.getServerProjects()).some(c=>c.name===o);let[i,a]=await Promise.all([this.options.workspace.listProjectPaths(),this.options.mirror.listProjectPaths()]);return i.includes(n)||a.includes(n)}}});var xg,os,Ig=xe(()=>{xg=E(require("fs"));F();it();$i();os=class{client;constructor(e){this.client=e.client}async upgradeContent(e){let t=this.createContentBaseResult(e),n=e.versionInfo;if(!n?.upgradeSupported)return{...t,reason:"unsupported"};let o=n.contentVersion;if(!o)return{...t,reason:"unsupported"};let i;try{i=e.currentVersion??Qc(e.content)}catch(l){return{...t,reason:"invalidContent",errorInfo:l}}let a={...t,currentVersion:i,targetVersion:o};if(Xa(i,o))return{...a,reason:"newerVersion"};if(!Ya(i,o))return{...a,reason:"upToDate"};let s={...a,upgradeRequired:!0};if(e.dryRun)return s;let c;try{c=await this.client.upgradeFileContent({path:e.path,content:e.content})}catch(l){return{...s,reason:"upgradeFailed",errorInfo:l}}return!c.changed||c.content===e.content?{...s,reason:"upToDate"}:{...s,content:c.content,changed:!0}}async upgradeFile(e){let t;if(e.content!==void 0)t=e.content;else try{t=await xg.promises.readFile(e.localPath,"utf-8")}catch(o){return{path:e.path,localPath:e.localPath,targetVersion:e.versionInfo?.contentVersion,content:"",changed:!1,upgradeRequired:!1,reason:_(o)?"fileNotFound":"readFailed",errorInfo:o}}let n=await this.upgradeContent({path:e.path,content:t,versionInfo:e.versionInfo,currentVersion:e.currentVersion,dryRun:e.dryRun});if(!n.changed||e.dryRun)return{...n,localPath:e.localPath};try{return await xg.promises.writeFile(e.localPath,n.content,"utf-8"),{...n,localPath:e.localPath}}catch(o){return{...n,localPath:e.localPath,changed:!1,reason:"writeFailed",errorInfo:o}}}createContentBaseResult(e){return{path:e.path,targetVersion:e.versionInfo?.contentVersion,content:e.content,changed:!1,upgradeRequired:!1}}}});var Jb={};Xf(Jb,{SyncCommandUpgradeMetadata:()=>rl});var _g,Xo,Gb,zb,Kb,C$,lo,rl,Dg=xe(()=>{_g=E(require("fs")),Xo=E(require("path"));F();Y();I();it();$n();V();Ft();Ig();Gb=8,zb=5,Kb=95,C$=new Set(Wa),lo=M("sync.upgrade-metadata"),rl=class extends at{upgrader=new os({client:{upgradeFileContent:async e=>(await this.getApiClient()).upgradeFileContent(e)}});scannedContent=new Map;async execute(){let e=await this.resolveInputTargetPaths();if(e.length===0)return this.createResult();let t=this.formatTargetScope(e);if(this.options.dryRun?(lo.info("metadata version check start: {0}",t),lo.info("scan metadata version files")):(lo.info("metadata upgrade start: {0}",t),lo.info("scan metadata upgrade files")),this.options.dryRun){let s=await this.scanCandidates(e,this.task,{finish:!1,retainOnFinish:!0});return this.task.setMessage(d("workspace.sync.progress.upgradeMeta.checked",s.checked,s.candidates.length)),this.task.finish(),s}this.task.start(zb+Kb,{message:d("workspace.sync.progress.upgradeMeta.apply"),retainOnFinish:!0});let n=this.task.subTaskMonitor(zb),o=this.task.subTaskMonitor(Kb),i=await this.scanCandidates(e,n);await this.options.onChecked?.(i);let a=this.createUpgradeResult(i);return await this.upgradeCandidates(a,o),this.sortResult(a),lo.info("metadata upgrade done: changed={0} candidates={1} skipped={2} failures={3} checked={4}",a.changed.length,a.candidates.length,a.skipped.length,a.failures.length,a.checked),this.task.setMessage(d("workspace.sync.progress.upgradeMeta.done",a.changed.length,a.failures.length,a.checked)),this.task.finish(),a}formatTargetScope(e){return e.length===1?e[0]:`targets=${e.length}`}async resolveInputTargetPaths(){if(!this.options.paths)return this.resolveDefaultTargetPaths();if(this.options.paths.length===0)return[];let e=new Set;for(let t of this.options.paths){this.task.throwIfAborted();let n=await this.resolveInputMetaPath(t);n&&e.add(n)}return Ht(e)}async resolveDefaultTargetPaths(){let e=await this.createWorkspaceStore().listProjectPaths();return Ht(new Set(e))}async resolveInputMetaPath(e){if(e==="/")return"/";let t=On(this.context.root,e);if(t)return t;if(!(Xo.isAbsolute(e)&&await Se(e))&&e.startsWith("/"))return ie(e)}async scanCandidates(e,t,n={}){let o=new bt(Gb),i=this.createResult(),a=[],s=0,c=l=>{s++,a.push(async()=>this.checkFile(l,i))};return await Promise.all(e.map(l=>this.scanInputPath(l,c))),t.start(Math.max(s,1),{message:d("workspace.sync.progress.upgradeMeta.scan"),retainOnFinish:n.retainOnFinish===!0}),await Promise.all(a.map(l=>o.addTask(async()=>{try{t.throwIfAborted(),await l()}finally{t.step()}}))),await o.waitAll(),n.finish!==!1&&t.finish(),this.sortResult(i),lo.info("metadata version check done: candidates={0} skipped={1} failures={2} checked={3}",i.candidates.length,i.skipped.length,i.failures.length,i.checked),i}async upgradeCandidates(e,t){let n=e.candidates.length;if(n===0){t.finish();return}lo.info("metadata upgrade apply start: candidates={0}",n),t.start(n,{message:d("workspace.sync.progress.upgradeMeta.apply")});let o=new bt(Gb),i=0;await Promise.all(e.candidates.map(a=>o.addTask(async()=>{try{t.throwIfAborted();let s=await this.upgradeCandidate(a,e);i++,await this.options.onFileUpgraded?.({...s,index:i,total:n})}finally{t.step()}}))),await o.waitAll(),t.finish()}async scanInputPath(e,t){let n=ie(e),o=ge(this.context.root,n);try{if((await _g.promises.stat(o)).isDirectory()){(this.options.recursive??!0)&&await this.scanDirectory(n,o,t);return}if(Xo.basename(o)===te)return;t({path:n,localPath:o})}catch(i){if(_(i)){t({path:n,localPath:o});return}throw i}}async scanDirectory(e,t,n){let o=(await _g.promises.readdir(t,{withFileTypes:!0})).sort((a,s)=>a.name.localeCompare(s.name)),i=[];for(let a of o){if(this.task.throwIfAborted(),a.name===te)continue;let s=Xo.join(t,a.name),c=ie(Xo.posix.join(e,a.name));if(a.isDirectory()){C$.has(a.name)||i.push(this.scanDirectory(c,s,n));continue}n({path:c,localPath:s})}await Promise.all(i)}createResult(){return{checked:0,candidates:[],changed:[],skipped:[],failures:[]}}createUpgradeResult(e){return{checked:e.checked,candidates:[...e.candidates],changed:[],skipped:[...e.skipped],failures:[...e.failures]}}sortResult(e){let t=(n,o)=>n.remotePath.localeCompare(o.remotePath);e.candidates.sort(t),e.changed.sort(t),e.skipped.sort(t),e.failures.sort(t)}async checkFile(e,t){let n=(await this.context.getMetadataVersionCatalog()).getInfoByPath(e.path);if(!n?.upgradeSupported)return;t.checked++;let o=await this.upgrader.upgradeFile({path:e.path,localPath:e.localPath,versionInfo:n,dryRun:!0}),i=this.createItemResult(o);if(o.upgradeRequired&&(t.candidates.push(i),this.scannedContent.set(e.localPath,{content:o.content,currentVersion:o.currentVersion})),!o.reason){o.upgradeRequired&&this.logMetadataFile(i,"candidate","check");return}if(this.isSkippedReason(o.reason)){t.skipped.push({...i,reason:o.reason}),this.logMetadataFile(i,o.reason,"check");return}this.logUpgradeFailure(e.path,o.errorInfo),t.failures.push({...i,reason:o.reason,errorInfo:o.errorInfo})}async upgradeCandidate(e,t){let n=(await this.context.getMetadataVersionCatalog()).getInfoByPath(e.remotePath),o=this.scannedContent.get(e.localPath),i=await this.upgrader.upgradeFile({path:e.remotePath,localPath:e.localPath,versionInfo:n,content:o?.content,currentVersion:o?.currentVersion}),a=this.createItemResult(i);if(i.changed){let c={...a,changed:!0};return t.changed.push(c),this.logMetadataFile(a,"changed","upgrade"),{item:c,status:"upgraded"}}if(i.reason&&this.isSkippedReason(i.reason)){let c={...a,reason:i.reason};return t.skipped.push(c),this.logMetadataFile(a,i.reason,"upgrade"),{item:c,status:"skipped"}}if(!i.reason){let c={...a,reason:"upToDate"};return t.skipped.push(c),this.logMetadataFile(a,"upToDate","upgrade"),{item:c,status:"skipped"}}this.logUpgradeFailure(e.remotePath,i.errorInfo);let s={...a,reason:i.reason,errorInfo:i.errorInfo};return t.failures.push(s),{item:s,status:"failed"}}logUpgradeFailure(e,t){lo.error("metadata upgrade failed: {0}",e,t)}logMetadataFile(e,t,n){lo.info("{0}: {1} current={2} target={3} result={4}",n==="check"?"metadata version check file":"metadata upgrade file",e.remotePath,e.currentVersion??"",e.targetVersion??"",t)}createItemResult(e){return{remotePath:e.path,localPath:e.localPath,currentVersion:e.currentVersion,targetVersion:e.targetVersion}}isSkippedReason(e){return e==="upToDate"||e==="newerVersion"}}});async function Ld(r,e,t){if(t.length===0)return[];let n=(Dg(),cw(Jb)),{SyncCommandUpgradeMetadata:o}=n;return(await new o(r,{paths:t,dryRun:!0,task:e}).execute()).candidates}async function eE(r){return QR(r)?w$(r):!1}async function w$(r){let e=Xb.createReadStream(r,{encoding:"utf-8"}),t=Zb.createInterface({input:e,crlfDelay:1/0}),n="start",o=0;try{for await(let i of t){let a=S$.exec(i);if(a){n="separator",o=a[1].length;continue}if(n==="start")continue;let s=v$.exec(i);if(n==="separator"&&s?.[1].length===o){n="end";continue}let c=k$.exec(i);if(n==="end"&&c?.[1].length===o)return!0}return!1}finally{t.close(),e.destroy()}}function nl(r){let e=new Set([r.remotePath]);return r.oldRemotePath&&e.add(r.oldRemotePath),[...e]}function Nd(r){let e=new Set;for(let t of r)for(let n of nl(t))e.add(n);return[...e]}function tE(r){return Ht(new Set(Nd(r)))}function rE(r){let e=new Set;for(let t of r)for(let n of nl(t))P$(e,n);return[...e].sort()}function P$(r,e){let t=is.posix.dirname(e);for(;;){if(r.add(R$(t)),t==="/")return;t=is.posix.dirname(t)}}function R$(r){return r==="/"?"/"+te:r+"/"+te}function At(r){return r.type==="added"||r.type==="modified"||r.type==="deleted"||r.type==="renamed"||r.type==="conflict"}function kn(r){return r.type==="remoteAdded"||r.type==="remoteModified"||r.type==="remoteDeleted"||r.type==="remoteRenamed"||r.type==="conflict"}function Fg(r){return r.type!=="remoteRenamed"||!r.isFolder||!r.oldRemotePath?!1:dt(r.remotePath)===r.remotePath&&dt(r.oldRemotePath)===r.oldRemotePath}function Ag(r){return r.type!=="remoteRenamed"||!r.oldRemotePath?!1:dt(r.remotePath)!==dt(r.oldRemotePath)}function ol(r){let e=r.filter(n=>kn(n)),t=new Set(Nd(e.filter(n=>n.type!=="conflict")));return t.size===0?e:e.filter(n=>n.type!=="conflict"||!nl(n).some(o=>t.has(o)))}function Od(r){return!!r.isFolder&&(r.type==="added"||r.type==="deleted"||r.type==="renamed"||r.type==="remoteAdded"||r.type==="remoteDeleted"||r.type==="remoteRenamed")}function Og(r,e){return e.some(t=>le(r.remotePath,t)||!!r.oldRemotePath&&le(r.oldRemotePath,t))}function as(r){let e=new Set(r.map(ie));return t=>Qb(t.remotePath,e)||!!t.oldRemotePath&&Qb(t.oldRemotePath,e)}function Qb(r,e){let t=ie(r);for(;;){if(e.has(t))return!0;if(t==="/")return!1;t=is.posix.dirname(t)}}function nE(r,e){return e.some(t=>r.remotePath===t||r.oldRemotePath===t)}function Wd(r){return[r.type,r.remotePath,r.oldRemotePath??""].join("\0")}function oE(r,e){let t=[];for(let n of e)r.some(o=>b$(o,n))&&t.push({path:n.path,remotePath:n.remotePath,...n.fileId!==void 0?{fileId:n.fileId}:{},oldPath:n.oldPath,oldRemotePath:n.oldRemotePath,type:"conflict",isFolder:n.isFolder,contentChanged:n.contentChanged,metaChanged:n.metaChanged});return t}function b$(r,e){return Vo(r.remotePath,r.oldRemotePath,e.remotePath,e.oldRemotePath)?E$(r,e):!1}function E$(r,e){return Yb(r)&&Yb(e)||!!r.metaChanged&&!!e.metaChanged||Od(r)||Od(e)}function Yb(r){return r.contentChanged===!0||r.type==="added"||r.type==="deleted"||r.type==="renamed"||r.type==="remoteAdded"||r.type==="remoteDeleted"||r.type==="remoteRenamed"?!0:r.contentChanged===void 0&&r.metaChanged===void 0&&(r.type==="modified"||r.type==="remoteModified")}var Xb,is,Zb,S$,v$,k$,wn=xe(()=>{Xb=E(require("fs")),is=E(require("path")),Zb=E(require("readline"));it();$c();V();Wr();S$=/^(<{7,})(?:\s.*)?$/,v$=/^(={7,})$/,k$=/^(>{7,})(?:\s.*)?$/});function iE(r){let e=r.map(o=>o.remotePath),t=e.slice(0,T$),n=e.length-t.length;return n<=0?t.join(", "):`${t.join(", ")} (+${n})`}var Lg,il,T$,ss,cs,hr,at,Ft=xe(()=>{Lg=E(require("path"));V();Hi();tl();Tg();Mg();wn();Wr();Nn();F();O();Y();il=M("sync.command"),T$=3,ss=class{runs=0;durationMs=0;api={total:0,byApi:{},byPath:{},droppedPathKeys:0,recentCallsDropped:0};startRun(){return this.runs++,Date.now()}finishRun(e){this.durationMs+=Date.now()-e}captureApiDiagnostics(e){this.api=e}describeForLog(){return`
|
|
21
|
+
`+JSON.stringify(this.createSnapshot(),null,2).replace(/^\{\n/,"").replace(/\n\}$/,"")}},cs=class{constructor(e,t){this.context=e;this.options=t;this.serverUrl=e.activeServerUrl,this.mirrorRoot=e.getMirrorRoot(this.serverUrl)}serverUrl;mirrorRoot;apiClientPromise;get task(){return this.options.task??Pt.INSTANCE}get workspaceRoot(){return this.context.root}createMirrorStore(){return new zt(this.mirrorRoot)}createWorkspaceStore(e=this.createMirrorStore()){return new Qr(this.workspaceRoot,e)}createPathResolver(e=this.createMirrorStore()){return new ns({workspaceRoot:this.workspaceRoot,mirror:e,workspace:this.createWorkspaceStore(e),getServerProjects:async()=>(await this.getApiClient()).getProjects()})}getApiClient(){return this.apiClientPromise||(this.apiClientPromise=this.context.requireServerClient(this.serverUrl)),this.apiClientPromise}getLocalSyncChanges(){return this.context.getSyncChanges().filter(e=>At(e))}getRemoteSyncChanges(){return this.excludeBlockedProjectRootRenameSubtree(this.context.getSyncChanges().filter(e=>kn(e)))}excludeBlockedProjectRootRenameSubtree(e){let t=new Set;for(let i of e)Fg(i)&&(t.add(i.remotePath),i.oldRemotePath&&t.add(i.oldRemotePath));if(t.size===0)return e;let n=[...t],o=e.filter(i=>!n.some(a=>le(i.remotePath,a)||!!i.oldRemotePath&&le(i.oldRemotePath,a)));return il.warn(`skip remote project rename changes that cannot be auto applied: ${[...t].join(", ")}`),o}assertNoProjectRootRenameChanges(e,t){if(!e)return;let n=e.filter(o=>Fg(o));if(n.length!==0)throw new _t("err.sync.projectRootRenameUnsupported",{actionName:t,paths:iE(n),changes:n})}clearSyncStatusTargets(e){this.context.clearSyncStatusTargets(e)}hasKnownChanges(e){return e!==void 0}assertNoRemoteProjectUnavailableChanges(e,t){if(!e)return;let n=e.filter(o=>o.type==="remoteProjectUnavailable");if(n.length!==0)throw new _t("err.sync.projectUnavailable",{actionName:t,paths:iE(n),changes:n})}getKnownChangeTargetRemotePaths(e){return Nd([...e])}getKnownChangeTargets(e){return new Set(tE([...e]))}async resolveTargetRemotePaths(e,t="server-backed"){if(!e)return;let n=this.createPathResolver();return new Set(await Promise.all(e.map(o=>n.resolve(o,t))))}filterChangesByTargets(e,t){if(!t)return e;let n=as([...t]);return e.filter(n)}expandTargetsForRenameChanges(e,t){if(!e)return;let n,o=i=>{e.has(i)||(n||(n=new Set(e)),n.add(i))};for(let i of t)i.type!=="renamed"&&i.type!=="remoteRenamed"||(o(i.remotePath),i.oldRemotePath&&o(i.oldRemotePath));return n??e}async resolveRemotePath(e,t="server-backed"){return this.createPathResolver().resolve(e,t)}reportDiagnostic(e){il.warn(this.createDiagnosticLogMessage(e))}createDiagnosticLogMessage(e){let t=[`sync diagnostic: ${Ri(e.errorInfo)||e.message}`,`workspaceRoot=${this.workspaceRoot}`,`serverUrl=${this.serverUrl}`];return e.path&&t.push(`path=${e.path}`),e.errorInfo!==void 0&&t.push(`errorInfo=${this.stringifyDiagnosticValue(e.errorInfo)}`),t.join(`
|
|
22
22
|
`)}stringifyDiagnosticValue(e){if(e instanceof Error)return`${e.message}${e.stack?`
|
|
23
|
-
`+e.stack:""}`;if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return String(e)}}},Ut=class extends Ui{},Ve=class extends Ui{async applyFileMutationResponses(e){let t=this.createMirrorStore(),n=this.createWorkspaceStore(t);await new Ai({workspace:n,mirror:t,getApiClient:()=>this.getApiClient()}).apply(e,this.task)}async cleanupEmptyOrphanParents(e,t,n){if(e.length===0)return;let o=new Set;os.debug(`orphan cleanup start: deletedPaths=${e.length}`);for(let i of e)await this.cleanupAncestorsIfEmpty(lm.posix.dirname(i),o,t,n);os.debug(`orphan cleanup done: visitedAncestors=${o.size}`)}async cleanupAncestorsIfEmpty(e,t,n,o){let i=e;for(;i!=="/"&&i!=="."&&!t.has(i);){if(t.add(i),await n.exists(i)){os.debug(`orphan cleanup stop at tracked: remotePath=${i}`);return}if(!await o.removeEmptyOrphanDirectory(i))return;i=lm.posix.dirname(i)}}}});var Ik=Y((IG,xk)=>{var LA=function(){var r=256,e=t();function t(){for(var o=new Array(r),i=0;i<o.length;i++)o[i]=new Array(r);for(var i=0;i<r;i++)for(var a=0;a<r;a++){for(var s=i,c=a,l=0,p=0;p<4;p++){var u=Math.abs(s%4-c%4);u==3?l+=u*2:l+=u,p<3&&(s=Math.floor(s/4),c=Math.floor(c/4))}o[i][a]=l}return o}var n=function(o,i){return e[o][i]};return n}();xk.exports=LA});var Wm=Y((FG,Fk)=>{var NA=Ik(),WA=function(r){var e=function(t){for(var n=0,o=0;o<r.length;o++)n+=NA(r[o],t.getValue(o));return n};this.calculateDifference=function(t){return e(t)},this.getValue=function(t){return r[t]}};Fk.exports=WA});var Um=Y((DG,Dk)=>{var UA=function(r){var e=function(t,n){var o=t.length;if(o!=n.length)return!1;for(;o--;)if(t[o]!==n[o])return!1;return!0};this.calculateDifference=function(t){return e(r,t.getValue())?0:1},this.getValue=function(){return r}};Dk.exports=UA});var jm=Y((AG,Ak)=>{Ak.exports=function(r){var e=(r&240)>>4&15;return e|=(r&15)<<4&240,e}});var _k=Y((OG,Ok)=>{var Vm=jm(),jA=function(){return function(r){var e=1,t=32,n=function(l){for(var p="",u=0;u<l.length;u++)l[u]<16&&(p+="0"),p+=l[u].toString(16).toUpperCase();return p},o=function(l){for(var p=new Array(e),u=0;u<e;u++)p[u]=Vm(l.getValue()[u]);return n(p)},i=function(l){return n([Vm(l.getValue())])},a=function(l){return n([Vm(l.getValue())])},s=function(l){for(var p=new Array(t),u=0;u<t;u++)p[u]=l.getValue(t-1-u);return n(p)},c="";return c+=o(r.getChecksum()),c+=i(r.getLValue()),c+=a(r.getQ()),c+=s(r.getBody()),c}}();Ok.exports=jA});var Bm=Y((_G,Lk)=>{var VA=_k(),BA=function(r,e,t,n){this.getLValue=function(){return e},this.getQ=function(){return t},this.getChecksum=function(){return r},this.getBody=function(){return n},this.calculateDifference=function(o,i){var a=0;return i&&(a+=e.calculateDifference(o.getLValue())),a+=t.calculateDifference(o.getQ()),a+=r.calculateDifference(o.getChecksum()),a+=n.calculateDifference(o.getBody()),a},this.toString=function(){return VA(this)}};Lk.exports=BA});var qm=Y((LG,Nk)=>{Nk.exports=function(r,e,t){var n=Math.abs(e-r),o=t-n;return Math.min(n,o)}});var $m=Y((NG,Wk)=>{var qA=qm(),$A=function(r){var e=256;this.calculateDifference=function(t){var n=qA(r,t.getValue(),e);return n===0?0:n===1?1:n*12},this.getValue=function(){return r}};Wk.exports=$A});var Hm=Y((WG,jk)=>{var Uk=qm(),HA=function(r){this.getQLo=function(){return r&15},this.getQHi=function(){return(r&240)>>4},this.calculateDifference=function(e){var t=16,n=0,o=Uk(this.getQLo(),e.getQLo(),t);o<=1?n+=o:n+=(o-1)*12;var i=Uk(this.getQHi(),e.getQHi(),t);return i<=1?n+=i:n+=(i-1)*12,n},this.getValue=function(){return r}};jk.exports=HA});var Bk=Y((UG,Vk)=>{var zA=Wm(),GA=Um(),KA=Bm(),JA=$m(),QA=Hm(),YA=function(){var r=256,e=.09531018,t=.26236426,n=.4054651,o,i,a,s,c={LOW:656,MID:3199},l=function(y){return this.checksum=new GA(y),this},p=function(y){return this.lValue=new JA(h(y)),this},u=function(y){var C=function(v,w){var f=function(S,k){return(0|S&15)&15|(k&15)<<4};return new QA(f(v,w))};return this.q=new C(y.getQ1Ratio(),y.getQ2Ratio()),this},g=function(y){return this.body=new zA(y),this},m=function(){return new KA(this.checksum,this.lValue,this.q,this.body)},h=function(y){return y<=c.LOW?Math.floor(Math.log(y)/n)%r:y<=c.MID?Math.floor(Math.log(y)/t-8.72777)%r:Math.floor(Math.log(y)/e-62.5472)%r};return{withChecksum:l,withLength:p,withQuartiles:u,withBody:g,build:m}};Vk.exports=YA});var $k=Y((jG,qk)=>{var XA=Bk(),ZA=function(r,e,t,n){var o=512,i=32,a=function(p){return e[p]>0},s=function(){for(var p=0,u=0;u<i*4;u++)a(u)&&p++;return p>i*2},c=function(){return t>=o},l=function(){for(var p=new Array(i),u=0;u<i;u++){for(var g=0,m=0;m<4;m++){var h=e[4*u+m];n.getThird()<h?g+=3<<m*2:n.getSecond()<h?g+=2<<m*2:n.getFirst()<h&&(g+=1<<m*2)}p[u]=g}return p};this.isProcessedDataTooSimple=function(){return!c()||!s()},this.buildDigest=function(){return new XA().withChecksum(r).withLength(t).withQuartiles(n).withBody(l()).build()}};qk.exports=ZA});var zk=Y((VG,Hk)=>{var eO=function(){var r=[1,87,49,12,176,178,102,166,121,193,6,84,249,230,44,163,14,197,213,181,161,85,218,80,64,239,24,226,236,142,38,200,110,177,104,103,141,253,255,50,77,101,81,18,45,96,31,222,25,107,190,70,86,237,240,34,72,242,20,214,244,227,149,235,97,234,57,22,60,250,82,175,208,5,127,199,111,62,135,248,174,169,211,58,66,154,106,195,245,171,17,187,182,179,0,243,132,56,148,75,128,133,158,100,130,126,91,13,153,246,216,219,119,68,223,78,83,88,201,99,122,11,92,32,136,114,52,10,138,30,48,183,156,35,61,26,143,74,251,94,129,162,63,152,170,7,115,167,241,206,3,150,55,59,151,220,90,53,23,131,125,173,15,238,79,95,89,16,105,137,225,224,217,160,37,123,118,73,2,157,46,116,9,145,134,228,207,212,202,215,69,229,27,188,67,124,168,252,42,4,29,108,21,247,19,205,39,203,233,40,186,147,198,192,155,33,164,191,98,204,165,180,117,76,140,36,210,172,41,54,159,8,185,232,113,196,231,47,146,120,51,65,28,144,254,221,93,189,194,139,112,43,71,109,184,209],e=function(t){var n=0;return t.forEach(function(o){n=r[n^o]}),n};return e}();Hk.exports=eO});var Jk=Y((BG,Kk)=>{var tO=zk(),Gk=function(r,e,t,n){this.c1=r,this.c2=e,this.c3=t,this.salt=n};Gk.prototype.getHash=function(){return tO([this.salt,this.c1,this.c2,this.c3])};Kk.exports=Gk});var Yk=Y((qG,Qk)=>{var rO=Jk(),nO=function(){var r=5,e=1,t=new Array(r),n=0,o=function(s){return t[s]},i=function(s,c,l,p){return new rO(s,c,l,p).getHash()},a=function(){return n>=r};this.put=function(s){t[this.getPivot()]=s&255,n++},this.getPivot=function(){return n%r},this.getTripletHashes=function(s){if(!a())return[];var c=s,l=(c+1)%r,p=(c+2)%r,u=(c+3)%r,g=(c+4)%r;return[i(t[c],t[g],t[u],2),i(t[c],t[g],t[p],3),i(t[c],t[u],t[p],5),i(t[c],t[u],t[l],7),i(t[c],t[g],t[l],11),i(t[c],t[p],t[l],13)]},this.getChecksum=function(s,c){if(!a())return null;for(var l=(s+4)%r,p=new Array(e),u=0;u<e;u++){var g=o(s),m=o(l),h=0,y=0;c&&(h=c[u]),u!==0&&(y=p[u-1]),p[u]=i(g,m,h,y)}return p}};Qk.exports=nO});var Zk=Y(($G,Xk)=>{var oO=function(r){if(r.length<e)throw new Error;var e=128,t=16,n=r.slice(0,e).sort(function(o,i){return o-i});this.getQ1Ratio=function(){return Math.floor(this.getFirst()*100/this.getThird())%t},this.getQ2Ratio=function(){return Math.floor(this.getSecond()*100/this.getThird())%t},this.getFirst=function(){return n[e/4-1]},this.getSecond=function(){return n[e/2-1]},this.getThird=function(){return n[e-e/4-1]}};Xk.exports=oO});var tw=Y((HG,ew)=>{var iO=$k(),aO=Yk(),sO=Zk(),cO=function(){var r=256,e=function(n,o,i){var a=new sO(o);return new iO(i,o,n,a)},t=function(n){for(var o=n?n.length:0,i=Array.apply(null,Array(r)).map(Number.prototype.valueOf,0),a,s=new aO,c=this,l=function(m){i[m]?i[m]++:i[m]=1},p=0;p<o;p++){var u=n.charCodeAt(p),g=s.getPivot();s.put(u),a=s.getChecksum(g,a),s.getTripletHashes(g).forEach(l)}return e(o,i,a)};return t}();ew.exports=cO});var nw=Y((zG,rw)=>{var ql=function(r){this.name="InsufficientComplexityError",this.message=r,this.stack=new Error().stack};ql.prototype=Object.create(Error.prototype);ql.prototype.constructor=ql;rw.exports=ql});var iw=Y((GG,ow)=>{var lO=tw(),pO=nw();ow.exports=function(r){var e=lO(r);if(e.isProcessedDataTooSimple())throw new pO("Input data hasn't enough complexity");return e.buildDigest().toString()}});var sw=Y((KG,aw)=>{var dO=Wm(),uO=Um(),mO=Bm(),fO=$m(),hO=Hm(),zm=jm(),gO=function(){var r=32,e,t,n,o,i=function(m){var h=s(m),y=0;return c(h[y++]),l(h[y++]),p(h[y++]),u(g(h,y)),this},a=function(){return new mO(e,t,n,o)},s=function(m){for(var h=new Array(m.length/2),y=0;y<m.length;y+=2)h[y/2]=parseInt(m.substring(y,y+2),16);return h},c=function(m){e=new uO([zm(m)])},l=function(m){t=new fO([zm(m)])},p=function(m){n=new hO([zm(m)])},u=function(m){for(var h=new Array(m.length),y=0;y<m.length;y++)h[y]=m[m.length-1-y];o=new dO(h)},g=function(m,h){return m.slice(h,m.length)};return{withHash:i,build:a}};aw.exports=gO});var lP=Y((j4,Rp)=>{function nP(r){return Array.isArray(r)?r:[r]}var bL=void 0,hf="",tP=" ",ff="\\",EL=/^\s+$/,TL=/(?:[^\\]|^)\\$/,ML=/^\\!/,xL=/^\\#/,IL=/\r?\n/g,FL=/^\.{0,2}\/|^\.{1,2}$/,DL=/\/$/,Yi="/",oP="node-ignore";typeof Symbol<"u"&&(oP=Symbol.for("node-ignore"));var iP=oP,Xi=(r,e,t)=>(Object.defineProperty(r,e,{value:t}),t),AL=/([0-z])-([0-z])/g,aP=()=>!1,OL=r=>r.replace(AL,(e,t,n)=>t.charCodeAt(0)<=n.charCodeAt(0)?e:hf),_L=r=>{let{length:e}=r;return r.slice(0,e-e%2)},LL=[[/^\uFEFF/,()=>hf],[/((?:\\\\)*?)(\\?\s+)$/,(r,e,t)=>e+(t.indexOf("\\")===0?tP:hf)],[/(\\+?)\s/g,(r,e)=>{let{length:t}=e;return e.slice(0,t-t%2)+tP}],[/[\\$.|*+(){^]/g,r=>`\\${r}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(r,e,t)=>e+6<t.length?"(?:\\/[^\\/]+)*":"\\/.+"],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(r,e,t)=>{let n=t.replace(/\\\*/g,"[^\\/]*");return e+n}],[/\\\\\\(?=[$.|*+(){^])/g,()=>ff],[/\\\\/g,()=>ff],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(r,e,t,n,o)=>e===ff?`\\[${t}${_L(n)}${o}`:o==="]"&&n.length%2===0?`[${OL(t)}${n}]`:"[]"],[/(?:[^*])$/,r=>/\/$/.test(r)?`${r}$`:`${r}(?=$|\\/$)`]],NL=/(^|\\\/)?\\\*$/,xs="regex",wp="checkRegex",rP="_",WL={[xs](r,e){return`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`},[wp](r,e){return`${e?`${e}[^/]*`:"[^/]*"}(?=$|\\/$)`}},UL=r=>LL.reduce((e,[t,n])=>e.replace(t,n.bind(r)),r),Pp=r=>typeof r=="string",jL=r=>r&&Pp(r)&&!EL.test(r)&&!TL.test(r)&&r.indexOf("#")!==0,VL=r=>r.split(IL).filter(Boolean),gf=class{constructor(e,t,n,o,i,a){this.pattern=e,this.mark=t,this.negative=i,Xi(this,"body",n),Xi(this,"ignoreCase",o),Xi(this,"regexPrefix",a)}get regex(){let e=rP+xs;return this[e]?this[e]:this._make(xs,e)}get checkRegex(){let e=rP+wp;return this[e]?this[e]:this._make(wp,e)}_make(e,t){let n=this.regexPrefix.replace(NL,WL[e]),o=this.ignoreCase?new RegExp(n,"i"):new RegExp(n);return Xi(this,t,o)}},BL=({pattern:r,mark:e},t)=>{let n=!1,o=r;o.indexOf("!")===0&&(n=!0,o=o.substr(1)),o=o.replace(ML,"!").replace(xL,"#");let i=UL(o);return new gf(r,e,o,t,n,i)},yf=class{constructor(e){this._ignoreCase=e,this._rules=[]}_add(e){if(e&&e[iP]){this._rules=this._rules.concat(e._rules._rules),this._added=!0;return}if(Pp(e)&&(e={pattern:e}),jL(e.pattern)){let t=BL(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,nP(Pp(e)?VL(e):e).forEach(this._add,this),this._added}test(e,t,n){let o=!1,i=!1,a;this._rules.forEach(c=>{let{negative:l}=c;i===l&&o!==i||l&&!o&&!i&&!t||!c[n].test(e)||(o=!l,i=l,a=l?bL:c)});let s={ignored:o,unignored:i};return a&&(s.rule=a),s}},qL=(r,e)=>{throw new e(r)},Rn=(r,e,t)=>Pp(r)?r?Rn.isNotRelative(r)?t(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:t("path must not be empty",TypeError):t(`path must be a string, but got \`${e}\``,TypeError),sP=r=>FL.test(r);Rn.isNotRelative=sP;Rn.convert=r=>r;var Cf=class{constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:n=!1}={}){Xi(this,iP,!0),this._rules=new yf(t),this._strictPathCheck=!n,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}add(e){return this._rules.add(e)&&this._initCache(),this}addPattern(e){return this.add(e)}_test(e,t,n,o){let i=e&&Rn.convert(e);return Rn(i,e,this._strictPathCheck?qL:aP),this._t(i,t,n,o)}checkIgnore(e){if(!DL.test(e))return this.test(e);let t=e.split(Yi).filter(Boolean);if(t.pop(),t.length){let n=this._t(t.join(Yi)+Yi,this._testCache,!0,t);if(n.ignored)return n}return this._rules.test(e,!1,wp)}_t(e,t,n,o){if(e in t)return t[e];if(o||(o=e.split(Yi).filter(Boolean)),o.pop(),!o.length)return t[e]=this._rules.test(e,n,xs);let i=this._t(o.join(Yi)+Yi,t,n,o);return t[e]=i.ignored?i:this._rules.test(e,n,xs)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return nP(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},Sf=r=>new Cf(r),$L=r=>Rn(r&&Rn.convert(r),r,aP),cP=()=>{let r=t=>/^\\\\\?\\/.test(t)||/["<>|\u0000-\u001F]+/u.test(t)?t:t.replace(/\\/g,"/");Rn.convert=r;let e=/^[a-z]:\//i;Rn.isNotRelative=t=>e.test(t)||sP(t)};typeof process<"u"&&process.platform==="win32"&&cP();Rp.exports=Sf;Sf.default=Sf;Rp.exports.isPathValid=$L;Xi(Rp.exports,Symbol.for("setupWindows"),cP)});var wh=Y((zY,BR)=>{BR.exports={LOCHDR:30,LOCSIG:67324752,LOCVER:4,LOCFLG:6,LOCHOW:8,LOCTIM:10,LOCCRC:14,LOCSIZ:18,LOCLEN:22,LOCNAM:26,LOCEXT:28,EXTSIG:134695760,EXTHDR:16,EXTCRC:4,EXTSIZ:8,EXTLEN:12,CENHDR:46,CENSIG:33639248,CENVEM:4,CENVER:6,CENFLG:8,CENHOW:10,CENTIM:12,CENCRC:16,CENSIZ:20,CENLEN:24,CENNAM:28,CENEXT:30,CENCOM:32,CENDSK:34,CENATT:36,CENATX:38,CENOFF:42,ENDHDR:22,ENDSIG:101010256,ENDSUB:8,ENDTOT:10,ENDSIZ:12,ENDOFF:16,ENDCOM:20,END64HDR:20,END64SIG:117853008,END64START:4,END64OFF:8,END64NUMDISKS:16,ZIP64SIG:101075792,ZIP64HDR:56,ZIP64LEAD:12,ZIP64SIZE:4,ZIP64VEM:12,ZIP64VER:14,ZIP64DSK:16,ZIP64DSKDIR:20,ZIP64SUB:24,ZIP64TOT:32,ZIP64SIZB:40,ZIP64OFF:48,ZIP64EXTRA:56,STORED:0,SHRUNK:1,REDUCED1:2,REDUCED2:3,REDUCED3:4,REDUCED4:5,IMPLODED:6,DEFLATED:8,ENHANCED_DEFLATED:9,PKWARE:10,BZIP2:12,LZMA:14,IBM_TERSE:18,IBM_LZ77:19,AES_ENCRYPT:99,FLG_ENC:1,FLG_COMP1:2,FLG_COMP2:4,FLG_DESC:8,FLG_ENH:16,FLG_PATCH:32,FLG_STR:64,FLG_EFS:2048,FLG_MSK:4096,FILE:2,BUFFER:1,NONE:0,EF_ID:0,EF_SIZE:2,ID_ZIP64:1,ID_AVINFO:7,ID_PFS:8,ID_OS2:9,ID_NTFS:10,ID_OPENVMS:12,ID_UNIX:13,ID_FORK:14,ID_PATCH:15,ID_X509_PKCS7:20,ID_X509_CERTID_F:21,ID_X509_CERTID_C:22,ID_STRONGENC:23,ID_RECORD_MGT:24,ID_X509_PKCS7_RL:25,ID_IBM1:101,ID_IBM2:102,ID_POSZIP:18064,EF_ZIP64_OR_32:4294967295,EF_ZIP64_OR_16:65535,EF_ZIP64_SUNCOMP:0,EF_ZIP64_SCOMP:8,EF_ZIP64_RHO:16,EF_ZIP64_DSN:24}});var Up=Y($R=>{var qR={INVALID_LOC:"Invalid LOC header (bad signature)",INVALID_CEN:"Invalid CEN header (bad signature)",INVALID_END:"Invalid END header (bad signature)",DESCRIPTOR_NOT_EXIST:"No descriptor present",DESCRIPTOR_UNKNOWN:"Unknown descriptor format",DESCRIPTOR_FAULTY:"Descriptor data is malformed",NO_DATA:"Nothing to decompress",BAD_CRC:"CRC32 checksum failed {0}",FILE_IN_THE_WAY:"There is a file in the way: {0}",UNKNOWN_METHOD:"Invalid/unsupported compression method",AVAIL_DATA:"inflate::Available inflate data did not terminate",INVALID_DISTANCE:"inflate::Invalid literal/length or distance code in fixed or dynamic block",TO_MANY_CODES:"inflate::Dynamic block code description: too many length or distance codes",INVALID_REPEAT_LEN:"inflate::Dynamic block code description: repeat more than specified lengths",INVALID_REPEAT_FIRST:"inflate::Dynamic block code description: repeat lengths with no first length",INCOMPLETE_CODES:"inflate::Dynamic block code description: code lengths codes incomplete",INVALID_DYN_DISTANCE:"inflate::Dynamic block code description: invalid distance code lengths",INVALID_CODES_LEN:"inflate::Dynamic block code description: invalid literal/length code lengths",INVALID_STORE_BLOCK:"inflate::Stored block length did not match one's complement",INVALID_BLOCK_TYPE:"inflate::Invalid block type (type == 3)",CANT_EXTRACT_FILE:"Could not extract the file",CANT_OVERRIDE:"Target file already exists",DISK_ENTRY_TOO_LARGE:"Number of disk entries is too large",NO_ZIP:"No zip file was loaded",NO_ENTRY:"Entry doesn't exist",DIRECTORY_CONTENT_ERROR:"A directory cannot have content",FILE_NOT_FOUND:'File not found: "{0}"',NOT_IMPLEMENTED:"Not implemented",INVALID_FILENAME:"Invalid filename",INVALID_FORMAT:"Invalid or unsupported zip format. No END header found",INVALID_PASS_PARAM:"Incompatible password parameter",WRONG_PASSWORD:"Wrong Password",COMMENT_TOO_LONG:"Comment is too long",EXTRA_FIELD_PARSE_ERROR:"Extra field parsing error"};function wN(r){return function(...e){return e.length&&(r=r.replace(/\{(\d)\}/g,(t,n)=>e[n]||"")),new Error("ADM-ZIP: "+r)}}for(let r of Object.keys(qR))$R[r]=wN(qR[r])});var JR=Y((KY,KR)=>{var PN=require("fs"),ct=require("path"),HR=wh(),RN=Up(),bN=typeof process=="object"&&process.platform==="win32",zR=r=>typeof r=="object"&&r!==null,GR=new Uint32Array(256).map((r,e)=>{for(let t=0;t<8;t++)e&1?e=3988292384^e>>>1:e>>>=1;return e>>>0});function qe(r){this.sep=ct.sep,this.fs=PN,zR(r)&&zR(r.fs)&&typeof r.fs.statSync=="function"&&(this.fs=r.fs)}KR.exports=qe;qe.prototype.makeDir=function(r){let e=this;function t(n){let o=n.split(e.sep)[0];n.split(e.sep).forEach(function(i){if(!(!i||i.substr(-1,1)===":")){o+=e.sep+i;var a;try{a=e.fs.statSync(o)}catch(s){if(s.message&&s.message.startsWith("ENOENT"))e.fs.mkdirSync(o);else throw s}if(a&&a.isFile())throw RN.FILE_IN_THE_WAY(`"${o}"`)}})}t(r)};qe.prototype.writeFileTo=function(r,e,t,n){let o=this;if(o.fs.existsSync(r)){if(!t)return!1;var i=o.fs.statSync(r);if(i.isDirectory())return!1}var a=ct.dirname(r);o.fs.existsSync(a)||o.makeDir(a);var s;try{s=o.fs.openSync(r,"w",438)}catch{o.fs.chmodSync(r,438),s=o.fs.openSync(r,"w",438)}if(s)try{o.fs.writeSync(s,e,0,e.length,0)}finally{o.fs.closeSync(s)}return o.fs.chmodSync(r,n||438),!0};qe.prototype.writeFileToAsync=function(r,e,t,n,o){typeof n=="function"&&(o=n,n=void 0);let i=this;i.fs.exists(r,function(a){if(a&&!t)return o(!1);i.fs.stat(r,function(s,c){if(a&&c.isDirectory())return o(!1);var l=ct.dirname(r);i.fs.exists(l,function(p){p||i.makeDir(l),i.fs.open(r,"w",438,function(u,g){u?i.fs.chmod(r,438,function(){i.fs.open(r,"w",438,function(m,h){i.fs.write(h,e,0,e.length,0,function(){i.fs.close(h,function(){i.fs.chmod(r,n||438,function(){o(!0)})})})})}):g?i.fs.write(g,e,0,e.length,0,function(){i.fs.close(g,function(){i.fs.chmod(r,n||438,function(){o(!0)})})}):i.fs.chmod(r,n||438,function(){o(!0)})})})})})};qe.prototype.findFiles=function(r){let e=this;function t(n,o,i){typeof o=="boolean"&&(i=o,o=void 0);let a=[];return e.fs.readdirSync(n).forEach(function(s){let c=ct.join(n,s),l=e.fs.statSync(c);(!o||o.test(c))&&a.push(ct.normalize(c)+(l.isDirectory()?e.sep:"")),l.isDirectory()&&i&&(a=a.concat(t(c,o,i)))}),a}return t(r,void 0,!0)};qe.prototype.findFilesAsync=function(r,e){let t=this,n=[];t.fs.readdir(r,function(o,i){if(o)return e(o);let a=i.length;if(!a)return e(null,n);i.forEach(function(s){s=ct.join(r,s),t.fs.stat(s,function(c,l){if(c)return e(c);l&&(n.push(ct.normalize(s)+(l.isDirectory()?t.sep:"")),l.isDirectory()?t.findFilesAsync(s,function(p,u){if(p)return e(p);n=n.concat(u),--a||e(null,n)}):--a||e(null,n))})})})};qe.prototype.getAttributes=function(){};qe.prototype.setAttributes=function(){};qe.crc32update=function(r,e){return GR[(r^e)&255]^r>>>8};qe.crc32=function(r){typeof r=="string"&&(r=Buffer.from(r,"utf8"));let e=r.length,t=-1;for(let n=0;n<e;)t=qe.crc32update(t,r[n++]);return~t>>>0};qe.methodToString=function(r){switch(r){case HR.STORED:return"STORED ("+r+")";case HR.DEFLATED:return"DEFLATED ("+r+")";default:return"UNSUPPORTED ("+r+")"}};qe.canonical=function(r){if(!r)return"";let e=ct.posix.normalize("/"+r.split("\\").join("/"));return ct.join(".",e)};qe.zipnamefix=function(r){if(!r)return"";let e=ct.posix.normalize("/"+r.split("\\").join("/"));return ct.posix.join(".",e)};qe.findLast=function(r,e){if(!Array.isArray(r))throw new TypeError("arr is not array");let t=r.length>>>0;for(let n=t-1;n>=0;n--)if(e(r[n],n,r))return r[n]};qe.sanitize=function(r,e){r=ct.resolve(ct.normalize(r));for(var t=e.split("/"),n=0,o=t.length;n<o;n++){var i=ct.normalize(ct.join(r,t.slice(n,o).join(ct.sep)));if(i.indexOf(r)===0)return i}return ct.normalize(ct.join(r,ct.basename(e)))};qe.toBuffer=function(e,t){return Buffer.isBuffer(e)?e:e instanceof Uint8Array?Buffer.from(e):typeof e=="string"?t(e):Buffer.alloc(0)};qe.readBigUInt64LE=function(r,e){let t=r.readUInt32LE(e);return r.readUInt32LE(e+4)*4294967296+t};qe.fromDOS2Date=function(r){return new Date((r>>25&127)+1980,Math.max((r>>21&15)-1,0),Math.max(r>>16&31,1),r>>11&31,r>>5&63,(r&31)<<1)};qe.fromDate2DOS=function(r){let e=0,t=0;return r.getFullYear()>1979&&(e=(r.getFullYear()-1980&127)<<9|r.getMonth()+1<<5|r.getDate(),t=r.getHours()<<11|r.getMinutes()<<5|r.getSeconds()>>1),e<<16|t};qe.isWin=bN;qe.crcTable=GR});var YR=Y((JY,QR)=>{var EN=require("path");QR.exports=function(r,{fs:e}){var t=r||"",n=i(),o=null;function i(){return{directory:!1,readonly:!1,hidden:!1,executable:!1,mtime:0,atime:0}}return t&&e.existsSync(t)?(o=e.statSync(t),n.directory=o.isDirectory(),n.mtime=o.mtime,n.atime=o.atime,n.executable=(73&o.mode)!==0,n.readonly=(128&o.mode)===0,n.hidden=EN.basename(t)[0]==="."):console.warn("Invalid path: "+t),{get directory(){return n.directory},get readOnly(){return n.readonly},get hidden(){return n.hidden},get mtime(){return n.mtime},get atime(){return n.atime},get executable(){return n.executable},decodeAttributes:function(){},encodeAttributes:function(){},toJSON:function(){return{path:t,isDirectory:n.directory,isReadOnly:n.readonly,isHidden:n.hidden,isExecutable:n.executable,mTime:n.mtime,aTime:n.atime}},toString:function(){return JSON.stringify(this.toJSON(),null," ")}}}});var ZR=Y((QY,XR)=>{XR.exports={efs:!0,encode:r=>Buffer.from(r,"utf8"),decode:r=>r.toString("utf8")}});var la=Y((YY,ca)=>{ca.exports=JR();ca.exports.Constants=wh();ca.exports.Errors=Up();ca.exports.FileAttr=YR();ca.exports.decoder=ZR()});var tb=Y((XY,eb)=>{var mo=la(),L=mo.Constants;eb.exports=function(){var r=20,e=10,t=0,n=0,o=0,i=0,a=0,s=0,c=0,l=0,p=0,u=0,g=0,m=0,h=0;r|=mo.isWin?2560:768,t|=L.FLG_EFS;let y={extraLen:0},C=f=>Math.max(0,f)>>>0,v=f=>Math.max(0,f)&65535,w=f=>Math.max(0,f)&255;return o=mo.fromDate2DOS(new Date),{get made(){return r},set made(f){r=f},get version(){return e},set version(f){e=f},get flags(){return t},set flags(f){t=f},get flags_efs(){return(t&L.FLG_EFS)>0},set flags_efs(f){f?t|=L.FLG_EFS:t&=~L.FLG_EFS},get flags_desc(){return(t&L.FLG_DESC)>0},set flags_desc(f){f?t|=L.FLG_DESC:t&=~L.FLG_DESC},get method(){return n},set method(f){switch(f){case L.STORED:this.version=10;case L.DEFLATED:default:this.version=20}n=f},get time(){return mo.fromDOS2Date(this.timeval)},set time(f){f=new Date(f),this.timeval=mo.fromDate2DOS(f)},get timeval(){return o},set timeval(f){o=C(f)},get timeHighByte(){return w(o>>>8)},get crc(){return i},set crc(f){i=C(f)},get compressedSize(){return a},set compressedSize(f){a=C(f)},get size(){return s},set size(f){s=C(f)},get fileNameLength(){return c},set fileNameLength(f){c=f},get extraLength(){return l},set extraLength(f){l=f},get extraLocalLength(){return y.extraLen},set extraLocalLength(f){y.extraLen=f},get commentLength(){return p},set commentLength(f){p=f},get diskNumStart(){return u},set diskNumStart(f){u=C(f)},get inAttr(){return g},set inAttr(f){g=C(f)},get attr(){return m},set attr(f){m=C(f)},get fileAttr(){return(m||0)>>16&4095},get offset(){return h},set offset(f){h=C(f)},get encrypted(){return(t&L.FLG_ENC)===L.FLG_ENC},get centralHeaderSize(){return L.CENHDR+c+l+p},get realDataOffset(){return h+L.LOCHDR+y.fnameLen+y.extraLen},get localHeader(){return y},loadLocalHeaderFromBinary:function(f){var S=f.slice(h,h+L.LOCHDR);if(S.readUInt32LE(0)!==L.LOCSIG)throw mo.Errors.INVALID_LOC();y.version=S.readUInt16LE(L.LOCVER),y.flags=S.readUInt16LE(L.LOCFLG),y.flags_desc=(y.flags&L.FLG_DESC)>0,y.method=S.readUInt16LE(L.LOCHOW),y.time=S.readUInt32LE(L.LOCTIM),y.crc=S.readUInt32LE(L.LOCCRC),y.compressedSize=S.readUInt32LE(L.LOCSIZ),y.size=S.readUInt32LE(L.LOCLEN),y.fnameLen=S.readUInt16LE(L.LOCNAM),y.extraLen=S.readUInt16LE(L.LOCEXT);let k=h+L.LOCHDR+y.fnameLen,b=k+y.extraLen;return f.slice(k,b)},loadFromBinary:function(f){if(f.length!==L.CENHDR||f.readUInt32LE(0)!==L.CENSIG)throw mo.Errors.INVALID_CEN();r=f.readUInt16LE(L.CENVEM),e=f.readUInt16LE(L.CENVER),t=f.readUInt16LE(L.CENFLG),n=f.readUInt16LE(L.CENHOW),o=f.readUInt32LE(L.CENTIM),i=f.readUInt32LE(L.CENCRC),a=f.readUInt32LE(L.CENSIZ),s=f.readUInt32LE(L.CENLEN),c=f.readUInt16LE(L.CENNAM),l=f.readUInt16LE(L.CENEXT),p=f.readUInt16LE(L.CENCOM),u=f.readUInt16LE(L.CENDSK),g=f.readUInt16LE(L.CENATT),m=f.readUInt32LE(L.CENATX),h=f.readUInt32LE(L.CENOFF)},localHeaderToBinary:function(){var f=Buffer.alloc(L.LOCHDR);return f.writeUInt32LE(L.LOCSIG,0),f.writeUInt16LE(e,L.LOCVER),f.writeUInt16LE(t,L.LOCFLG),f.writeUInt16LE(n,L.LOCHOW),f.writeUInt32LE(o,L.LOCTIM),f.writeUInt32LE(i,L.LOCCRC),f.writeUInt32LE(a,L.LOCSIZ),f.writeUInt32LE(s,L.LOCLEN),f.writeUInt16LE(c,L.LOCNAM),f.writeUInt16LE(y.extraLen,L.LOCEXT),f},centralHeaderToBinary:function(){var f=Buffer.alloc(L.CENHDR+c+l+p);return f.writeUInt32LE(L.CENSIG,0),f.writeUInt16LE(r,L.CENVEM),f.writeUInt16LE(e,L.CENVER),f.writeUInt16LE(t,L.CENFLG),f.writeUInt16LE(n,L.CENHOW),f.writeUInt32LE(o,L.CENTIM),f.writeUInt32LE(i,L.CENCRC),f.writeUInt32LE(a,L.CENSIZ),f.writeUInt32LE(s,L.CENLEN),f.writeUInt16LE(c,L.CENNAM),f.writeUInt16LE(l,L.CENEXT),f.writeUInt16LE(p,L.CENCOM),f.writeUInt16LE(u,L.CENDSK),f.writeUInt16LE(g,L.CENATT),f.writeUInt32LE(m,L.CENATX),f.writeUInt32LE(h,L.CENOFF),f},toJSON:function(){let f=function(S){return S+" bytes"};return{made:r,version:e,flags:t,method:mo.methodToString(n),time:this.time,crc:"0x"+i.toString(16).toUpperCase(),compressedSize:f(a),size:f(s),fileNameLength:f(c),extraLength:f(l),commentLength:f(p),diskNumStart:u,inAttr:g,attr:m,offset:h,centralHeaderSize:f(L.CENHDR+c+l+p)}},toString:function(){return JSON.stringify(this.toJSON(),null," ")}}}});var nb=Y((ZY,rb)=>{var pa=la(),Le=pa.Constants;rb.exports=function(){var r=0,e=0,t=0,n=0,o=0;return{get diskEntries(){return r},set diskEntries(i){r=e=i},get totalEntries(){return e},set totalEntries(i){e=r=i},get size(){return t},set size(i){t=i},get offset(){return n},set offset(i){n=i},get commentLength(){return o},set commentLength(i){o=i},get mainHeaderSize(){return Le.ENDHDR+o},loadFromBinary:function(i){if((i.length!==Le.ENDHDR||i.readUInt32LE(0)!==Le.ENDSIG)&&(i.length<Le.ZIP64HDR||i.readUInt32LE(0)!==Le.ZIP64SIG))throw pa.Errors.INVALID_END();i.readUInt32LE(0)===Le.ENDSIG?(r=i.readUInt16LE(Le.ENDSUB),e=i.readUInt16LE(Le.ENDTOT),t=i.readUInt32LE(Le.ENDSIZ),n=i.readUInt32LE(Le.ENDOFF),o=i.readUInt16LE(Le.ENDCOM)):(r=pa.readBigUInt64LE(i,Le.ZIP64SUB),e=pa.readBigUInt64LE(i,Le.ZIP64TOT),t=pa.readBigUInt64LE(i,Le.ZIP64SIZE),n=pa.readBigUInt64LE(i,Le.ZIP64OFF),o=0)},toBinary:function(){var i=Buffer.alloc(Le.ENDHDR+o);return i.writeUInt32LE(Le.ENDSIG,0),i.writeUInt32LE(0,4),i.writeUInt16LE(r,Le.ENDSUB),i.writeUInt16LE(e,Le.ENDTOT),i.writeUInt32LE(t,Le.ENDSIZ),i.writeUInt32LE(n,Le.ENDOFF),i.writeUInt16LE(o,Le.ENDCOM),i.fill(" ",Le.ENDHDR),i},toJSON:function(){let i=function(a,s){let c=a.toString(16).toUpperCase();for(;c.length<s;)c="0"+c;return"0x"+c};return{diskEntries:r,totalEntries:e,size:t+" bytes",offset:i(n,4),commentLength:o}},toString:function(){return JSON.stringify(this.toJSON(),null," ")}}}});var Rh=Y(Ph=>{Ph.EntryHeader=tb();Ph.MainHeader=nb()});var ib=Y((tX,ob)=>{ob.exports=function(r){var e=require("zlib"),t={chunkSize:(parseInt(r.length/1024)+1)*1024};return{deflate:function(){return e.deflateRawSync(r,t)},deflateAsync:function(n){var o=e.createDeflateRaw(t),i=[],a=0;o.on("data",function(s){i.push(s),a+=s.length}),o.on("end",function(){var s=Buffer.alloc(a),c=0;s.fill(0);for(var l=0;l<i.length;l++){var p=i[l];p.copy(s,c),c+=p.length}n&&n(s)}),o.end(r)}}}});var sb=Y((rX,ab)=>{var TN=+(process.versions?process.versions.node:"").split(".")[0]||0;ab.exports=function(r,e){var t=require("zlib");let n=TN>=15&&e>0?{maxOutputLength:e}:{};return{inflate:function(){return t.inflateRawSync(r,n)},inflateAsync:function(o){var i=t.createInflateRaw(n),a=[],s=0;i.on("data",function(c){a.push(c),s+=c.length}),i.on("end",function(){var c=Buffer.alloc(s),l=0;c.fill(0);for(var p=0;p<a.length;p++){var u=a[p];u.copy(c,l),l+=u.length}o&&o(c)}),i.end(r)}}}});var ub=Y((nX,db)=>{"use strict";var{randomFillSync:cb}=require("crypto"),MN=Up(),xN=new Uint32Array(256).map((r,e)=>{for(let t=0;t<8;t++)e&1?e=e>>>1^3988292384:e>>>=1;return e>>>0}),pb=(r,e)=>Math.imul(r,e)>>>0,lb=(r,e)=>xN[(r^e)&255]^r>>>8,Ns=()=>typeof cb=="function"?cb(Buffer.alloc(12)):Ns.node();Ns.node=()=>{let r=Buffer.alloc(12),e=r.length;for(let t=0;t<e;t++)r[t]=Math.random()*256&255;return r};var jp={genSalt:Ns};function Vp(r){let e=Buffer.isBuffer(r)?r:Buffer.from(r);this.keys=new Uint32Array([305419896,591751049,878082192]);for(let t=0;t<e.length;t++)this.updateKeys(e[t])}Vp.prototype.updateKeys=function(r){let e=this.keys;return e[0]=lb(e[0],r),e[1]+=e[0]&255,e[1]=pb(e[1],134775813)+1,e[2]=lb(e[2],e[1]>>>24),r};Vp.prototype.next=function(){let r=(this.keys[2]|2)>>>0;return pb(r,r^1)>>8&255};function IN(r){let e=new Vp(r);return function(t){let n=Buffer.alloc(t.length),o=0;for(let i of t)n[o++]=e.updateKeys(i^e.next());return n}}function FN(r){let e=new Vp(r);return function(t,n,o=0){n||(n=Buffer.alloc(t.length));for(let i of t){let a=e.next();n[o++]=i^a,e.updateKeys(i)}return n}}function DN(r,e,t){if(!r||!Buffer.isBuffer(r)||r.length<12)return Buffer.alloc(0);let n=IN(t),o=n(r.slice(0,12)),i=(e.flags&8)===8?e.timeHighByte:e.crc>>>24;if(o[11]!==i)throw MN.WRONG_PASSWORD();return n(r.slice(12))}function AN(r){Buffer.isBuffer(r)&&r.length>=12?jp.genSalt=function(){return r.slice(0,12)}:r==="node"?jp.genSalt=Ns.node:jp.genSalt=Ns}function ON(r,e,t,n=!1){r==null&&(r=Buffer.alloc(0)),Buffer.isBuffer(r)||(r=Buffer.from(r.toString()));let o=FN(t),i=jp.genSalt();i[11]=e.crc>>>24&255,n&&(i[10]=e.crc>>>16&255);let a=Buffer.alloc(r.length+12);return o(i,a),o(r,a,12)}db.exports={decrypt:DN,encrypt:ON,_salter:AN}});var mb=Y(Bp=>{Bp.Deflater=ib();Bp.Inflater=sb();Bp.ZipCrypto=ub()});var Eh=Y((iX,fb)=>{var he=la(),_N=Rh(),$e=he.Constants,bh=mb();fb.exports=function(r,e){var t=new _N.EntryHeader,n=Buffer.alloc(0),o=Buffer.alloc(0),i=!1,a=null,s=Buffer.alloc(0),c=Buffer.alloc(0),l=!0;let p=r,u=typeof p.decoder=="object"?p.decoder:he.decoder;l=u.hasOwnProperty("efs")?u.efs:!1;function g(){return!e||!(e instanceof Uint8Array)?Buffer.alloc(0):(c=t.loadLocalHeaderFromBinary(e),e.slice(t.realDataOffset,t.realDataOffset+t.compressedSize))}function m(f){if(!t.flags_desc&&!t.localHeader.flags_desc){if(he.crc32(f)!==t.localHeader.crc)return!1}else{let S={},k=t.realDataOffset+t.compressedSize;if(e.readUInt32LE(k)==$e.LOCSIG||e.readUInt32LE(k)==$e.CENSIG)throw he.Errors.DESCRIPTOR_NOT_EXIST();if(e.readUInt32LE(k)==$e.EXTSIG)S.crc=e.readUInt32LE(k+$e.EXTCRC),S.compressedSize=e.readUInt32LE(k+$e.EXTSIZ),S.size=e.readUInt32LE(k+$e.EXTLEN);else if(e.readUInt16LE(k+12)===19280)S.crc=e.readUInt32LE(k+$e.EXTCRC-4),S.compressedSize=e.readUInt32LE(k+$e.EXTSIZ-4),S.size=e.readUInt32LE(k+$e.EXTLEN-4);else throw he.Errors.DESCRIPTOR_UNKNOWN();if(S.compressedSize!==t.compressedSize||S.size!==t.size||S.crc!==t.crc)throw he.Errors.DESCRIPTOR_FAULTY();if(he.crc32(f)!==S.crc)return!1}return!0}function h(f,S,k){if(typeof S>"u"&&typeof f=="string"&&(k=f,f=void 0),i)return f&&S&&S(Buffer.alloc(0),he.Errors.DIRECTORY_CONTENT_ERROR()),Buffer.alloc(0);var b=g();if(b.length===0)return f&&S&&S(b),b;if(t.encrypted){if(typeof k!="string"&&!Buffer.isBuffer(k))throw he.Errors.INVALID_PASS_PARAM();b=bh.ZipCrypto.decrypt(b,t,k)}var P=Buffer.alloc(t.size);switch(t.method){case he.Constants.STORED:if(b.copy(P),m(P))return f&&S&&S(P),P;throw f&&S&&S(P,he.Errors.BAD_CRC()),he.Errors.BAD_CRC();case he.Constants.DEFLATED:var Q=new bh.Inflater(b,t.size);if(f)Q.inflateAsync(function(M){M.copy(M,0),S&&(m(M)?S(M):S(M,he.Errors.BAD_CRC()))});else{if(Q.inflate(P).copy(P,0),!m(P))throw he.Errors.BAD_CRC(`"${u.decode(n)}"`);return P}break;default:throw f&&S&&S(Buffer.alloc(0),he.Errors.UNKNOWN_METHOD()),he.Errors.UNKNOWN_METHOD()}}function y(f,S){if((!a||!a.length)&&Buffer.isBuffer(e))return f&&S&&S(g()),g();if(a.length&&!i){var k;switch(t.method){case he.Constants.STORED:return t.compressedSize=t.size,k=Buffer.alloc(a.length),a.copy(k),f&&S&&S(k),k;default:case he.Constants.DEFLATED:var b=new bh.Deflater(a);if(f)b.deflateAsync(function(Q){k=Buffer.alloc(Q.length),t.compressedSize=Q.length,Q.copy(k),S&&S(k)});else{var P=b.deflate();return t.compressedSize=P.length,P}b=null;break}}else if(f&&S)S(Buffer.alloc(0));else return Buffer.alloc(0)}function C(f,S){return he.readBigUInt64LE(f,S)}function v(f){try{for(var S=0,k,b,P;S+4<f.length;)k=f.readUInt16LE(S),S+=2,b=f.readUInt16LE(S),S+=2,P=f.slice(S,S+b),S+=b,$e.ID_ZIP64===k&&w(P)}catch{throw he.Errors.EXTRA_FIELD_PARSE_ERROR()}}function w(f){var S,k,b,P;f.length>=$e.EF_ZIP64_SCOMP&&(S=C(f,$e.EF_ZIP64_SUNCOMP),t.size===$e.EF_ZIP64_OR_32&&(t.size=S)),f.length>=$e.EF_ZIP64_RHO&&(k=C(f,$e.EF_ZIP64_SCOMP),t.compressedSize===$e.EF_ZIP64_OR_32&&(t.compressedSize=k)),f.length>=$e.EF_ZIP64_DSN&&(b=C(f,$e.EF_ZIP64_RHO),t.offset===$e.EF_ZIP64_OR_32&&(t.offset=b)),f.length>=$e.EF_ZIP64_DSN+4&&(P=f.readUInt32LE($e.EF_ZIP64_DSN),t.diskNumStart===$e.EF_ZIP64_OR_16&&(t.diskNumStart=P))}return{get entryName(){return u.decode(n)},get rawEntryName(){return n},set entryName(f){n=he.toBuffer(f,u.encode);var S=n[n.length-1];i=S===47||S===92,t.fileNameLength=n.length},get efs(){return typeof l=="function"?l(this.entryName):l},get extra(){return s},set extra(f){s=f,t.extraLength=f.length,v(f)},get comment(){return u.decode(o)},set comment(f){if(o=he.toBuffer(f,u.encode),t.commentLength=o.length,o.length>65535)throw he.Errors.COMMENT_TOO_LONG()},get name(){var f=u.decode(n);return i?f.substr(f.length-1).split("/").pop():f.split("/").pop()},get isDirectory(){return i},getCompressedData:function(){return y(!1,null)},getCompressedDataAsync:function(f){y(!0,f)},setData:function(f){a=he.toBuffer(f,he.decoder.encode),!i&&a.length?(t.size=a.length,t.method=he.Constants.DEFLATED,t.crc=he.crc32(f),t.changed=!0):t.method=he.Constants.STORED},getData:function(f){return t.changed?a:h(!1,null,f)},getDataAsync:function(f,S){t.changed?f(a):h(!0,f,S)},set attr(f){t.attr=f},get attr(){return t.attr},set header(f){t.loadFromBinary(f)},get header(){return t},packCentralHeader:function(){t.flags_efs=this.efs,t.extraLength=s.length;var f=t.centralHeaderToBinary(),S=he.Constants.CENHDR;return n.copy(f,S),S+=n.length,s.copy(f,S),S+=t.extraLength,o.copy(f,S),f},packLocalHeader:function(){let f=0;t.flags_efs=this.efs,t.extraLocalLength=c.length;let S=t.localHeaderToBinary(),k=Buffer.alloc(S.length+n.length+t.extraLocalLength);return S.copy(k,f),f+=S.length,n.copy(k,f),f+=n.length,c.copy(k,f),f+=c.length,k},toJSON:function(){let f=function(S){return"<"+(S&&S.length+" bytes buffer"||"null")+">"};return{entryName:this.entryName,name:this.name,comment:this.comment,isDirectory:this.isDirectory,header:t.toJSON(),compressedData:f(e),data:f(a)}},toString:function(){return JSON.stringify(this.toJSON(),null," ")}}}});var yb=Y((aX,gb)=>{var hb=Eh(),LN=Rh(),Ct=la();gb.exports=function(r,e){var t=[],n={},o=Buffer.alloc(0),i=new LN.MainHeader,a=!1,s=null;let c=new Set,l=e,{noSort:p,decoder:u}=l;r?h(l.readEntries):a=!0;function g(){let C=new Set;for(let v of Object.keys(n)){let w=v.split("/");if(w.pop(),!!w.length)for(let f=0;f<w.length;f++){let S=w.slice(0,f+1).join("/")+"/";C.add(S)}}for(let v of C)if(!(v in n)){let w=new hb(l);w.entryName=v,w.attr=16,w.temporary=!0,t.push(w),n[w.entryName]=w,c.add(w)}}function m(){if(a=!0,n={},i.diskEntries>(r.length-i.offset)/Ct.Constants.CENHDR)throw Ct.Errors.DISK_ENTRY_TOO_LARGE();t=new Array(i.diskEntries);for(var C=i.offset,v=0;v<t.length;v++){var w=C,f=new hb(l,r);f.header=r.slice(w,w+=Ct.Constants.CENHDR),f.entryName=r.slice(w,w+=f.header.fileNameLength),f.header.extraLength&&(f.extra=r.slice(w,w+=f.header.extraLength)),f.header.commentLength&&(f.comment=r.slice(w,w+f.header.commentLength)),C+=f.header.centralHeaderSize,t[v]=f,n[f.entryName]=f}c.clear(),g()}function h(C){var v=r.length-Ct.Constants.ENDHDR,w=Math.max(0,v-65535),f=w,S=r.length,k=-1,b=0;for((typeof l.trailingSpace=="boolean"?l.trailingSpace:!1)&&(w=0),v;v>=f;v--)if(r[v]===80){if(r.readUInt32LE(v)===Ct.Constants.ENDSIG){k=v,b=v,S=v+Ct.Constants.ENDHDR,f=v-Ct.Constants.END64HDR;continue}if(r.readUInt32LE(v)===Ct.Constants.END64SIG){f=w;continue}if(r.readUInt32LE(v)===Ct.Constants.ZIP64SIG){k=v,S=v+Ct.readBigUInt64LE(r,v+Ct.Constants.ZIP64SIZE)+Ct.Constants.ZIP64LEAD;break}}if(k==-1)throw Ct.Errors.INVALID_FORMAT();i.loadFromBinary(r.slice(k,S)),i.commentLength&&(o=r.slice(b+Ct.Constants.ENDHDR)),C&&m()}function y(){t.length>1&&!p&&t.sort((C,v)=>C.entryName.toLowerCase().localeCompare(v.entryName.toLowerCase()))}return{get entries(){return a||m(),t.filter(C=>!c.has(C))},get comment(){return u.decode(o)},set comment(C){o=Ct.toBuffer(C,u.encode),i.commentLength=o.length},getEntryCount:function(){return a?t.length:i.diskEntries},forEach:function(C){this.entries.forEach(C)},getEntry:function(C){return a||m(),n[C]||null},setEntry:function(C){a||m(),t.push(C),n[C.entryName]=C,i.totalEntries=t.length},deleteFile:function(C,v=!0){a||m();let w=n[C];this.getEntryChildren(w,v).map(S=>S.entryName).forEach(this.deleteEntry)},deleteEntry:function(C){a||m();let v=n[C],w=t.indexOf(v);w>=0&&(t.splice(w,1),delete n[C],i.totalEntries=t.length)},getEntryChildren:function(C,v=!0){if(a||m(),typeof C=="object")if(C.isDirectory&&v){let w=[],f=C.entryName;for(let S of t)S.entryName.startsWith(f)&&w.push(S);return w}else return[C];return[]},getChildCount:function(C){if(C&&C.isDirectory){let v=this.getEntryChildren(C);return v.includes(C)?v.length-1:v.length}return 0},compressToBuffer:function(){a||m(),y();let C=[],v=[],w=0,f=0;i.size=0,i.offset=0;let S=0;for(let P of this.entries){let Q=P.getCompressedData();P.header.offset=f;let M=P.packLocalHeader(),z=M.length+Q.length;f+=z,C.push(M),C.push(Q);let j=P.packCentralHeader();v.push(j),i.size+=j.length,w+=z+j.length,S++}w+=i.mainHeaderSize,i.offset=f,i.totalEntries=S,f=0;let k=Buffer.alloc(w);for(let P of C)P.copy(k,f),f+=P.length;for(let P of v)P.copy(k,f),f+=P.length;let b=i.toBinary();return o&&o.copy(b,Ct.Constants.ENDHDR),b.copy(k,f),r=k,a=!1,k},toAsyncBuffer:function(C,v,w,f){try{a||m(),y();let S=[],k=[],b=0,P=0,Q=0;i.size=0,i.offset=0;let M=function(z){if(z.length>0){let j=z.shift(),ee=j.entryName+j.extra.toString();w&&w(ee),j.getCompressedDataAsync(function(V){f&&f(ee),j.header.offset=P;let q=j.packLocalHeader(),K=q.length+V.length;P+=K,S.push(q),S.push(V);let oe=j.packCentralHeader();k.push(oe),i.size+=oe.length,b+=K+oe.length,Q++,M(z)})}else{b+=i.mainHeaderSize,i.offset=P,i.totalEntries=Q,P=0;let j=Buffer.alloc(b);S.forEach(function(V){V.copy(j,P),P+=V.length}),k.forEach(function(V){V.copy(j,P),P+=V.length});let ee=i.toBinary();o&&o.copy(ee,Ct.Constants.ENDHDR),ee.copy(j,P),r=j,a=!1,C(j)}};M(Array.from(this.entries))}catch(S){v(S)}}}}});var vb=Y((sX,Sb)=>{var We=la(),Ne=require("path"),NN=Eh(),WN=yb(),Yo=(...r)=>We.findLast(r,e=>typeof e=="boolean"),Cb=(...r)=>We.findLast(r,e=>typeof e=="string"),UN=(...r)=>We.findLast(r,e=>typeof e=="function"),jN={noSort:!1,readEntries:!1,method:We.Constants.NONE,fs:null};Sb.exports=function(r,e){let t=null,n=Object.assign(Object.create(null),jN);r&&typeof r=="object"&&(r instanceof Uint8Array||(Object.assign(n,r),r=n.input?n.input:void 0,n.input&&delete n.input),Buffer.isBuffer(r)&&(t=r,n.method=We.Constants.BUFFER,r=void 0)),Object.assign(n,e);let o=new We(n);if((typeof n.decoder!="object"||typeof n.decoder.encode!="function"||typeof n.decoder.decode!="function")&&(n.decoder=We.decoder),r&&typeof r=="string")if(o.fs.existsSync(r))n.method=We.Constants.FILE,n.filename=r,t=o.fs.readFileSync(r);else throw We.Errors.INVALID_FILENAME();let i=new WN(t,n),{canonical:a,sanitize:s,zipnamefix:c}=We;function l(m){if(m&&i){var h;if(typeof m=="string"&&(h=i.getEntry(Ne.posix.normalize(m))),typeof m=="object"&&typeof m.entryName<"u"&&typeof m.header<"u"&&(h=i.getEntry(m.entryName)),h)return h}return null}function p(m){let{join:h,normalize:y,sep:C}=Ne.posix;return h(Ne.isAbsolute(m)?"/":".",y(C+m.split("\\").join(C)+C))}function u(m){return m instanceof RegExp?function(h){return function(y){return h.test(y)}}(m):typeof m!="function"?()=>!0:m}let g=(m,h)=>{let y=h.slice(-1);return y=y===o.sep?o.sep:"",Ne.relative(m,h)+y};return{readFile:function(m,h){var y=l(m);return y&&y.getData(h)||null},childCount:function(m){let h=l(m);if(h)return i.getChildCount(h)},readFileAsync:function(m,h){var y=l(m);y?y.getDataAsync(h):h(null,"getEntry failed for:"+m)},readAsText:function(m,h){var y=l(m);if(y){var C=y.getData();if(C&&C.length)return C.toString(h||"utf8")}return""},readAsTextAsync:function(m,h,y){var C=l(m);C?C.getDataAsync(function(v,w){if(w){h(v,w);return}v&&v.length?h(v.toString(y||"utf8")):h("")}):h("")},deleteFile:function(m,h=!0){var y=l(m);y&&i.deleteFile(y.entryName,h)},deleteEntry:function(m){var h=l(m);h&&i.deleteEntry(h.entryName)},addZipComment:function(m){i.comment=m},getZipComment:function(){return i.comment||""},addZipEntryComment:function(m,h){var y=l(m);y&&(y.comment=h)},getZipEntryComment:function(m){var h=l(m);return h&&h.comment||""},updateFile:function(m,h){var y=l(m);y&&y.setData(h)},addLocalFile:function(m,h,y,C){if(o.fs.existsSync(m)){h=h?p(h):"";let v=Ne.win32.basename(Ne.win32.normalize(m));h+=y||v;let w=o.fs.statSync(m),f=w.isFile()?o.fs.readFileSync(m):Buffer.alloc(0);w.isDirectory()&&(h+=o.sep),this.addFile(h,f,C,w)}else throw We.Errors.FILE_NOT_FOUND(m)},addLocalFileAsync:function(m,h){m=typeof m=="object"?m:{localPath:m};let y=Ne.resolve(m.localPath),{comment:C}=m,{zipPath:v,zipName:w}=m,f=this;o.fs.stat(y,function(S,k){if(S)return h(S,!1);v=v?p(v):"";let b=Ne.win32.basename(Ne.win32.normalize(y));if(v+=w||b,k.isFile())o.fs.readFile(y,function(P,Q){return P?h(P,!1):(f.addFile(v,Q,C,k),setImmediate(h,void 0,!0))});else if(k.isDirectory())return v+=o.sep,f.addFile(v,Buffer.alloc(0),C,k),setImmediate(h,void 0,!0)})},addLocalFolder:function(m,h,y){if(y=u(y),h=h?p(h):"",m=Ne.normalize(m),o.fs.existsSync(m)){let C=o.findFiles(m),v=this;if(C.length)for(let w of C){let f=Ne.join(h,g(m,w));y(f)&&v.addLocalFile(w,Ne.dirname(f))}}else throw We.Errors.FILE_NOT_FOUND(m)},addLocalFolderAsync:function(m,h,y,C){C=u(C),y=y?p(y):"",m=Ne.normalize(m);var v=this;o.fs.open(m,"r",function(w){if(w&&w.code==="ENOENT")h(void 0,We.Errors.FILE_NOT_FOUND(m));else if(w)h(void 0,w);else{var f=o.findFiles(m),S=-1,k=function(){if(S+=1,S<f.length){var b=f[S],P=g(m,b).split("\\").join("/");P=P.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x20-\x7E]/g,""),C(P)?o.fs.stat(b,function(Q,M){Q&&h(void 0,Q),M.isFile()?o.fs.readFile(b,function(z,j){z?h(void 0,z):(v.addFile(y+P,j,"",M),k())}):(v.addFile(y+P+"/",Buffer.alloc(0),"",M),k())}):process.nextTick(()=>{k()})}else h(!0,void 0)};k()}})},addLocalFolderAsync2:function(m,h){let y=this;m=typeof m=="object"?m:{localPath:m},localPath=Ne.resolve(p(m.localPath));let{zipPath:C,filter:v,namefix:w}=m;v instanceof RegExp?v=function(k){return function(b){return k.test(b)}}(v):typeof v!="function"&&(v=function(){return!0}),C=C?p(C):"",w=="latin1"&&(w=k=>k.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x20-\x7E]/g,"")),typeof w!="function"&&(w=k=>k);let f=k=>Ne.join(C,w(g(localPath,k))),S=k=>Ne.win32.basename(Ne.win32.normalize(w(k)));o.fs.open(localPath,"r",function(k){k&&k.code==="ENOENT"?h(void 0,We.Errors.FILE_NOT_FOUND(localPath)):k?h(void 0,k):o.findFilesAsync(localPath,function(b,P){if(b)return h(b);P=P.filter(Q=>v(f(Q))),P.length||h(void 0,!1),setImmediate(P.reverse().reduce(function(Q,M){return function(z,j){if(z||j===!1)return setImmediate(Q,z,!1);y.addLocalFileAsync({localPath:M,zipPath:Ne.dirname(f(M)),zipName:S(M)},Q)}},h))})})},addLocalFolderPromise:function(m,h){return new Promise((y,C)=>{this.addLocalFolderAsync2(Object.assign({localPath:m},h),(v,w)=>{v&&C(v),w&&y(this)})})},addFile:function(m,h,y,C){m=c(m);let v=l(m),w=v!=null;w||(v=new NN(n),v.entryName=m),v.comment=y||"";let f=typeof C=="object"&&C instanceof o.fs.Stats;f&&(v.header.time=C.mtime);var S=v.isDirectory?16:0;let k=v.isDirectory?16384:32768;return f?k|=4095&C.mode:typeof C=="number"?k|=4095&C:k|=v.isDirectory?493:420,S=(S|k<<16)>>>0,v.attr=S,v.setData(h),w||i.setEntry(v),v},getEntries:function(m){return i.password=m,i?i.entries:[]},getEntry:function(m){return l(m)},getEntryCount:function(){return i.getEntryCount()},forEach:function(m){return i.forEach(m)},extractEntryTo:function(m,h,y,C,v,w){C=Yo(!1,C),v=Yo(!1,v),y=Yo(!0,y),w=Cb(v,w);var f=l(m);if(!f)throw We.Errors.NO_ENTRY();var S=a(f.entryName),k=s(h,w&&!f.isDirectory?w:y?S:Ne.basename(S));if(f.isDirectory){var b=i.getEntryChildren(f);return b.forEach(function(M){if(M.isDirectory)return;var z=M.getData();if(!z)throw We.Errors.CANT_EXTRACT_FILE();var j=a(M.entryName),ee=s(h,y?j:Ne.basename(j));let V=v?M.header.fileAttr:void 0;o.writeFileTo(ee,z,C,V)}),!0}var P=f.getData(i.password);if(!P)throw We.Errors.CANT_EXTRACT_FILE();if(o.fs.existsSync(k)&&!C)throw We.Errors.CANT_OVERRIDE();let Q=v?m.header.fileAttr:void 0;return o.writeFileTo(k,P,C,Q),!0},test:function(m){if(!i)return!1;for(var h in i.entries)try{if(h.isDirectory)continue;var y=i.entries[h].getData(m);if(!y)return!1}catch{return!1}return!0},extractAllTo:function(m,h,y,C){if(y=Yo(!1,y),C=Cb(y,C),h=Yo(!1,h),!i)throw We.Errors.NO_ZIP();i.entries.forEach(function(v){var w=s(m,a(v.entryName));if(v.isDirectory){o.makeDir(w);return}var f=v.getData(C);if(!f)throw We.Errors.CANT_EXTRACT_FILE();let S=y?v.header.fileAttr:void 0;o.writeFileTo(w,f,h,S);try{o.fs.utimesSync(w,v.header.time,v.header.time)}catch{throw We.Errors.CANT_EXTRACT_FILE()}})},extractAllToAsync:function(m,h,y,C){if(C=UN(h,y,C),y=Yo(!1,y),h=Yo(!1,h),!C)return new Promise((k,b)=>{this.extractAllToAsync(m,h,y,function(P){P?b(P):k(this)})});if(!i){C(We.Errors.NO_ZIP());return}m=Ne.resolve(m);let v=k=>s(m,Ne.normalize(a(k.entryName))),w=(k,b)=>new Error(k+': "'+b+'"'),f=[],S=[];i.entries.forEach(k=>{k.isDirectory?f.push(k):S.push(k)});for(let k of f){let b=v(k),P=y?k.header.fileAttr:void 0;try{o.makeDir(b),P&&o.fs.chmodSync(b,P),o.fs.utimesSync(b,k.header.time,k.header.time)}catch{C(w("Unable to create folder",b))}}S.reverse().reduce(function(k,b){return function(P){if(P)k(P);else{let Q=Ne.normalize(a(b.entryName)),M=s(m,Q);b.getDataAsync(function(z,j){if(j)k(j);else if(!z)k(We.Errors.CANT_EXTRACT_FILE());else{let ee=y?b.header.fileAttr:void 0;o.writeFileToAsync(M,z,h,ee,function(V){V||k(w("Unable to write file",M)),o.fs.utimes(M,b.header.time,b.header.time,function(q){q?k(w("Unable to set times",M)):k()})})}})}}},C)()},writeZip:function(m,h){if(arguments.length===1&&typeof m=="function"&&(h=m,m=""),!m&&n.filename&&(m=n.filename),!!m){var y=i.compressToBuffer();if(y){var C=o.writeFileTo(m,y,!0);typeof h=="function"&&h(C?null:new Error("failed"),"")}}},writeZipPromise:function(m,h){let{overwrite:y,perm:C}=Object.assign({overwrite:!0},h);return new Promise((v,w)=>{!m&&n.filename&&(m=n.filename),m||w("ADM-ZIP: ZIP File Name Missing"),this.toBufferPromise().then(f=>{let S=k=>k?v(k):w("ADM-ZIP: Wasn't able to write zip file");o.writeFileToAsync(m,f,y,C,S)},w)})},toBufferPromise:function(){return new Promise((m,h)=>{i.toAsyncBuffer(m,h)})},toBuffer:function(m,h,y,C){return typeof m=="function"?(i.toAsyncBuffer(m,h,y,C),null):i.compressToBuffer()}}}});var wj={};Ed(wj,{runCli:()=>gM});module.exports=Yg(wj);var hM=E(require("path"));var et=class{constructor(e,t,n){this.id=e;this.payload=t;this.source=n}};var Sa=class{listeners=new Map;on(e,t){let n=this.listeners.get(e);n||(n=new Set,this.listeners.set(e,n));let o=t,i=c=>o(c),a=n.size>0;n.add(i),!a&&n.size>0&&this.fireListenerChanged(e,!0);let s=!1;return{dispose:()=>{if(s)return;s=!0;let c=this.listeners.get(e);!c||!c.delete(i)||c.size===0&&(this.listeners.delete(e),this.fireListenerChanged(e,!1))}}}fire(e){let t=this.listeners.get(e.id);if(t)for(let n of[...t])n(e)}fireAsync(e){return Promise.resolve().then(()=>this.fire(e))}dispose(){this.listeners.clear()}fireListenerChanged(e,t){e!=="event.listener.changed"&&this.fire(new et("event.listener.changed",{id:e,hasListeners:t},this))}};tr();var oi=(n=>(n.IDE="ide",n.CLI="cli",n.AUTO_SYNC="auto-sync",n))(oi||{}),In="5.0.5",wM=`succapp@${In}`;function Td(r){return{source:r,agentVersion:wM}}var PM=Td("ide"),Xg=PM;function Zg(r){Xg=r}function Fn(){return Xg}D();J();var yi=E(require("fs")),Vn=E(require("path")),RC=require("crypto");var wa=["trace","debug","info","warn","error"];var iy={trace:0,debug:1,info:2,warn:3,error:4},ay=["TRACE","DEBUG","INFO","WARN","ERROR"],_M=new Set(wa);function LM(r){return typeof r=="string"&&_M.has(r)}function si(r){let e=r?.trim().toLowerCase();return LM(e)?e:void 0}var Zd=E(require("os")),Oa=E(require("path"));var Gt={workspace:"SUCCAPP_WORKSPACE",server:"SUCCAPP_SERVER",json:"SUCCAPP_JSON",logLevel:"SUCCAPP_LOG_LEVEL",locale:"SUCCAPP_LOCALE",noUpdateCheck:"SUCCAPP_NO_UPDATE_CHECK",updateCheckTtlSeconds:"SUCCAPP_UPDATE_CHECK_TTL_SECONDS",updateCheckRegistry:"SUCCAPP_UPDATE_CHECK_REGISTRY"},Qs={lcAll:"LC_ALL",lcMessages:"LC_MESSAGES",lang:"LANG"};function Pe(r){return r&&r.trim()?r:void 0}function ci(r,e){if(r===void 0)return;let t=r.trim();if(!/^\d+$/.test(t))return;let n=Number(t);if(Number.isSafeInteger(n)&&!(e!==void 0&&n>e))return n}function Ys(r,e=void 0){if(r===void 0)return e;let t=r.trim();return t===""?e:t==="1"||An(t,"true")||An(t,"yes")||An(t,"on")?!0:t==="0"||An(t,"false")||An(t,"no")||An(t,"off")?!1:e}function An(r,e){if(r===e)return!0;if(r==null||e===void 0||e===null||r.length!==e.length)return!1;for(let t=0;t<r.length;t++){let n=sy(r.charCodeAt(t)),o=sy(e.charCodeAt(t));if(n!==o)return!1}return!0}function Lr(r){let e=0;for(let t of r){let n=t.codePointAt(0);n===void 0||NM(n)||(e+=WM(n)?2:1)}return e}function li(r,e){return`${r}${" ".repeat(Math.max(0,e-Lr(r)))}`}function cy(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Fd(r){return Buffer.from(r).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function NM(r){return r<=31||r>=127&&r<=159||r>=768&&r<=879||r>=6832&&r<=6911||r>=7616&&r<=7679||r>=8400&&r<=8447||r>=65024&&r<=65039||r>=65056&&r<=65071||r===8203||r===8204||r===8205||r===8288}function WM(r){return r>=4352&&r<=4447||r===9001||r===9002||r>=11904&&r<=42191||r>=44032&&r<=55203||r>=63744&&r<=64255||r>=65040&&r<=65049||r>=65072&&r<=65135||r>=65280&&r<=65376||r>=65504&&r<=65510}function sy(r){return r>=65&&r<=90?r+32:r}function ly(r){return Pe(r[Gt.locale])??Pe(r[Qs.lcAll])??Pe(r[Qs.lcMessages])??Pe(r[Qs.lang])}var Nr=[{name:"workspace",alias:"C",takesValue:!0,valueHint:"path",description:"cli.opt.workspace",acceptWorkspaceTarget:!0},{name:"server",takesValue:!0,valueHint:"url",description:"cli.opt.server",acceptServerTarget:!0},{name:"json",takesValue:!1,description:"cli.opt.json"},{name:"quiet",alias:"q",takesValue:!1,description:"cli.opt.quiet"},{name:"verbose",alias:"v",takesValue:!1,description:"cli.opt.verbose"},{name:"lock-timeout",takesValue:!0,valueHint:"seconds",description:"cli.opt.lockTimeout",acceptDomains:["workspace"],acceptLockUsages:["workspace-write"],showInTopLevelHelp:!1},{name:"log-level",takesValue:!0,valueHint:"level",description:"cli.opt.logLevel"},{name:"locale",takesValue:!0,valueHint:"locale",description:"cli.opt.locale"},{name:"help",alias:"h",takesValue:!1,description:"cli.opt.help"},{name:"version",alias:"V",takesValue:!1,description:"cli.opt.version"}],Dd=Nr.filter(r=>r.showInTopLevelHelp!==!1);function py(r){return{workspace:r.rawValue("workspace"),server:r.rawValue("server"),json:r.has("json"),quiet:r.has("quiet"),verbose:r.has("verbose"),lockTimeout:r.rawValue("lock-timeout"),logLevel:r.rawValue("log-level"),locale:r.rawValue("locale"),help:r.has("help"),version:r.has("version")}}function nn(r,e){if(r.spec.flags.some(a=>a.name===e))return!0;let n=Nr.find(a=>a.name===e);if(!n)return!1;let o=n.acceptDomains;if(o&&o.length>0&&!o.includes(r.domain)||n.acceptWorkspaceTarget&&r.workspaceTarget==="none"||n.acceptServerTarget&&r.serverTarget==="none")return!1;let i=n.acceptLockUsages;return!(i&&!i.includes(r.lockUsage??"none"))}F();_();tt();F();async function Nt(){let r=process.stdin,e=[];for await(let t of r)e.push(Ax(t));return Buffer.concat(e).toString("utf8")}async function iC(r=""){let e=process.stdin,t=process.stderr,n=e.isRaw===!0;return r&&t.write(r),e.isTTY&&e.setRawMode(!0),e.resume(),new Promise((o,i)=>{let a="",s=!1,c=h=>{for(let y of Ox(h)){if(s)break;switch(y){case"\r":case`
|
|
24
|
-
`:case"":g(a,o);break;case"":m(new or,i);break;case"\b":case"\x7F":a=a.slice(0,-1);break;default:a+=y}}},l=h=>{m(h,i)},p=()=>{g(a,o)},u=()=>{e.off("data",c),e.off("error",l),e.off("end",p),e.off("close",p),e.isTTY&&e.setRawMode(n),e.pause(),t.write(`
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
${s}`:o}let i=n===r?void 0:Mt(r,t);if(!i)return;let a=Mt(`${r}.desc`,t);return a?`${i}
|
|
28
|
-
${
|
|
23
|
+
`+e.stack:""}`;if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return String(e)}}},hr=class extends cs{},at=class extends cs{async applyFileMutationResponses(e){let t=this.createMirrorStore(),n=this.createWorkspaceStore(t);await new rs({workspace:n,mirror:t,getApiClient:()=>this.getApiClient()}).apply(e,this.task)}async cleanupEmptyOrphanParents(e,t,n){if(e.length===0)return;let o=new Set;il.debug(`orphan cleanup start: deletedPaths=${e.length}`);for(let i of e)await this.cleanupAncestorsIfEmpty(Lg.posix.dirname(i),o,t,n);il.debug(`orphan cleanup done: visitedAncestors=${o.size}`)}async cleanupAncestorsIfEmpty(e,t,n,o){let i=e;for(;i!=="/"&&i!=="."&&!t.has(i);){if(t.add(i),await n.exists(i)){il.debug(`orphan cleanup stop at tracked: remotePath=${i}`);return}if(!await o.removeEmptyOrphanDirectory(i))return;i=Lg.posix.dirname(i)}}}});var VE=T((dre,jE)=>{var dj=function(){var r=256,e=t();function t(){for(var o=new Array(r),i=0;i<o.length;i++)o[i]=new Array(r);for(var i=0;i<r;i++)for(var a=0;a<r;a++){for(var s=i,c=a,l=0,u=0;u<4;u++){var p=Math.abs(s%4-c%4);p==3?l+=p*2:l+=p,u<3&&(s=Math.floor(s/4),c=Math.floor(c/4))}o[i][a]=l}return o}var n=function(o,i){return e[o][i]};return n}();jE.exports=dj});var dy=T((pre,qE)=>{var pj=VE(),mj=function(r){var e=function(t){for(var n=0,o=0;o<r.length;o++)n+=pj(r[o],t.getValue(o));return n};this.calculateDifference=function(t){return e(t)},this.getValue=function(t){return r[t]}};qE.exports=mj});var py=T((mre,BE)=>{var fj=function(r){var e=function(t,n){var o=t.length;if(o!=n.length)return!1;for(;o--;)if(t[o]!==n[o])return!1;return!0};this.calculateDifference=function(t){return e(r,t.getValue())?0:1},this.getValue=function(){return r}};BE.exports=fj});var my=T((fre,HE)=>{HE.exports=function(r){var e=(r&240)>>4&15;return e|=(r&15)<<4&240,e}});var zE=T((hre,GE)=>{var fy=my(),hj=function(){return function(r){var e=1,t=32,n=function(l){for(var u="",p=0;p<l.length;p++)l[p]<16&&(u+="0"),u+=l[p].toString(16).toUpperCase();return u},o=function(l){for(var u=new Array(e),p=0;p<e;p++)u[p]=fy(l.getValue()[p]);return n(u)},i=function(l){return n([fy(l.getValue())])},a=function(l){return n([fy(l.getValue())])},s=function(l){for(var u=new Array(t),p=0;p<t;p++)u[p]=l.getValue(t-1-p);return n(u)},c="";return c+=o(r.getChecksum()),c+=i(r.getLValue()),c+=a(r.getQ()),c+=s(r.getBody()),c}}();GE.exports=hj});var hy=T((gre,KE)=>{var gj=zE(),yj=function(r,e,t,n){this.getLValue=function(){return e},this.getQ=function(){return t},this.getChecksum=function(){return r},this.getBody=function(){return n},this.calculateDifference=function(o,i){var a=0;return i&&(a+=e.calculateDifference(o.getLValue())),a+=t.calculateDifference(o.getQ()),a+=r.calculateDifference(o.getChecksum()),a+=n.calculateDifference(o.getBody()),a},this.toString=function(){return gj(this)}};KE.exports=yj});var gy=T((yre,JE)=>{JE.exports=function(r,e,t){var n=Math.abs(e-r),o=t-n;return Math.min(n,o)}});var yy=T((Cre,QE)=>{var Cj=gy(),Sj=function(r){var e=256;this.calculateDifference=function(t){var n=Cj(r,t.getValue(),e);return n===0?0:n===1?1:n*12},this.getValue=function(){return r}};QE.exports=Sj});var Cy=T((Sre,XE)=>{var YE=gy(),vj=function(r){this.getQLo=function(){return r&15},this.getQHi=function(){return(r&240)>>4},this.calculateDifference=function(e){var t=16,n=0,o=YE(this.getQLo(),e.getQLo(),t);o<=1?n+=o:n+=(o-1)*12;var i=YE(this.getQHi(),e.getQHi(),t);return i<=1?n+=i:n+=(i-1)*12,n},this.getValue=function(){return r}};XE.exports=vj});var eT=T((vre,ZE)=>{var kj=dy(),wj=py(),Pj=hy(),Rj=yy(),bj=Cy(),Ej=function(){var r=256,e=.09531018,t=.26236426,n=.4054651,o,i,a,s,c={LOW:656,MID:3199},l=function(y){return this.checksum=new wj(y),this},u=function(y){return this.lValue=new Rj(f(y)),this},p=function(y){var C=function(S,w){var h=function(k,v){return(0|k&15)&15|(v&15)<<4};return new bj(h(S,w))};return this.q=new C(y.getQ1Ratio(),y.getQ2Ratio()),this},g=function(y){return this.body=new kj(y),this},m=function(){return new Pj(this.checksum,this.lValue,this.q,this.body)},f=function(y){return y<=c.LOW?Math.floor(Math.log(y)/n)%r:y<=c.MID?Math.floor(Math.log(y)/t-8.72777)%r:Math.floor(Math.log(y)/e-62.5472)%r};return{withChecksum:l,withLength:u,withQuartiles:p,withBody:g,build:m}};ZE.exports=Ej});var rT=T((kre,tT)=>{var Tj=eT(),Mj=function(r,e,t,n){var o=512,i=32,a=function(u){return e[u]>0},s=function(){for(var u=0,p=0;p<i*4;p++)a(p)&&u++;return u>i*2},c=function(){return t>=o},l=function(){for(var u=new Array(i),p=0;p<i;p++){for(var g=0,m=0;m<4;m++){var f=e[4*p+m];n.getThird()<f?g+=3<<m*2:n.getSecond()<f?g+=2<<m*2:n.getFirst()<f&&(g+=1<<m*2)}u[p]=g}return u};this.isProcessedDataTooSimple=function(){return!c()||!s()},this.buildDigest=function(){return new Tj().withChecksum(r).withLength(t).withQuartiles(n).withBody(l()).build()}};tT.exports=Mj});var oT=T((wre,nT)=>{var xj=function(){var r=[1,87,49,12,176,178,102,166,121,193,6,84,249,230,44,163,14,197,213,181,161,85,218,80,64,239,24,226,236,142,38,200,110,177,104,103,141,253,255,50,77,101,81,18,45,96,31,222,25,107,190,70,86,237,240,34,72,242,20,214,244,227,149,235,97,234,57,22,60,250,82,175,208,5,127,199,111,62,135,248,174,169,211,58,66,154,106,195,245,171,17,187,182,179,0,243,132,56,148,75,128,133,158,100,130,126,91,13,153,246,216,219,119,68,223,78,83,88,201,99,122,11,92,32,136,114,52,10,138,30,48,183,156,35,61,26,143,74,251,94,129,162,63,152,170,7,115,167,241,206,3,150,55,59,151,220,90,53,23,131,125,173,15,238,79,95,89,16,105,137,225,224,217,160,37,123,118,73,2,157,46,116,9,145,134,228,207,212,202,215,69,229,27,188,67,124,168,252,42,4,29,108,21,247,19,205,39,203,233,40,186,147,198,192,155,33,164,191,98,204,165,180,117,76,140,36,210,172,41,54,159,8,185,232,113,196,231,47,146,120,51,65,28,144,254,221,93,189,194,139,112,43,71,109,184,209],e=function(t){var n=0;return t.forEach(function(o){n=r[n^o]}),n};return e}();nT.exports=xj});var sT=T((Pre,aT)=>{var Ij=oT(),iT=function(r,e,t,n){this.c1=r,this.c2=e,this.c3=t,this.salt=n};iT.prototype.getHash=function(){return Ij([this.salt,this.c1,this.c2,this.c3])};aT.exports=iT});var lT=T((Rre,cT)=>{var _j=sT(),Dj=function(){var r=5,e=1,t=new Array(r),n=0,o=function(s){return t[s]},i=function(s,c,l,u){return new _j(s,c,l,u).getHash()},a=function(){return n>=r};this.put=function(s){t[this.getPivot()]=s&255,n++},this.getPivot=function(){return n%r},this.getTripletHashes=function(s){if(!a())return[];var c=s,l=(c+1)%r,u=(c+2)%r,p=(c+3)%r,g=(c+4)%r;return[i(t[c],t[g],t[p],2),i(t[c],t[g],t[u],3),i(t[c],t[p],t[u],5),i(t[c],t[p],t[l],7),i(t[c],t[g],t[l],11),i(t[c],t[u],t[l],13)]},this.getChecksum=function(s,c){if(!a())return null;for(var l=(s+4)%r,u=new Array(e),p=0;p<e;p++){var g=o(s),m=o(l),f=0,y=0;c&&(f=c[p]),p!==0&&(y=u[p-1]),u[p]=i(g,m,f,y)}return u}};cT.exports=Dj});var dT=T((bre,uT)=>{var Fj=function(r){if(r.length<e)throw new Error;var e=128,t=16,n=r.slice(0,e).sort(function(o,i){return o-i});this.getQ1Ratio=function(){return Math.floor(this.getFirst()*100/this.getThird())%t},this.getQ2Ratio=function(){return Math.floor(this.getSecond()*100/this.getThird())%t},this.getFirst=function(){return n[e/4-1]},this.getSecond=function(){return n[e/2-1]},this.getThird=function(){return n[e-e/4-1]}};uT.exports=Fj});var mT=T((Ere,pT)=>{var Aj=rT(),Oj=lT(),Lj=dT(),Nj=function(){var r=256,e=function(n,o,i){var a=new Lj(o);return new Aj(i,o,n,a)},t=function(n){for(var o=n?n.length:0,i=Array.apply(null,Array(r)).map(Number.prototype.valueOf,0),a,s=new Oj,c=this,l=function(m){i[m]?i[m]++:i[m]=1},u=0;u<o;u++){var p=n.charCodeAt(u),g=s.getPivot();s.put(p),a=s.getChecksum(g,a),s.getTripletHashes(g).forEach(l)}return e(o,i,a)};return t}();pT.exports=Nj});var hT=T((Tre,fT)=>{var yp=function(r){this.name="InsufficientComplexityError",this.message=r,this.stack=new Error().stack};yp.prototype=Object.create(Error.prototype);yp.prototype.constructor=yp;fT.exports=yp});var yT=T((Mre,gT)=>{var Wj=mT(),Uj=hT();gT.exports=function(r){var e=Wj(r);if(e.isProcessedDataTooSimple())throw new Uj("Input data hasn't enough complexity");return e.buildDigest().toString()}});var ST=T((xre,CT)=>{var $j=dy(),jj=py(),Vj=hy(),qj=yy(),Bj=Cy(),Sy=my(),Hj=function(){var r=32,e,t,n,o,i=function(m){var f=s(m),y=0;return c(f[y++]),l(f[y++]),u(f[y++]),p(g(f,y)),this},a=function(){return new Vj(e,t,n,o)},s=function(m){for(var f=new Array(m.length/2),y=0;y<m.length;y+=2)f[y/2]=parseInt(m.substring(y,y+2),16);return f},c=function(m){e=new jj([Sy(m)])},l=function(m){t=new qj([Sy(m)])},u=function(m){n=new Bj([Sy(m)])},p=function(m){for(var f=new Array(m.length),y=0;y<m.length;y++)f[y]=m[m.length-1-y];o=new $j(f)},g=function(m,f){return m.slice(f,m.length)};return{withHash:i,build:a}};CT.exports=Hj});var vM=T((bae,Zp)=>{function fM(r){return Array.isArray(r)?r:[r]}var Y1=void 0,$y="",pM=" ",Uy="\\",X1=/^\s+$/,Z1=/(?:[^\\]|^)\\$/,eq=/^\\!/,tq=/^\\#/,rq=/\r?\n/g,nq=/^\.{0,2}\/|^\.{1,2}$/,oq=/\/$/,ks="/",hM="node-ignore";typeof Symbol<"u"&&(hM=Symbol.for("node-ignore"));var gM=hM,ws=(r,e,t)=>(Object.defineProperty(r,e,{value:t}),t),iq=/([0-z])-([0-z])/g,yM=()=>!1,aq=r=>r.replace(iq,(e,t,n)=>t.charCodeAt(0)<=n.charCodeAt(0)?e:$y),sq=r=>{let{length:e}=r;return r.slice(0,e-e%2)},cq=[[/^\uFEFF/,()=>$y],[/((?:\\\\)*?)(\\?\s+)$/,(r,e,t)=>e+(t.indexOf("\\")===0?pM:$y)],[/(\\+?)\s/g,(r,e)=>{let{length:t}=e;return e.slice(0,t-t%2)+pM}],[/[\\$.|*+(){^]/g,r=>`\\${r}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(r,e,t)=>e+6<t.length?"(?:\\/[^\\/]+)*":"\\/.+"],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(r,e,t)=>{let n=t.replace(/\\\*/g,"[^\\/]*");return e+n}],[/\\\\\\(?=[$.|*+(){^])/g,()=>Uy],[/\\\\/g,()=>Uy],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(r,e,t,n,o)=>e===Uy?`\\[${t}${sq(n)}${o}`:o==="]"&&n.length%2===0?`[${aq(t)}${n}]`:"[]"],[/(?:[^*])$/,r=>/\/$/.test(r)?`${r}$`:`${r}(?=$|\\/$)`]],lq=/(^|\\\/)?\\\*$/,_l="regex",Yp="checkRegex",mM="_",uq={[_l](r,e){return`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`},[Yp](r,e){return`${e?`${e}[^/]*`:"[^/]*"}(?=$|\\/$)`}},dq=r=>cq.reduce((e,[t,n])=>e.replace(t,n.bind(r)),r),Xp=r=>typeof r=="string",pq=r=>r&&Xp(r)&&!X1.test(r)&&!Z1.test(r)&&r.indexOf("#")!==0,mq=r=>r.split(rq).filter(Boolean),jy=class{constructor(e,t,n,o,i,a){this.pattern=e,this.mark=t,this.negative=i,ws(this,"body",n),ws(this,"ignoreCase",o),ws(this,"regexPrefix",a)}get regex(){let e=mM+_l;return this[e]?this[e]:this._make(_l,e)}get checkRegex(){let e=mM+Yp;return this[e]?this[e]:this._make(Yp,e)}_make(e,t){let n=this.regexPrefix.replace(lq,uq[e]),o=this.ignoreCase?new RegExp(n,"i"):new RegExp(n);return ws(this,t,o)}},fq=({pattern:r,mark:e},t)=>{let n=!1,o=r;o.indexOf("!")===0&&(n=!0,o=o.substr(1)),o=o.replace(eq,"!").replace(tq,"#");let i=dq(o);return new jy(r,e,o,t,n,i)},Vy=class{constructor(e){this._ignoreCase=e,this._rules=[]}_add(e){if(e&&e[gM]){this._rules=this._rules.concat(e._rules._rules),this._added=!0;return}if(Xp(e)&&(e={pattern:e}),pq(e.pattern)){let t=fq(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,fM(Xp(e)?mq(e):e).forEach(this._add,this),this._added}test(e,t,n){let o=!1,i=!1,a;this._rules.forEach(c=>{let{negative:l}=c;i===l&&o!==i||l&&!o&&!i&&!t||!c[n].test(e)||(o=!l,i=l,a=l?Y1:c)});let s={ignored:o,unignored:i};return a&&(s.rule=a),s}},hq=(r,e)=>{throw new e(r)},So=(r,e,t)=>Xp(r)?r?So.isNotRelative(r)?t(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:t("path must not be empty",TypeError):t(`path must be a string, but got \`${e}\``,TypeError),CM=r=>nq.test(r);So.isNotRelative=CM;So.convert=r=>r;var qy=class{constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:n=!1}={}){ws(this,gM,!0),this._rules=new Vy(t),this._strictPathCheck=!n,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}add(e){return this._rules.add(e)&&this._initCache(),this}addPattern(e){return this.add(e)}_test(e,t,n,o){let i=e&&So.convert(e);return So(i,e,this._strictPathCheck?hq:yM),this._t(i,t,n,o)}checkIgnore(e){if(!oq.test(e))return this.test(e);let t=e.split(ks).filter(Boolean);if(t.pop(),t.length){let n=this._t(t.join(ks)+ks,this._testCache,!0,t);if(n.ignored)return n}return this._rules.test(e,!1,Yp)}_t(e,t,n,o){if(e in t)return t[e];if(o||(o=e.split(ks).filter(Boolean)),o.pop(),!o.length)return t[e]=this._rules.test(e,n,_l);let i=this._t(o.join(ks)+ks,t,n,o);return t[e]=i.ignored?i:this._rules.test(e,n,_l)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return fM(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},By=r=>new qy(r),gq=r=>So(r&&So.convert(r),r,yM),SM=()=>{let r=t=>/^\\\\\?\\/.test(t)||/["<>|\u0000-\u001F]+/u.test(t)?t:t.replace(/\\/g,"/");So.convert=r;let e=/^[a-z]:\//i;So.isNotRelative=t=>e.test(t)||CM(t)};typeof process<"u"&&process.platform==="win32"&&SM();Zp.exports=By;By.default=By;Zp.exports.isPathValid=gq;ws(Zp.exports,Symbol.for("setupWindows"),SM)});var GC=T((Vme,CI)=>{CI.exports={LOCHDR:30,LOCSIG:67324752,LOCVER:4,LOCFLG:6,LOCHOW:8,LOCTIM:10,LOCCRC:14,LOCSIZ:18,LOCLEN:22,LOCNAM:26,LOCEXT:28,EXTSIG:134695760,EXTHDR:16,EXTCRC:4,EXTSIZ:8,EXTLEN:12,CENHDR:46,CENSIG:33639248,CENVEM:4,CENVER:6,CENFLG:8,CENHOW:10,CENTIM:12,CENCRC:16,CENSIZ:20,CENLEN:24,CENNAM:28,CENEXT:30,CENCOM:32,CENDSK:34,CENATT:36,CENATX:38,CENOFF:42,ENDHDR:22,ENDSIG:101010256,ENDSUB:8,ENDTOT:10,ENDSIZ:12,ENDOFF:16,ENDCOM:20,END64HDR:20,END64SIG:117853008,END64START:4,END64OFF:8,END64NUMDISKS:16,ZIP64SIG:101075792,ZIP64HDR:56,ZIP64LEAD:12,ZIP64SIZE:4,ZIP64VEM:12,ZIP64VER:14,ZIP64DSK:16,ZIP64DSKDIR:20,ZIP64SUB:24,ZIP64TOT:32,ZIP64SIZB:40,ZIP64OFF:48,ZIP64EXTRA:56,STORED:0,SHRUNK:1,REDUCED1:2,REDUCED2:3,REDUCED3:4,REDUCED4:5,IMPLODED:6,DEFLATED:8,ENHANCED_DEFLATED:9,PKWARE:10,BZIP2:12,LZMA:14,IBM_TERSE:18,IBM_LZ77:19,AES_ENCRYPT:99,FLG_ENC:1,FLG_COMP1:2,FLG_COMP2:4,FLG_DESC:8,FLG_ENH:16,FLG_PATCH:32,FLG_STR:64,FLG_EFS:2048,FLG_MSK:4096,FILE:2,BUFFER:1,NONE:0,EF_ID:0,EF_SIZE:2,ID_ZIP64:1,ID_AVINFO:7,ID_PFS:8,ID_OS2:9,ID_NTFS:10,ID_OPENVMS:12,ID_UNIX:13,ID_FORK:14,ID_PATCH:15,ID_X509_PKCS7:20,ID_X509_CERTID_F:21,ID_X509_CERTID_C:22,ID_STRONGENC:23,ID_RECORD_MGT:24,ID_X509_PKCS7_RL:25,ID_IBM1:101,ID_IBM2:102,ID_POSZIP:18064,EF_ZIP64_OR_32:4294967295,EF_ZIP64_OR_16:65535,EF_ZIP64_SUNCOMP:0,EF_ZIP64_SCOMP:8,EF_ZIP64_RHO:16,EF_ZIP64_DSN:24}});var Cm=T(vI=>{var SI={INVALID_LOC:"Invalid LOC header (bad signature)",INVALID_CEN:"Invalid CEN header (bad signature)",INVALID_END:"Invalid END header (bad signature)",DESCRIPTOR_NOT_EXIST:"No descriptor present",DESCRIPTOR_UNKNOWN:"Unknown descriptor format",DESCRIPTOR_FAULTY:"Descriptor data is malformed",NO_DATA:"Nothing to decompress",BAD_CRC:"CRC32 checksum failed {0}",FILE_IN_THE_WAY:"There is a file in the way: {0}",UNKNOWN_METHOD:"Invalid/unsupported compression method",AVAIL_DATA:"inflate::Available inflate data did not terminate",INVALID_DISTANCE:"inflate::Invalid literal/length or distance code in fixed or dynamic block",TO_MANY_CODES:"inflate::Dynamic block code description: too many length or distance codes",INVALID_REPEAT_LEN:"inflate::Dynamic block code description: repeat more than specified lengths",INVALID_REPEAT_FIRST:"inflate::Dynamic block code description: repeat lengths with no first length",INCOMPLETE_CODES:"inflate::Dynamic block code description: code lengths codes incomplete",INVALID_DYN_DISTANCE:"inflate::Dynamic block code description: invalid distance code lengths",INVALID_CODES_LEN:"inflate::Dynamic block code description: invalid literal/length code lengths",INVALID_STORE_BLOCK:"inflate::Stored block length did not match one's complement",INVALID_BLOCK_TYPE:"inflate::Invalid block type (type == 3)",CANT_EXTRACT_FILE:"Could not extract the file",CANT_OVERRIDE:"Target file already exists",DISK_ENTRY_TOO_LARGE:"Number of disk entries is too large",NO_ZIP:"No zip file was loaded",NO_ENTRY:"Entry doesn't exist",DIRECTORY_CONTENT_ERROR:"A directory cannot have content",FILE_NOT_FOUND:'File not found: "{0}"',NOT_IMPLEMENTED:"Not implemented",INVALID_FILENAME:"Invalid filename",INVALID_FORMAT:"Invalid or unsupported zip format. No END header found",INVALID_PASS_PARAM:"Incompatible password parameter",WRONG_PASSWORD:"Wrong Password",COMMENT_TOO_LONG:"Comment is too long",EXTRA_FIELD_PARSE_ERROR:"Extra field parsing error"};function g2(r){return function(...e){return e.length&&(r=r.replace(/\{(\d)\}/g,(t,n)=>e[n]||"")),new Error("ADM-ZIP: "+r)}}for(let r of Object.keys(SI))vI[r]=g2(SI[r])});var bI=T((Bme,RI)=>{var y2=require("fs"),Mt=require("path"),kI=GC(),C2=Cm(),S2=typeof process=="object"&&process.platform==="win32",wI=r=>typeof r=="object"&&r!==null,PI=new Uint32Array(256).map((r,e)=>{for(let t=0;t<8;t++)e&1?e=3988292384^e>>>1:e>>>=1;return e>>>0});function ct(r){this.sep=Mt.sep,this.fs=y2,wI(r)&&wI(r.fs)&&typeof r.fs.statSync=="function"&&(this.fs=r.fs)}RI.exports=ct;ct.prototype.makeDir=function(r){let e=this;function t(n){let o=n.split(e.sep)[0];n.split(e.sep).forEach(function(i){if(!(!i||i.substr(-1,1)===":")){o+=e.sep+i;var a;try{a=e.fs.statSync(o)}catch(s){if(s.message&&s.message.startsWith("ENOENT"))e.fs.mkdirSync(o);else throw s}if(a&&a.isFile())throw C2.FILE_IN_THE_WAY(`"${o}"`)}})}t(r)};ct.prototype.writeFileTo=function(r,e,t,n){let o=this;if(o.fs.existsSync(r)){if(!t)return!1;var i=o.fs.statSync(r);if(i.isDirectory())return!1}var a=Mt.dirname(r);o.fs.existsSync(a)||o.makeDir(a);var s;try{s=o.fs.openSync(r,"w",438)}catch{o.fs.chmodSync(r,438),s=o.fs.openSync(r,"w",438)}if(s)try{o.fs.writeSync(s,e,0,e.length,0)}finally{o.fs.closeSync(s)}return o.fs.chmodSync(r,n||438),!0};ct.prototype.writeFileToAsync=function(r,e,t,n,o){typeof n=="function"&&(o=n,n=void 0);let i=this;i.fs.exists(r,function(a){if(a&&!t)return o(!1);i.fs.stat(r,function(s,c){if(a&&c.isDirectory())return o(!1);var l=Mt.dirname(r);i.fs.exists(l,function(u){u||i.makeDir(l),i.fs.open(r,"w",438,function(p,g){p?i.fs.chmod(r,438,function(){i.fs.open(r,"w",438,function(m,f){i.fs.write(f,e,0,e.length,0,function(){i.fs.close(f,function(){i.fs.chmod(r,n||438,function(){o(!0)})})})})}):g?i.fs.write(g,e,0,e.length,0,function(){i.fs.close(g,function(){i.fs.chmod(r,n||438,function(){o(!0)})})}):i.fs.chmod(r,n||438,function(){o(!0)})})})})})};ct.prototype.findFiles=function(r){let e=this;function t(n,o,i){typeof o=="boolean"&&(i=o,o=void 0);let a=[];return e.fs.readdirSync(n).forEach(function(s){let c=Mt.join(n,s),l=e.fs.statSync(c);(!o||o.test(c))&&a.push(Mt.normalize(c)+(l.isDirectory()?e.sep:"")),l.isDirectory()&&i&&(a=a.concat(t(c,o,i)))}),a}return t(r,void 0,!0)};ct.prototype.findFilesAsync=function(r,e){let t=this,n=[];t.fs.readdir(r,function(o,i){if(o)return e(o);let a=i.length;if(!a)return e(null,n);i.forEach(function(s){s=Mt.join(r,s),t.fs.stat(s,function(c,l){if(c)return e(c);l&&(n.push(Mt.normalize(s)+(l.isDirectory()?t.sep:"")),l.isDirectory()?t.findFilesAsync(s,function(u,p){if(u)return e(u);n=n.concat(p),--a||e(null,n)}):--a||e(null,n))})})})};ct.prototype.getAttributes=function(){};ct.prototype.setAttributes=function(){};ct.crc32update=function(r,e){return PI[(r^e)&255]^r>>>8};ct.crc32=function(r){typeof r=="string"&&(r=Buffer.from(r,"utf8"));let e=r.length,t=-1;for(let n=0;n<e;)t=ct.crc32update(t,r[n++]);return~t>>>0};ct.methodToString=function(r){switch(r){case kI.STORED:return"STORED ("+r+")";case kI.DEFLATED:return"DEFLATED ("+r+")";default:return"UNSUPPORTED ("+r+")"}};ct.canonical=function(r){if(!r)return"";let e=Mt.posix.normalize("/"+r.split("\\").join("/"));return Mt.join(".",e)};ct.zipnamefix=function(r){if(!r)return"";let e=Mt.posix.normalize("/"+r.split("\\").join("/"));return Mt.posix.join(".",e)};ct.findLast=function(r,e){if(!Array.isArray(r))throw new TypeError("arr is not array");let t=r.length>>>0;for(let n=t-1;n>=0;n--)if(e(r[n],n,r))return r[n]};ct.sanitize=function(r,e){r=Mt.resolve(Mt.normalize(r));for(var t=e.split("/"),n=0,o=t.length;n<o;n++){var i=Mt.normalize(Mt.join(r,t.slice(n,o).join(Mt.sep)));if(i.indexOf(r)===0)return i}return Mt.normalize(Mt.join(r,Mt.basename(e)))};ct.toBuffer=function(e,t){return Buffer.isBuffer(e)?e:e instanceof Uint8Array?Buffer.from(e):typeof e=="string"?t(e):Buffer.alloc(0)};ct.readBigUInt64LE=function(r,e){let t=r.readUInt32LE(e);return r.readUInt32LE(e+4)*4294967296+t};ct.fromDOS2Date=function(r){return new Date((r>>25&127)+1980,Math.max((r>>21&15)-1,0),Math.max(r>>16&31,1),r>>11&31,r>>5&63,(r&31)<<1)};ct.fromDate2DOS=function(r){let e=0,t=0;return r.getFullYear()>1979&&(e=(r.getFullYear()-1980&127)<<9|r.getMonth()+1<<5|r.getDate(),t=r.getHours()<<11|r.getMinutes()<<5|r.getSeconds()>>1),e<<16|t};ct.isWin=S2;ct.crcTable=PI});var TI=T((Hme,EI)=>{var v2=require("path");EI.exports=function(r,{fs:e}){var t=r||"",n=i(),o=null;function i(){return{directory:!1,readonly:!1,hidden:!1,executable:!1,mtime:0,atime:0}}return t&&e.existsSync(t)?(o=e.statSync(t),n.directory=o.isDirectory(),n.mtime=o.mtime,n.atime=o.atime,n.executable=(73&o.mode)!==0,n.readonly=(128&o.mode)===0,n.hidden=v2.basename(t)[0]==="."):console.warn("Invalid path: "+t),{get directory(){return n.directory},get readOnly(){return n.readonly},get hidden(){return n.hidden},get mtime(){return n.mtime},get atime(){return n.atime},get executable(){return n.executable},decodeAttributes:function(){},encodeAttributes:function(){},toJSON:function(){return{path:t,isDirectory:n.directory,isReadOnly:n.readonly,isHidden:n.hidden,isExecutable:n.executable,mTime:n.mtime,aTime:n.atime}},toString:function(){return JSON.stringify(this.toJSON(),null," ")}}}});var xI=T((Gme,MI)=>{MI.exports={efs:!0,encode:r=>Buffer.from(r,"utf8"),decode:r=>r.toString("utf8")}});var $s=T((zme,Us)=>{Us.exports=bI();Us.exports.Constants=GC();Us.exports.Errors=Cm();Us.exports.FileAttr=TI();Us.exports.decoder=xI()});var _I=T((Kme,II)=>{var ui=$s(),$=ui.Constants;II.exports=function(){var r=20,e=10,t=0,n=0,o=0,i=0,a=0,s=0,c=0,l=0,u=0,p=0,g=0,m=0,f=0;r|=ui.isWin?2560:768,t|=$.FLG_EFS;let y={extraLen:0},C=h=>Math.max(0,h)>>>0,S=h=>Math.max(0,h)&65535,w=h=>Math.max(0,h)&255;return o=ui.fromDate2DOS(new Date),{get made(){return r},set made(h){r=h},get version(){return e},set version(h){e=h},get flags(){return t},set flags(h){t=h},get flags_efs(){return(t&$.FLG_EFS)>0},set flags_efs(h){h?t|=$.FLG_EFS:t&=~$.FLG_EFS},get flags_desc(){return(t&$.FLG_DESC)>0},set flags_desc(h){h?t|=$.FLG_DESC:t&=~$.FLG_DESC},get method(){return n},set method(h){switch(h){case $.STORED:this.version=10;case $.DEFLATED:default:this.version=20}n=h},get time(){return ui.fromDOS2Date(this.timeval)},set time(h){h=new Date(h),this.timeval=ui.fromDate2DOS(h)},get timeval(){return o},set timeval(h){o=C(h)},get timeHighByte(){return w(o>>>8)},get crc(){return i},set crc(h){i=C(h)},get compressedSize(){return a},set compressedSize(h){a=C(h)},get size(){return s},set size(h){s=C(h)},get fileNameLength(){return c},set fileNameLength(h){c=h},get extraLength(){return l},set extraLength(h){l=h},get extraLocalLength(){return y.extraLen},set extraLocalLength(h){y.extraLen=h},get commentLength(){return u},set commentLength(h){u=h},get diskNumStart(){return p},set diskNumStart(h){p=C(h)},get inAttr(){return g},set inAttr(h){g=C(h)},get attr(){return m},set attr(h){m=C(h)},get fileAttr(){return(m||0)>>16&4095},get offset(){return f},set offset(h){f=C(h)},get encrypted(){return(t&$.FLG_ENC)===$.FLG_ENC},get centralHeaderSize(){return $.CENHDR+c+l+u},get realDataOffset(){return f+$.LOCHDR+y.fnameLen+y.extraLen},get localHeader(){return y},loadLocalHeaderFromBinary:function(h){var k=h.slice(f,f+$.LOCHDR);if(k.readUInt32LE(0)!==$.LOCSIG)throw ui.Errors.INVALID_LOC();y.version=k.readUInt16LE($.LOCVER),y.flags=k.readUInt16LE($.LOCFLG),y.flags_desc=(y.flags&$.FLG_DESC)>0,y.method=k.readUInt16LE($.LOCHOW),y.time=k.readUInt32LE($.LOCTIM),y.crc=k.readUInt32LE($.LOCCRC),y.compressedSize=k.readUInt32LE($.LOCSIZ),y.size=k.readUInt32LE($.LOCLEN),y.fnameLen=k.readUInt16LE($.LOCNAM),y.extraLen=k.readUInt16LE($.LOCEXT);let v=f+$.LOCHDR+y.fnameLen,b=v+y.extraLen;return h.slice(v,b)},loadFromBinary:function(h){if(h.length!==$.CENHDR||h.readUInt32LE(0)!==$.CENSIG)throw ui.Errors.INVALID_CEN();r=h.readUInt16LE($.CENVEM),e=h.readUInt16LE($.CENVER),t=h.readUInt16LE($.CENFLG),n=h.readUInt16LE($.CENHOW),o=h.readUInt32LE($.CENTIM),i=h.readUInt32LE($.CENCRC),a=h.readUInt32LE($.CENSIZ),s=h.readUInt32LE($.CENLEN),c=h.readUInt16LE($.CENNAM),l=h.readUInt16LE($.CENEXT),u=h.readUInt16LE($.CENCOM),p=h.readUInt16LE($.CENDSK),g=h.readUInt16LE($.CENATT),m=h.readUInt32LE($.CENATX),f=h.readUInt32LE($.CENOFF)},localHeaderToBinary:function(){var h=Buffer.alloc($.LOCHDR);return h.writeUInt32LE($.LOCSIG,0),h.writeUInt16LE(e,$.LOCVER),h.writeUInt16LE(t,$.LOCFLG),h.writeUInt16LE(n,$.LOCHOW),h.writeUInt32LE(o,$.LOCTIM),h.writeUInt32LE(i,$.LOCCRC),h.writeUInt32LE(a,$.LOCSIZ),h.writeUInt32LE(s,$.LOCLEN),h.writeUInt16LE(c,$.LOCNAM),h.writeUInt16LE(y.extraLen,$.LOCEXT),h},centralHeaderToBinary:function(){var h=Buffer.alloc($.CENHDR+c+l+u);return h.writeUInt32LE($.CENSIG,0),h.writeUInt16LE(r,$.CENVEM),h.writeUInt16LE(e,$.CENVER),h.writeUInt16LE(t,$.CENFLG),h.writeUInt16LE(n,$.CENHOW),h.writeUInt32LE(o,$.CENTIM),h.writeUInt32LE(i,$.CENCRC),h.writeUInt32LE(a,$.CENSIZ),h.writeUInt32LE(s,$.CENLEN),h.writeUInt16LE(c,$.CENNAM),h.writeUInt16LE(l,$.CENEXT),h.writeUInt16LE(u,$.CENCOM),h.writeUInt16LE(p,$.CENDSK),h.writeUInt16LE(g,$.CENATT),h.writeUInt32LE(m,$.CENATX),h.writeUInt32LE(f,$.CENOFF),h},toJSON:function(){let h=function(k){return k+" bytes"};return{made:r,version:e,flags:t,method:ui.methodToString(n),time:this.time,crc:"0x"+i.toString(16).toUpperCase(),compressedSize:h(a),size:h(s),fileNameLength:h(c),extraLength:h(l),commentLength:h(u),diskNumStart:p,inAttr:g,attr:m,offset:f,centralHeaderSize:h($.CENHDR+c+l+u)}},toString:function(){return JSON.stringify(this.toJSON(),null," ")}}}});var FI=T((Jme,DI)=>{var js=$s(),Ze=js.Constants;DI.exports=function(){var r=0,e=0,t=0,n=0,o=0;return{get diskEntries(){return r},set diskEntries(i){r=e=i},get totalEntries(){return e},set totalEntries(i){e=r=i},get size(){return t},set size(i){t=i},get offset(){return n},set offset(i){n=i},get commentLength(){return o},set commentLength(i){o=i},get mainHeaderSize(){return Ze.ENDHDR+o},loadFromBinary:function(i){if((i.length!==Ze.ENDHDR||i.readUInt32LE(0)!==Ze.ENDSIG)&&(i.length<Ze.ZIP64HDR||i.readUInt32LE(0)!==Ze.ZIP64SIG))throw js.Errors.INVALID_END();i.readUInt32LE(0)===Ze.ENDSIG?(r=i.readUInt16LE(Ze.ENDSUB),e=i.readUInt16LE(Ze.ENDTOT),t=i.readUInt32LE(Ze.ENDSIZ),n=i.readUInt32LE(Ze.ENDOFF),o=i.readUInt16LE(Ze.ENDCOM)):(r=js.readBigUInt64LE(i,Ze.ZIP64SUB),e=js.readBigUInt64LE(i,Ze.ZIP64TOT),t=js.readBigUInt64LE(i,Ze.ZIP64SIZE),n=js.readBigUInt64LE(i,Ze.ZIP64OFF),o=0)},toBinary:function(){var i=Buffer.alloc(Ze.ENDHDR+o);return i.writeUInt32LE(Ze.ENDSIG,0),i.writeUInt32LE(0,4),i.writeUInt16LE(r,Ze.ENDSUB),i.writeUInt16LE(e,Ze.ENDTOT),i.writeUInt32LE(t,Ze.ENDSIZ),i.writeUInt32LE(n,Ze.ENDOFF),i.writeUInt16LE(o,Ze.ENDCOM),i.fill(" ",Ze.ENDHDR),i},toJSON:function(){let i=function(a,s){let c=a.toString(16).toUpperCase();for(;c.length<s;)c="0"+c;return"0x"+c};return{diskEntries:r,totalEntries:e,size:t+" bytes",offset:i(n,4),commentLength:o}},toString:function(){return JSON.stringify(this.toJSON(),null," ")}}}});var KC=T(zC=>{zC.EntryHeader=_I();zC.MainHeader=FI()});var OI=T((Yme,AI)=>{AI.exports=function(r){var e=require("zlib"),t={chunkSize:(parseInt(r.length/1024)+1)*1024};return{deflate:function(){return e.deflateRawSync(r,t)},deflateAsync:function(n){var o=e.createDeflateRaw(t),i=[],a=0;o.on("data",function(s){i.push(s),a+=s.length}),o.on("end",function(){var s=Buffer.alloc(a),c=0;s.fill(0);for(var l=0;l<i.length;l++){var u=i[l];u.copy(s,c),c+=u.length}n&&n(s)}),o.end(r)}}}});var NI=T((Xme,LI)=>{var k2=+(process.versions?process.versions.node:"").split(".")[0]||0;LI.exports=function(r,e){var t=require("zlib");let n=k2>=15&&e>0?{maxOutputLength:e}:{};return{inflate:function(){return t.inflateRawSync(r,n)},inflateAsync:function(o){var i=t.createInflateRaw(n),a=[],s=0;i.on("data",function(c){a.push(c),s+=c.length}),i.on("end",function(){var c=Buffer.alloc(s),l=0;c.fill(0);for(var u=0;u<a.length;u++){var p=a[u];p.copy(c,l),l+=p.length}o&&o(c)}),i.end(r)}}}});var VI=T((Zme,jI)=>{"use strict";var{randomFillSync:WI}=require("crypto"),w2=Cm(),P2=new Uint32Array(256).map((r,e)=>{for(let t=0;t<8;t++)e&1?e=e>>>1^3988292384:e>>>=1;return e>>>0}),$I=(r,e)=>Math.imul(r,e)>>>0,UI=(r,e)=>P2[(r^e)&255]^r>>>8,Wl=()=>typeof WI=="function"?WI(Buffer.alloc(12)):Wl.node();Wl.node=()=>{let r=Buffer.alloc(12),e=r.length;for(let t=0;t<e;t++)r[t]=Math.random()*256&255;return r};var Sm={genSalt:Wl};function vm(r){let e=Buffer.isBuffer(r)?r:Buffer.from(r);this.keys=new Uint32Array([305419896,591751049,878082192]);for(let t=0;t<e.length;t++)this.updateKeys(e[t])}vm.prototype.updateKeys=function(r){let e=this.keys;return e[0]=UI(e[0],r),e[1]+=e[0]&255,e[1]=$I(e[1],134775813)+1,e[2]=UI(e[2],e[1]>>>24),r};vm.prototype.next=function(){let r=(this.keys[2]|2)>>>0;return $I(r,r^1)>>8&255};function R2(r){let e=new vm(r);return function(t){let n=Buffer.alloc(t.length),o=0;for(let i of t)n[o++]=e.updateKeys(i^e.next());return n}}function b2(r){let e=new vm(r);return function(t,n,o=0){n||(n=Buffer.alloc(t.length));for(let i of t){let a=e.next();n[o++]=i^a,e.updateKeys(i)}return n}}function E2(r,e,t){if(!r||!Buffer.isBuffer(r)||r.length<12)return Buffer.alloc(0);let n=R2(t),o=n(r.slice(0,12)),i=(e.flags&8)===8?e.timeHighByte:e.crc>>>24;if(o[11]!==i)throw w2.WRONG_PASSWORD();return n(r.slice(12))}function T2(r){Buffer.isBuffer(r)&&r.length>=12?Sm.genSalt=function(){return r.slice(0,12)}:r==="node"?Sm.genSalt=Wl.node:Sm.genSalt=Wl}function M2(r,e,t,n=!1){r==null&&(r=Buffer.alloc(0)),Buffer.isBuffer(r)||(r=Buffer.from(r.toString()));let o=b2(t),i=Sm.genSalt();i[11]=e.crc>>>24&255,n&&(i[10]=e.crc>>>16&255);let a=Buffer.alloc(r.length+12);return o(i,a),o(r,a,12)}jI.exports={decrypt:E2,encrypt:M2,_salter:T2}});var qI=T(km=>{km.Deflater=OI();km.Inflater=NI();km.ZipCrypto=VI()});var QC=T((tfe,BI)=>{var Me=$s(),x2=KC(),lt=Me.Constants,JC=qI();BI.exports=function(r,e){var t=new x2.EntryHeader,n=Buffer.alloc(0),o=Buffer.alloc(0),i=!1,a=null,s=Buffer.alloc(0),c=Buffer.alloc(0),l=!0;let u=r,p=typeof u.decoder=="object"?u.decoder:Me.decoder;l=p.hasOwnProperty("efs")?p.efs:!1;function g(){return!e||!(e instanceof Uint8Array)?Buffer.alloc(0):(c=t.loadLocalHeaderFromBinary(e),e.slice(t.realDataOffset,t.realDataOffset+t.compressedSize))}function m(h){if(!t.flags_desc&&!t.localHeader.flags_desc){if(Me.crc32(h)!==t.localHeader.crc)return!1}else{let k={},v=t.realDataOffset+t.compressedSize;if(e.readUInt32LE(v)==lt.LOCSIG||e.readUInt32LE(v)==lt.CENSIG)throw Me.Errors.DESCRIPTOR_NOT_EXIST();if(e.readUInt32LE(v)==lt.EXTSIG)k.crc=e.readUInt32LE(v+lt.EXTCRC),k.compressedSize=e.readUInt32LE(v+lt.EXTSIZ),k.size=e.readUInt32LE(v+lt.EXTLEN);else if(e.readUInt16LE(v+12)===19280)k.crc=e.readUInt32LE(v+lt.EXTCRC-4),k.compressedSize=e.readUInt32LE(v+lt.EXTSIZ-4),k.size=e.readUInt32LE(v+lt.EXTLEN-4);else throw Me.Errors.DESCRIPTOR_UNKNOWN();if(k.compressedSize!==t.compressedSize||k.size!==t.size||k.crc!==t.crc)throw Me.Errors.DESCRIPTOR_FAULTY();if(Me.crc32(h)!==k.crc)return!1}return!0}function f(h,k,v){if(typeof k>"u"&&typeof h=="string"&&(v=h,h=void 0),i)return h&&k&&k(Buffer.alloc(0),Me.Errors.DIRECTORY_CONTENT_ERROR()),Buffer.alloc(0);var b=g();if(b.length===0)return h&&k&&k(b),b;if(t.encrypted){if(typeof v!="string"&&!Buffer.isBuffer(v))throw Me.Errors.INVALID_PASS_PARAM();b=JC.ZipCrypto.decrypt(b,t,v)}var R=Buffer.alloc(t.size);switch(t.method){case Me.Constants.STORED:if(b.copy(R),m(R))return h&&k&&k(R),R;throw h&&k&&k(R,Me.Errors.BAD_CRC()),Me.Errors.BAD_CRC();case Me.Constants.DEFLATED:var Q=new JC.Inflater(b,t.size);if(h)Q.inflateAsync(function(x){x.copy(x,0),k&&(m(x)?k(x):k(x,Me.Errors.BAD_CRC()))});else{if(Q.inflate(R).copy(R,0),!m(R))throw Me.Errors.BAD_CRC(`"${p.decode(n)}"`);return R}break;default:throw h&&k&&k(Buffer.alloc(0),Me.Errors.UNKNOWN_METHOD()),Me.Errors.UNKNOWN_METHOD()}}function y(h,k){if((!a||!a.length)&&Buffer.isBuffer(e))return h&&k&&k(g()),g();if(a.length&&!i){var v;switch(t.method){case Me.Constants.STORED:return t.compressedSize=t.size,v=Buffer.alloc(a.length),a.copy(v),h&&k&&k(v),v;default:case Me.Constants.DEFLATED:var b=new JC.Deflater(a);if(h)b.deflateAsync(function(Q){v=Buffer.alloc(Q.length),t.compressedSize=Q.length,Q.copy(v),k&&k(v)});else{var R=b.deflate();return t.compressedSize=R.length,R}b=null;break}}else if(h&&k)k(Buffer.alloc(0));else return Buffer.alloc(0)}function C(h,k){return Me.readBigUInt64LE(h,k)}function S(h){try{for(var k=0,v,b,R;k+4<h.length;)v=h.readUInt16LE(k),k+=2,b=h.readUInt16LE(k),k+=2,R=h.slice(k,k+b),k+=b,lt.ID_ZIP64===v&&w(R)}catch{throw Me.Errors.EXTRA_FIELD_PARSE_ERROR()}}function w(h){var k,v,b,R;h.length>=lt.EF_ZIP64_SCOMP&&(k=C(h,lt.EF_ZIP64_SUNCOMP),t.size===lt.EF_ZIP64_OR_32&&(t.size=k)),h.length>=lt.EF_ZIP64_RHO&&(v=C(h,lt.EF_ZIP64_SCOMP),t.compressedSize===lt.EF_ZIP64_OR_32&&(t.compressedSize=v)),h.length>=lt.EF_ZIP64_DSN&&(b=C(h,lt.EF_ZIP64_RHO),t.offset===lt.EF_ZIP64_OR_32&&(t.offset=b)),h.length>=lt.EF_ZIP64_DSN+4&&(R=h.readUInt32LE(lt.EF_ZIP64_DSN),t.diskNumStart===lt.EF_ZIP64_OR_16&&(t.diskNumStart=R))}return{get entryName(){return p.decode(n)},get rawEntryName(){return n},set entryName(h){n=Me.toBuffer(h,p.encode);var k=n[n.length-1];i=k===47||k===92,t.fileNameLength=n.length},get efs(){return typeof l=="function"?l(this.entryName):l},get extra(){return s},set extra(h){s=h,t.extraLength=h.length,S(h)},get comment(){return p.decode(o)},set comment(h){if(o=Me.toBuffer(h,p.encode),t.commentLength=o.length,o.length>65535)throw Me.Errors.COMMENT_TOO_LONG()},get name(){var h=p.decode(n);return i?h.substr(h.length-1).split("/").pop():h.split("/").pop()},get isDirectory(){return i},getCompressedData:function(){return y(!1,null)},getCompressedDataAsync:function(h){y(!0,h)},setData:function(h){a=Me.toBuffer(h,Me.decoder.encode),!i&&a.length?(t.size=a.length,t.method=Me.Constants.DEFLATED,t.crc=Me.crc32(h),t.changed=!0):t.method=Me.Constants.STORED},getData:function(h){return t.changed?a:f(!1,null,h)},getDataAsync:function(h,k){t.changed?h(a):f(!0,h,k)},set attr(h){t.attr=h},get attr(){return t.attr},set header(h){t.loadFromBinary(h)},get header(){return t},packCentralHeader:function(){t.flags_efs=this.efs,t.extraLength=s.length;var h=t.centralHeaderToBinary(),k=Me.Constants.CENHDR;return n.copy(h,k),k+=n.length,s.copy(h,k),k+=t.extraLength,o.copy(h,k),h},packLocalHeader:function(){let h=0;t.flags_efs=this.efs,t.extraLocalLength=c.length;let k=t.localHeaderToBinary(),v=Buffer.alloc(k.length+n.length+t.extraLocalLength);return k.copy(v,h),h+=k.length,n.copy(v,h),h+=n.length,c.copy(v,h),h+=c.length,v},toJSON:function(){let h=function(k){return"<"+(k&&k.length+" bytes buffer"||"null")+">"};return{entryName:this.entryName,name:this.name,comment:this.comment,isDirectory:this.isDirectory,header:t.toJSON(),compressedData:h(e),data:h(a)}},toString:function(){return JSON.stringify(this.toJSON(),null," ")}}}});var zI=T((rfe,GI)=>{var HI=QC(),I2=KC(),Nt=$s();GI.exports=function(r,e){var t=[],n={},o=Buffer.alloc(0),i=new I2.MainHeader,a=!1,s=null;let c=new Set,l=e,{noSort:u,decoder:p}=l;r?f(l.readEntries):a=!0;function g(){let C=new Set;for(let S of Object.keys(n)){let w=S.split("/");if(w.pop(),!!w.length)for(let h=0;h<w.length;h++){let k=w.slice(0,h+1).join("/")+"/";C.add(k)}}for(let S of C)if(!(S in n)){let w=new HI(l);w.entryName=S,w.attr=16,w.temporary=!0,t.push(w),n[w.entryName]=w,c.add(w)}}function m(){if(a=!0,n={},i.diskEntries>(r.length-i.offset)/Nt.Constants.CENHDR)throw Nt.Errors.DISK_ENTRY_TOO_LARGE();t=new Array(i.diskEntries);for(var C=i.offset,S=0;S<t.length;S++){var w=C,h=new HI(l,r);h.header=r.slice(w,w+=Nt.Constants.CENHDR),h.entryName=r.slice(w,w+=h.header.fileNameLength),h.header.extraLength&&(h.extra=r.slice(w,w+=h.header.extraLength)),h.header.commentLength&&(h.comment=r.slice(w,w+h.header.commentLength)),C+=h.header.centralHeaderSize,t[S]=h,n[h.entryName]=h}c.clear(),g()}function f(C){var S=r.length-Nt.Constants.ENDHDR,w=Math.max(0,S-65535),h=w,k=r.length,v=-1,b=0;for((typeof l.trailingSpace=="boolean"?l.trailingSpace:!1)&&(w=0),S;S>=h;S--)if(r[S]===80){if(r.readUInt32LE(S)===Nt.Constants.ENDSIG){v=S,b=S,k=S+Nt.Constants.ENDHDR,h=S-Nt.Constants.END64HDR;continue}if(r.readUInt32LE(S)===Nt.Constants.END64SIG){h=w;continue}if(r.readUInt32LE(S)===Nt.Constants.ZIP64SIG){v=S,k=S+Nt.readBigUInt64LE(r,S+Nt.Constants.ZIP64SIZE)+Nt.Constants.ZIP64LEAD;break}}if(v==-1)throw Nt.Errors.INVALID_FORMAT();i.loadFromBinary(r.slice(v,k)),i.commentLength&&(o=r.slice(b+Nt.Constants.ENDHDR)),C&&m()}function y(){t.length>1&&!u&&t.sort((C,S)=>C.entryName.toLowerCase().localeCompare(S.entryName.toLowerCase()))}return{get entries(){return a||m(),t.filter(C=>!c.has(C))},get comment(){return p.decode(o)},set comment(C){o=Nt.toBuffer(C,p.encode),i.commentLength=o.length},getEntryCount:function(){return a?t.length:i.diskEntries},forEach:function(C){this.entries.forEach(C)},getEntry:function(C){return a||m(),n[C]||null},setEntry:function(C){a||m(),t.push(C),n[C.entryName]=C,i.totalEntries=t.length},deleteFile:function(C,S=!0){a||m();let w=n[C];this.getEntryChildren(w,S).map(k=>k.entryName).forEach(this.deleteEntry)},deleteEntry:function(C){a||m();let S=n[C],w=t.indexOf(S);w>=0&&(t.splice(w,1),delete n[C],i.totalEntries=t.length)},getEntryChildren:function(C,S=!0){if(a||m(),typeof C=="object")if(C.isDirectory&&S){let w=[],h=C.entryName;for(let k of t)k.entryName.startsWith(h)&&w.push(k);return w}else return[C];return[]},getChildCount:function(C){if(C&&C.isDirectory){let S=this.getEntryChildren(C);return S.includes(C)?S.length-1:S.length}return 0},compressToBuffer:function(){a||m(),y();let C=[],S=[],w=0,h=0;i.size=0,i.offset=0;let k=0;for(let R of this.entries){let Q=R.getCompressedData();R.header.offset=h;let x=R.packLocalHeader(),H=x.length+Q.length;h+=H,C.push(x),C.push(Q);let j=R.packCentralHeader();S.push(j),i.size+=j.length,w+=H+j.length,k++}w+=i.mainHeaderSize,i.offset=h,i.totalEntries=k,h=0;let v=Buffer.alloc(w);for(let R of C)R.copy(v,h),h+=R.length;for(let R of S)R.copy(v,h),h+=R.length;let b=i.toBinary();return o&&o.copy(b,Nt.Constants.ENDHDR),b.copy(v,h),r=v,a=!1,v},toAsyncBuffer:function(C,S,w,h){try{a||m(),y();let k=[],v=[],b=0,R=0,Q=0;i.size=0,i.offset=0;let x=function(H){if(H.length>0){let j=H.shift(),oe=j.entryName+j.extra.toString();w&&w(oe),j.getCompressedDataAsync(function(B){h&&h(oe),j.header.offset=R;let G=j.packLocalHeader(),X=G.length+B.length;R+=X,k.push(G),k.push(B);let pe=j.packCentralHeader();v.push(pe),i.size+=pe.length,b+=X+pe.length,Q++,x(H)})}else{b+=i.mainHeaderSize,i.offset=R,i.totalEntries=Q,R=0;let j=Buffer.alloc(b);k.forEach(function(B){B.copy(j,R),R+=B.length}),v.forEach(function(B){B.copy(j,R),R+=B.length});let oe=i.toBinary();o&&o.copy(oe,Nt.Constants.ENDHDR),oe.copy(j,R),r=j,a=!1,C(j)}};x(Array.from(this.entries))}catch(k){S(k)}}}}});var QI=T((nfe,JI)=>{var tt=$s(),et=require("path"),_2=QC(),D2=zI(),sa=(...r)=>tt.findLast(r,e=>typeof e=="boolean"),KI=(...r)=>tt.findLast(r,e=>typeof e=="string"),F2=(...r)=>tt.findLast(r,e=>typeof e=="function"),A2={noSort:!1,readEntries:!1,method:tt.Constants.NONE,fs:null};JI.exports=function(r,e){let t=null,n=Object.assign(Object.create(null),A2);r&&typeof r=="object"&&(r instanceof Uint8Array||(Object.assign(n,r),r=n.input?n.input:void 0,n.input&&delete n.input),Buffer.isBuffer(r)&&(t=r,n.method=tt.Constants.BUFFER,r=void 0)),Object.assign(n,e);let o=new tt(n);if((typeof n.decoder!="object"||typeof n.decoder.encode!="function"||typeof n.decoder.decode!="function")&&(n.decoder=tt.decoder),r&&typeof r=="string")if(o.fs.existsSync(r))n.method=tt.Constants.FILE,n.filename=r,t=o.fs.readFileSync(r);else throw tt.Errors.INVALID_FILENAME();let i=new D2(t,n),{canonical:a,sanitize:s,zipnamefix:c}=tt;function l(m){if(m&&i){var f;if(typeof m=="string"&&(f=i.getEntry(et.posix.normalize(m))),typeof m=="object"&&typeof m.entryName<"u"&&typeof m.header<"u"&&(f=i.getEntry(m.entryName)),f)return f}return null}function u(m){let{join:f,normalize:y,sep:C}=et.posix;return f(et.isAbsolute(m)?"/":".",y(C+m.split("\\").join(C)+C))}function p(m){return m instanceof RegExp?function(f){return function(y){return f.test(y)}}(m):typeof m!="function"?()=>!0:m}let g=(m,f)=>{let y=f.slice(-1);return y=y===o.sep?o.sep:"",et.relative(m,f)+y};return{readFile:function(m,f){var y=l(m);return y&&y.getData(f)||null},childCount:function(m){let f=l(m);if(f)return i.getChildCount(f)},readFileAsync:function(m,f){var y=l(m);y?y.getDataAsync(f):f(null,"getEntry failed for:"+m)},readAsText:function(m,f){var y=l(m);if(y){var C=y.getData();if(C&&C.length)return C.toString(f||"utf8")}return""},readAsTextAsync:function(m,f,y){var C=l(m);C?C.getDataAsync(function(S,w){if(w){f(S,w);return}S&&S.length?f(S.toString(y||"utf8")):f("")}):f("")},deleteFile:function(m,f=!0){var y=l(m);y&&i.deleteFile(y.entryName,f)},deleteEntry:function(m){var f=l(m);f&&i.deleteEntry(f.entryName)},addZipComment:function(m){i.comment=m},getZipComment:function(){return i.comment||""},addZipEntryComment:function(m,f){var y=l(m);y&&(y.comment=f)},getZipEntryComment:function(m){var f=l(m);return f&&f.comment||""},updateFile:function(m,f){var y=l(m);y&&y.setData(f)},addLocalFile:function(m,f,y,C){if(o.fs.existsSync(m)){f=f?u(f):"";let S=et.win32.basename(et.win32.normalize(m));f+=y||S;let w=o.fs.statSync(m),h=w.isFile()?o.fs.readFileSync(m):Buffer.alloc(0);w.isDirectory()&&(f+=o.sep),this.addFile(f,h,C,w)}else throw tt.Errors.FILE_NOT_FOUND(m)},addLocalFileAsync:function(m,f){m=typeof m=="object"?m:{localPath:m};let y=et.resolve(m.localPath),{comment:C}=m,{zipPath:S,zipName:w}=m,h=this;o.fs.stat(y,function(k,v){if(k)return f(k,!1);S=S?u(S):"";let b=et.win32.basename(et.win32.normalize(y));if(S+=w||b,v.isFile())o.fs.readFile(y,function(R,Q){return R?f(R,!1):(h.addFile(S,Q,C,v),setImmediate(f,void 0,!0))});else if(v.isDirectory())return S+=o.sep,h.addFile(S,Buffer.alloc(0),C,v),setImmediate(f,void 0,!0)})},addLocalFolder:function(m,f,y){if(y=p(y),f=f?u(f):"",m=et.normalize(m),o.fs.existsSync(m)){let C=o.findFiles(m),S=this;if(C.length)for(let w of C){let h=et.join(f,g(m,w));y(h)&&S.addLocalFile(w,et.dirname(h))}}else throw tt.Errors.FILE_NOT_FOUND(m)},addLocalFolderAsync:function(m,f,y,C){C=p(C),y=y?u(y):"",m=et.normalize(m);var S=this;o.fs.open(m,"r",function(w){if(w&&w.code==="ENOENT")f(void 0,tt.Errors.FILE_NOT_FOUND(m));else if(w)f(void 0,w);else{var h=o.findFiles(m),k=-1,v=function(){if(k+=1,k<h.length){var b=h[k],R=g(m,b).split("\\").join("/");R=R.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x20-\x7E]/g,""),C(R)?o.fs.stat(b,function(Q,x){Q&&f(void 0,Q),x.isFile()?o.fs.readFile(b,function(H,j){H?f(void 0,H):(S.addFile(y+R,j,"",x),v())}):(S.addFile(y+R+"/",Buffer.alloc(0),"",x),v())}):process.nextTick(()=>{v()})}else f(!0,void 0)};v()}})},addLocalFolderAsync2:function(m,f){let y=this;m=typeof m=="object"?m:{localPath:m},localPath=et.resolve(u(m.localPath));let{zipPath:C,filter:S,namefix:w}=m;S instanceof RegExp?S=function(v){return function(b){return v.test(b)}}(S):typeof S!="function"&&(S=function(){return!0}),C=C?u(C):"",w=="latin1"&&(w=v=>v.normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^\x20-\x7E]/g,"")),typeof w!="function"&&(w=v=>v);let h=v=>et.join(C,w(g(localPath,v))),k=v=>et.win32.basename(et.win32.normalize(w(v)));o.fs.open(localPath,"r",function(v){v&&v.code==="ENOENT"?f(void 0,tt.Errors.FILE_NOT_FOUND(localPath)):v?f(void 0,v):o.findFilesAsync(localPath,function(b,R){if(b)return f(b);R=R.filter(Q=>S(h(Q))),R.length||f(void 0,!1),setImmediate(R.reverse().reduce(function(Q,x){return function(H,j){if(H||j===!1)return setImmediate(Q,H,!1);y.addLocalFileAsync({localPath:x,zipPath:et.dirname(h(x)),zipName:k(x)},Q)}},f))})})},addLocalFolderPromise:function(m,f){return new Promise((y,C)=>{this.addLocalFolderAsync2(Object.assign({localPath:m},f),(S,w)=>{S&&C(S),w&&y(this)})})},addFile:function(m,f,y,C){m=c(m);let S=l(m),w=S!=null;w||(S=new _2(n),S.entryName=m),S.comment=y||"";let h=typeof C=="object"&&C instanceof o.fs.Stats;h&&(S.header.time=C.mtime);var k=S.isDirectory?16:0;let v=S.isDirectory?16384:32768;return h?v|=4095&C.mode:typeof C=="number"?v|=4095&C:v|=S.isDirectory?493:420,k=(k|v<<16)>>>0,S.attr=k,S.setData(f),w||i.setEntry(S),S},getEntries:function(m){return i.password=m,i?i.entries:[]},getEntry:function(m){return l(m)},getEntryCount:function(){return i.getEntryCount()},forEach:function(m){return i.forEach(m)},extractEntryTo:function(m,f,y,C,S,w){C=sa(!1,C),S=sa(!1,S),y=sa(!0,y),w=KI(S,w);var h=l(m);if(!h)throw tt.Errors.NO_ENTRY();var k=a(h.entryName),v=s(f,w&&!h.isDirectory?w:y?k:et.basename(k));if(h.isDirectory){var b=i.getEntryChildren(h);return b.forEach(function(x){if(x.isDirectory)return;var H=x.getData();if(!H)throw tt.Errors.CANT_EXTRACT_FILE();var j=a(x.entryName),oe=s(f,y?j:et.basename(j));let B=S?x.header.fileAttr:void 0;o.writeFileTo(oe,H,C,B)}),!0}var R=h.getData(i.password);if(!R)throw tt.Errors.CANT_EXTRACT_FILE();if(o.fs.existsSync(v)&&!C)throw tt.Errors.CANT_OVERRIDE();let Q=S?m.header.fileAttr:void 0;return o.writeFileTo(v,R,C,Q),!0},test:function(m){if(!i)return!1;for(var f in i.entries)try{if(f.isDirectory)continue;var y=i.entries[f].getData(m);if(!y)return!1}catch{return!1}return!0},extractAllTo:function(m,f,y,C){if(y=sa(!1,y),C=KI(y,C),f=sa(!1,f),!i)throw tt.Errors.NO_ZIP();i.entries.forEach(function(S){var w=s(m,a(S.entryName));if(S.isDirectory){o.makeDir(w);return}var h=S.getData(C);if(!h)throw tt.Errors.CANT_EXTRACT_FILE();let k=y?S.header.fileAttr:void 0;o.writeFileTo(w,h,f,k);try{o.fs.utimesSync(w,S.header.time,S.header.time)}catch{throw tt.Errors.CANT_EXTRACT_FILE()}})},extractAllToAsync:function(m,f,y,C){if(C=F2(f,y,C),y=sa(!1,y),f=sa(!1,f),!C)return new Promise((v,b)=>{this.extractAllToAsync(m,f,y,function(R){R?b(R):v(this)})});if(!i){C(tt.Errors.NO_ZIP());return}m=et.resolve(m);let S=v=>s(m,et.normalize(a(v.entryName))),w=(v,b)=>new Error(v+': "'+b+'"'),h=[],k=[];i.entries.forEach(v=>{v.isDirectory?h.push(v):k.push(v)});for(let v of h){let b=S(v),R=y?v.header.fileAttr:void 0;try{o.makeDir(b),R&&o.fs.chmodSync(b,R),o.fs.utimesSync(b,v.header.time,v.header.time)}catch{C(w("Unable to create folder",b))}}k.reverse().reduce(function(v,b){return function(R){if(R)v(R);else{let Q=et.normalize(a(b.entryName)),x=s(m,Q);b.getDataAsync(function(H,j){if(j)v(j);else if(!H)v(tt.Errors.CANT_EXTRACT_FILE());else{let oe=y?b.header.fileAttr:void 0;o.writeFileToAsync(x,H,f,oe,function(B){B||v(w("Unable to write file",x)),o.fs.utimes(x,b.header.time,b.header.time,function(G){G?v(w("Unable to set times",x)):v()})})}})}}},C)()},writeZip:function(m,f){if(arguments.length===1&&typeof m=="function"&&(f=m,m=""),!m&&n.filename&&(m=n.filename),!!m){var y=i.compressToBuffer();if(y){var C=o.writeFileTo(m,y,!0);typeof f=="function"&&f(C?null:new Error("failed"),"")}}},writeZipPromise:function(m,f){let{overwrite:y,perm:C}=Object.assign({overwrite:!0},f);return new Promise((S,w)=>{!m&&n.filename&&(m=n.filename),m||w("ADM-ZIP: ZIP File Name Missing"),this.toBufferPromise().then(h=>{let k=v=>v?S(v):w("ADM-ZIP: Wasn't able to write zip file");o.writeFileToAsync(m,h,y,C,k)},w)})},toBufferPromise:function(){return new Promise((m,f)=>{i.toAsyncBuffer(m,f)})},toBuffer:function(m,f,y,C){return typeof m=="function"?(i.toAsyncBuffer(m,f,y,C),null):i.compressToBuffer()}}}});var Bl=T(be=>{"use strict";Object.defineProperty(be,"__esModule",{value:!0});be.regexpCode=be.getEsmExportName=be.getProperty=be.safeStringify=be.stringify=be.strConcat=be.addCodeArg=be.str=be._=be.nil=be._Code=be.Name=be.IDENTIFIER=be._CodeOrName=void 0;var Vl=class{};be._CodeOrName=Vl;be.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var ma=class extends Vl{constructor(e){if(super(),!be.IDENTIFIER.test(e))throw new Error("CodeGen: name must be a valid identifier");this.str=e}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};be.Name=ma;var tn=class extends Vl{constructor(e){super(),this._items=typeof e=="string"?[e]:e}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let e=this._items[0];return e===""||e==='""'}get str(){var e;return(e=this._str)!==null&&e!==void 0?e:this._str=this._items.reduce((t,n)=>`${t}${n}`,"")}get names(){var e;return(e=this._names)!==null&&e!==void 0?e:this._names=this._items.reduce((t,n)=>(n instanceof ma&&(t[n.str]=(t[n.str]||0)+1),t),{})}};be._Code=tn;be.nil=new tn("");function OD(r,...e){let t=[r[0]],n=0;for(;n<e.length;)NS(t,e[n]),t.push(r[++n]);return new tn(t)}be._=OD;var LS=new tn("+");function LD(r,...e){let t=[ql(r[0])],n=0;for(;n<e.length;)t.push(LS),NS(t,e[n]),t.push(LS,ql(r[++n]));return zH(t),new tn(t)}be.str=LD;function NS(r,e){e instanceof tn?r.push(...e._items):e instanceof ma?r.push(e):r.push(QH(e))}be.addCodeArg=NS;function zH(r){let e=1;for(;e<r.length-1;){if(r[e]===LS){let t=KH(r[e-1],r[e+1]);if(t!==void 0){r.splice(e-1,3,t);continue}r[e++]="+"}e++}}function KH(r,e){if(e==='""')return r;if(r==='""')return e;if(typeof r=="string")return e instanceof ma||r[r.length-1]!=='"'?void 0:typeof e!="string"?`${r.slice(0,-1)}${e}"`:e[0]==='"'?r.slice(0,-1)+e.slice(1):void 0;if(typeof e=="string"&&e[0]==='"'&&!(r instanceof ma))return`"${r}${e.slice(1)}`}function JH(r,e){return e.emptyStr()?r:r.emptyStr()?e:LD`${r}${e}`}be.strConcat=JH;function QH(r){return typeof r=="number"||typeof r=="boolean"||r===null?r:ql(Array.isArray(r)?r.join(","):r)}function YH(r){return new tn(ql(r))}be.stringify=YH;function ql(r){return JSON.stringify(r).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}be.safeStringify=ql;function XH(r){return typeof r=="string"&&be.IDENTIFIER.test(r)?new tn(`.${r}`):OD`[${r}]`}be.getProperty=XH;function ZH(r){if(typeof r=="string"&&be.IDENTIFIER.test(r))return new tn(`${r}`);throw new Error(`CodeGen: invalid export name: ${r}, use explicit $id name mapping`)}be.getEsmExportName=ZH;function eG(r){return new tn(r.toString())}be.regexpCode=eG});var $S=T(Pr=>{"use strict";Object.defineProperty(Pr,"__esModule",{value:!0});Pr.ValueScope=Pr.ValueScopeName=Pr.Scope=Pr.varKinds=Pr.UsedValueState=void 0;var wr=Bl(),WS=class extends Error{constructor(e){super(`CodeGen: "code" for ${e} not defined`),this.value=e.value}},qm;(function(r){r[r.Started=0]="Started",r[r.Completed=1]="Completed"})(qm||(Pr.UsedValueState=qm={}));Pr.varKinds={const:new wr.Name("const"),let:new wr.Name("let"),var:new wr.Name("var")};var Bm=class{constructor({prefixes:e,parent:t}={}){this._names={},this._prefixes=e,this._parent=t}toName(e){return e instanceof wr.Name?e:this.name(e)}name(e){return new wr.Name(this._newName(e))}_newName(e){let t=this._names[e]||this._nameGroup(e);return`${e}${t.index++}`}_nameGroup(e){var t,n;if(!((n=(t=this._parent)===null||t===void 0?void 0:t._prefixes)===null||n===void 0)&&n.has(e)||this._prefixes&&!this._prefixes.has(e))throw new Error(`CodeGen: prefix "${e}" is not allowed in this scope`);return this._names[e]={prefix:e,index:0}}};Pr.Scope=Bm;var Hm=class extends wr.Name{constructor(e,t){super(t),this.prefix=e}setValue(e,{property:t,itemIndex:n}){this.value=e,this.scopePath=(0,wr._)`.${new wr.Name(t)}[${n}]`}};Pr.ValueScopeName=Hm;var tG=(0,wr._)`\n`,US=class extends Bm{constructor(e){super(e),this._values={},this._scope=e.scope,this.opts={...e,_n:e.lines?tG:wr.nil}}get(){return this._scope}name(e){return new Hm(e,this._newName(e))}value(e,t){var n;if(t.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let o=this.toName(e),{prefix:i}=o,a=(n=t.key)!==null&&n!==void 0?n:t.ref,s=this._values[i];if(s){let u=s.get(a);if(u)return u}else s=this._values[i]=new Map;s.set(a,o);let c=this._scope[i]||(this._scope[i]=[]),l=c.length;return c[l]=t.ref,o.setValue(t,{property:i,itemIndex:l}),o}getValue(e,t){let n=this._values[e];if(n)return n.get(t)}scopeRefs(e,t=this._values){return this._reduceValues(t,n=>{if(n.scopePath===void 0)throw new Error(`CodeGen: name "${n}" has no value`);return(0,wr._)`${e}${n.scopePath}`})}scopeCode(e=this._values,t,n){return this._reduceValues(e,o=>{if(o.value===void 0)throw new Error(`CodeGen: name "${o}" has no value`);return o.value.code},t,n)}_reduceValues(e,t,n={},o){let i=wr.nil;for(let a in e){let s=e[a];if(!s)continue;let c=n[a]=n[a]||new Map;s.forEach(l=>{if(c.has(l))return;c.set(l,qm.Started);let u=t(l);if(u){let p=this.opts.es5?Pr.varKinds.var:Pr.varKinds.const;i=(0,wr._)`${i}${p} ${l} = ${u};${this.opts._n}`}else if(u=o?.(l))i=(0,wr._)`${i}${u}${this.opts._n}`;else throw new WS(l);c.set(l,qm.Completed)})}return i}};Pr.ValueScope=US});var ue=T(ce=>{"use strict";Object.defineProperty(ce,"__esModule",{value:!0});ce.or=ce.and=ce.not=ce.CodeGen=ce.operators=ce.varKinds=ce.ValueScopeName=ce.ValueScope=ce.Scope=ce.Name=ce.regexpCode=ce.stringify=ce.getProperty=ce.nil=ce.strConcat=ce.str=ce._=void 0;var ye=Bl(),xn=$S(),pi=Bl();Object.defineProperty(ce,"_",{enumerable:!0,get:function(){return pi._}});Object.defineProperty(ce,"str",{enumerable:!0,get:function(){return pi.str}});Object.defineProperty(ce,"strConcat",{enumerable:!0,get:function(){return pi.strConcat}});Object.defineProperty(ce,"nil",{enumerable:!0,get:function(){return pi.nil}});Object.defineProperty(ce,"getProperty",{enumerable:!0,get:function(){return pi.getProperty}});Object.defineProperty(ce,"stringify",{enumerable:!0,get:function(){return pi.stringify}});Object.defineProperty(ce,"regexpCode",{enumerable:!0,get:function(){return pi.regexpCode}});Object.defineProperty(ce,"Name",{enumerable:!0,get:function(){return pi.Name}});var Jm=$S();Object.defineProperty(ce,"Scope",{enumerable:!0,get:function(){return Jm.Scope}});Object.defineProperty(ce,"ValueScope",{enumerable:!0,get:function(){return Jm.ValueScope}});Object.defineProperty(ce,"ValueScopeName",{enumerable:!0,get:function(){return Jm.ValueScopeName}});Object.defineProperty(ce,"varKinds",{enumerable:!0,get:function(){return Jm.varKinds}});ce.operators={GT:new ye._Code(">"),GTE:new ye._Code(">="),LT:new ye._Code("<"),LTE:new ye._Code("<="),EQ:new ye._Code("==="),NEQ:new ye._Code("!=="),NOT:new ye._Code("!"),OR:new ye._Code("||"),AND:new ye._Code("&&"),ADD:new ye._Code("+")};var Eo=class{optimizeNodes(){return this}optimizeNames(e,t){return this}},jS=class extends Eo{constructor(e,t,n){super(),this.varKind=e,this.name=t,this.rhs=n}render({es5:e,_n:t}){let n=e?xn.varKinds.var:this.varKind,o=this.rhs===void 0?"":` = ${this.rhs}`;return`${n} ${this.name}${o};`+t}optimizeNames(e,t){if(e[this.name.str])return this.rhs&&(this.rhs=Js(this.rhs,e,t)),this}get names(){return this.rhs instanceof ye._CodeOrName?this.rhs.names:{}}},Gm=class extends Eo{constructor(e,t,n){super(),this.lhs=e,this.rhs=t,this.sideEffects=n}render({_n:e}){return`${this.lhs} = ${this.rhs};`+e}optimizeNames(e,t){if(!(this.lhs instanceof ye.Name&&!e[this.lhs.str]&&!this.sideEffects))return this.rhs=Js(this.rhs,e,t),this}get names(){let e=this.lhs instanceof ye.Name?{}:{...this.lhs.names};return Km(e,this.rhs)}},VS=class extends Gm{constructor(e,t,n,o){super(e,n,o),this.op=t}render({_n:e}){return`${this.lhs} ${this.op}= ${this.rhs};`+e}},qS=class extends Eo{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`${this.label}:`+e}},BS=class extends Eo{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`break${this.label?` ${this.label}`:""};`+e}},HS=class extends Eo{constructor(e){super(),this.error=e}render({_n:e}){return`throw ${this.error};`+e}get names(){return this.error.names}},GS=class extends Eo{constructor(e){super(),this.code=e}render({_n:e}){return`${this.code};`+e}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(e,t){return this.code=Js(this.code,e,t),this}get names(){return this.code instanceof ye._CodeOrName?this.code.names:{}}},Hl=class extends Eo{constructor(e=[]){super(),this.nodes=e}render(e){return this.nodes.reduce((t,n)=>t+n.render(e),"")}optimizeNodes(){let{nodes:e}=this,t=e.length;for(;t--;){let n=e[t].optimizeNodes();Array.isArray(n)?e.splice(t,1,...n):n?e[t]=n:e.splice(t,1)}return e.length>0?this:void 0}optimizeNames(e,t){let{nodes:n}=this,o=n.length;for(;o--;){let i=n[o];i.optimizeNames(e,t)||(rG(e,i.names),n.splice(o,1))}return n.length>0?this:void 0}get names(){return this.nodes.reduce((e,t)=>ga(e,t.names),{})}},To=class extends Hl{render(e){return"{"+e._n+super.render(e)+"}"+e._n}},zS=class extends Hl{},Ks=class extends To{};Ks.kind="else";var fa=class r extends To{constructor(e,t){super(t),this.condition=e}render(e){let t=`if(${this.condition})`+super.render(e);return this.else&&(t+="else "+this.else.render(e)),t}optimizeNodes(){super.optimizeNodes();let e=this.condition;if(e===!0)return this.nodes;let t=this.else;if(t){let n=t.optimizeNodes();t=this.else=Array.isArray(n)?new Ks(n):n}if(t)return e===!1?t instanceof r?t:t.nodes:this.nodes.length?this:new r(ND(e),t instanceof r?[t]:t.nodes);if(!(e===!1||!this.nodes.length))return this}optimizeNames(e,t){var n;if(this.else=(n=this.else)===null||n===void 0?void 0:n.optimizeNames(e,t),!!(super.optimizeNames(e,t)||this.else))return this.condition=Js(this.condition,e,t),this}get names(){let e=super.names;return Km(e,this.condition),this.else&&ga(e,this.else.names),e}};fa.kind="if";var ha=class extends To{};ha.kind="for";var KS=class extends ha{constructor(e){super(),this.iteration=e}render(e){return`for(${this.iteration})`+super.render(e)}optimizeNames(e,t){if(super.optimizeNames(e,t))return this.iteration=Js(this.iteration,e,t),this}get names(){return ga(super.names,this.iteration.names)}},JS=class extends ha{constructor(e,t,n,o){super(),this.varKind=e,this.name=t,this.from=n,this.to=o}render(e){let t=e.es5?xn.varKinds.var:this.varKind,{name:n,from:o,to:i}=this;return`for(${t} ${n}=${o}; ${n}<${i}; ${n}++)`+super.render(e)}get names(){let e=Km(super.names,this.from);return Km(e,this.to)}},zm=class extends ha{constructor(e,t,n,o){super(),this.loop=e,this.varKind=t,this.name=n,this.iterable=o}render(e){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(e)}optimizeNames(e,t){if(super.optimizeNames(e,t))return this.iterable=Js(this.iterable,e,t),this}get names(){return ga(super.names,this.iterable.names)}},Gl=class extends To{constructor(e,t,n){super(),this.name=e,this.args=t,this.async=n}render(e){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(e)}};Gl.kind="func";var zl=class extends Hl{render(e){return"return "+super.render(e)}};zl.kind="return";var QS=class extends To{render(e){let t="try"+super.render(e);return this.catch&&(t+=this.catch.render(e)),this.finally&&(t+=this.finally.render(e)),t}optimizeNodes(){var e,t;return super.optimizeNodes(),(e=this.catch)===null||e===void 0||e.optimizeNodes(),(t=this.finally)===null||t===void 0||t.optimizeNodes(),this}optimizeNames(e,t){var n,o;return super.optimizeNames(e,t),(n=this.catch)===null||n===void 0||n.optimizeNames(e,t),(o=this.finally)===null||o===void 0||o.optimizeNames(e,t),this}get names(){let e=super.names;return this.catch&&ga(e,this.catch.names),this.finally&&ga(e,this.finally.names),e}},Kl=class extends To{constructor(e){super(),this.error=e}render(e){return`catch(${this.error})`+super.render(e)}};Kl.kind="catch";var Jl=class extends To{render(e){return"finally"+super.render(e)}};Jl.kind="finally";var YS=class{constructor(e,t={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...t,_n:t.lines?`
|
|
24
|
+
`:""},this._extScope=e,this._scope=new xn.Scope({parent:e}),this._nodes=[new zS]}toString(){return this._root.render(this.opts)}name(e){return this._scope.name(e)}scopeName(e){return this._extScope.name(e)}scopeValue(e,t){let n=this._extScope.value(e,t);return(this._values[n.prefix]||(this._values[n.prefix]=new Set)).add(n),n}getScopeValue(e,t){return this._extScope.getValue(e,t)}scopeRefs(e){return this._extScope.scopeRefs(e,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(e,t,n,o){let i=this._scope.toName(t);return n!==void 0&&o&&(this._constants[i.str]=n),this._leafNode(new jS(e,i,n)),i}const(e,t,n){return this._def(xn.varKinds.const,e,t,n)}let(e,t,n){return this._def(xn.varKinds.let,e,t,n)}var(e,t,n){return this._def(xn.varKinds.var,e,t,n)}assign(e,t,n){return this._leafNode(new Gm(e,t,n))}add(e,t){return this._leafNode(new VS(e,ce.operators.ADD,t))}code(e){return typeof e=="function"?e():e!==ye.nil&&this._leafNode(new GS(e)),this}object(...e){let t=["{"];for(let[n,o]of e)t.length>1&&t.push(","),t.push(n),(n!==o||this.opts.es5)&&(t.push(":"),(0,ye.addCodeArg)(t,o));return t.push("}"),new ye._Code(t)}if(e,t,n){if(this._blockNode(new fa(e)),t&&n)this.code(t).else().code(n).endIf();else if(t)this.code(t).endIf();else if(n)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(e){return this._elseNode(new fa(e))}else(){return this._elseNode(new Ks)}endIf(){return this._endBlockNode(fa,Ks)}_for(e,t){return this._blockNode(e),t&&this.code(t).endFor(),this}for(e,t){return this._for(new KS(e),t)}forRange(e,t,n,o,i=this.opts.es5?xn.varKinds.var:xn.varKinds.let){let a=this._scope.toName(e);return this._for(new JS(i,a,t,n),()=>o(a))}forOf(e,t,n,o=xn.varKinds.const){let i=this._scope.toName(e);if(this.opts.es5){let a=t instanceof ye.Name?t:this.var("_arr",t);return this.forRange("_i",0,(0,ye._)`${a}.length`,s=>{this.var(i,(0,ye._)`${a}[${s}]`),n(i)})}return this._for(new zm("of",o,i,t),()=>n(i))}forIn(e,t,n,o=this.opts.es5?xn.varKinds.var:xn.varKinds.const){if(this.opts.ownProperties)return this.forOf(e,(0,ye._)`Object.keys(${t})`,n);let i=this._scope.toName(e);return this._for(new zm("in",o,i,t),()=>n(i))}endFor(){return this._endBlockNode(ha)}label(e){return this._leafNode(new qS(e))}break(e){return this._leafNode(new BS(e))}return(e){let t=new zl;if(this._blockNode(t),this.code(e),t.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(zl)}try(e,t,n){if(!t&&!n)throw new Error('CodeGen: "try" without "catch" and "finally"');let o=new QS;if(this._blockNode(o),this.code(e),t){let i=this.name("e");this._currNode=o.catch=new Kl(i),t(i)}return n&&(this._currNode=o.finally=new Jl,this.code(n)),this._endBlockNode(Kl,Jl)}throw(e){return this._leafNode(new HS(e))}block(e,t){return this._blockStarts.push(this._nodes.length),e&&this.code(e).endBlock(t),this}endBlock(e){let t=this._blockStarts.pop();if(t===void 0)throw new Error("CodeGen: not in self-balancing block");let n=this._nodes.length-t;if(n<0||e!==void 0&&n!==e)throw new Error(`CodeGen: wrong number of nodes: ${n} vs ${e} expected`);return this._nodes.length=t,this}func(e,t=ye.nil,n,o){return this._blockNode(new Gl(e,t,n)),o&&this.code(o).endFunc(),this}endFunc(){return this._endBlockNode(Gl)}optimize(e=1){for(;e-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(e){return this._currNode.nodes.push(e),this}_blockNode(e){this._currNode.nodes.push(e),this._nodes.push(e)}_endBlockNode(e,t){let n=this._currNode;if(n instanceof e||t&&n instanceof t)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${t?`${e.kind}/${t.kind}`:e.kind}"`)}_elseNode(e){let t=this._currNode;if(!(t instanceof fa))throw new Error('CodeGen: "else" without "if"');return this._currNode=t.else=e,this}get _root(){return this._nodes[0]}get _currNode(){let e=this._nodes;return e[e.length-1]}set _currNode(e){let t=this._nodes;t[t.length-1]=e}};ce.CodeGen=YS;function ga(r,e){for(let t in e)r[t]=(r[t]||0)+(e[t]||0);return r}function Km(r,e){return e instanceof ye._CodeOrName?ga(r,e.names):r}function Js(r,e,t){if(r instanceof ye.Name)return n(r);if(!o(r))return r;return new ye._Code(r._items.reduce((i,a)=>(a instanceof ye.Name&&(a=n(a)),a instanceof ye._Code?i.push(...a._items):i.push(a),i),[]));function n(i){let a=t[i.str];return a===void 0||e[i.str]!==1?i:(delete e[i.str],a)}function o(i){return i instanceof ye._Code&&i._items.some(a=>a instanceof ye.Name&&e[a.str]===1&&t[a.str]!==void 0)}}function rG(r,e){for(let t in e)r[t]=(r[t]||0)-(e[t]||0)}function ND(r){return typeof r=="boolean"||typeof r=="number"||r===null?!r:(0,ye._)`!${XS(r)}`}ce.not=ND;var nG=WD(ce.operators.AND);function oG(...r){return r.reduce(nG)}ce.and=oG;var iG=WD(ce.operators.OR);function aG(...r){return r.reduce(iG)}ce.or=aG;function WD(r){return(e,t)=>e===ye.nil?t:t===ye.nil?e:(0,ye._)`${XS(e)} ${r} ${XS(t)}`}function XS(r){return r instanceof ye.Name?r:(0,ye._)`(${r})`}});var ve=T(de=>{"use strict";Object.defineProperty(de,"__esModule",{value:!0});de.checkStrictMode=de.getErrorPath=de.Type=de.useFunc=de.setEvaluated=de.evaluatedPropsToName=de.mergeEvaluated=de.eachItem=de.unescapeJsonPointer=de.escapeJsonPointer=de.escapeFragment=de.unescapeFragment=de.schemaRefOrVal=de.schemaHasRulesButRef=de.schemaHasRules=de.checkUnknownRules=de.alwaysValidSchema=de.toHash=void 0;var We=ue(),sG=Bl();function cG(r){let e={};for(let t of r)e[t]=!0;return e}de.toHash=cG;function lG(r,e){return typeof e=="boolean"?e:Object.keys(e).length===0?!0:(jD(r,e),!VD(e,r.self.RULES.all))}de.alwaysValidSchema=lG;function jD(r,e=r.schema){let{opts:t,self:n}=r;if(!t.strictSchema||typeof e=="boolean")return;let o=n.RULES.keywords;for(let i in e)o[i]||HD(r,`unknown keyword: "${i}"`)}de.checkUnknownRules=jD;function VD(r,e){if(typeof r=="boolean")return!r;for(let t in r)if(e[t])return!0;return!1}de.schemaHasRules=VD;function uG(r,e){if(typeof r=="boolean")return!r;for(let t in r)if(t!=="$ref"&&e.all[t])return!0;return!1}de.schemaHasRulesButRef=uG;function dG({topSchemaRef:r,schemaPath:e},t,n,o){if(!o){if(typeof t=="number"||typeof t=="boolean")return t;if(typeof t=="string")return(0,We._)`${t}`}return(0,We._)`${r}${e}${(0,We.getProperty)(n)}`}de.schemaRefOrVal=dG;function pG(r){return qD(decodeURIComponent(r))}de.unescapeFragment=pG;function mG(r){return encodeURIComponent(ev(r))}de.escapeFragment=mG;function ev(r){return typeof r=="number"?`${r}`:r.replace(/~/g,"~0").replace(/\//g,"~1")}de.escapeJsonPointer=ev;function qD(r){return r.replace(/~1/g,"/").replace(/~0/g,"~")}de.unescapeJsonPointer=qD;function fG(r,e){if(Array.isArray(r))for(let t of r)e(t);else e(r)}de.eachItem=fG;function UD({mergeNames:r,mergeToName:e,mergeValues:t,resultToName:n}){return(o,i,a,s)=>{let c=a===void 0?i:a instanceof We.Name?(i instanceof We.Name?r(o,i,a):e(o,i,a),a):i instanceof We.Name?(e(o,a,i),i):t(i,a);return s===We.Name&&!(c instanceof We.Name)?n(o,c):c}}de.mergeEvaluated={props:UD({mergeNames:(r,e,t)=>r.if((0,We._)`${t} !== true && ${e} !== undefined`,()=>{r.if((0,We._)`${e} === true`,()=>r.assign(t,!0),()=>r.assign(t,(0,We._)`${t} || {}`).code((0,We._)`Object.assign(${t}, ${e})`))}),mergeToName:(r,e,t)=>r.if((0,We._)`${t} !== true`,()=>{e===!0?r.assign(t,!0):(r.assign(t,(0,We._)`${t} || {}`),tv(r,t,e))}),mergeValues:(r,e)=>r===!0?!0:{...r,...e},resultToName:BD}),items:UD({mergeNames:(r,e,t)=>r.if((0,We._)`${t} !== true && ${e} !== undefined`,()=>r.assign(t,(0,We._)`${e} === true ? true : ${t} > ${e} ? ${t} : ${e}`)),mergeToName:(r,e,t)=>r.if((0,We._)`${t} !== true`,()=>r.assign(t,e===!0?!0:(0,We._)`${t} > ${e} ? ${t} : ${e}`)),mergeValues:(r,e)=>r===!0?!0:Math.max(r,e),resultToName:(r,e)=>r.var("items",e)})};function BD(r,e){if(e===!0)return r.var("props",!0);let t=r.var("props",(0,We._)`{}`);return e!==void 0&&tv(r,t,e),t}de.evaluatedPropsToName=BD;function tv(r,e,t){Object.keys(t).forEach(n=>r.assign((0,We._)`${e}${(0,We.getProperty)(n)}`,!0))}de.setEvaluated=tv;var $D={};function hG(r,e){return r.scopeValue("func",{ref:e,code:$D[e.code]||($D[e.code]=new sG._Code(e.code))})}de.useFunc=hG;var ZS;(function(r){r[r.Num=0]="Num",r[r.Str=1]="Str"})(ZS||(de.Type=ZS={}));function gG(r,e,t){if(r instanceof We.Name){let n=e===ZS.Num;return t?n?(0,We._)`"[" + ${r} + "]"`:(0,We._)`"['" + ${r} + "']"`:n?(0,We._)`"/" + ${r}`:(0,We._)`"/" + ${r}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return t?(0,We.getProperty)(r).toString():"/"+ev(r)}de.getErrorPath=gG;function HD(r,e,t=r.opts.strictSchema){if(t){if(e=`strict mode: ${e}`,t===!0)throw new Error(e);r.self.logger.warn(e)}}de.checkStrictMode=HD});var Mo=T(rv=>{"use strict";Object.defineProperty(rv,"__esModule",{value:!0});var Xt=ue(),yG={data:new Xt.Name("data"),valCxt:new Xt.Name("valCxt"),instancePath:new Xt.Name("instancePath"),parentData:new Xt.Name("parentData"),parentDataProperty:new Xt.Name("parentDataProperty"),rootData:new Xt.Name("rootData"),dynamicAnchors:new Xt.Name("dynamicAnchors"),vErrors:new Xt.Name("vErrors"),errors:new Xt.Name("errors"),this:new Xt.Name("this"),self:new Xt.Name("self"),scope:new Xt.Name("scope"),json:new Xt.Name("json"),jsonPos:new Xt.Name("jsonPos"),jsonLen:new Xt.Name("jsonLen"),jsonPart:new Xt.Name("jsonPart")};rv.default=yG});var Ql=T(Zt=>{"use strict";Object.defineProperty(Zt,"__esModule",{value:!0});Zt.extendErrors=Zt.resetErrorsCount=Zt.reportExtraError=Zt.reportError=Zt.keyword$DataError=Zt.keywordError=void 0;var ke=ue(),Qm=ve(),lr=Mo();Zt.keywordError={message:({keyword:r})=>(0,ke.str)`must pass "${r}" keyword validation`};Zt.keyword$DataError={message:({keyword:r,schemaType:e})=>e?(0,ke.str)`"${r}" keyword must be ${e} ($data)`:(0,ke.str)`"${r}" keyword is invalid ($data)`};function CG(r,e=Zt.keywordError,t,n){let{it:o}=r,{gen:i,compositeRule:a,allErrors:s}=o,c=KD(r,e,t);n??(a||s)?GD(i,c):zD(o,(0,ke._)`[${c}]`)}Zt.reportError=CG;function SG(r,e=Zt.keywordError,t){let{it:n}=r,{gen:o,compositeRule:i,allErrors:a}=n,s=KD(r,e,t);GD(o,s),i||a||zD(n,lr.default.vErrors)}Zt.reportExtraError=SG;function vG(r,e){r.assign(lr.default.errors,e),r.if((0,ke._)`${lr.default.vErrors} !== null`,()=>r.if(e,()=>r.assign((0,ke._)`${lr.default.vErrors}.length`,e),()=>r.assign(lr.default.vErrors,null)))}Zt.resetErrorsCount=vG;function kG({gen:r,keyword:e,schemaValue:t,data:n,errsCount:o,it:i}){if(o===void 0)throw new Error("ajv implementation error");let a=r.name("err");r.forRange("i",o,lr.default.errors,s=>{r.const(a,(0,ke._)`${lr.default.vErrors}[${s}]`),r.if((0,ke._)`${a}.instancePath === undefined`,()=>r.assign((0,ke._)`${a}.instancePath`,(0,ke.strConcat)(lr.default.instancePath,i.errorPath))),r.assign((0,ke._)`${a}.schemaPath`,(0,ke.str)`${i.errSchemaPath}/${e}`),i.opts.verbose&&(r.assign((0,ke._)`${a}.schema`,t),r.assign((0,ke._)`${a}.data`,n))})}Zt.extendErrors=kG;function GD(r,e){let t=r.const("err",e);r.if((0,ke._)`${lr.default.vErrors} === null`,()=>r.assign(lr.default.vErrors,(0,ke._)`[${t}]`),(0,ke._)`${lr.default.vErrors}.push(${t})`),r.code((0,ke._)`${lr.default.errors}++`)}function zD(r,e){let{gen:t,validateName:n,schemaEnv:o}=r;o.$async?t.throw((0,ke._)`new ${r.ValidationError}(${e})`):(t.assign((0,ke._)`${n}.errors`,e),t.return(!1))}var ya={keyword:new ke.Name("keyword"),schemaPath:new ke.Name("schemaPath"),params:new ke.Name("params"),propertyName:new ke.Name("propertyName"),message:new ke.Name("message"),schema:new ke.Name("schema"),parentSchema:new ke.Name("parentSchema")};function KD(r,e,t){let{createErrors:n}=r.it;return n===!1?(0,ke._)`{}`:wG(r,e,t)}function wG(r,e,t={}){let{gen:n,it:o}=r,i=[PG(o,t),RG(r,t)];return bG(r,e,i),n.object(...i)}function PG({errorPath:r},{instancePath:e}){let t=e?(0,ke.str)`${r}${(0,Qm.getErrorPath)(e,Qm.Type.Str)}`:r;return[lr.default.instancePath,(0,ke.strConcat)(lr.default.instancePath,t)]}function RG({keyword:r,it:{errSchemaPath:e}},{schemaPath:t,parentSchema:n}){let o=n?e:(0,ke.str)`${e}/${r}`;return t&&(o=(0,ke.str)`${o}${(0,Qm.getErrorPath)(t,Qm.Type.Str)}`),[ya.schemaPath,o]}function bG(r,{params:e,message:t},n){let{keyword:o,data:i,schemaValue:a,it:s}=r,{opts:c,propertyName:l,topSchemaRef:u,schemaPath:p}=s;n.push([ya.keyword,o],[ya.params,typeof e=="function"?e(r):e||(0,ke._)`{}`]),c.messages&&n.push([ya.message,typeof t=="function"?t(r):t]),c.verbose&&n.push([ya.schema,a],[ya.parentSchema,(0,ke._)`${u}${p}`],[lr.default.data,i]),l&&n.push([ya.propertyName,l])}});var QD=T(Qs=>{"use strict";Object.defineProperty(Qs,"__esModule",{value:!0});Qs.boolOrEmptySchema=Qs.topBoolOrEmptySchema=void 0;var EG=Ql(),TG=ue(),MG=Mo(),xG={message:"boolean schema is false"};function IG(r){let{gen:e,schema:t,validateName:n}=r;t===!1?JD(r,!1):typeof t=="object"&&t.$async===!0?e.return(MG.default.data):(e.assign((0,TG._)`${n}.errors`,null),e.return(!0))}Qs.topBoolOrEmptySchema=IG;function _G(r,e){let{gen:t,schema:n}=r;n===!1?(t.var(e,!1),JD(r)):t.var(e,!0)}Qs.boolOrEmptySchema=_G;function JD(r,e){let{gen:t,data:n}=r,o={gen:t,keyword:"false schema",data:n,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:r};(0,EG.reportError)(o,xG,void 0,e)}});var nv=T(Ys=>{"use strict";Object.defineProperty(Ys,"__esModule",{value:!0});Ys.getRules=Ys.isJSONType=void 0;var DG=["string","number","integer","boolean","null","object","array"],FG=new Set(DG);function AG(r){return typeof r=="string"&&FG.has(r)}Ys.isJSONType=AG;function OG(){let r={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...r,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},r.number,r.string,r.array,r.object],post:{rules:[]},all:{},keywords:{}}}Ys.getRules=OG});var ov=T(mi=>{"use strict";Object.defineProperty(mi,"__esModule",{value:!0});mi.shouldUseRule=mi.shouldUseGroup=mi.schemaHasRulesForType=void 0;function LG({schema:r,self:e},t){let n=e.RULES.types[t];return n&&n!==!0&&YD(r,n)}mi.schemaHasRulesForType=LG;function YD(r,e){return e.rules.some(t=>XD(r,t))}mi.shouldUseGroup=YD;function XD(r,e){var t;return r[e.keyword]!==void 0||((t=e.definition.implements)===null||t===void 0?void 0:t.some(n=>r[n]!==void 0))}mi.shouldUseRule=XD});var Yl=T(er=>{"use strict";Object.defineProperty(er,"__esModule",{value:!0});er.reportTypeError=er.checkDataTypes=er.checkDataType=er.coerceAndCheckDataType=er.getJSONTypes=er.getSchemaTypes=er.DataType=void 0;var NG=nv(),WG=ov(),UG=Ql(),se=ue(),ZD=ve(),Xs;(function(r){r[r.Correct=0]="Correct",r[r.Wrong=1]="Wrong"})(Xs||(er.DataType=Xs={}));function $G(r){let e=eF(r.type);if(e.includes("null")){if(r.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!e.length&&r.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');r.nullable===!0&&e.push("null")}return e}er.getSchemaTypes=$G;function eF(r){let e=Array.isArray(r)?r:r?[r]:[];if(e.every(NG.isJSONType))return e;throw new Error("type must be JSONType or JSONType[]: "+e.join(","))}er.getJSONTypes=eF;function jG(r,e){let{gen:t,data:n,opts:o}=r,i=VG(e,o.coerceTypes),a=e.length>0&&!(i.length===0&&e.length===1&&(0,WG.schemaHasRulesForType)(r,e[0]));if(a){let s=av(e,n,o.strictNumbers,Xs.Wrong);t.if(s,()=>{i.length?qG(r,e,i):sv(r)})}return a}er.coerceAndCheckDataType=jG;var tF=new Set(["string","number","integer","boolean","null"]);function VG(r,e){return e?r.filter(t=>tF.has(t)||e==="array"&&t==="array"):[]}function qG(r,e,t){let{gen:n,data:o,opts:i}=r,a=n.let("dataType",(0,se._)`typeof ${o}`),s=n.let("coerced",(0,se._)`undefined`);i.coerceTypes==="array"&&n.if((0,se._)`${a} == 'object' && Array.isArray(${o}) && ${o}.length == 1`,()=>n.assign(o,(0,se._)`${o}[0]`).assign(a,(0,se._)`typeof ${o}`).if(av(e,o,i.strictNumbers),()=>n.assign(s,o))),n.if((0,se._)`${s} !== undefined`);for(let l of t)(tF.has(l)||l==="array"&&i.coerceTypes==="array")&&c(l);n.else(),sv(r),n.endIf(),n.if((0,se._)`${s} !== undefined`,()=>{n.assign(o,s),BG(r,s)});function c(l){switch(l){case"string":n.elseIf((0,se._)`${a} == "number" || ${a} == "boolean"`).assign(s,(0,se._)`"" + ${o}`).elseIf((0,se._)`${o} === null`).assign(s,(0,se._)`""`);return;case"number":n.elseIf((0,se._)`${a} == "boolean" || ${o} === null
|
|
25
|
+
|| (${a} == "string" && ${o} && ${o} == +${o})`).assign(s,(0,se._)`+${o}`);return;case"integer":n.elseIf((0,se._)`${a} === "boolean" || ${o} === null
|
|
26
|
+
|| (${a} === "string" && ${o} && ${o} == +${o} && !(${o} % 1))`).assign(s,(0,se._)`+${o}`);return;case"boolean":n.elseIf((0,se._)`${o} === "false" || ${o} === 0 || ${o} === null`).assign(s,!1).elseIf((0,se._)`${o} === "true" || ${o} === 1`).assign(s,!0);return;case"null":n.elseIf((0,se._)`${o} === "" || ${o} === 0 || ${o} === false`),n.assign(s,null);return;case"array":n.elseIf((0,se._)`${a} === "string" || ${a} === "number"
|
|
27
|
+
|| ${a} === "boolean" || ${o} === null`).assign(s,(0,se._)`[${o}]`)}}}function BG({gen:r,parentData:e,parentDataProperty:t},n){r.if((0,se._)`${e} !== undefined`,()=>r.assign((0,se._)`${e}[${t}]`,n))}function iv(r,e,t,n=Xs.Correct){let o=n===Xs.Correct?se.operators.EQ:se.operators.NEQ,i;switch(r){case"null":return(0,se._)`${e} ${o} null`;case"array":i=(0,se._)`Array.isArray(${e})`;break;case"object":i=(0,se._)`${e} && typeof ${e} == "object" && !Array.isArray(${e})`;break;case"integer":i=a((0,se._)`!(${e} % 1) && !isNaN(${e})`);break;case"number":i=a();break;default:return(0,se._)`typeof ${e} ${o} ${r}`}return n===Xs.Correct?i:(0,se.not)(i);function a(s=se.nil){return(0,se.and)((0,se._)`typeof ${e} == "number"`,s,t?(0,se._)`isFinite(${e})`:se.nil)}}er.checkDataType=iv;function av(r,e,t,n){if(r.length===1)return iv(r[0],e,t,n);let o,i=(0,ZD.toHash)(r);if(i.array&&i.object){let a=(0,se._)`typeof ${e} != "object"`;o=i.null?a:(0,se._)`!${e} || ${a}`,delete i.null,delete i.array,delete i.object}else o=se.nil;i.number&&delete i.integer;for(let a in i)o=(0,se.and)(o,iv(a,e,t,n));return o}er.checkDataTypes=av;var HG={message:({schema:r})=>`must be ${r}`,params:({schema:r,schemaValue:e})=>typeof r=="string"?(0,se._)`{type: ${r}}`:(0,se._)`{type: ${e}}`};function sv(r){let e=GG(r);(0,UG.reportError)(e,HG)}er.reportTypeError=sv;function GG(r){let{gen:e,data:t,schema:n}=r,o=(0,ZD.schemaRefOrVal)(r,n,"type");return{gen:e,keyword:"type",data:t,schema:n.type,schemaCode:o,schemaValue:o,parentSchema:n,params:{},it:r}}});var nF=T(Ym=>{"use strict";Object.defineProperty(Ym,"__esModule",{value:!0});Ym.assignDefaults=void 0;var Zs=ue(),zG=ve();function KG(r,e){let{properties:t,items:n}=r.schema;if(e==="object"&&t)for(let o in t)rF(r,o,t[o].default);else e==="array"&&Array.isArray(n)&&n.forEach((o,i)=>rF(r,i,o.default))}Ym.assignDefaults=KG;function rF(r,e,t){let{gen:n,compositeRule:o,data:i,opts:a}=r;if(t===void 0)return;let s=(0,Zs._)`${i}${(0,Zs.getProperty)(e)}`;if(o){(0,zG.checkStrictMode)(r,`default is ignored for: ${s}`);return}let c=(0,Zs._)`${s} === undefined`;a.useDefaults==="empty"&&(c=(0,Zs._)`${c} || ${s} === null || ${s} === ""`),n.if(c,(0,Zs._)`${s} = ${(0,Zs.stringify)(t)}`)}});var rn=T(Le=>{"use strict";Object.defineProperty(Le,"__esModule",{value:!0});Le.validateUnion=Le.validateArray=Le.usePattern=Le.callValidateCode=Le.schemaProperties=Le.allSchemaProperties=Le.noPropertyInData=Le.propertyInData=Le.isOwnProperty=Le.hasPropFunc=Le.reportMissingProp=Le.checkMissingProp=Le.checkReportMissingProp=void 0;var He=ue(),cv=ve(),fi=Mo(),JG=ve();function QG(r,e){let{gen:t,data:n,it:o}=r;t.if(uv(t,n,e,o.opts.ownProperties),()=>{r.setParams({missingProperty:(0,He._)`${e}`},!0),r.error()})}Le.checkReportMissingProp=QG;function YG({gen:r,data:e,it:{opts:t}},n,o){return(0,He.or)(...n.map(i=>(0,He.and)(uv(r,e,i,t.ownProperties),(0,He._)`${o} = ${i}`)))}Le.checkMissingProp=YG;function XG(r,e){r.setParams({missingProperty:e},!0),r.error()}Le.reportMissingProp=XG;function oF(r){return r.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,He._)`Object.prototype.hasOwnProperty`})}Le.hasPropFunc=oF;function lv(r,e,t){return(0,He._)`${oF(r)}.call(${e}, ${t})`}Le.isOwnProperty=lv;function ZG(r,e,t,n){let o=(0,He._)`${e}${(0,He.getProperty)(t)} !== undefined`;return n?(0,He._)`${o} && ${lv(r,e,t)}`:o}Le.propertyInData=ZG;function uv(r,e,t,n){let o=(0,He._)`${e}${(0,He.getProperty)(t)} === undefined`;return n?(0,He.or)(o,(0,He.not)(lv(r,e,t))):o}Le.noPropertyInData=uv;function iF(r){return r?Object.keys(r).filter(e=>e!=="__proto__"):[]}Le.allSchemaProperties=iF;function ez(r,e){return iF(e).filter(t=>!(0,cv.alwaysValidSchema)(r,e[t]))}Le.schemaProperties=ez;function tz({schemaCode:r,data:e,it:{gen:t,topSchemaRef:n,schemaPath:o,errorPath:i},it:a},s,c,l){let u=l?(0,He._)`${r}, ${e}, ${n}${o}`:e,p=[[fi.default.instancePath,(0,He.strConcat)(fi.default.instancePath,i)],[fi.default.parentData,a.parentData],[fi.default.parentDataProperty,a.parentDataProperty],[fi.default.rootData,fi.default.rootData]];a.opts.dynamicRef&&p.push([fi.default.dynamicAnchors,fi.default.dynamicAnchors]);let g=(0,He._)`${u}, ${t.object(...p)}`;return c!==He.nil?(0,He._)`${s}.call(${c}, ${g})`:(0,He._)`${s}(${g})`}Le.callValidateCode=tz;var rz=(0,He._)`new RegExp`;function nz({gen:r,it:{opts:e}},t){let n=e.unicodeRegExp?"u":"",{regExp:o}=e.code,i=o(t,n);return r.scopeValue("pattern",{key:i.toString(),ref:i,code:(0,He._)`${o.code==="new RegExp"?rz:(0,JG.useFunc)(r,o)}(${t}, ${n})`})}Le.usePattern=nz;function oz(r){let{gen:e,data:t,keyword:n,it:o}=r,i=e.name("valid");if(o.allErrors){let s=e.let("valid",!0);return a(()=>e.assign(s,!1)),s}return e.var(i,!0),a(()=>e.break()),i;function a(s){let c=e.const("len",(0,He._)`${t}.length`);e.forRange("i",0,c,l=>{r.subschema({keyword:n,dataProp:l,dataPropType:cv.Type.Num},i),e.if((0,He.not)(i),s)})}}Le.validateArray=oz;function iz(r){let{gen:e,schema:t,keyword:n,it:o}=r;if(!Array.isArray(t))throw new Error("ajv implementation error");if(t.some(c=>(0,cv.alwaysValidSchema)(o,c))&&!o.opts.unevaluated)return;let a=e.let("valid",!1),s=e.name("_valid");e.block(()=>t.forEach((c,l)=>{let u=r.subschema({keyword:n,schemaProp:l,compositeRule:!0},s);e.assign(a,(0,He._)`${a} || ${s}`),r.mergeValidEvaluated(u,s)||e.if((0,He.not)(a))})),r.result(a,()=>r.reset(),()=>r.error(!0))}Le.validateUnion=iz});var cF=T(Jn=>{"use strict";Object.defineProperty(Jn,"__esModule",{value:!0});Jn.validateKeywordUsage=Jn.validSchemaType=Jn.funcKeywordCode=Jn.macroKeywordCode=void 0;var ur=ue(),Ca=Mo(),az=rn(),sz=Ql();function cz(r,e){let{gen:t,keyword:n,schema:o,parentSchema:i,it:a}=r,s=e.macro.call(a.self,o,i,a),c=sF(t,n,s);a.opts.validateSchema!==!1&&a.self.validateSchema(s,!0);let l=t.name("valid");r.subschema({schema:s,schemaPath:ur.nil,errSchemaPath:`${a.errSchemaPath}/${n}`,topSchemaRef:c,compositeRule:!0},l),r.pass(l,()=>r.error(!0))}Jn.macroKeywordCode=cz;function lz(r,e){var t;let{gen:n,keyword:o,schema:i,parentSchema:a,$data:s,it:c}=r;dz(c,e);let l=!s&&e.compile?e.compile.call(c.self,i,a,c):e.validate,u=sF(n,o,l),p=n.let("valid");r.block$data(p,g),r.ok((t=e.valid)!==null&&t!==void 0?t:p);function g(){if(e.errors===!1)y(),e.modifying&&aF(r),C(()=>r.error());else{let S=e.async?m():f();e.modifying&&aF(r),C(()=>uz(r,S))}}function m(){let S=n.let("ruleErrs",null);return n.try(()=>y((0,ur._)`await `),w=>n.assign(p,!1).if((0,ur._)`${w} instanceof ${c.ValidationError}`,()=>n.assign(S,(0,ur._)`${w}.errors`),()=>n.throw(w))),S}function f(){let S=(0,ur._)`${u}.errors`;return n.assign(S,null),y(ur.nil),S}function y(S=e.async?(0,ur._)`await `:ur.nil){let w=c.opts.passContext?Ca.default.this:Ca.default.self,h=!("compile"in e&&!s||e.schema===!1);n.assign(p,(0,ur._)`${S}${(0,az.callValidateCode)(r,u,w,h)}`,e.modifying)}function C(S){var w;n.if((0,ur.not)((w=e.valid)!==null&&w!==void 0?w:p),S)}}Jn.funcKeywordCode=lz;function aF(r){let{gen:e,data:t,it:n}=r;e.if(n.parentData,()=>e.assign(t,(0,ur._)`${n.parentData}[${n.parentDataProperty}]`))}function uz(r,e){let{gen:t}=r;t.if((0,ur._)`Array.isArray(${e})`,()=>{t.assign(Ca.default.vErrors,(0,ur._)`${Ca.default.vErrors} === null ? ${e} : ${Ca.default.vErrors}.concat(${e})`).assign(Ca.default.errors,(0,ur._)`${Ca.default.vErrors}.length`),(0,sz.extendErrors)(r)},()=>r.error())}function dz({schemaEnv:r},e){if(e.async&&!r.$async)throw new Error("async keyword in sync schema")}function sF(r,e,t){if(t===void 0)throw new Error(`keyword "${e}" failed to compile`);return r.scopeValue("keyword",typeof t=="function"?{ref:t}:{ref:t,code:(0,ur.stringify)(t)})}function pz(r,e,t=!1){return!e.length||e.some(n=>n==="array"?Array.isArray(r):n==="object"?r&&typeof r=="object"&&!Array.isArray(r):typeof r==n||t&&typeof r>"u")}Jn.validSchemaType=pz;function mz({schema:r,opts:e,self:t,errSchemaPath:n},o,i){if(Array.isArray(o.keyword)?!o.keyword.includes(i):o.keyword!==i)throw new Error("ajv implementation error");let a=o.dependencies;if(a?.some(s=>!Object.prototype.hasOwnProperty.call(r,s)))throw new Error(`parent schema must have dependencies of ${i}: ${a.join(",")}`);if(o.validateSchema&&!o.validateSchema(r[i])){let c=`keyword "${i}" value is invalid at path "${n}": `+t.errorsText(o.validateSchema.errors);if(e.validateSchema==="log")t.logger.error(c);else throw new Error(c)}}Jn.validateKeywordUsage=mz});var uF=T(hi=>{"use strict";Object.defineProperty(hi,"__esModule",{value:!0});hi.extendSubschemaMode=hi.extendSubschemaData=hi.getSubschema=void 0;var Qn=ue(),lF=ve();function fz(r,{keyword:e,schemaProp:t,schema:n,schemaPath:o,errSchemaPath:i,topSchemaRef:a}){if(e!==void 0&&n!==void 0)throw new Error('both "keyword" and "schema" passed, only one allowed');if(e!==void 0){let s=r.schema[e];return t===void 0?{schema:s,schemaPath:(0,Qn._)`${r.schemaPath}${(0,Qn.getProperty)(e)}`,errSchemaPath:`${r.errSchemaPath}/${e}`}:{schema:s[t],schemaPath:(0,Qn._)`${r.schemaPath}${(0,Qn.getProperty)(e)}${(0,Qn.getProperty)(t)}`,errSchemaPath:`${r.errSchemaPath}/${e}/${(0,lF.escapeFragment)(t)}`}}if(n!==void 0){if(o===void 0||i===void 0||a===void 0)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:n,schemaPath:o,topSchemaRef:a,errSchemaPath:i}}throw new Error('either "keyword" or "schema" must be passed')}hi.getSubschema=fz;function hz(r,e,{dataProp:t,dataPropType:n,data:o,dataTypes:i,propertyName:a}){if(o!==void 0&&t!==void 0)throw new Error('both "data" and "dataProp" passed, only one allowed');let{gen:s}=e;if(t!==void 0){let{errorPath:l,dataPathArr:u,opts:p}=e,g=s.let("data",(0,Qn._)`${e.data}${(0,Qn.getProperty)(t)}`,!0);c(g),r.errorPath=(0,Qn.str)`${l}${(0,lF.getErrorPath)(t,n,p.jsPropertySyntax)}`,r.parentDataProperty=(0,Qn._)`${t}`,r.dataPathArr=[...u,r.parentDataProperty]}if(o!==void 0){let l=o instanceof Qn.Name?o:s.let("data",o,!0);c(l),a!==void 0&&(r.propertyName=a)}i&&(r.dataTypes=i);function c(l){r.data=l,r.dataLevel=e.dataLevel+1,r.dataTypes=[],e.definedProperties=new Set,r.parentData=e.data,r.dataNames=[...e.dataNames,l]}}hi.extendSubschemaData=hz;function gz(r,{jtdDiscriminator:e,jtdMetadata:t,compositeRule:n,createErrors:o,allErrors:i}){n!==void 0&&(r.compositeRule=n),o!==void 0&&(r.createErrors=o),i!==void 0&&(r.allErrors=i),r.jtdDiscriminator=e,r.jtdMetadata=t}hi.extendSubschemaMode=gz});var dv=T((Hve,dF)=>{"use strict";dF.exports=function r(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var n,o,i;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(o=n;o--!==0;)if(!r(e[o],t[o]))return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(o=n;o--!==0;)if(!Object.prototype.hasOwnProperty.call(t,i[o]))return!1;for(o=n;o--!==0;){var a=i[o];if(!r(e[a],t[a]))return!1}return!0}return e!==e&&t!==t}});var mF=T((Gve,pF)=>{"use strict";var gi=pF.exports=function(r,e,t){typeof e=="function"&&(t=e,e={}),t=e.cb||t;var n=typeof t=="function"?t:t.pre||function(){},o=t.post||function(){};Xm(e,n,o,r,"",r)};gi.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};gi.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};gi.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};gi.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function Xm(r,e,t,n,o,i,a,s,c,l){if(n&&typeof n=="object"&&!Array.isArray(n)){e(n,o,i,a,s,c,l);for(var u in n){var p=n[u];if(Array.isArray(p)){if(u in gi.arrayKeywords)for(var g=0;g<p.length;g++)Xm(r,e,t,p[g],o+"/"+u+"/"+g,i,o,u,n,g)}else if(u in gi.propsKeywords){if(p&&typeof p=="object")for(var m in p)Xm(r,e,t,p[m],o+"/"+u+"/"+yz(m),i,o,u,n,m)}else(u in gi.keywords||r.allKeys&&!(u in gi.skipKeywords))&&Xm(r,e,t,p,o+"/"+u,i,o,u,n)}t(n,o,i,a,s,c,l)}}function yz(r){return r.replace(/~/g,"~0").replace(/\//g,"~1")}});var Xl=T(Rr=>{"use strict";Object.defineProperty(Rr,"__esModule",{value:!0});Rr.getSchemaRefs=Rr.resolveUrl=Rr.normalizeId=Rr._getFullPath=Rr.getFullPath=Rr.inlineRef=void 0;var Cz=ve(),Sz=dv(),vz=mF(),kz=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function wz(r,e=!0){return typeof r=="boolean"?!0:e===!0?!pv(r):e?fF(r)<=e:!1}Rr.inlineRef=wz;var Pz=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function pv(r){for(let e in r){if(Pz.has(e))return!0;let t=r[e];if(Array.isArray(t)&&t.some(pv)||typeof t=="object"&&pv(t))return!0}return!1}function fF(r){let e=0;for(let t in r){if(t==="$ref")return 1/0;if(e++,!kz.has(t)&&(typeof r[t]=="object"&&(0,Cz.eachItem)(r[t],n=>e+=fF(n)),e===1/0))return 1/0}return e}function hF(r,e="",t){t!==!1&&(e=ec(e));let n=r.parse(e);return gF(r,n)}Rr.getFullPath=hF;function gF(r,e){return r.serialize(e).split("#")[0]+"#"}Rr._getFullPath=gF;var Rz=/#\/?$/;function ec(r){return r?r.replace(Rz,""):""}Rr.normalizeId=ec;function bz(r,e,t){return t=ec(t),r.resolve(e,t)}Rr.resolveUrl=bz;var Ez=/^[a-z_][-a-z0-9._]*$/i;function Tz(r,e){if(typeof r=="boolean")return{};let{schemaId:t,uriResolver:n}=this.opts,o=ec(r[t]||e),i={"":o},a=hF(n,o,!1),s={},c=new Set;return vz(r,{allKeys:!0},(p,g,m,f)=>{if(f===void 0)return;let y=a+g,C=i[f];typeof p[t]=="string"&&(C=S.call(this,p[t])),w.call(this,p.$anchor),w.call(this,p.$dynamicAnchor),i[g]=C;function S(h){let k=this.opts.uriResolver.resolve;if(h=ec(C?k(C,h):h),c.has(h))throw u(h);c.add(h);let v=this.refs[h];return typeof v=="string"&&(v=this.refs[v]),typeof v=="object"?l(p,v.schema,h):h!==ec(y)&&(h[0]==="#"?(l(p,s[h],h),s[h]=p):this.refs[h]=y),h}function w(h){if(typeof h=="string"){if(!Ez.test(h))throw new Error(`invalid anchor "${h}"`);S.call(this,`#${h}`)}}}),s;function l(p,g,m){if(g!==void 0&&!Sz(p,g))throw u(m)}function u(p){return new Error(`reference "${p}" resolves to more than one schema`)}}Rr.getSchemaRefs=Tz});var tu=T(yi=>{"use strict";Object.defineProperty(yi,"__esModule",{value:!0});yi.getData=yi.KeywordCxt=yi.validateFunctionCode=void 0;var kF=QD(),yF=Yl(),fv=ov(),Zm=Yl(),Mz=nF(),eu=cF(),mv=uF(),J=ue(),ne=Mo(),xz=Xl(),xo=ve(),Zl=Ql();function Iz(r){if(RF(r)&&(bF(r),PF(r))){Fz(r);return}wF(r,()=>(0,kF.topBoolOrEmptySchema)(r))}yi.validateFunctionCode=Iz;function wF({gen:r,validateName:e,schema:t,schemaEnv:n,opts:o},i){o.code.es5?r.func(e,(0,J._)`${ne.default.data}, ${ne.default.valCxt}`,n.$async,()=>{r.code((0,J._)`"use strict"; ${CF(t,o)}`),Dz(r,o),r.code(i)}):r.func(e,(0,J._)`${ne.default.data}, ${_z(o)}`,n.$async,()=>r.code(CF(t,o)).code(i))}function _z(r){return(0,J._)`{${ne.default.instancePath}="", ${ne.default.parentData}, ${ne.default.parentDataProperty}, ${ne.default.rootData}=${ne.default.data}${r.dynamicRef?(0,J._)`, ${ne.default.dynamicAnchors}={}`:J.nil}}={}`}function Dz(r,e){r.if(ne.default.valCxt,()=>{r.var(ne.default.instancePath,(0,J._)`${ne.default.valCxt}.${ne.default.instancePath}`),r.var(ne.default.parentData,(0,J._)`${ne.default.valCxt}.${ne.default.parentData}`),r.var(ne.default.parentDataProperty,(0,J._)`${ne.default.valCxt}.${ne.default.parentDataProperty}`),r.var(ne.default.rootData,(0,J._)`${ne.default.valCxt}.${ne.default.rootData}`),e.dynamicRef&&r.var(ne.default.dynamicAnchors,(0,J._)`${ne.default.valCxt}.${ne.default.dynamicAnchors}`)},()=>{r.var(ne.default.instancePath,(0,J._)`""`),r.var(ne.default.parentData,(0,J._)`undefined`),r.var(ne.default.parentDataProperty,(0,J._)`undefined`),r.var(ne.default.rootData,ne.default.data),e.dynamicRef&&r.var(ne.default.dynamicAnchors,(0,J._)`{}`)})}function Fz(r){let{schema:e,opts:t,gen:n}=r;wF(r,()=>{t.$comment&&e.$comment&&TF(r),Wz(r),n.let(ne.default.vErrors,null),n.let(ne.default.errors,0),t.unevaluated&&Az(r),EF(r),jz(r)})}function Az(r){let{gen:e,validateName:t}=r;r.evaluated=e.const("evaluated",(0,J._)`${t}.evaluated`),e.if((0,J._)`${r.evaluated}.dynamicProps`,()=>e.assign((0,J._)`${r.evaluated}.props`,(0,J._)`undefined`)),e.if((0,J._)`${r.evaluated}.dynamicItems`,()=>e.assign((0,J._)`${r.evaluated}.items`,(0,J._)`undefined`))}function CF(r,e){let t=typeof r=="object"&&r[e.schemaId];return t&&(e.code.source||e.code.process)?(0,J._)`/*# sourceURL=${t} */`:J.nil}function Oz(r,e){if(RF(r)&&(bF(r),PF(r))){Lz(r,e);return}(0,kF.boolOrEmptySchema)(r,e)}function PF({schema:r,self:e}){if(typeof r=="boolean")return!r;for(let t in r)if(e.RULES.all[t])return!0;return!1}function RF(r){return typeof r.schema!="boolean"}function Lz(r,e){let{schema:t,gen:n,opts:o}=r;o.$comment&&t.$comment&&TF(r),Uz(r),$z(r);let i=n.const("_errs",ne.default.errors);EF(r,i),n.var(e,(0,J._)`${i} === ${ne.default.errors}`)}function bF(r){(0,xo.checkUnknownRules)(r),Nz(r)}function EF(r,e){if(r.opts.jtd)return SF(r,[],!1,e);let t=(0,yF.getSchemaTypes)(r.schema),n=(0,yF.coerceAndCheckDataType)(r,t);SF(r,t,!n,e)}function Nz(r){let{schema:e,errSchemaPath:t,opts:n,self:o}=r;e.$ref&&n.ignoreKeywordsWithRef&&(0,xo.schemaHasRulesButRef)(e,o.RULES)&&o.logger.warn(`$ref: keywords ignored in schema at path "${t}"`)}function Wz(r){let{schema:e,opts:t}=r;e.default!==void 0&&t.useDefaults&&t.strictSchema&&(0,xo.checkStrictMode)(r,"default is ignored in the schema root")}function Uz(r){let e=r.schema[r.opts.schemaId];e&&(r.baseId=(0,xz.resolveUrl)(r.opts.uriResolver,r.baseId,e))}function $z(r){if(r.schema.$async&&!r.schemaEnv.$async)throw new Error("async schema in sync schema")}function TF({gen:r,schemaEnv:e,schema:t,errSchemaPath:n,opts:o}){let i=t.$comment;if(o.$comment===!0)r.code((0,J._)`${ne.default.self}.logger.log(${i})`);else if(typeof o.$comment=="function"){let a=(0,J.str)`${n}/$comment`,s=r.scopeValue("root",{ref:e.root});r.code((0,J._)`${ne.default.self}.opts.$comment(${i}, ${a}, ${s}.schema)`)}}function jz(r){let{gen:e,schemaEnv:t,validateName:n,ValidationError:o,opts:i}=r;t.$async?e.if((0,J._)`${ne.default.errors} === 0`,()=>e.return(ne.default.data),()=>e.throw((0,J._)`new ${o}(${ne.default.vErrors})`)):(e.assign((0,J._)`${n}.errors`,ne.default.vErrors),i.unevaluated&&Vz(r),e.return((0,J._)`${ne.default.errors} === 0`))}function Vz({gen:r,evaluated:e,props:t,items:n}){t instanceof J.Name&&r.assign((0,J._)`${e}.props`,t),n instanceof J.Name&&r.assign((0,J._)`${e}.items`,n)}function SF(r,e,t,n){let{gen:o,schema:i,data:a,allErrors:s,opts:c,self:l}=r,{RULES:u}=l;if(i.$ref&&(c.ignoreKeywordsWithRef||!(0,xo.schemaHasRulesButRef)(i,u))){o.block(()=>xF(r,"$ref",u.all.$ref.definition));return}c.jtd||qz(r,e),o.block(()=>{for(let g of u.rules)p(g);p(u.post)});function p(g){(0,fv.shouldUseGroup)(i,g)&&(g.type?(o.if((0,Zm.checkDataType)(g.type,a,c.strictNumbers)),vF(r,g),e.length===1&&e[0]===g.type&&t&&(o.else(),(0,Zm.reportTypeError)(r)),o.endIf()):vF(r,g),s||o.if((0,J._)`${ne.default.errors} === ${n||0}`))}}function vF(r,e){let{gen:t,schema:n,opts:{useDefaults:o}}=r;o&&(0,Mz.assignDefaults)(r,e.type),t.block(()=>{for(let i of e.rules)(0,fv.shouldUseRule)(n,i)&&xF(r,i.keyword,i.definition,e.type)})}function qz(r,e){r.schemaEnv.meta||!r.opts.strictTypes||(Bz(r,e),r.opts.allowUnionTypes||Hz(r,e),Gz(r,r.dataTypes))}function Bz(r,e){if(e.length){if(!r.dataTypes.length){r.dataTypes=e;return}e.forEach(t=>{MF(r.dataTypes,t)||hv(r,`type "${t}" not allowed by context "${r.dataTypes.join(",")}"`)}),Kz(r,e)}}function Hz(r,e){e.length>1&&!(e.length===2&&e.includes("null"))&&hv(r,"use allowUnionTypes to allow union type keyword")}function Gz(r,e){let t=r.self.RULES.all;for(let n in t){let o=t[n];if(typeof o=="object"&&(0,fv.shouldUseRule)(r.schema,o)){let{type:i}=o.definition;i.length&&!i.some(a=>zz(e,a))&&hv(r,`missing type "${i.join(",")}" for keyword "${n}"`)}}}function zz(r,e){return r.includes(e)||e==="number"&&r.includes("integer")}function MF(r,e){return r.includes(e)||e==="integer"&&r.includes("number")}function Kz(r,e){let t=[];for(let n of r.dataTypes)MF(e,n)?t.push(n):e.includes("integer")&&n==="number"&&t.push("integer");r.dataTypes=t}function hv(r,e){let t=r.schemaEnv.baseId+r.errSchemaPath;e+=` at "${t}" (strictTypes)`,(0,xo.checkStrictMode)(r,e,r.opts.strictTypes)}var ef=class{constructor(e,t,n){if((0,eu.validateKeywordUsage)(e,t,n),this.gen=e.gen,this.allErrors=e.allErrors,this.keyword=n,this.data=e.data,this.schema=e.schema[n],this.$data=t.$data&&e.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,xo.schemaRefOrVal)(e,this.schema,n,this.$data),this.schemaType=t.schemaType,this.parentSchema=e.schema,this.params={},this.it=e,this.def=t,this.$data)this.schemaCode=e.gen.const("vSchema",IF(this.$data,e));else if(this.schemaCode=this.schemaValue,!(0,eu.validSchemaType)(this.schema,t.schemaType,t.allowUndefined))throw new Error(`${n} value must be ${JSON.stringify(t.schemaType)}`);("code"in t?t.trackErrors:t.errors!==!1)&&(this.errsCount=e.gen.const("_errs",ne.default.errors))}result(e,t,n){this.failResult((0,J.not)(e),t,n)}failResult(e,t,n){this.gen.if(e),n?n():this.error(),t?(this.gen.else(),t(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(e,t){this.failResult((0,J.not)(e),void 0,t)}fail(e){if(e===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if(e),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(e){if(!this.$data)return this.fail(e);let{schemaCode:t}=this;this.fail((0,J._)`${t} !== undefined && (${(0,J.or)(this.invalid$data(),e)})`)}error(e,t,n){if(t){this.setParams(t),this._error(e,n),this.setParams({});return}this._error(e,n)}_error(e,t){(e?Zl.reportExtraError:Zl.reportError)(this,this.def.error,t)}$dataError(){(0,Zl.reportError)(this,this.def.$dataError||Zl.keyword$DataError)}reset(){if(this.errsCount===void 0)throw new Error('add "trackErrors" to keyword definition');(0,Zl.resetErrorsCount)(this.gen,this.errsCount)}ok(e){this.allErrors||this.gen.if(e)}setParams(e,t){t?Object.assign(this.params,e):this.params=e}block$data(e,t,n=J.nil){this.gen.block(()=>{this.check$data(e,n),t()})}check$data(e=J.nil,t=J.nil){if(!this.$data)return;let{gen:n,schemaCode:o,schemaType:i,def:a}=this;n.if((0,J.or)((0,J._)`${o} === undefined`,t)),e!==J.nil&&n.assign(e,!0),(i.length||a.validateSchema)&&(n.elseIf(this.invalid$data()),this.$dataError(),e!==J.nil&&n.assign(e,!1)),n.else()}invalid$data(){let{gen:e,schemaCode:t,schemaType:n,def:o,it:i}=this;return(0,J.or)(a(),s());function a(){if(n.length){if(!(t instanceof J.Name))throw new Error("ajv implementation error");let c=Array.isArray(n)?n:[n];return(0,J._)`${(0,Zm.checkDataTypes)(c,t,i.opts.strictNumbers,Zm.DataType.Wrong)}`}return J.nil}function s(){if(o.validateSchema){let c=e.scopeValue("validate$data",{ref:o.validateSchema});return(0,J._)`!${c}(${t})`}return J.nil}}subschema(e,t){let n=(0,mv.getSubschema)(this.it,e);(0,mv.extendSubschemaData)(n,this.it,e),(0,mv.extendSubschemaMode)(n,e);let o={...this.it,...n,items:void 0,props:void 0};return Oz(o,t),o}mergeEvaluated(e,t){let{it:n,gen:o}=this;n.opts.unevaluated&&(n.props!==!0&&e.props!==void 0&&(n.props=xo.mergeEvaluated.props(o,e.props,n.props,t)),n.items!==!0&&e.items!==void 0&&(n.items=xo.mergeEvaluated.items(o,e.items,n.items,t)))}mergeValidEvaluated(e,t){let{it:n,gen:o}=this;if(n.opts.unevaluated&&(n.props!==!0||n.items!==!0))return o.if(t,()=>this.mergeEvaluated(e,J.Name)),!0}};yi.KeywordCxt=ef;function xF(r,e,t,n){let o=new ef(r,t,e);"code"in t?t.code(o,n):o.$data&&t.validate?(0,eu.funcKeywordCode)(o,t):"macro"in t?(0,eu.macroKeywordCode)(o,t):(t.compile||t.validate)&&(0,eu.funcKeywordCode)(o,t)}var Jz=/^\/(?:[^~]|~0|~1)*$/,Qz=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function IF(r,{dataLevel:e,dataNames:t,dataPathArr:n}){let o,i;if(r==="")return ne.default.rootData;if(r[0]==="/"){if(!Jz.test(r))throw new Error(`Invalid JSON-pointer: ${r}`);o=r,i=ne.default.rootData}else{let l=Qz.exec(r);if(!l)throw new Error(`Invalid JSON-pointer: ${r}`);let u=+l[1];if(o=l[2],o==="#"){if(u>=e)throw new Error(c("property/index",u));return n[e-u]}if(u>e)throw new Error(c("data",u));if(i=t[e-u],!o)return i}let a=i,s=o.split("/");for(let l of s)l&&(i=(0,J._)`${i}${(0,J.getProperty)((0,xo.unescapeJsonPointer)(l))}`,a=(0,J._)`${a} && ${i}`);return a;function c(l,u){return`Cannot access ${l} ${u} levels up, current level is ${e}`}}yi.getData=IF});var tf=T(yv=>{"use strict";Object.defineProperty(yv,"__esModule",{value:!0});var gv=class extends Error{constructor(e){super("validation failed"),this.errors=e,this.ajv=this.validation=!0}};yv.default=gv});var ru=T(vv=>{"use strict";Object.defineProperty(vv,"__esModule",{value:!0});var Cv=Xl(),Sv=class extends Error{constructor(e,t,n,o){super(o||`can't resolve reference ${n} from id ${t}`),this.missingRef=(0,Cv.resolveUrl)(e,t,n),this.missingSchema=(0,Cv.normalizeId)((0,Cv.getFullPath)(e,this.missingRef))}};vv.default=Sv});var nf=T(nn=>{"use strict";Object.defineProperty(nn,"__esModule",{value:!0});nn.resolveSchema=nn.getCompilingSchema=nn.resolveRef=nn.compileSchema=nn.SchemaEnv=void 0;var In=ue(),Yz=tf(),Sa=Mo(),_n=Xl(),_F=ve(),Xz=tu(),tc=class{constructor(e){var t;this.refs={},this.dynamicAnchors={};let n;typeof e.schema=="object"&&(n=e.schema),this.schema=e.schema,this.schemaId=e.schemaId,this.root=e.root||this,this.baseId=(t=e.baseId)!==null&&t!==void 0?t:(0,_n.normalizeId)(n?.[e.schemaId||"$id"]),this.schemaPath=e.schemaPath,this.localRefs=e.localRefs,this.meta=e.meta,this.$async=n?.$async,this.refs={}}};nn.SchemaEnv=tc;function wv(r){let e=DF.call(this,r);if(e)return e;let t=(0,_n.getFullPath)(this.opts.uriResolver,r.root.baseId),{es5:n,lines:o}=this.opts.code,{ownProperties:i}=this.opts,a=new In.CodeGen(this.scope,{es5:n,lines:o,ownProperties:i}),s;r.$async&&(s=a.scopeValue("Error",{ref:Yz.default,code:(0,In._)`require("ajv/dist/runtime/validation_error").default`}));let c=a.scopeName("validate");r.validateName=c;let l={gen:a,allErrors:this.opts.allErrors,data:Sa.default.data,parentData:Sa.default.parentData,parentDataProperty:Sa.default.parentDataProperty,dataNames:[Sa.default.data],dataPathArr:[In.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:a.scopeValue("schema",this.opts.code.source===!0?{ref:r.schema,code:(0,In.stringify)(r.schema)}:{ref:r.schema}),validateName:c,ValidationError:s,schema:r.schema,schemaEnv:r,rootId:t,baseId:r.baseId||t,schemaPath:In.nil,errSchemaPath:r.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,In._)`""`,opts:this.opts,self:this},u;try{this._compilations.add(r),(0,Xz.validateFunctionCode)(l),a.optimize(this.opts.code.optimize);let p=a.toString();u=`${a.scopeRefs(Sa.default.scope)}return ${p}`,this.opts.code.process&&(u=this.opts.code.process(u,r));let m=new Function(`${Sa.default.self}`,`${Sa.default.scope}`,u)(this,this.scope.get());if(this.scope.value(c,{ref:m}),m.errors=null,m.schema=r.schema,m.schemaEnv=r,r.$async&&(m.$async=!0),this.opts.code.source===!0&&(m.source={validateName:c,validateCode:p,scopeValues:a._values}),this.opts.unevaluated){let{props:f,items:y}=l;m.evaluated={props:f instanceof In.Name?void 0:f,items:y instanceof In.Name?void 0:y,dynamicProps:f instanceof In.Name,dynamicItems:y instanceof In.Name},m.source&&(m.source.evaluated=(0,In.stringify)(m.evaluated))}return r.validate=m,r}catch(p){throw delete r.validate,delete r.validateName,u&&this.logger.error("Error compiling schema, function code:",u),p}finally{this._compilations.delete(r)}}nn.compileSchema=wv;function Zz(r,e,t){var n;t=(0,_n.resolveUrl)(this.opts.uriResolver,e,t);let o=r.refs[t];if(o)return o;let i=rK.call(this,r,t);if(i===void 0){let a=(n=r.localRefs)===null||n===void 0?void 0:n[t],{schemaId:s}=this.opts;a&&(i=new tc({schema:a,schemaId:s,root:r,baseId:e}))}if(i!==void 0)return r.refs[t]=eK.call(this,i)}nn.resolveRef=Zz;function eK(r){return(0,_n.inlineRef)(r.schema,this.opts.inlineRefs)?r.schema:r.validate?r:wv.call(this,r)}function DF(r){for(let e of this._compilations)if(tK(e,r))return e}nn.getCompilingSchema=DF;function tK(r,e){return r.schema===e.schema&&r.root===e.root&&r.baseId===e.baseId}function rK(r,e){let t;for(;typeof(t=this.refs[e])=="string";)e=t;return t||this.schemas[e]||rf.call(this,r,e)}function rf(r,e){let t=this.opts.uriResolver.parse(e),n=(0,_n._getFullPath)(this.opts.uriResolver,t),o=(0,_n.getFullPath)(this.opts.uriResolver,r.baseId,void 0);if(Object.keys(r.schema).length>0&&n===o)return kv.call(this,t,r);let i=(0,_n.normalizeId)(n),a=this.refs[i]||this.schemas[i];if(typeof a=="string"){let s=rf.call(this,r,a);return typeof s?.schema!="object"?void 0:kv.call(this,t,s)}if(typeof a?.schema=="object"){if(a.validate||wv.call(this,a),i===(0,_n.normalizeId)(e)){let{schema:s}=a,{schemaId:c}=this.opts,l=s[c];return l&&(o=(0,_n.resolveUrl)(this.opts.uriResolver,o,l)),new tc({schema:s,schemaId:c,root:r,baseId:o})}return kv.call(this,t,a)}}nn.resolveSchema=rf;var nK=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function kv(r,{baseId:e,schema:t,root:n}){var o;if(((o=r.fragment)===null||o===void 0?void 0:o[0])!=="/")return;for(let s of r.fragment.slice(1).split("/")){if(typeof t=="boolean")return;let c=t[(0,_F.unescapeFragment)(s)];if(c===void 0)return;t=c;let l=typeof t=="object"&&t[this.opts.schemaId];!nK.has(s)&&l&&(e=(0,_n.resolveUrl)(this.opts.uriResolver,e,l))}let i;if(typeof t!="boolean"&&t.$ref&&!(0,_F.schemaHasRulesButRef)(t,this.RULES)){let s=(0,_n.resolveUrl)(this.opts.uriResolver,e,t.$ref);i=rf.call(this,n,s)}let{schemaId:a}=this.opts;if(i=i||new tc({schema:t,schemaId:a,root:n,baseId:e}),i.schema!==i.root.schema)return i}});var FF=T((Xve,oK)=>{oK.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var bv=T((Zve,UF)=>{"use strict";var iK=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),OF=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u),Pv=RegExp.prototype.test.bind(/^[\da-f]{2}$/iu),LF=RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu),aK=RegExp.prototype.test.bind(/^[\da-z\-._~!$&'()*+,;=:@/]$/iu);function Rv(r){let e="",t=0,n=0;for(n=0;n<r.length;n++)if(t=r[n].charCodeAt(0),t!==48){if(!(t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102))return"";e+=r[n];break}for(n+=1;n<r.length;n++){if(t=r[n].charCodeAt(0),!(t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102))return"";e+=r[n]}return e}var sK=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function AF(r){return r.length=0,!0}function cK(r,e,t){if(r.length){let n=Rv(r);if(n!=="")e.push(n);else return t.error=!0,!1;r.length=0}return!0}function lK(r){let e=0,t={error:!1,address:"",zone:""},n=[],o=[],i=!1,a=!1,s=cK;for(let c=0;c<r.length;c++){let l=r[c];if(!(l==="["||l==="]"))if(l===":"){if(i===!0&&(a=!0),!s(o,n,t))break;if(++e>7){t.error=!0;break}c>0&&r[c-1]===":"&&(i=!0),n.push(":");continue}else if(l==="%"){if(!s(o,n,t))break;s=AF}else{o.push(l);continue}}return o.length&&(s===AF?t.zone=o.join(""):a?n.push(o.join("")):n.push(Rv(o))),t.address=n.join(""),t}function NF(r){if(uK(r,":")<2)return{host:r,isIPV6:!1};let e=lK(r);if(e.error)return{host:r,isIPV6:!1};{let t=e.address,n=e.address;return e.zone&&(t+="%"+e.zone,n+="%25"+e.zone),{host:t,isIPV6:!0,escapedHost:n}}}function uK(r,e){let t=0;for(let n=0;n<r.length;n++)r[n]===e&&t++;return t}function dK(r){let e=r,t=[],n=-1,o=0;for(;o=e.length;){if(o===1){if(e===".")break;if(e==="/"){t.push("/");break}else{t.push(e);break}}else if(o===2){if(e[0]==="."){if(e[1]===".")break;if(e[1]==="/"){e=e.slice(2);continue}}else if(e[0]==="/"&&(e[1]==="."||e[1]==="/")){t.push("/");break}}else if(o===3&&e==="/.."){t.length!==0&&t.pop(),t.push("/");break}if(e[0]==="."){if(e[1]==="."){if(e[2]==="/"){e=e.slice(3);continue}}else if(e[1]==="/"){e=e.slice(2);continue}}else if(e[0]==="/"&&e[1]==="."){if(e[2]==="/"){e=e.slice(2);continue}else if(e[2]==="."&&e[3]==="/"){e=e.slice(3),t.length!==0&&t.pop();continue}}if((n=e.indexOf("/",1))===-1){t.push(e);break}else t.push(e.slice(0,n)),e=e.slice(n)}return t.join("")}var pK={"@":"%40","/":"%2F","?":"%3F","#":"%23",":":"%3A"},mK=/[@/?#:]/g,fK=/[@/?#]/g;function WF(r,e){let t=e?fK:mK;return t.lastIndex=0,r.replace(t,n=>pK[n])}function hK(r,e=!1){if(r.indexOf("%")===-1)return r;let t="";for(let n=0;n<r.length;n++){if(r[n]==="%"&&n+2<r.length){let o=r.slice(n+1,n+3);if(Pv(o)){let i=o.toUpperCase(),a=String.fromCharCode(parseInt(i,16));e&&LF(a)?t+=a:t+="%"+i,n+=2;continue}}t+=r[n]}return t}function gK(r){let e="";for(let t=0;t<r.length;t++){if(r[t]==="%"&&t+2<r.length){let n=r.slice(t+1,t+3);if(Pv(n)){let o=n.toUpperCase(),i=String.fromCharCode(parseInt(o,16));i!=="."&&LF(i)?e+=i:e+="%"+o,t+=2;continue}}aK(r[t])?e+=r[t]:e+=escape(r[t])}return e}function yK(r){let e="";for(let t=0;t<r.length;t++){if(r[t]==="%"&&t+2<r.length){let n=r.slice(t+1,t+3);if(Pv(n)){e+="%"+n.toUpperCase(),t+=2;continue}}e+=escape(r[t])}return e}function CK(r){let e=[];if(r.userinfo!==void 0&&(e.push(r.userinfo),e.push("@")),r.host!==void 0){let t=unescape(r.host);if(!OF(t)){let n=NF(t);n.isIPV6===!0?t=`[${n.escapedHost}]`:t=WF(t,!1)}e.push(t)}return(typeof r.port=="number"||typeof r.port=="string")&&(e.push(":"),e.push(String(r.port))),e.length?e.join(""):void 0}UF.exports={nonSimpleDomain:sK,recomposeAuthority:CK,reescapeHostDelimiters:WF,normalizePercentEncoding:hK,normalizePathEncoding:gK,escapePreservingEscapes:yK,removeDotSegments:dK,isIPv4:OF,isUUID:iK,normalizeIPv6:NF,stringArrayToHexStripped:Rv}});var BF=T((eke,qF)=>{"use strict";var{isUUID:SK}=bv(),vK=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu,kK=["http","https","ws","wss","urn","urn:uuid"];function wK(r){return kK.indexOf(r)!==-1}function Ev(r){return r.secure===!0?!0:r.secure===!1?!1:r.scheme?r.scheme.length===3&&(r.scheme[0]==="w"||r.scheme[0]==="W")&&(r.scheme[1]==="s"||r.scheme[1]==="S")&&(r.scheme[2]==="s"||r.scheme[2]==="S"):!1}function $F(r){return r.host||(r.error=r.error||"HTTP URIs must have a host."),r}function jF(r){let e=String(r.scheme).toLowerCase()==="https";return(r.port===(e?443:80)||r.port==="")&&(r.port=void 0),r.path||(r.path="/"),r}function PK(r){return r.secure=Ev(r),r.resourceName=(r.path||"/")+(r.query?"?"+r.query:""),r.path=void 0,r.query=void 0,r}function RK(r){if((r.port===(Ev(r)?443:80)||r.port==="")&&(r.port=void 0),typeof r.secure=="boolean"&&(r.scheme=r.secure?"wss":"ws",r.secure=void 0),r.resourceName){let[e,t]=r.resourceName.split("?");r.path=e&&e!=="/"?e:void 0,r.query=t,r.resourceName=void 0}return r.fragment=void 0,r}function bK(r,e){if(!r.path)return r.error="URN can not be parsed",r;let t=r.path.match(vK);if(t){let n=e.scheme||r.scheme||"urn";r.nid=t[1].toLowerCase(),r.nss=t[2];let o=`${n}:${e.nid||r.nid}`,i=Tv(o);r.path=void 0,i&&(r=i.parse(r,e))}else r.error=r.error||"URN can not be parsed.";return r}function EK(r,e){if(r.nid===void 0)throw new Error("URN without nid cannot be serialized");let t=e.scheme||r.scheme||"urn",n=r.nid.toLowerCase(),o=`${t}:${e.nid||n}`,i=Tv(o);i&&(r=i.serialize(r,e));let a=r,s=r.nss;return a.path=`${n||e.nid}:${s}`,e.skipEscape=!0,a}function TK(r,e){let t=r;return t.uuid=t.nss,t.nss=void 0,!e.tolerant&&(!t.uuid||!SK(t.uuid))&&(t.error=t.error||"UUID is not valid."),t}function MK(r){let e=r;return e.nss=(r.uuid||"").toLowerCase(),e}var VF={scheme:"http",domainHost:!0,parse:$F,serialize:jF},xK={scheme:"https",domainHost:VF.domainHost,parse:$F,serialize:jF},of={scheme:"ws",domainHost:!0,parse:PK,serialize:RK},IK={scheme:"wss",domainHost:of.domainHost,parse:of.parse,serialize:of.serialize},_K={scheme:"urn",parse:bK,serialize:EK,skipNormalize:!0},DK={scheme:"urn:uuid",parse:TK,serialize:MK,skipNormalize:!0},af={http:VF,https:xK,ws:of,wss:IK,urn:_K,"urn:uuid":DK};Object.setPrototypeOf(af,null);function Tv(r){return r&&(af[r]||af[r.toLowerCase()])||void 0}qF.exports={wsIsSecure:Ev,SCHEMES:af,isValidSchemeName:wK,getSchemeHandler:Tv}});var QF=T((tke,sf)=>{"use strict";var{normalizeIPv6:FK,removeDotSegments:nu,recomposeAuthority:AK,normalizePercentEncoding:OK,normalizePathEncoding:LK,escapePreservingEscapes:NK,reescapeHostDelimiters:WK,isIPv4:UK,nonSimpleDomain:$K}=bv(),{SCHEMES:jK,getSchemeHandler:GF}=BF();function VK(r,e){return typeof r=="string"?r=zK(r,e):typeof r=="object"&&(r=rc(va(r,e),e)),r}function qK(r,e,t){let n=t?Object.assign({scheme:"null"},t):{scheme:"null"},o=zF(rc(r,n),rc(e,n),n,!0);return n.skipEscape=!0,va(o,n)}function zF(r,e,t,n){let o={};return n||(r=rc(va(r,t),t),e=rc(va(e,t),t)),t=t||{},!t.tolerant&&e.scheme?(o.scheme=e.scheme,o.userinfo=e.userinfo,o.host=e.host,o.port=e.port,o.path=nu(e.path||""),o.query=e.query):(e.userinfo!==void 0||e.host!==void 0||e.port!==void 0?(o.userinfo=e.userinfo,o.host=e.host,o.port=e.port,o.path=nu(e.path||""),o.query=e.query):(e.path?(e.path[0]==="/"?o.path=nu(e.path):((r.userinfo!==void 0||r.host!==void 0||r.port!==void 0)&&!r.path?o.path="/"+e.path:r.path?o.path=r.path.slice(0,r.path.lastIndexOf("/")+1)+e.path:o.path=e.path,o.path=nu(o.path)),o.query=e.query):(o.path=r.path,e.query!==void 0?o.query=e.query:o.query=r.query),o.userinfo=r.userinfo,o.host=r.host,o.port=r.port),o.scheme=r.scheme),o.fragment=e.fragment,o}function BK(r,e,t){let n=HF(r,t),o=HF(e,t);return n!==void 0&&o!==void 0&&n.toLowerCase()===o.toLowerCase()}function va(r,e){let t={host:r.host,scheme:r.scheme,userinfo:r.userinfo,port:r.port,path:r.path,query:r.query,nid:r.nid,nss:r.nss,uuid:r.uuid,fragment:r.fragment,reference:r.reference,resourceName:r.resourceName,secure:r.secure,error:""},n=Object.assign({},e),o=[],i=GF(n.scheme||t.scheme);i&&i.serialize&&i.serialize(t,n),t.path!==void 0&&(n.skipEscape?t.path=OK(t.path):(t.path=NK(t.path),t.scheme!==void 0&&(t.path=t.path.split("%3A").join(":")))),n.reference!=="suffix"&&t.scheme&&o.push(t.scheme,":");let a=AK(t);if(a!==void 0&&(n.reference!=="suffix"&&o.push("//"),o.push(a),t.path&&t.path[0]!=="/"&&o.push("/")),t.path!==void 0){let s=t.path;!n.absolutePath&&(!i||!i.absolutePath)&&(s=nu(s)),a===void 0&&s[0]==="/"&&s[1]==="/"&&(s="/%2F"+s.slice(2)),o.push(s)}return t.query!==void 0&&o.push("?",t.query),t.fragment!==void 0&&o.push("#",t.fragment),o.join("")}var HK=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;function GK(r,e){if(e[2]!==void 0&&r.path&&r.path[0]!=="/")return'URI path must start with "/" when authority is present.';if(typeof r.port=="number"&&(r.port<0||r.port>65535))return"URI port is malformed."}function KF(r,e){let t=Object.assign({},e),n={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},o=!1,i=!1;t.reference==="suffix"&&(t.scheme?r=t.scheme+":"+r:r="//"+r);let a=r.match(HK);if(a){n.scheme=a[1],n.userinfo=a[3],n.host=a[4],n.port=parseInt(a[5],10),n.path=a[6]||"",n.query=a[7],n.fragment=a[8],isNaN(n.port)&&(n.port=a[5]);let s=GK(n,a);if(s!==void 0&&(n.error=n.error||s,o=!0),n.host)if(UK(n.host)===!1){let u=FK(n.host);n.host=u.host.toLowerCase(),i=u.isIPV6}else i=!0;n.scheme===void 0&&n.userinfo===void 0&&n.host===void 0&&n.port===void 0&&n.query===void 0&&!n.path?n.reference="same-document":n.scheme===void 0?n.reference="relative":n.fragment===void 0?n.reference="absolute":n.reference="uri",t.reference&&t.reference!=="suffix"&&t.reference!==n.reference&&(n.error=n.error||"URI is not a "+t.reference+" reference.");let c=GF(t.scheme||n.scheme);if(!t.unicodeSupport&&(!c||!c.unicodeSupport)&&n.host&&(t.domainHost||c&&c.domainHost)&&i===!1&&$K(n.host))try{n.host=new URL("http://"+n.host).hostname}catch(l){n.error=n.error||"Host's domain name can not be converted to ASCII: "+l}if((!c||c&&!c.skipNormalize)&&(r.indexOf("%")!==-1&&(n.scheme!==void 0&&(n.scheme=unescape(n.scheme)),n.host!==void 0&&(n.host=WK(unescape(n.host),i))),n.path&&(n.path=LK(n.path)),n.fragment))try{n.fragment=encodeURI(decodeURIComponent(n.fragment))}catch{n.error=n.error||"URI malformed"}c&&c.parse&&c.parse(n,t)}else n.error=n.error||"URI can not be parsed.";return{parsed:n,malformedAuthorityOrPort:o}}function rc(r,e){return KF(r,e).parsed}function zK(r,e){return JF(r,e).normalized}function JF(r,e){let{parsed:t,malformedAuthorityOrPort:n}=KF(r,e);return{normalized:n?r:va(t,e),malformedAuthorityOrPort:n}}function HF(r,e){if(typeof r=="string"){let{normalized:t,malformedAuthorityOrPort:n}=JF(r,e);return n?void 0:t}if(typeof r=="object")return va(r,e)}var Mv={SCHEMES:jK,normalize:VK,resolve:qK,resolveComponent:zF,equal:BK,serialize:va,parse:rc};sf.exports=Mv;sf.exports.default=Mv;sf.exports.fastUri=Mv});var XF=T(xv=>{"use strict";Object.defineProperty(xv,"__esModule",{value:!0});var YF=QF();YF.code='require("ajv/dist/runtime/uri").default';xv.default=YF});var aA=T(Wt=>{"use strict";Object.defineProperty(Wt,"__esModule",{value:!0});Wt.CodeGen=Wt.Name=Wt.nil=Wt.stringify=Wt.str=Wt._=Wt.KeywordCxt=void 0;var KK=tu();Object.defineProperty(Wt,"KeywordCxt",{enumerable:!0,get:function(){return KK.KeywordCxt}});var nc=ue();Object.defineProperty(Wt,"_",{enumerable:!0,get:function(){return nc._}});Object.defineProperty(Wt,"str",{enumerable:!0,get:function(){return nc.str}});Object.defineProperty(Wt,"stringify",{enumerable:!0,get:function(){return nc.stringify}});Object.defineProperty(Wt,"nil",{enumerable:!0,get:function(){return nc.nil}});Object.defineProperty(Wt,"Name",{enumerable:!0,get:function(){return nc.Name}});Object.defineProperty(Wt,"CodeGen",{enumerable:!0,get:function(){return nc.CodeGen}});var JK=tf(),nA=ru(),QK=nv(),ou=nf(),YK=ue(),iu=Xl(),cf=Yl(),_v=ve(),ZF=FF(),XK=XF(),oA=(r,e)=>new RegExp(r,e);oA.code="new RegExp";var ZK=["removeAdditional","useDefaults","coerceTypes"],eJ=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),tJ={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},rJ={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},eA=200;function nJ(r){var e,t,n,o,i,a,s,c,l,u,p,g,m,f,y,C,S,w,h,k,v,b,R,Q,x;let H=r.strict,j=(e=r.code)===null||e===void 0?void 0:e.optimize,oe=j===!0||j===void 0?1:j||0,B=(n=(t=r.code)===null||t===void 0?void 0:t.regExp)!==null&&n!==void 0?n:oA,G=(o=r.uriResolver)!==null&&o!==void 0?o:XK.default;return{strictSchema:(a=(i=r.strictSchema)!==null&&i!==void 0?i:H)!==null&&a!==void 0?a:!0,strictNumbers:(c=(s=r.strictNumbers)!==null&&s!==void 0?s:H)!==null&&c!==void 0?c:!0,strictTypes:(u=(l=r.strictTypes)!==null&&l!==void 0?l:H)!==null&&u!==void 0?u:"log",strictTuples:(g=(p=r.strictTuples)!==null&&p!==void 0?p:H)!==null&&g!==void 0?g:"log",strictRequired:(f=(m=r.strictRequired)!==null&&m!==void 0?m:H)!==null&&f!==void 0?f:!1,code:r.code?{...r.code,optimize:oe,regExp:B}:{optimize:oe,regExp:B},loopRequired:(y=r.loopRequired)!==null&&y!==void 0?y:eA,loopEnum:(C=r.loopEnum)!==null&&C!==void 0?C:eA,meta:(S=r.meta)!==null&&S!==void 0?S:!0,messages:(w=r.messages)!==null&&w!==void 0?w:!0,inlineRefs:(h=r.inlineRefs)!==null&&h!==void 0?h:!0,schemaId:(k=r.schemaId)!==null&&k!==void 0?k:"$id",addUsedSchema:(v=r.addUsedSchema)!==null&&v!==void 0?v:!0,validateSchema:(b=r.validateSchema)!==null&&b!==void 0?b:!0,validateFormats:(R=r.validateFormats)!==null&&R!==void 0?R:!0,unicodeRegExp:(Q=r.unicodeRegExp)!==null&&Q!==void 0?Q:!0,int32range:(x=r.int32range)!==null&&x!==void 0?x:!0,uriResolver:G}}var au=class{constructor(e={}){this.schemas={},this.refs={},this.formats=Object.create(null),this._compilations=new Set,this._loading={},this._cache=new Map,e=this.opts={...e,...nJ(e)};let{es5:t,lines:n}=this.opts.code;this.scope=new YK.ValueScope({scope:{},prefixes:eJ,es5:t,lines:n}),this.logger=lJ(e.logger);let o=e.validateFormats;e.validateFormats=!1,this.RULES=(0,QK.getRules)(),tA.call(this,tJ,e,"NOT SUPPORTED"),tA.call(this,rJ,e,"DEPRECATED","warn"),this._metaOpts=sJ.call(this),e.formats&&iJ.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),e.keywords&&aJ.call(this,e.keywords),typeof e.meta=="object"&&this.addMetaSchema(e.meta),oJ.call(this),e.validateFormats=o}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:e,meta:t,schemaId:n}=this.opts,o=ZF;n==="id"&&(o={...ZF},o.id=o.$id,delete o.$id),t&&e&&this.addMetaSchema(o,o[n],!1)}defaultMeta(){let{meta:e,schemaId:t}=this.opts;return this.opts.defaultMeta=typeof e=="object"?e[t]||e:void 0}validate(e,t){let n;if(typeof e=="string"){if(n=this.getSchema(e),!n)throw new Error(`no schema with key or ref "${e}"`)}else n=this.compile(e);let o=n(t);return"$async"in n||(this.errors=n.errors),o}compile(e,t){let n=this._addSchema(e,t);return n.validate||this._compileSchemaEnv(n)}compileAsync(e,t){if(typeof this.opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");let{loadSchema:n}=this.opts;return o.call(this,e,t);async function o(u,p){await i.call(this,u.$schema);let g=this._addSchema(u,p);return g.validate||a.call(this,g)}async function i(u){u&&!this.getSchema(u)&&await o.call(this,{$ref:u},!0)}async function a(u){try{return this._compileSchemaEnv(u)}catch(p){if(!(p instanceof nA.default))throw p;return s.call(this,p),await c.call(this,p.missingSchema),a.call(this,u)}}function s({missingSchema:u,missingRef:p}){if(this.refs[u])throw new Error(`AnySchema ${u} is loaded but ${p} cannot be resolved`)}async function c(u){let p=await l.call(this,u);this.refs[u]||await i.call(this,p.$schema),this.refs[u]||this.addSchema(p,u,t)}async function l(u){let p=this._loading[u];if(p)return p;try{return await(this._loading[u]=n(u))}finally{delete this._loading[u]}}}addSchema(e,t,n,o=this.opts.validateSchema){if(Array.isArray(e)){for(let a of e)this.addSchema(a,void 0,n,o);return this}let i;if(typeof e=="object"){let{schemaId:a}=this.opts;if(i=e[a],i!==void 0&&typeof i!="string")throw new Error(`schema ${a} must be string`)}return t=(0,iu.normalizeId)(t||i),this._checkUnique(t),this.schemas[t]=this._addSchema(e,n,t,o,!0),this}addMetaSchema(e,t,n=this.opts.validateSchema){return this.addSchema(e,t,!0,n),this}validateSchema(e,t){if(typeof e=="boolean")return!0;let n;if(n=e.$schema,n!==void 0&&typeof n!="string")throw new Error("$schema must be a string");if(n=n||this.opts.defaultMeta||this.defaultMeta(),!n)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let o=this.validate(n,e);if(!o&&t){let i="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(i);else throw new Error(i)}return o}getSchema(e){let t;for(;typeof(t=rA.call(this,e))=="string";)e=t;if(t===void 0){let{schemaId:n}=this.opts,o=new ou.SchemaEnv({schema:{},schemaId:n});if(t=ou.resolveSchema.call(this,o,e),!t)return;this.refs[e]=t}return t.validate||this._compileSchemaEnv(t)}removeSchema(e){if(e instanceof RegExp)return this._removeAllSchemas(this.schemas,e),this._removeAllSchemas(this.refs,e),this;switch(typeof e){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let t=rA.call(this,e);return typeof t=="object"&&this._cache.delete(t.schema),delete this.schemas[e],delete this.refs[e],this}case"object":{let t=e;this._cache.delete(t);let n=e[this.opts.schemaId];return n&&(n=(0,iu.normalizeId)(n),delete this.schemas[n],delete this.refs[n]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(e){for(let t of e)this.addKeyword(t);return this}addKeyword(e,t){let n;if(typeof e=="string")n=e,typeof t=="object"&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),t.keyword=n);else if(typeof e=="object"&&t===void 0){if(t=e,n=t.keyword,Array.isArray(n)&&!n.length)throw new Error("addKeywords: keyword must be string or non-empty array")}else throw new Error("invalid addKeywords parameters");if(dJ.call(this,n,t),!t)return(0,_v.eachItem)(n,i=>Iv.call(this,i)),this;mJ.call(this,t);let o={...t,type:(0,cf.getJSONTypes)(t.type),schemaType:(0,cf.getJSONTypes)(t.schemaType)};return(0,_v.eachItem)(n,o.type.length===0?i=>Iv.call(this,i,o):i=>o.type.forEach(a=>Iv.call(this,i,o,a))),this}getKeyword(e){let t=this.RULES.all[e];return typeof t=="object"?t.definition:!!t}removeKeyword(e){let{RULES:t}=this;delete t.keywords[e],delete t.all[e];for(let n of t.rules){let o=n.rules.findIndex(i=>i.keyword===e);o>=0&&n.rules.splice(o,1)}return this}addFormat(e,t){return typeof t=="string"&&(t=new RegExp(t)),this.formats[e]=t,this}errorsText(e=this.errors,{separator:t=", ",dataVar:n="data"}={}){return!e||e.length===0?"No errors":e.map(o=>`${n}${o.instancePath} ${o.message}`).reduce((o,i)=>o+t+i)}$dataMetaSchema(e,t){let n=this.RULES.all;e=JSON.parse(JSON.stringify(e));for(let o of t){let i=o.split("/").slice(1),a=e;for(let s of i)a=a[s];for(let s in n){let c=n[s];if(typeof c!="object")continue;let{$data:l}=c.definition,u=a[s];l&&u&&(a[s]=iA(u))}}return e}_removeAllSchemas(e,t){for(let n in e){let o=e[n];(!t||t.test(n))&&(typeof o=="string"?delete e[n]:o&&!o.meta&&(this._cache.delete(o.schema),delete e[n]))}}_addSchema(e,t,n,o=this.opts.validateSchema,i=this.opts.addUsedSchema){let a,{schemaId:s}=this.opts;if(typeof e=="object")a=e[s];else{if(this.opts.jtd)throw new Error("schema must be object");if(typeof e!="boolean")throw new Error("schema must be object or boolean")}let c=this._cache.get(e);if(c!==void 0)return c;n=(0,iu.normalizeId)(a||n);let l=iu.getSchemaRefs.call(this,e,n);return c=new ou.SchemaEnv({schema:e,schemaId:s,meta:t,baseId:n,localRefs:l}),this._cache.set(c.schema,c),i&&!n.startsWith("#")&&(n&&this._checkUnique(n),this.refs[n]=c),o&&this.validateSchema(e,!0),c}_checkUnique(e){if(this.schemas[e]||this.refs[e])throw new Error(`schema with key or id "${e}" already exists`)}_compileSchemaEnv(e){if(e.meta?this._compileMetaSchema(e):ou.compileSchema.call(this,e),!e.validate)throw new Error("ajv implementation error");return e.validate}_compileMetaSchema(e){let t=this.opts;this.opts=this._metaOpts;try{ou.compileSchema.call(this,e)}finally{this.opts=t}}};au.ValidationError=JK.default;au.MissingRefError=nA.default;Wt.default=au;function tA(r,e,t,n="error"){for(let o in r){let i=o;i in e&&this.logger[n](`${t}: option ${o}. ${r[i]}`)}}function rA(r){return r=(0,iu.normalizeId)(r),this.schemas[r]||this.refs[r]}function oJ(){let r=this.opts.schemas;if(r)if(Array.isArray(r))this.addSchema(r);else for(let e in r)this.addSchema(r[e],e)}function iJ(){for(let r in this.opts.formats){let e=this.opts.formats[r];e&&this.addFormat(r,e)}}function aJ(r){if(Array.isArray(r)){this.addVocabulary(r);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let e in r){let t=r[e];t.keyword||(t.keyword=e),this.addKeyword(t)}}function sJ(){let r={...this.opts};for(let e of ZK)delete r[e];return r}var cJ={log(){},warn(){},error(){}};function lJ(r){if(r===!1)return cJ;if(r===void 0)return console;if(r.log&&r.warn&&r.error)return r;throw new Error("logger must implement log, warn and error methods")}var uJ=/^[a-z_$][a-z0-9_$:-]*$/i;function dJ(r,e){let{RULES:t}=this;if((0,_v.eachItem)(r,n=>{if(t.keywords[n])throw new Error(`Keyword ${n} is already defined`);if(!uJ.test(n))throw new Error(`Keyword ${n} has invalid name`)}),!!e&&e.$data&&!("code"in e||"validate"in e))throw new Error('$data keyword must have "code" or "validate" function')}function Iv(r,e,t){var n;let o=e?.post;if(t&&o)throw new Error('keyword with "post" flag cannot have "type"');let{RULES:i}=this,a=o?i.post:i.rules.find(({type:c})=>c===t);if(a||(a={type:t,rules:[]},i.rules.push(a)),i.keywords[r]=!0,!e)return;let s={keyword:r,definition:{...e,type:(0,cf.getJSONTypes)(e.type),schemaType:(0,cf.getJSONTypes)(e.schemaType)}};e.before?pJ.call(this,a,s,e.before):a.rules.push(s),i.all[r]=s,(n=e.implements)===null||n===void 0||n.forEach(c=>this.addKeyword(c))}function pJ(r,e,t){let n=r.rules.findIndex(o=>o.keyword===t);n>=0?r.rules.splice(n,0,e):(r.rules.push(e),this.logger.warn(`rule ${t} is not defined`))}function mJ(r){let{metaSchema:e}=r;e!==void 0&&(r.$data&&this.opts.$data&&(e=iA(e)),r.validateSchema=this.compile(e,!0))}var fJ={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function iA(r){return{anyOf:[r,fJ]}}});var sA=T(Dv=>{"use strict";Object.defineProperty(Dv,"__esModule",{value:!0});var hJ={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};Dv.default=hJ});var dA=T(ka=>{"use strict";Object.defineProperty(ka,"__esModule",{value:!0});ka.callRef=ka.getValidate=void 0;var gJ=ru(),cA=rn(),br=ue(),oc=Mo(),lA=nf(),lf=ve(),yJ={keyword:"$ref",schemaType:"string",code(r){let{gen:e,schema:t,it:n}=r,{baseId:o,schemaEnv:i,validateName:a,opts:s,self:c}=n,{root:l}=i;if((t==="#"||t==="#/")&&o===l.baseId)return p();let u=lA.resolveRef.call(c,l,o,t);if(u===void 0)throw new gJ.default(n.opts.uriResolver,o,t);if(u instanceof lA.SchemaEnv)return g(u);return m(u);function p(){if(i===l)return uf(r,a,i,i.$async);let f=e.scopeValue("root",{ref:l});return uf(r,(0,br._)`${f}.validate`,l,l.$async)}function g(f){let y=uA(r,f);uf(r,y,f,f.$async)}function m(f){let y=e.scopeValue("schema",s.code.source===!0?{ref:f,code:(0,br.stringify)(f)}:{ref:f}),C=e.name("valid"),S=r.subschema({schema:f,dataTypes:[],schemaPath:br.nil,topSchemaRef:y,errSchemaPath:t},C);r.mergeEvaluated(S),r.ok(C)}}};function uA(r,e){let{gen:t}=r;return e.validate?t.scopeValue("validate",{ref:e.validate}):(0,br._)`${t.scopeValue("wrapper",{ref:e})}.validate`}ka.getValidate=uA;function uf(r,e,t,n){let{gen:o,it:i}=r,{allErrors:a,schemaEnv:s,opts:c}=i,l=c.passContext?oc.default.this:br.nil;n?u():p();function u(){if(!s.$async)throw new Error("async schema referenced by sync schema");let f=o.let("valid");o.try(()=>{o.code((0,br._)`await ${(0,cA.callValidateCode)(r,e,l)}`),m(e),a||o.assign(f,!0)},y=>{o.if((0,br._)`!(${y} instanceof ${i.ValidationError})`,()=>o.throw(y)),g(y),a||o.assign(f,!1)}),r.ok(f)}function p(){r.result((0,cA.callValidateCode)(r,e,l),()=>m(e),()=>g(e))}function g(f){let y=(0,br._)`${f}.errors`;o.assign(oc.default.vErrors,(0,br._)`${oc.default.vErrors} === null ? ${y} : ${oc.default.vErrors}.concat(${y})`),o.assign(oc.default.errors,(0,br._)`${oc.default.vErrors}.length`)}function m(f){var y;if(!i.opts.unevaluated)return;let C=(y=t?.validate)===null||y===void 0?void 0:y.evaluated;if(i.props!==!0)if(C&&!C.dynamicProps)C.props!==void 0&&(i.props=lf.mergeEvaluated.props(o,C.props,i.props));else{let S=o.var("props",(0,br._)`${f}.evaluated.props`);i.props=lf.mergeEvaluated.props(o,S,i.props,br.Name)}if(i.items!==!0)if(C&&!C.dynamicItems)C.items!==void 0&&(i.items=lf.mergeEvaluated.items(o,C.items,i.items));else{let S=o.var("items",(0,br._)`${f}.evaluated.items`);i.items=lf.mergeEvaluated.items(o,S,i.items,br.Name)}}}ka.callRef=uf;ka.default=yJ});var pA=T(Fv=>{"use strict";Object.defineProperty(Fv,"__esModule",{value:!0});var CJ=sA(),SJ=dA(),vJ=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",CJ.default,SJ.default];Fv.default=vJ});var mA=T(Av=>{"use strict";Object.defineProperty(Av,"__esModule",{value:!0});var df=ue(),Ci=df.operators,pf={maximum:{okStr:"<=",ok:Ci.LTE,fail:Ci.GT},minimum:{okStr:">=",ok:Ci.GTE,fail:Ci.LT},exclusiveMaximum:{okStr:"<",ok:Ci.LT,fail:Ci.GTE},exclusiveMinimum:{okStr:">",ok:Ci.GT,fail:Ci.LTE}},kJ={message:({keyword:r,schemaCode:e})=>(0,df.str)`must be ${pf[r].okStr} ${e}`,params:({keyword:r,schemaCode:e})=>(0,df._)`{comparison: ${pf[r].okStr}, limit: ${e}}`},wJ={keyword:Object.keys(pf),type:"number",schemaType:"number",$data:!0,error:kJ,code(r){let{keyword:e,data:t,schemaCode:n}=r;r.fail$data((0,df._)`${t} ${pf[e].fail} ${n} || isNaN(${t})`)}};Av.default=wJ});var fA=T(Ov=>{"use strict";Object.defineProperty(Ov,"__esModule",{value:!0});var su=ue(),PJ={message:({schemaCode:r})=>(0,su.str)`must be multiple of ${r}`,params:({schemaCode:r})=>(0,su._)`{multipleOf: ${r}}`},RJ={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:PJ,code(r){let{gen:e,data:t,schemaCode:n,it:o}=r,i=o.opts.multipleOfPrecision,a=e.let("res"),s=i?(0,su._)`Math.abs(Math.round(${a}) - ${a}) > 1e-${i}`:(0,su._)`${a} !== parseInt(${a})`;r.fail$data((0,su._)`(${n} === 0 || (${a} = ${t}/${n}, ${s}))`)}};Ov.default=RJ});var gA=T(Lv=>{"use strict";Object.defineProperty(Lv,"__esModule",{value:!0});function hA(r){let e=r.length,t=0,n=0,o;for(;n<e;)t++,o=r.charCodeAt(n++),o>=55296&&o<=56319&&n<e&&(o=r.charCodeAt(n),(o&64512)===56320&&n++);return t}Lv.default=hA;hA.code='require("ajv/dist/runtime/ucs2length").default'});var yA=T(Nv=>{"use strict";Object.defineProperty(Nv,"__esModule",{value:!0});var wa=ue(),bJ=ve(),EJ=gA(),TJ={message({keyword:r,schemaCode:e}){let t=r==="maxLength"?"more":"fewer";return(0,wa.str)`must NOT have ${t} than ${e} characters`},params:({schemaCode:r})=>(0,wa._)`{limit: ${r}}`},MJ={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:TJ,code(r){let{keyword:e,data:t,schemaCode:n,it:o}=r,i=e==="maxLength"?wa.operators.GT:wa.operators.LT,a=o.opts.unicode===!1?(0,wa._)`${t}.length`:(0,wa._)`${(0,bJ.useFunc)(r.gen,EJ.default)}(${t})`;r.fail$data((0,wa._)`${a} ${i} ${n}`)}};Nv.default=MJ});var CA=T(Wv=>{"use strict";Object.defineProperty(Wv,"__esModule",{value:!0});var xJ=rn(),IJ=ve(),ic=ue(),_J={message:({schemaCode:r})=>(0,ic.str)`must match pattern "${r}"`,params:({schemaCode:r})=>(0,ic._)`{pattern: ${r}}`},DJ={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:_J,code(r){let{gen:e,data:t,$data:n,schema:o,schemaCode:i,it:a}=r,s=a.opts.unicodeRegExp?"u":"";if(n){let{regExp:c}=a.opts.code,l=c.code==="new RegExp"?(0,ic._)`new RegExp`:(0,IJ.useFunc)(e,c),u=e.let("valid");e.try(()=>e.assign(u,(0,ic._)`${l}(${i}, ${s}).test(${t})`),()=>e.assign(u,!1)),r.fail$data((0,ic._)`!${u}`)}else{let c=(0,xJ.usePattern)(r,o);r.fail$data((0,ic._)`!${c}.test(${t})`)}}};Wv.default=DJ});var SA=T(Uv=>{"use strict";Object.defineProperty(Uv,"__esModule",{value:!0});var cu=ue(),FJ={message({keyword:r,schemaCode:e}){let t=r==="maxProperties"?"more":"fewer";return(0,cu.str)`must NOT have ${t} than ${e} properties`},params:({schemaCode:r})=>(0,cu._)`{limit: ${r}}`},AJ={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:FJ,code(r){let{keyword:e,data:t,schemaCode:n}=r,o=e==="maxProperties"?cu.operators.GT:cu.operators.LT;r.fail$data((0,cu._)`Object.keys(${t}).length ${o} ${n}`)}};Uv.default=AJ});var vA=T($v=>{"use strict";Object.defineProperty($v,"__esModule",{value:!0});var lu=rn(),uu=ue(),OJ=ve(),LJ={message:({params:{missingProperty:r}})=>(0,uu.str)`must have required property '${r}'`,params:({params:{missingProperty:r}})=>(0,uu._)`{missingProperty: ${r}}`},NJ={keyword:"required",type:"object",schemaType:"array",$data:!0,error:LJ,code(r){let{gen:e,schema:t,schemaCode:n,data:o,$data:i,it:a}=r,{opts:s}=a;if(!i&&t.length===0)return;let c=t.length>=s.loopRequired;if(a.allErrors?l():u(),s.strictRequired){let m=r.parentSchema.properties,{definedProperties:f}=r.it;for(let y of t)if(m?.[y]===void 0&&!f.has(y)){let C=a.schemaEnv.baseId+a.errSchemaPath,S=`required property "${y}" is not defined at "${C}" (strictRequired)`;(0,OJ.checkStrictMode)(a,S,a.opts.strictRequired)}}function l(){if(c||i)r.block$data(uu.nil,p);else for(let m of t)(0,lu.checkReportMissingProp)(r,m)}function u(){let m=e.let("missing");if(c||i){let f=e.let("valid",!0);r.block$data(f,()=>g(m,f)),r.ok(f)}else e.if((0,lu.checkMissingProp)(r,t,m)),(0,lu.reportMissingProp)(r,m),e.else()}function p(){e.forOf("prop",n,m=>{r.setParams({missingProperty:m}),e.if((0,lu.noPropertyInData)(e,o,m,s.ownProperties),()=>r.error())})}function g(m,f){r.setParams({missingProperty:m}),e.forOf(m,n,()=>{e.assign(f,(0,lu.propertyInData)(e,o,m,s.ownProperties)),e.if((0,uu.not)(f),()=>{r.error(),e.break()})},uu.nil)}}};$v.default=NJ});var kA=T(jv=>{"use strict";Object.defineProperty(jv,"__esModule",{value:!0});var du=ue(),WJ={message({keyword:r,schemaCode:e}){let t=r==="maxItems"?"more":"fewer";return(0,du.str)`must NOT have ${t} than ${e} items`},params:({schemaCode:r})=>(0,du._)`{limit: ${r}}`},UJ={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:WJ,code(r){let{keyword:e,data:t,schemaCode:n}=r,o=e==="maxItems"?du.operators.GT:du.operators.LT;r.fail$data((0,du._)`${t}.length ${o} ${n}`)}};jv.default=UJ});var mf=T(Vv=>{"use strict";Object.defineProperty(Vv,"__esModule",{value:!0});var wA=dv();wA.code='require("ajv/dist/runtime/equal").default';Vv.default=wA});var PA=T(Bv=>{"use strict";Object.defineProperty(Bv,"__esModule",{value:!0});var qv=Yl(),Ut=ue(),$J=ve(),jJ=mf(),VJ={message:({params:{i:r,j:e}})=>(0,Ut.str)`must NOT have duplicate items (items ## ${e} and ${r} are identical)`,params:({params:{i:r,j:e}})=>(0,Ut._)`{i: ${r}, j: ${e}}`},qJ={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:VJ,code(r){let{gen:e,data:t,$data:n,schema:o,parentSchema:i,schemaCode:a,it:s}=r;if(!n&&!o)return;let c=e.let("valid"),l=i.items?(0,qv.getSchemaTypes)(i.items):[];r.block$data(c,u,(0,Ut._)`${a} === false`),r.ok(c);function u(){let f=e.let("i",(0,Ut._)`${t}.length`),y=e.let("j");r.setParams({i:f,j:y}),e.assign(c,!0),e.if((0,Ut._)`${f} > 1`,()=>(p()?g:m)(f,y))}function p(){return l.length>0&&!l.some(f=>f==="object"||f==="array")}function g(f,y){let C=e.name("item"),S=(0,qv.checkDataTypes)(l,C,s.opts.strictNumbers,qv.DataType.Wrong),w=e.const("indices",(0,Ut._)`{}`);e.for((0,Ut._)`;${f}--;`,()=>{e.let(C,(0,Ut._)`${t}[${f}]`),e.if(S,(0,Ut._)`continue`),l.length>1&&e.if((0,Ut._)`typeof ${C} == "string"`,(0,Ut._)`${C} += "_"`),e.if((0,Ut._)`typeof ${w}[${C}] == "number"`,()=>{e.assign(y,(0,Ut._)`${w}[${C}]`),r.error(),e.assign(c,!1).break()}).code((0,Ut._)`${w}[${C}] = ${f}`)})}function m(f,y){let C=(0,$J.useFunc)(e,jJ.default),S=e.name("outer");e.label(S).for((0,Ut._)`;${f}--;`,()=>e.for((0,Ut._)`${y} = ${f}; ${y}--;`,()=>e.if((0,Ut._)`${C}(${t}[${f}], ${t}[${y}])`,()=>{r.error(),e.assign(c,!1).break(S)})))}}};Bv.default=qJ});var RA=T(Gv=>{"use strict";Object.defineProperty(Gv,"__esModule",{value:!0});var Hv=ue(),BJ=ve(),HJ=mf(),GJ={message:"must be equal to constant",params:({schemaCode:r})=>(0,Hv._)`{allowedValue: ${r}}`},zJ={keyword:"const",$data:!0,error:GJ,code(r){let{gen:e,data:t,$data:n,schemaCode:o,schema:i}=r;n||i&&typeof i=="object"?r.fail$data((0,Hv._)`!${(0,BJ.useFunc)(e,HJ.default)}(${t}, ${o})`):r.fail((0,Hv._)`${i} !== ${t}`)}};Gv.default=zJ});var bA=T(zv=>{"use strict";Object.defineProperty(zv,"__esModule",{value:!0});var pu=ue(),KJ=ve(),JJ=mf(),QJ={message:"must be equal to one of the allowed values",params:({schemaCode:r})=>(0,pu._)`{allowedValues: ${r}}`},YJ={keyword:"enum",schemaType:"array",$data:!0,error:QJ,code(r){let{gen:e,data:t,$data:n,schema:o,schemaCode:i,it:a}=r;if(!n&&o.length===0)throw new Error("enum must have non-empty array");let s=o.length>=a.opts.loopEnum,c,l=()=>c??(c=(0,KJ.useFunc)(e,JJ.default)),u;if(s||n)u=e.let("valid"),r.block$data(u,p);else{if(!Array.isArray(o))throw new Error("ajv implementation error");let m=e.const("vSchema",i);u=(0,pu.or)(...o.map((f,y)=>g(m,y)))}r.pass(u);function p(){e.assign(u,!1),e.forOf("v",i,m=>e.if((0,pu._)`${l()}(${t}, ${m})`,()=>e.assign(u,!0).break()))}function g(m,f){let y=o[f];return typeof y=="object"&&y!==null?(0,pu._)`${l()}(${t}, ${m}[${f}])`:(0,pu._)`${t} === ${y}`}}};zv.default=YJ});var EA=T(Kv=>{"use strict";Object.defineProperty(Kv,"__esModule",{value:!0});var XJ=mA(),ZJ=fA(),e6=yA(),t6=CA(),r6=SA(),n6=vA(),o6=kA(),i6=PA(),a6=RA(),s6=bA(),c6=[XJ.default,ZJ.default,e6.default,t6.default,r6.default,n6.default,o6.default,i6.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},a6.default,s6.default];Kv.default=c6});var Qv=T(mu=>{"use strict";Object.defineProperty(mu,"__esModule",{value:!0});mu.validateAdditionalItems=void 0;var Pa=ue(),Jv=ve(),l6={message:({params:{len:r}})=>(0,Pa.str)`must NOT have more than ${r} items`,params:({params:{len:r}})=>(0,Pa._)`{limit: ${r}}`},u6={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:l6,code(r){let{parentSchema:e,it:t}=r,{items:n}=e;if(!Array.isArray(n)){(0,Jv.checkStrictMode)(t,'"additionalItems" is ignored when "items" is not an array of schemas');return}TA(r,n)}};function TA(r,e){let{gen:t,schema:n,data:o,keyword:i,it:a}=r;a.items=!0;let s=t.const("len",(0,Pa._)`${o}.length`);if(n===!1)r.setParams({len:e.length}),r.pass((0,Pa._)`${s} <= ${e.length}`);else if(typeof n=="object"&&!(0,Jv.alwaysValidSchema)(a,n)){let l=t.var("valid",(0,Pa._)`${s} <= ${e.length}`);t.if((0,Pa.not)(l),()=>c(l)),r.ok(l)}function c(l){t.forRange("i",e.length,s,u=>{r.subschema({keyword:i,dataProp:u,dataPropType:Jv.Type.Num},l),a.allErrors||t.if((0,Pa.not)(l),()=>t.break())})}}mu.validateAdditionalItems=TA;mu.default=u6});var Yv=T(fu=>{"use strict";Object.defineProperty(fu,"__esModule",{value:!0});fu.validateTuple=void 0;var MA=ue(),ff=ve(),d6=rn(),p6={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(r){let{schema:e,it:t}=r;if(Array.isArray(e))return xA(r,"additionalItems",e);t.items=!0,!(0,ff.alwaysValidSchema)(t,e)&&r.ok((0,d6.validateArray)(r))}};function xA(r,e,t=r.schema){let{gen:n,parentSchema:o,data:i,keyword:a,it:s}=r;u(o),s.opts.unevaluated&&t.length&&s.items!==!0&&(s.items=ff.mergeEvaluated.items(n,t.length,s.items));let c=n.name("valid"),l=n.const("len",(0,MA._)`${i}.length`);t.forEach((p,g)=>{(0,ff.alwaysValidSchema)(s,p)||(n.if((0,MA._)`${l} > ${g}`,()=>r.subschema({keyword:a,schemaProp:g,dataProp:g},c)),r.ok(c))});function u(p){let{opts:g,errSchemaPath:m}=s,f=t.length,y=f===p.minItems&&(f===p.maxItems||p[e]===!1);if(g.strictTuples&&!y){let C=`"${a}" is ${f}-tuple, but minItems or maxItems/${e} are not specified or different at path "${m}"`;(0,ff.checkStrictMode)(s,C,g.strictTuples)}}}fu.validateTuple=xA;fu.default=p6});var IA=T(Xv=>{"use strict";Object.defineProperty(Xv,"__esModule",{value:!0});var m6=Yv(),f6={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:r=>(0,m6.validateTuple)(r,"items")};Xv.default=f6});var DA=T(Zv=>{"use strict";Object.defineProperty(Zv,"__esModule",{value:!0});var _A=ue(),h6=ve(),g6=rn(),y6=Qv(),C6={message:({params:{len:r}})=>(0,_A.str)`must NOT have more than ${r} items`,params:({params:{len:r}})=>(0,_A._)`{limit: ${r}}`},S6={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:C6,code(r){let{schema:e,parentSchema:t,it:n}=r,{prefixItems:o}=t;n.items=!0,!(0,h6.alwaysValidSchema)(n,e)&&(o?(0,y6.validateAdditionalItems)(r,o):r.ok((0,g6.validateArray)(r)))}};Zv.default=S6});var FA=T(ek=>{"use strict";Object.defineProperty(ek,"__esModule",{value:!0});var on=ue(),hf=ve(),v6={message:({params:{min:r,max:e}})=>e===void 0?(0,on.str)`must contain at least ${r} valid item(s)`:(0,on.str)`must contain at least ${r} and no more than ${e} valid item(s)`,params:({params:{min:r,max:e}})=>e===void 0?(0,on._)`{minContains: ${r}}`:(0,on._)`{minContains: ${r}, maxContains: ${e}}`},k6={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:v6,code(r){let{gen:e,schema:t,parentSchema:n,data:o,it:i}=r,a,s,{minContains:c,maxContains:l}=n;i.opts.next?(a=c===void 0?1:c,s=l):a=1;let u=e.const("len",(0,on._)`${o}.length`);if(r.setParams({min:a,max:s}),s===void 0&&a===0){(0,hf.checkStrictMode)(i,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(s!==void 0&&a>s){(0,hf.checkStrictMode)(i,'"minContains" > "maxContains" is always invalid'),r.fail();return}if((0,hf.alwaysValidSchema)(i,t)){let y=(0,on._)`${u} >= ${a}`;s!==void 0&&(y=(0,on._)`${y} && ${u} <= ${s}`),r.pass(y);return}i.items=!0;let p=e.name("valid");s===void 0&&a===1?m(p,()=>e.if(p,()=>e.break())):a===0?(e.let(p,!0),s!==void 0&&e.if((0,on._)`${o}.length > 0`,g)):(e.let(p,!1),g()),r.result(p,()=>r.reset());function g(){let y=e.name("_valid"),C=e.let("count",0);m(y,()=>e.if(y,()=>f(C)))}function m(y,C){e.forRange("i",0,u,S=>{r.subschema({keyword:"contains",dataProp:S,dataPropType:hf.Type.Num,compositeRule:!0},y),C()})}function f(y){e.code((0,on._)`${y}++`),s===void 0?e.if((0,on._)`${y} >= ${a}`,()=>e.assign(p,!0).break()):(e.if((0,on._)`${y} > ${s}`,()=>e.assign(p,!1).break()),a===1?e.assign(p,!0):e.if((0,on._)`${y} >= ${a}`,()=>e.assign(p,!0)))}}};ek.default=k6});var LA=T(Yn=>{"use strict";Object.defineProperty(Yn,"__esModule",{value:!0});Yn.validateSchemaDeps=Yn.validatePropertyDeps=Yn.error=void 0;var tk=ue(),w6=ve(),hu=rn();Yn.error={message:({params:{property:r,depsCount:e,deps:t}})=>{let n=e===1?"property":"properties";return(0,tk.str)`must have ${n} ${t} when property ${r} is present`},params:({params:{property:r,depsCount:e,deps:t,missingProperty:n}})=>(0,tk._)`{property: ${r},
|
|
28
|
+
missingProperty: ${n},
|
|
29
|
+
depsCount: ${e},
|
|
30
|
+
deps: ${t}}`};var P6={keyword:"dependencies",type:"object",schemaType:"object",error:Yn.error,code(r){let[e,t]=R6(r);AA(r,e),OA(r,t)}};function R6({schema:r}){let e={},t={};for(let n in r){if(n==="__proto__")continue;let o=Array.isArray(r[n])?e:t;o[n]=r[n]}return[e,t]}function AA(r,e=r.schema){let{gen:t,data:n,it:o}=r;if(Object.keys(e).length===0)return;let i=t.let("missing");for(let a in e){let s=e[a];if(s.length===0)continue;let c=(0,hu.propertyInData)(t,n,a,o.opts.ownProperties);r.setParams({property:a,depsCount:s.length,deps:s.join(", ")}),o.allErrors?t.if(c,()=>{for(let l of s)(0,hu.checkReportMissingProp)(r,l)}):(t.if((0,tk._)`${c} && (${(0,hu.checkMissingProp)(r,s,i)})`),(0,hu.reportMissingProp)(r,i),t.else())}}Yn.validatePropertyDeps=AA;function OA(r,e=r.schema){let{gen:t,data:n,keyword:o,it:i}=r,a=t.name("valid");for(let s in e)(0,w6.alwaysValidSchema)(i,e[s])||(t.if((0,hu.propertyInData)(t,n,s,i.opts.ownProperties),()=>{let c=r.subschema({keyword:o,schemaProp:s},a);r.mergeValidEvaluated(c,a)},()=>t.var(a,!0)),r.ok(a))}Yn.validateSchemaDeps=OA;Yn.default=P6});var WA=T(rk=>{"use strict";Object.defineProperty(rk,"__esModule",{value:!0});var NA=ue(),b6=ve(),E6={message:"property name must be valid",params:({params:r})=>(0,NA._)`{propertyName: ${r.propertyName}}`},T6={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:E6,code(r){let{gen:e,schema:t,data:n,it:o}=r;if((0,b6.alwaysValidSchema)(o,t))return;let i=e.name("valid");e.forIn("key",n,a=>{r.setParams({propertyName:a}),r.subschema({keyword:"propertyNames",data:a,dataTypes:["string"],propertyName:a,compositeRule:!0},i),e.if((0,NA.not)(i),()=>{r.error(!0),o.allErrors||e.break()})}),r.ok(i)}};rk.default=T6});var ok=T(nk=>{"use strict";Object.defineProperty(nk,"__esModule",{value:!0});var gf=rn(),Dn=ue(),M6=Mo(),yf=ve(),x6={message:"must NOT have additional properties",params:({params:r})=>(0,Dn._)`{additionalProperty: ${r.additionalProperty}}`},I6={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:x6,code(r){let{gen:e,schema:t,parentSchema:n,data:o,errsCount:i,it:a}=r;if(!i)throw new Error("ajv implementation error");let{allErrors:s,opts:c}=a;if(a.props=!0,c.removeAdditional!=="all"&&(0,yf.alwaysValidSchema)(a,t))return;let l=(0,gf.allSchemaProperties)(n.properties),u=(0,gf.allSchemaProperties)(n.patternProperties);p(),r.ok((0,Dn._)`${i} === ${M6.default.errors}`);function p(){e.forIn("key",o,C=>{!l.length&&!u.length?f(C):e.if(g(C),()=>f(C))})}function g(C){let S;if(l.length>8){let w=(0,yf.schemaRefOrVal)(a,n.properties,"properties");S=(0,gf.isOwnProperty)(e,w,C)}else l.length?S=(0,Dn.or)(...l.map(w=>(0,Dn._)`${C} === ${w}`)):S=Dn.nil;return u.length&&(S=(0,Dn.or)(S,...u.map(w=>(0,Dn._)`${(0,gf.usePattern)(r,w)}.test(${C})`))),(0,Dn.not)(S)}function m(C){e.code((0,Dn._)`delete ${o}[${C}]`)}function f(C){if(c.removeAdditional==="all"||c.removeAdditional&&t===!1){m(C);return}if(t===!1){r.setParams({additionalProperty:C}),r.error(),s||e.break();return}if(typeof t=="object"&&!(0,yf.alwaysValidSchema)(a,t)){let S=e.name("valid");c.removeAdditional==="failing"?(y(C,S,!1),e.if((0,Dn.not)(S),()=>{r.reset(),m(C)})):(y(C,S),s||e.if((0,Dn.not)(S),()=>e.break()))}}function y(C,S,w){let h={keyword:"additionalProperties",dataProp:C,dataPropType:yf.Type.Str};w===!1&&Object.assign(h,{compositeRule:!0,createErrors:!1,allErrors:!1}),r.subschema(h,S)}}};nk.default=I6});var jA=T(ak=>{"use strict";Object.defineProperty(ak,"__esModule",{value:!0});var _6=tu(),UA=rn(),ik=ve(),$A=ok(),D6={keyword:"properties",type:"object",schemaType:"object",code(r){let{gen:e,schema:t,parentSchema:n,data:o,it:i}=r;i.opts.removeAdditional==="all"&&n.additionalProperties===void 0&&$A.default.code(new _6.KeywordCxt(i,$A.default,"additionalProperties"));let a=(0,UA.allSchemaProperties)(t);for(let p of a)i.definedProperties.add(p);i.opts.unevaluated&&a.length&&i.props!==!0&&(i.props=ik.mergeEvaluated.props(e,(0,ik.toHash)(a),i.props));let s=a.filter(p=>!(0,ik.alwaysValidSchema)(i,t[p]));if(s.length===0)return;let c=e.name("valid");for(let p of s)l(p)?u(p):(e.if((0,UA.propertyInData)(e,o,p,i.opts.ownProperties)),u(p),i.allErrors||e.else().var(c,!0),e.endIf()),r.it.definedProperties.add(p),r.ok(c);function l(p){return i.opts.useDefaults&&!i.compositeRule&&t[p].default!==void 0}function u(p){r.subschema({keyword:"properties",schemaProp:p,dataProp:p},c)}}};ak.default=D6});var HA=T(sk=>{"use strict";Object.defineProperty(sk,"__esModule",{value:!0});var VA=rn(),Cf=ue(),qA=ve(),BA=ve(),F6={keyword:"patternProperties",type:"object",schemaType:"object",code(r){let{gen:e,schema:t,data:n,parentSchema:o,it:i}=r,{opts:a}=i,s=(0,VA.allSchemaProperties)(t),c=s.filter(y=>(0,qA.alwaysValidSchema)(i,t[y]));if(s.length===0||c.length===s.length&&(!i.opts.unevaluated||i.props===!0))return;let l=a.strictSchema&&!a.allowMatchingProperties&&o.properties,u=e.name("valid");i.props!==!0&&!(i.props instanceof Cf.Name)&&(i.props=(0,BA.evaluatedPropsToName)(e,i.props));let{props:p}=i;g();function g(){for(let y of s)l&&m(y),i.allErrors?f(y):(e.var(u,!0),f(y),e.if(u))}function m(y){for(let C in l)new RegExp(y).test(C)&&(0,qA.checkStrictMode)(i,`property ${C} matches pattern ${y} (use allowMatchingProperties)`)}function f(y){e.forIn("key",n,C=>{e.if((0,Cf._)`${(0,VA.usePattern)(r,y)}.test(${C})`,()=>{let S=c.includes(y);S||r.subschema({keyword:"patternProperties",schemaProp:y,dataProp:C,dataPropType:BA.Type.Str},u),i.opts.unevaluated&&p!==!0?e.assign((0,Cf._)`${p}[${C}]`,!0):!S&&!i.allErrors&&e.if((0,Cf.not)(u),()=>e.break())})})}}};sk.default=F6});var GA=T(ck=>{"use strict";Object.defineProperty(ck,"__esModule",{value:!0});var A6=ve(),O6={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(r){let{gen:e,schema:t,it:n}=r;if((0,A6.alwaysValidSchema)(n,t)){r.fail();return}let o=e.name("valid");r.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},o),r.failResult(o,()=>r.reset(),()=>r.error())},error:{message:"must NOT be valid"}};ck.default=O6});var zA=T(lk=>{"use strict";Object.defineProperty(lk,"__esModule",{value:!0});var L6=rn(),N6={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:L6.validateUnion,error:{message:"must match a schema in anyOf"}};lk.default=N6});var KA=T(uk=>{"use strict";Object.defineProperty(uk,"__esModule",{value:!0});var Sf=ue(),W6=ve(),U6={message:"must match exactly one schema in oneOf",params:({params:r})=>(0,Sf._)`{passingSchemas: ${r.passing}}`},$6={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:U6,code(r){let{gen:e,schema:t,parentSchema:n,it:o}=r;if(!Array.isArray(t))throw new Error("ajv implementation error");if(o.opts.discriminator&&n.discriminator)return;let i=t,a=e.let("valid",!1),s=e.let("passing",null),c=e.name("_valid");r.setParams({passing:s}),e.block(l),r.result(a,()=>r.reset(),()=>r.error(!0));function l(){i.forEach((u,p)=>{let g;(0,W6.alwaysValidSchema)(o,u)?e.var(c,!0):g=r.subschema({keyword:"oneOf",schemaProp:p,compositeRule:!0},c),p>0&&e.if((0,Sf._)`${c} && ${a}`).assign(a,!1).assign(s,(0,Sf._)`[${s}, ${p}]`).else(),e.if(c,()=>{e.assign(a,!0),e.assign(s,p),g&&r.mergeEvaluated(g,Sf.Name)})})}}};uk.default=$6});var JA=T(dk=>{"use strict";Object.defineProperty(dk,"__esModule",{value:!0});var j6=ve(),V6={keyword:"allOf",schemaType:"array",code(r){let{gen:e,schema:t,it:n}=r;if(!Array.isArray(t))throw new Error("ajv implementation error");let o=e.name("valid");t.forEach((i,a)=>{if((0,j6.alwaysValidSchema)(n,i))return;let s=r.subschema({keyword:"allOf",schemaProp:a},o);r.ok(o),r.mergeEvaluated(s)})}};dk.default=V6});var XA=T(pk=>{"use strict";Object.defineProperty(pk,"__esModule",{value:!0});var vf=ue(),YA=ve(),q6={message:({params:r})=>(0,vf.str)`must match "${r.ifClause}" schema`,params:({params:r})=>(0,vf._)`{failingKeyword: ${r.ifClause}}`},B6={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:q6,code(r){let{gen:e,parentSchema:t,it:n}=r;t.then===void 0&&t.else===void 0&&(0,YA.checkStrictMode)(n,'"if" without "then" and "else" is ignored');let o=QA(n,"then"),i=QA(n,"else");if(!o&&!i)return;let a=e.let("valid",!0),s=e.name("_valid");if(c(),r.reset(),o&&i){let u=e.let("ifClause");r.setParams({ifClause:u}),e.if(s,l("then",u),l("else",u))}else o?e.if(s,l("then")):e.if((0,vf.not)(s),l("else"));r.pass(a,()=>r.error(!0));function c(){let u=r.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},s);r.mergeEvaluated(u)}function l(u,p){return()=>{let g=r.subschema({keyword:u},s);e.assign(a,s),r.mergeValidEvaluated(g,a),p?e.assign(p,(0,vf._)`${u}`):r.setParams({ifClause:u})}}}};function QA(r,e){let t=r.schema[e];return t!==void 0&&!(0,YA.alwaysValidSchema)(r,t)}pk.default=B6});var ZA=T(mk=>{"use strict";Object.defineProperty(mk,"__esModule",{value:!0});var H6=ve(),G6={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:r,parentSchema:e,it:t}){e.if===void 0&&(0,H6.checkStrictMode)(t,`"${r}" without "if" is ignored`)}};mk.default=G6});var eO=T(fk=>{"use strict";Object.defineProperty(fk,"__esModule",{value:!0});var z6=Qv(),K6=IA(),J6=Yv(),Q6=DA(),Y6=FA(),X6=LA(),Z6=WA(),e4=ok(),t4=jA(),r4=HA(),n4=GA(),o4=zA(),i4=KA(),a4=JA(),s4=XA(),c4=ZA();function l4(r=!1){let e=[n4.default,o4.default,i4.default,a4.default,s4.default,c4.default,Z6.default,e4.default,X6.default,t4.default,r4.default];return r?e.push(K6.default,Q6.default):e.push(z6.default,J6.default),e.push(Y6.default),e}fk.default=l4});var tO=T(hk=>{"use strict";Object.defineProperty(hk,"__esModule",{value:!0});var mt=ue(),u4={message:({schemaCode:r})=>(0,mt.str)`must match format "${r}"`,params:({schemaCode:r})=>(0,mt._)`{format: ${r}}`},d4={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:u4,code(r,e){let{gen:t,data:n,$data:o,schema:i,schemaCode:a,it:s}=r,{opts:c,errSchemaPath:l,schemaEnv:u,self:p}=s;if(!c.validateFormats)return;o?g():m();function g(){let f=t.scopeValue("formats",{ref:p.formats,code:c.code.formats}),y=t.const("fDef",(0,mt._)`${f}[${a}]`),C=t.let("fType"),S=t.let("format");t.if((0,mt._)`typeof ${y} == "object" && !(${y} instanceof RegExp)`,()=>t.assign(C,(0,mt._)`${y}.type || "string"`).assign(S,(0,mt._)`${y}.validate`),()=>t.assign(C,(0,mt._)`"string"`).assign(S,y)),r.fail$data((0,mt.or)(w(),h()));function w(){return c.strictSchema===!1?mt.nil:(0,mt._)`${a} && !${S}`}function h(){let k=u.$async?(0,mt._)`(${y}.async ? await ${S}(${n}) : ${S}(${n}))`:(0,mt._)`${S}(${n})`,v=(0,mt._)`(typeof ${S} == "function" ? ${k} : ${S}.test(${n}))`;return(0,mt._)`${S} && ${S} !== true && ${C} === ${e} && !${v}`}}function m(){let f=p.formats[i];if(!f){w();return}if(f===!0)return;let[y,C,S]=h(f);y===e&&r.pass(k());function w(){if(c.strictSchema===!1){p.logger.warn(v());return}throw new Error(v());function v(){return`unknown format "${i}" ignored in schema at path "${l}"`}}function h(v){let b=v instanceof RegExp?(0,mt.regexpCode)(v):c.code.formats?(0,mt._)`${c.code.formats}${(0,mt.getProperty)(i)}`:void 0,R=t.scopeValue("formats",{key:i,ref:v,code:b});return typeof v=="object"&&!(v instanceof RegExp)?[v.type||"string",v.validate,(0,mt._)`${R}.validate`]:["string",v,R]}function k(){if(typeof f=="object"&&!(f instanceof RegExp)&&f.async){if(!u.$async)throw new Error("async format in sync schema");return(0,mt._)`await ${S}(${n})`}return typeof C=="function"?(0,mt._)`${S}(${n})`:(0,mt._)`${S}.test(${n})`}}}};hk.default=d4});var rO=T(gk=>{"use strict";Object.defineProperty(gk,"__esModule",{value:!0});var p4=tO(),m4=[p4.default];gk.default=m4});var nO=T(ac=>{"use strict";Object.defineProperty(ac,"__esModule",{value:!0});ac.contentVocabulary=ac.metadataVocabulary=void 0;ac.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];ac.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var iO=T(yk=>{"use strict";Object.defineProperty(yk,"__esModule",{value:!0});var f4=pA(),h4=EA(),g4=eO(),y4=rO(),oO=nO(),C4=[f4.default,h4.default,(0,g4.default)(),y4.default,oO.metadataVocabulary,oO.contentVocabulary];yk.default=C4});var sO=T(kf=>{"use strict";Object.defineProperty(kf,"__esModule",{value:!0});kf.DiscrError=void 0;var aO;(function(r){r.Tag="tag",r.Mapping="mapping"})(aO||(kf.DiscrError=aO={}))});var lO=T(Sk=>{"use strict";Object.defineProperty(Sk,"__esModule",{value:!0});var sc=ue(),Ck=sO(),cO=nf(),S4=ru(),v4=ve(),k4={message:({params:{discrError:r,tagName:e}})=>r===Ck.DiscrError.Tag?`tag "${e}" must be string`:`value of tag "${e}" must be in oneOf`,params:({params:{discrError:r,tag:e,tagName:t}})=>(0,sc._)`{error: ${r}, tag: ${t}, tagValue: ${e}}`},w4={keyword:"discriminator",type:"object",schemaType:"object",error:k4,code(r){let{gen:e,data:t,schema:n,parentSchema:o,it:i}=r,{oneOf:a}=o;if(!i.opts.discriminator)throw new Error("discriminator: requires discriminator option");let s=n.propertyName;if(typeof s!="string")throw new Error("discriminator: requires propertyName");if(n.mapping)throw new Error("discriminator: mapping is not supported");if(!a)throw new Error("discriminator: requires oneOf keyword");let c=e.let("valid",!1),l=e.const("tag",(0,sc._)`${t}${(0,sc.getProperty)(s)}`);e.if((0,sc._)`typeof ${l} == "string"`,()=>u(),()=>r.error(!1,{discrError:Ck.DiscrError.Tag,tag:l,tagName:s})),r.ok(c);function u(){let m=g();e.if(!1);for(let f in m)e.elseIf((0,sc._)`${l} === ${f}`),e.assign(c,p(m[f]));e.else(),r.error(!1,{discrError:Ck.DiscrError.Mapping,tag:l,tagName:s}),e.endIf()}function p(m){let f=e.name("valid"),y=r.subschema({keyword:"oneOf",schemaProp:m},f);return r.mergeEvaluated(y,sc.Name),f}function g(){var m;let f={},y=S(o),C=!0;for(let k=0;k<a.length;k++){let v=a[k];if(v?.$ref&&!(0,v4.schemaHasRulesButRef)(v,i.self.RULES)){let R=v.$ref;if(v=cO.resolveRef.call(i.self,i.schemaEnv.root,i.baseId,R),v instanceof cO.SchemaEnv&&(v=v.schema),v===void 0)throw new S4.default(i.opts.uriResolver,i.baseId,R)}let b=(m=v?.properties)===null||m===void 0?void 0:m[s];if(typeof b!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${s}"`);C=C&&(y||S(v)),w(b,k)}if(!C)throw new Error(`discriminator: "${s}" must be required`);return f;function S({required:k}){return Array.isArray(k)&&k.includes(s)}function w(k,v){if(k.const)h(k.const,v);else if(k.enum)for(let b of k.enum)h(b,v);else throw new Error(`discriminator: "properties/${s}" must have "const" or "enum"`)}function h(k,v){if(typeof k!="string"||k in f)throw new Error(`discriminator: "${s}" values must be unique strings`);f[k]=v}}}};Sk.default=w4});var uO=T((qke,P4)=>{P4.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var pO=T((Ge,vk)=>{"use strict";Object.defineProperty(Ge,"__esModule",{value:!0});Ge.MissingRefError=Ge.ValidationError=Ge.CodeGen=Ge.Name=Ge.nil=Ge.stringify=Ge.str=Ge._=Ge.KeywordCxt=Ge.Ajv=void 0;var R4=aA(),b4=iO(),E4=lO(),dO=uO(),T4=["/properties"],wf="http://json-schema.org/draft-07/schema",cc=class extends R4.default{_addVocabularies(){super._addVocabularies(),b4.default.forEach(e=>this.addVocabulary(e)),this.opts.discriminator&&this.addKeyword(E4.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let e=this.opts.$data?this.$dataMetaSchema(dO,T4):dO;this.addMetaSchema(e,wf,!1),this.refs["http://json-schema.org/schema"]=wf}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(wf)?wf:void 0)}};Ge.Ajv=cc;vk.exports=Ge=cc;vk.exports.Ajv=cc;Object.defineProperty(Ge,"__esModule",{value:!0});Ge.default=cc;var M4=tu();Object.defineProperty(Ge,"KeywordCxt",{enumerable:!0,get:function(){return M4.KeywordCxt}});var lc=ue();Object.defineProperty(Ge,"_",{enumerable:!0,get:function(){return lc._}});Object.defineProperty(Ge,"str",{enumerable:!0,get:function(){return lc.str}});Object.defineProperty(Ge,"stringify",{enumerable:!0,get:function(){return lc.stringify}});Object.defineProperty(Ge,"nil",{enumerable:!0,get:function(){return lc.nil}});Object.defineProperty(Ge,"Name",{enumerable:!0,get:function(){return lc.Name}});Object.defineProperty(Ge,"CodeGen",{enumerable:!0,get:function(){return lc.CodeGen}});var x4=tf();Object.defineProperty(Ge,"ValidationError",{enumerable:!0,get:function(){return x4.default}});var I4=ru();Object.defineProperty(Ge,"MissingRefError",{enumerable:!0,get:function(){return I4.default}})});var X5={};Xf(X5,{runCli:()=>AL});module.exports=cw(X5);var FL=E(require("path"));var kt=class{constructor(e,t,n){this.id=e;this.payload=t;this.source=n}};var mc=class{listeners=new Map;on(e,t){let n=this.listeners.get(e);n||(n=new Set,this.listeners.set(e,n));let o=t,i=c=>o(c),a=n.size>0;n.add(i),!a&&n.size>0&&this.fireListenerChanged(e,!0);let s=!1;return{dispose:()=>{if(s)return;s=!0;let c=this.listeners.get(e);!c||!c.delete(i)||c.size===0&&(this.listeners.delete(e),this.fireListenerChanged(e,!1))}}}fire(e){let t=this.listeners.get(e.id);if(t)for(let n of[...t])n(e)}fireAsync(e){return Promise.resolve().then(()=>this.fire(e))}dispose(){this.listeners.clear()}fireListenerChanged(e,t){e!=="event.listener.changed"&&this.fire(new kt("event.listener.changed",{id:e,hasListeners:t},this))}};Wr();var Ea=(n=>(n.IDE="ide",n.CLI="cli",n.AUTO_SYNC="auto-sync",n))(Ea||{}),cn="5.0.6",$L=`succapp@${cn}`;function Zf(r){return{source:r,agentVersion:$L}}var jL=Zf("ide"),lw=jL;function uw(r){lw=r}function Fo(){return lw}I();Y();var $a=E(require("fs")),qo=E(require("path")),$P=require("crypto");var gc=["trace","debug","info","warn","error"];var gw={trace:0,debug:1,info:2,warn:3,error:4},yw=["TRACE","DEBUG","INFO","WARN","ERROR"],ZL=new Set(gc);function e0(r){return typeof r=="string"&&ZL.has(r)}function xa(r){let e=r?.trim().toLowerCase();return e0(e)?e:void 0}var xh=E(require("os")),xc=E(require("path"));var Mr={workspace:"SUCCAPP_WORKSPACE",server:"SUCCAPP_SERVER",json:"SUCCAPP_JSON",logLevel:"SUCCAPP_LOG_LEVEL",locale:"SUCCAPP_LOCALE",noUpdateCheck:"SUCCAPP_NO_UPDATE_CHECK",updateCheckTtlSeconds:"SUCCAPP_UPDATE_CHECK_TTL_SECONDS",updateCheckRegistry:"SUCCAPP_UPDATE_CHECK_REGISTRY"},Eu={lcAll:"LC_ALL",lcMessages:"LC_MESSAGES",lang:"LANG"};function Ce(r){return r&&r.trim()?r:void 0}function Ia(r,e){if(r===void 0)return;let t=r.trim();if(!/^\d+$/.test(t))return;let n=Number(t);if(Number.isSafeInteger(n)&&!(e!==void 0&&n>e))return n}function Tu(r,e=void 0){if(r===void 0)return e;let t=r.trim();return t===""?e:t==="1"||Oo(t,"true")||Oo(t,"yes")||Oo(t,"on")?!0:t==="0"||Oo(t,"false")||Oo(t,"no")||Oo(t,"off")?!1:e}function vw(r){let e=r.trim();return e.startsWith("/")&&e.lastIndexOf("/")>1}function Oo(r,e){if(r===e)return!0;if(r==null||e===void 0||e===null||r.length!==e.length)return!1;for(let t=0;t<r.length;t++){let n=Sw(r.charCodeAt(t)),o=Sw(e.charCodeAt(t));if(n!==o)return!1}return!0}function rt(r){let e=0;for(let t of r){let n=t.codePointAt(0);n===void 0||s0(n)||(e+=c0(n)?2:1)}return e}function Mu(r,e){return`${r}${" ".repeat(Math.max(0,e-rt(r)))}`}function kw(r,e){let t=oh(e),n=[];for(let o of r.replace(/\r\n?/g,`
|
|
31
|
+
`).split(`
|
|
32
|
+
`))n.push(...Rw(o,t));return n}function Cc(r,e){let t=oh(e),n=[];for(let o of r.replace(/\r\n?/g,`
|
|
33
|
+
`).split(`
|
|
34
|
+
`))n.push(...t0(o,t));return n}function ww(r,e,t,n){let o=oh(n);if(rt(r)<=o)return r;if(o<=2)return"\u2026".repeat(o);let i=o0(r);if(i.length===0)return"";let a=Cw(e,r.length),s=Math.max(a,Cw(t,r.length)),c=i0(i,a),l=c+1;if(s>a)for(;l<i.length&&i[l].start<s;)l++;let u=o-2,p=a0(i,c,l);if(p>u){for(l=c,p=0;l<i.length&&p+i[l].width<=u;)p+=i[l].width,l++;if(l===c)return"\u2026"}let g=u-p,m=Math.floor(g/2);for(;c>0&&i[c-1].width<=m;)c--,p+=i[c].width,m-=i[c].width;for(g=u-p;l<i.length&&i[l].width<=g;)p+=i[l].width,g-=i[l].width,l++;for(;c>0&&i[c-1].width<=g;)c--,p+=i[c].width,g-=i[c].width;let f=c>0?"\u2026":"",y=l<i.length?"\u2026":"";return`${f}${i.slice(c,l).map(C=>C.text).join("")}${y}`}function Pw(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function nh(r){return Buffer.from(r).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function t0(r,e){if(r==="")return[""];if(rt(r)<=e)return[r];if(r.trim()==="")return Rw(r,e);let t=n0(r),n=[],o="",i=0,a="",s=0;for(let l of t){if(l.whitespace){a+=l.text,s+=l.width;continue}o===""&&a!==""&&(c(a),a="",s=0);let u=i+s+l.width;o!==""&&u>e?(n.push(o),o=l.text,i=l.width):(o+=`${a}${l.text}`,i=u),a="",s=0}return a!==""&&c(a),(o!==""||n.length===0)&&n.push(o),n;function c(l){for(let u of l){let p=rt(u);o!==""&&p>0&&i+p>e&&(n.push(o),o="",i=0),o+=u,i+=p}}}var r0=new Set([",",".",";",":","!","?","%",")","]","}","\uFF0C","\u3002","\uFF1B","\uFF1A","\uFF01","\uFF1F","\u3001","\uFF09","\u3011","\u300B","\u201D","\u2019","\u2026","\u2014"]);function n0(r){let e=[],t="",n="";for(let s of r){if(/\s/u.test(s)){i(),n+=s;continue}if(a(),rt(s)>1){i(),e.push(yc(s,!1));continue}t+=s}i(),a();let o=[];for(let s of e){let c=o[o.length-1],l=0;if(!s.whitespace)for(let u of s.text){if(!r0.has(u))break;l+=u.length}if(l>0&&c&&!c.whitespace){o[o.length-1]=yc(`${c.text}${s.text.slice(0,l)}`,!1);let u=s.text.slice(l);u!==""&&o.push(yc(u,!1));continue}o.push(s)}return o;function i(){t!==""&&(e.push(yc(t,!1)),t="")}function a(){n!==""&&(e.push(yc(n,!0)),n="")}}function yc(r,e){return{text:r,width:rt(r),whitespace:e}}function Rw(r,e){let t=[],n="",o=0;for(let i of r){let a=rt(i);n!==""&&a>0&&o+a>e&&(t.push(n),n="",o=0),n+=i,o+=a}return(n!==""||t.length===0)&&t.push(n),t}function o0(r){let e=[],t=0;for(let n of r)e.push({text:n,start:t,width:rt(n)}),t+=n.length;return e}function i0(r,e){let t=r.findIndex((n,o)=>(r[o+1]?.start??Number.POSITIVE_INFINITY)>e);return t<0?r.length-1:t}function a0(r,e,t){let n=0;for(let o=e;o<t;o++)n+=r[o].width;return n}function Cw(r,e){return Number.isFinite(r)?Math.max(0,Math.min(e,Math.floor(r))):0}function oh(r){let e=Math.floor(r);if(!Number.isFinite(r)||e<=0)throw new RangeError("Display width must be greater than 0");return e}function s0(r){return r<=31||r>=127&&r<=159||r>=768&&r<=879||r>=6832&&r<=6911||r>=7616&&r<=7679||r>=8400&&r<=8447||r>=65024&&r<=65039||r>=65056&&r<=65071||r===8203||r===8204||r===8205||r===8288}function c0(r){return r>=4352&&r<=4447||r===9001||r===9002||r>=11904&&r<=42191||r>=44032&&r<=55203||r>=63744&&r<=64255||r>=65040&&r<=65049||r>=65072&&r<=65135||r>=65280&&r<=65376||r>=65504&&r<=65510}function Sw(r){return r>=65&&r<=90?r+32:r}function bw(r){return Ce(r[Mr.locale])??Ce(r[Eu.lcAll])??Ce(r[Eu.lcMessages])??Ce(r[Eu.lang])}var Ew=["input","search","query","content","field","options","output","global"];var Ur=[{name:"workspace",alias:"C",takesValue:!0,valueHint:"path",helpGroup:"global",description:"cli.opt.workspace",acceptWorkspaceTarget:!0},{name:"server",takesValue:!0,valueHint:"url",helpGroup:"global",description:"cli.opt.server",acceptServerTarget:!0},{name:"json",takesValue:!1,helpGroup:"output",description:"cli.opt.json"},{name:"pretty-json",takesValue:!1,helpGroup:"output",description:"cli.opt.prettyJson"},{name:"quiet",alias:"q",takesValue:!1,helpGroup:"output",description:"cli.opt.quiet"},{name:"verbose",alias:"v",takesValue:!1,helpGroup:"global",description:"cli.opt.verbose"},{name:"lock-timeout",takesValue:!0,valueHint:"seconds",helpGroup:"global",description:"cli.opt.lockTimeout",acceptDomains:["workspace"],acceptLockUsages:["workspace-write"],showInTopLevelHelp:!1},{name:"log-level",takesValue:!0,valueHint:"level",helpGroup:"global",description:"cli.opt.logLevel"},{name:"locale",takesValue:!0,valueHint:"locale",helpGroup:"global",description:"cli.opt.locale"},{name:"help",alias:"h",takesValue:!1,helpGroup:"global",description:"cli.opt.help"},{name:"version",alias:"V",takesValue:!1,helpGroup:"global",description:"cli.opt.version"}],_a=Ur.filter(r=>r.showInTopLevelHelp!==!1);function Tw(r){return{workspace:r.rawValue("workspace"),server:r.rawValue("server"),json:r.has("json"),prettyJson:r.has("pretty-json"),quiet:r.has("quiet"),verbose:r.has("verbose"),lockTimeout:r.rawValue("lock-timeout"),logLevel:r.rawValue("log-level"),locale:r.rawValue("locale"),help:r.has("help"),version:r.has("version")}}function ln(r,e){if(r.spec.flags.some(a=>a.name===e))return!0;let n=Ur.find(a=>a.name===e);if(!n)return!1;let o=n.acceptDomains;if(o&&o.length>0&&!o.includes(r.domain)||n.acceptWorkspaceTarget&&r.workspaceTarget==="none"||n.acceptServerTarget&&r.serverTarget==="none")return!1;let i=n.acceptLockUsages;return!(i&&!i.includes(r.lockUsage??"none"))}F();O();nt();F();async function pr(){let r=process.stdin,e=[];for await(let t of r)e.push(oN(t));return Buffer.concat(e).toString("utf8")}async function kP(r=""){let e=process.stdin,t=process.stderr,n=e.isRaw===!0;return r&&t.write(r),e.isTTY&&e.setRawMode(!0),e.resume(),new Promise((o,i)=>{let a="",s=!1,c=f=>{for(let y of iN(f)){if(s)break;switch(y){case"\r":case`
|
|
35
|
+
`:case"":g(a,o);break;case"":m(new Vr,i);break;case"\b":case"\x7F":a=a.slice(0,-1);break;default:a+=y}}},l=f=>{m(f,i)},u=()=>{g(a,o)},p=()=>{e.off("data",c),e.off("error",l),e.off("end",u),e.off("close",u),e.isTTY&&e.setRawMode(n),e.pause(),t.write(`
|
|
36
|
+
`)},g=(f,y)=>{s||(s=!0,p(),y(f))},m=(f,y)=>{s||(s=!0,p(),y(f))};e.on("data",c),e.on("error",l),e.on("end",u),e.on("close",u)})}function oN(r){return typeof r=="string"?Buffer.from(r):Buffer.isBuffer(r)?r:Buffer.from(r)}function iN(r){return typeof r=="string"?r:Buffer.isBuffer(r)?r.toString("utf8"):r instanceof Uint8Array?Buffer.from(r).toString("utf8"):String(r??"")}V();function MP(r,e="param"){return r.map(t=>PN(t,e))}function xP(r){let e={};for(let t of r)e[t.key]=t.value;return e}function De(r){return r.startsWith("-")?r:r.length===1?`-${r}`:`--${r}`}function Ju(r,e,t=kN(r)){let n=Ua(r).resolveInput(e);return vN(n,t)}async function vN(r,e){if(r.kind==="value")return r.value;if(r.kind==="file")return e.readFileText(r.filePath);if(e.hasInteractiveStdin())throw new P("err.cli.missingInput",{inputId:r.inputId,sources:r.sources});return e.readStdin()}function Ua(r){if(!r.parsed)throw new Error("Missing parsed CLI arguments in command context.");return r.parsed}function kN(r){return{hasInteractiveStdin:()=>process.stdin.isTTY,readFileText:e=>wN(r,e),readStdin:()=>pr()}}async function wN(r,e){let t=ut(r.cwd,e);try{return await ro(t)}catch(n){throw _(n)?new P("err.file.notFound",{path:t},{cause:n}):new P("err.cli.invalidReadableFile",{inputId:"inputFile",source:t,path:t},{cause:n})}}function PN(r,e){let t=De(e),n=r.indexOf("=");if(n<=0)throw new P("err.cli.invalidKeyValue",{input:t,option:t,flag:e,value:r});let o=r.slice(0,n).trim();if(!o)throw new P("err.cli.invalidNonEmptyKeyValue",{input:t,option:t,flag:e,value:r});return{key:o,value:r.slice(n+1)}}Y();ze();F();O();var wt=(o=>(o.config="config",o.sync="sync",o.inodeCache="inode-cache",o.init="init",o))(wt||{}),Ii=Object.values(wt),Mc=0;var RN=M("cli.config"),_i=86400,bN,IP=[];function _P(r){let e=EN(r);return bN=e.config,IP=e.diagnostics,e.config}function DP(){for(let r of IP)RN.warn(r.message,r.envName,r.value)}function Qu(r=process.env){return process.platform==="win32"?xc.join(r.LOCALAPPDATA||xc.join(xh.homedir(),"AppData","Local"),"succapp"):xc.join(r.XDG_CACHE_HOME||xc.join(xh.homedir(),".cache"),"succapp")}function EN(r){let e=r.env??process.env,t=TN(r),n=t.input,o=[],i={workspace:xN(t,"workspace",e[Mr.workspace]),server:IN(t,"server"),envServer:t.hasExplicitValue("server")?void 0:Ce(e[Mr.server]),outputMode:_N(n,e,o),jsonFormat:DN(n),quiet:n.quiet,verbose:n.verbose,lockTimeout:FN(t),logLevel:AN(t,e,o),locale:t.hasExplicitValue("locale")?Ce(n.locale):bw(e)};return{config:t.hasExplicitValue("logLevel")?{...i,explicitLogLevel:i.logLevel}:i,diagnostics:o}}function TN(r){if(r.args){let e=r.args.globalOptions,t=r.args;return{input:e,hasExplicitValue:n=>MN(t,n),strictExplicitValues:!1}}if(r.input){let e=r.input;return{input:e,hasExplicitValue:t=>e[t]!==void 0,strictExplicitValues:!0}}Ta("Either args or input must be provided to initializeCliConfig().")}function MN(r,e){switch(e){case"workspace":return r.parsed.has("workspace");case"server":return r.parsed.has("server");case"lockTimeout":return r.parsed.has("lock-timeout");case"logLevel":return r.parsed.has("log-level");case"locale":return r.parsed.has("locale")}}function xN(r,e,t){return Ce(r.hasExplicitValue(e)?r.input[e]:t)}function IN(r,e){return r.hasExplicitValue(e)?Ce(r.input[e]):void 0}function _N(r,e,t){return r.json||r.prettyJson||FP(Tu,Mr.json,e,t)?"json":"human"}function DN(r){return r.prettyJson?"pretty":"compact"}function FN(r){let e=r.input;if(r.hasExplicitValue("lockTimeout")){let t=e.lockTimeout,n=Ia(t,_i);if(n===void 0){if(!r.strictExplicitValues)return Mc;let o=De("lock-timeout");throw new P("err.cli.invalidNonNegativeIntegerRange",{input:o,option:o,value:t??"",min:0,max:_i})}return n}return Mc}function AN(r,e,t){let n=r.input;if(r.hasExplicitValue("logLevel")){let o=n.logLevel,i=xa(o);if(i===void 0){if(!r.strictExplicitValues)return"info";let a=De("log-level");throw new P("err.cli.invalidChoice",{input:a,option:a,value:o??"",allowedValues:gc})}return i}return n.verbose?"debug":FP(xa,Mr.logLevel,e,t)??"info"}function FP(r,e,t,n){let o=t[e],i=r(o);return o!==void 0&&o.trim()!==""&&i===void 0&&n.push({code:"invalid-env-value",severity:"warning",message:"Ignoring invalid CLI environment value",envName:e,value:o}),i}nt();var ON=30,LN=2e3,NN=24*60*60*1e3,WN=/^succapp-\d{4}-\d{2}-\d{2}\.log$/,UN=/^succapp-\d{8}T\d{6}\.\d{3}Z-p\d+-[0-9a-f]+\.log$/,Yu=class{disabled=!1;levelOrdinal;stream;logFile;constructor(e={}){this.levelOrdinal=gw[e.level??"info"],this.logFile=e.logFile,this.stream=e.logFile?this.createStream(e.logFile):void 0,e.startupInfo&&this.writeRaw(2,"cli log started",e.startupInfo)}async close(){let e=this.stream;!e||e.destroyed||await new Promise(t=>{let n=()=>{this.disabled=!0,t()};e.once("error",n),e.end(t)})}isTraceEnabled(){return this.isEnabled(0)}isDebugEnabled(){return this.isEnabled(1)}isInfoEnabled(){return this.isEnabled(2)}isWarnEnabled(){return this.isEnabled(3)}isErrorEnabled(){return this.isEnabled(4)}trace(e,...t){this.write(0,e,...t)}debug(e,...t){this.write(1,e,...t)}info(e,...t){this.write(2,e,...t)}warn(e,...t){this.write(3,e,...t)}error(e,...t){this.write(4,e,...t)}isEnabled(e){return!this.disabled&&this.stream!==void 0&&e>=this.levelOrdinal}write(e,t,...n){this.isEnabled(e)&&this.writeRaw(e,t,...n)}writeRaw(e,t,...n){if(this.disabled||this.stream===void 0)return;let o=[new Date().toISOString(),yw[e],UP(t),...n.map(UP)].join(" ");this.stream.write(`${o}
|
|
37
|
+
`)}createStream(e){try{let t=$a.createWriteStream(e,{flags:"a"});return t.on("error",()=>{this.disabled=!0}),t}catch{this.disabled=!0;return}}};async function jP(r={}){let e=r.level??"info",t=r.logDir??qo.join(Qu(r.env),"logs"),n=new Date,o=(0,$P.randomBytes)(3).toString("hex");try{await $a.promises.mkdir(t,{recursive:!0});let i=qo.join(t,VN(n,process.pid,o)),a=new Yu({level:e,logFile:i,startupInfo:{runId:o,pid:process.pid,cwd:r.cwd,level:e}});return $N(t,{activeLogFile:i,retentionDays:r.retentionDays,maxFiles:r.maxFiles}).catch(s=>{a.warn("cli log cleanup failed",s)}),a}catch{return new Yu({level:e})}}async function $N(r,e={}){let t=await jN(r),n=e.activeLogFile?qo.resolve(e.activeLogFile):void 0,o=BN(e.retentionDays),i=HN(e.maxFiles),a=Date.now()-o*NN,s=new Set;for(let l of t)qo.resolve(l.filePath)!==n&&l.mtimeMs<a&&await WP(l.filePath)&&s.add(l.filePath);let c=t.filter(l=>!s.has(l.filePath)).sort((l,u)=>l.mtimeMs-u.mtimeMs);for(;c.length>i;){let l=c.shift();if(!l)break;if(qo.resolve(l.filePath)===n){c.push(l);continue}await WP(l.filePath)&&s.add(l.filePath)}return{deletedFiles:s.size}}async function jN(r){let e;try{e=await $a.promises.readdir(r,{withFileTypes:!0})}catch(o){if(VP(o,"ENOENT"))return[];throw o}let t=e.filter(o=>o.isFile()).map(o=>({filePath:qo.join(r,o.name),kind:qN(o.name)})).filter(o=>o.kind!==void 0);return(await Promise.all(t.map(async o=>{let i=await xi(o.filePath);if(i)return{filePath:o.filePath,mtimeMs:i.mtimeMs,size:i.size,kind:o.kind}}))).filter(o=>o!==void 0).sort((o,i)=>o.filePath.localeCompare(i.filePath))}function VN(r,e,t){return`succapp-${r.toISOString().replace(/[-:]/g,"")}-p${e}-${t}.log`}async function WP(r){try{return await $a.promises.unlink(r),!0}catch(e){if(VP(e,"ENOENT"))return!1;throw e}}function qN(r){if(WN.test(r))return"legacy";if(UN.test(r))return"run"}function BN(r){return r===void 0||!Number.isFinite(r)||r<0?ON:Math.floor(r)}function HN(r){return r===void 0||!Number.isFinite(r)||r<1?LN:Math.floor(r)}function VP(r,e){return typeof r=="object"&&r!==null&&"code"in r&&r.code===e}function UP(r){if(r instanceof Error)return GN(r);if(typeof r=="string")return r;try{return JSON.stringify(r)??String(r)}catch{return String(r)}}function GN(r){return r.stack?r.stack:r.name&&r.message?`${r.name}: ${r.message}`:r.message||String(r)}var BP=E(require("fs")),_c=E(require("path"));I();ze();F();Y();re();var zN=M("cli.localizer"),Xu=class r{constructor(e,t,n){this.defaultBundle=e;this.localeBundle=t;this.unresolvedLocale=n}static async create(e={}){let t=e.bundleDir??QN(),n=await qP(_c.join(t,"bundle.l10n.json"))??{},o=KN(e.locale);if(!o)return new r(n,{});let i=_c.join(t,`bundle.l10n.${o}.json`),a=await qP(i);return a||zN.debug("CLI l10n bundle not found, falling back to default bundle",i,e.bundleDir?"configured bundleDir":"default bundleDir"),new r(n,a??{},a?void 0:e.locale)}t(e,...t){let n=this.localeBundle[e]??this.defaultBundle[e]??e;return bu(t)?Fn(n,t[0]):Fn(n,...t)}};async function qP(r){try{let e=await BP.promises.readFile(r,"utf8"),t=JSON.parse(e);K(W(t),`l10n bundle root is not an object: ${r}`);let n={};for(let[o,i]of Object.entries(t))typeof i=="string"&&(n[o]=i);return n}catch(e){if(_(e))return;throw e}}function KN(r){let e=JN(r);if(!(!e||e==="en"||e.startsWith("en-")))return e==="zh"?"zh-cn":e}function JN(r){if(!r)return;let e=r.split(".")[0].trim();if(!(!e||e==="C"||e==="POSIX"))return e.replace(/_/g,"-").toLowerCase()}function QN(){return _c.resolve(__dirname,"..","..","..","..","l10n")}I();Nn();var Dh=100,HP=100,rd=class extends Bo{constructor(t,n){super(void 0,0,n);this.output=t}lastProgressKey;doStart(t){this.lastProgressKey=void 0,this.emitProgress(0,t)}doProgress(t,n){this.emitProgress(t,this.getProgressTotal())}doRetainedFinish(t){this.output.progress({message:t,retained:!0,current:0},()=>t)}emitProgress(t,n){let o=XN(t,n,this.message),i=`${o.message??""}:${o.current}:${o.total??""}:${o.percent??""}`;i!==this.lastProgressKey&&(this.lastProgressKey=i,this.output.progress(o,()=>ZN(o)))}};function XN(r,e,t){let n=_h(r);if(e===void 0||e<=0)return t?{message:t,current:n}:{current:n};let o=_h(e),i={current:n,total:o,percent:_h(Math.min(n/o,1)*Dh)};return t?{message:t,...i}:i}function ZN(r){if(r.total!==void 0&&r.percent!==void 0){if(r.percent>=Dh)return"";let e=Math.min(Math.max(Math.round(r.percent),0),Dh-1);return r.message?d("cli.out.task.progressMessagePercent",r.message,e):d("cli.out.task.progressPercent",e)}return r.message?d("cli.out.task.progressMessageText",r.message,r.current):d("cli.out.task.progressText",r.current)}function _h(r){return Math.round(r*HP)/HP}F();I();re();function JP(r){return Rc(r)?tW(r.category):1}function eW(r){return r instanceof Error?r.message||r.name:Ri(r)||d("common.err.unexpected")}function od(r,e){return Rc(r)?rW(r,e):{code:"error",name:r instanceof Error&&r.name||"Error",message:eW(r),internal:!0,stack:r instanceof Error?r.stack:void 0,cause:uh(r)}}function tW(r){switch(r){case"usage":return 2;case"lockBusy":return 3;case"lockCompromised":return 4;case"networkAuth":return 5;case"conflict":return 6;case"cancel":return 130;default:return 1}}function rW(r,e){let t=e?YP(r.properties,e):r.properties;return{code:r.errorCode,name:r.name,message:nW(r,t),hint:oW(r,t),details:sW(r,t,e),internal:!1,category:r.category,style:r.style,errorType:r.errorType==null?void 0:String(r.errorType),errorDialogStyle:r.errorDialogStyle,hintMessage:r.hintMessage,locationPath:r.locationPath,properties:r.properties}}function nW(r,e){return QP(r.errorCode,e)??Nw(r)}function QP(r,e){let t=Oh(e),n=Ah(r,e),o=tr(n,t);if(o){if(n!==r)return o;let s=tr(`${r}.desc`,t);return s?`${o}
|
|
38
|
+
${s}`:o}let i=n===r?void 0:tr(r,t);if(!i)return;let a=tr(`${r}.desc`,t);return a?`${i}
|
|
39
|
+
${a}`:i}function oW(r,e){let t=Ww(r);if(t)return t;if(r.errorCode==="err.cli.unknownCommand"){let i=iW(e);if(i)return i}let n=Oh(e),o=Ah(r.errorCode,e);if(o!==r.errorCode){let i=tr(`${o}.hint`,n);if(i)return i}if(pn(n.sources)){let i=tr(`${r.errorCode}.hintWithSources`,n);if(i)return i}return tr(`${r.errorCode}.hint`,n)}function iW(r){let e=id(r.suggestedCommands);if(e.length!==0)return d("err.cli.unknownCommand.suggestion.hint",{commands:aW(e)})}function aW(r){return r.length===1?` '${r[0]}'`:`
|
|
29
40
|
${r.map(e=>` '${e}'`).join(`
|
|
30
|
-
`)}`}function iu(r,e){let t=Cr(e.reason);return t?`${r}.${t}`:r}function LI(r,e,t){let n=[...BI(e.issues,t),...jI(r.errorCode,e),...qI(e.sqlInfos)];return n.length>0?n:void 0}function _C(r,e){let t=NI(e);return t.size===0?r:{...r,input:ou(r.input,t),option:ou(r.option,t),flag:ou(r.flag,t),sources:IC(r.sources,t),inputs:IC(r.inputs,t)}}function NI(r){let e=new Map;for(let n of r.commandSpec.flags)n.alias&&e.set(n.alias,n);let t=new Map;for(let n of r.commandArgv){if(n==="--")break;if(n.startsWith("--")||!n.startsWith("-")||n.length<=1)continue;let o=n.slice(1);for(let i=0;i<o.length;i++){let a=o[i],s=e.get(a);if(s&&(t.set(s.name,`-${a}`),s.takesValue))break}}return t}function ou(r,e){return typeof r=="string"?LC(r,e):r}function IC(r,e){return Array.isArray(r)?r.map(t=>typeof t=="string"?LC(t,e):t):r}function LC(r,e){let t=/^--([A-Za-z0-9-]+)(.*)$/.exec(r);if(!t)return r;let n=e.get(t[1]);if(!n)return r;let o=t[2];return o.startsWith("=")?`${n} ${o.slice(1)}`:`${n}${o}`}function WI(r){let e=Ic(r.sourceIds);return e.length===0?[]:e.flatMap(t=>{let n=UI(t,r);return n?[n]:[]})}function UI(r,e){let t=Cr(e.commandName),n=Cr(e.envName)??"SUCCAPP_SERVER";switch(r){case"serverPositional":return t?Mc(d("cli.err.context.exampleCommandUrl",{commandName:t})):d("cli.err.context.exampleUrl");case"serverOption":return t?Mc(d("cli.err.context.exampleCommandServer",{commandName:t})):d("cli.err.context.exampleServerOpt");case"workspaceRemoteAdd":return Mc(d("cli.err.context.workspaceRemoteAdd"));case"environmentServer":return t?Mc(d("cli.err.context.exampleEnvUrl",{envName:n,commandName:t})):d("cli.err.context.text",{envName:n});default:return}}function Mc(r){return`'${r}'`}function jI(r,e){let t=Ic(e.details),n=au(e),o=iu(r,e);if(o!==r){let a=Mt(`${o}.desc`,n);a&&t.push(a)}let i=Cr(e.detailKey);if(i){let a=Mt(`${r}.detail.${i}`,n);a&&t.push(a)}return t}function au(r){let e={};for(let[n,o]of Object.entries(r)){if(typeof o=="string"||typeof o=="number"||typeof o=="boolean"){e[n]=n==="value"?DC(o):o;continue}let i=Ic(o);i.length>0&&(e[n]=n==="sources"?FC(i):i.join(", "))}e.input=VI(r),Object.hasOwn(r,"value")&&(e.value=DC(r.value));let t=WI(r);return t.length>0&&(e.sources=FC(t)),e}function FC(r){return r.length<=1?r[0]??"":r.length===2?d("cli.err.context.sourceListPair",{first:r[0],second:r[1]}):d("cli.err.context.sourceListMany",{head:r.slice(0,-1).join(d("cli.err.context.sourceListSeparator")),tail:r[r.length-1]})}function VI(r){let e=Cr(r.input);if(e)return e;let t=Cr(r.option)??Cr(r.flag);if(t)return t;let n=Cr(r.argument);if(n)return n;let o=Cr(r.inputId);return o?Mt(`cli.input.${o}`)??o:d("cli.input.value")}function DC(r){return r==null||r===""?d("cli.out.value.none"):String(r)}function BI(r,e){return Array.isArray(r)?r.flatMap(t=>{if(!W(t))return[];let n=Cr(t.errorCode);if(!n||!W(t.properties))return[];let o=e?_C(t.properties,e):t.properties,i=OC(n,o);return i?[i]:[]}):[]}function Ic(r){return Array.isArray(r)?r.flatMap(e=>typeof e=="string"&&e?[e]:[]):[]}function Cr(r){return typeof r=="string"&&r?r:void 0}function qI(r){return Array.isArray(r)?r.flatMap((e,t)=>$I(e,t)):[]}function $I(r,e){if(!W(r))return[];let t=typeof r.sqlType=="string"?r.sqlType:d("cli.out.value.unknown"),n=typeof r.tableName=="string"?` ${r.tableName}`:"",o=HI(r);return[`#${e} ${t}${n}${o}`]}function HI(r){let e=[];return r.schemaMutation===!0&&e.push(d("cli.cmd.db.exec.schemaMutation")),r.dataMutation===!0&&r.manipulateAllRows===!0&&e.push(d("cli.cmd.db.exec.fullTableData")),e.length?` (${e.join(", ")})`:""}Ie();var Wc=require("crypto");F();_();Z();F();var zI=/\/+$/,GI=/^https?:\/\//i,KI="127.0.0.1",JI="localhost";function su(r){let e;try{e=new URL(r.trim())}catch(t){throw new Zs(r,t)}return e.hostname===KI&&(e.hostname=JI),e.pathname.length>1&&(e.pathname=e.pathname.replace(/\/+$/,"")),e}function Ce(r){return su(r).href.replace(zI,"")}function Je(r,e){let t=su(r),n=su(e);return t.hostname===n.hostname&&t.port===n.port&&t.pathname===n.pathname}function Sr(r){return r!==void 0&&GI.test(r)}F();var To=E(require("node:os"));var QI=2,cu;function NC(){let e=Fn().source==="cli"?"SuccAppCLI":"SuccAppForVSCode";return[`SuccAppDevTool/${QI}`,`(${YI()})`,`${e}/${In}`,`Node.js/${process.versions.node}`].join(" ")}function YI(){return cu||(cu=XI()),cu}function XI(){switch(process.platform){case"darwin":return ZI();case"win32":return`Windows NT ${eF()}; ${tF()}`;case"linux":return`X11; Linux ${rF()}`;default:return WC(`${process.platform}; ${To.arch()}`)||"Unknown OS"}}function ZI(){return"Macintosh; Intel Mac OS X"}function eF(){return/^(\d+\.\d+)/.exec(To.release())?.[1]??"10.0"}function tF(){return To.arch()==="ia32"?"WOW64":"Win64; x64"}function rF(){switch(To.arch()){case"x64":return"x86_64";case"arm64":return"aarch64";default:return WC(To.arch())||"unknown"}}function WC(r){return r.replace(/[^A-Za-z0-9._~; -]/g,"_").trim()}F();_();_n();Z();Si();var du=512;async function Dc(r,e){r.ok||await hF(r,e);let t=await $C(r,e);if(t.trim().length===0)throw uu(e,r,"empty response body");let n=gF(t,e,r);return HC(n,e,r),n}async function qC(r,e){if(!UC(r.headers.get("content-type")??void 0))return;let t=await $C(r,e);if(t.trim().length===0)return;let n;try{n=JSON.parse(t)}catch{return}HC(n,e,r)}async function hF(r,e){if(r.status===401)throw new Ue({serverUrl:e.serverUrl});let t;try{t=await r.text()}catch(n){throw new St(e.url,n instanceof Error?n:void 0)}throw new nr(r.status,t,r.statusText,new Error(`SuccBI HTTP ${r.status} ${r.statusText}: ${e.url}`),r.headers.get("content-type")??void 0)}async function $C(r,e){try{return await r.text()}catch(t){throw uu(e,r,"cannot read response body",t)}}function gF(r,e,t){try{return JSON.parse(r)}catch(n){throw uu(e,t,"response body is not valid JSON",n,r)}}function HC(r,e,t){if(W(r)){if(vF(r))throw yF(r,e,t);if(r.result===!1)throw CF(r,e,t)}}function yF(r,e,t){let n=Ra(r),o=On(n),i=lt(o)??lt(n),a=i??"err.net.invalidResponse",s={...Lt(o),...Lt(n),...mu(e,t),...i?{}:{reason:"missingErrorCode"}};return new me(a,{message:o.message||n.message||a,properties:s,errorType:gr(o)??gr(n),errorDialogStyle:o.errorDialogStyle??n.errorDialogStyle,hintMessage:o.hintMessage??n.hintMessage,locationPath:o.locationPath??n.locationPath,cause:n})}function uu(r,e,t,n,o){return new me("err.net.invalidResponse",{properties:{...mu(r,e),reason:t,responsePreview:zC(o),responseTruncated:o!==void 0&&o.length>du},cause:n})}function CF(r,e,t){let n=SF(r)??"err.net.invalidResponse";return new me(n,{message:typeof r.message=="string"?r.message:n,properties:{...mu(e,t),reason:"failureResult",responsePreview:zC(JSON.stringify(r))}})}function SF(r){if(typeof r.errorCode=="string")return r.errorCode;if(typeof r.code=="string")return r.code}function mu(r,e){return{url:r.url,endpoint:r.endpoint??new URL(r.url).pathname,serverUrl:r.serverUrl,operation:r.operation,request:r.request,httpStatus:e.status,contentType:e.headers.get("content-type")??void 0}}function zC(r){if(r===void 0)return;let e=r.trim();if(e.length!==0)return e.length>du?`${e.slice(0,du)}...`:e}function vF(r){return typeof r.errorCode=="string"||typeof r.className=="string"||Array.isArray(r.stack)}async function $n(r,e){try{let t=await fetch(r,{...e,headers:kF(e?.headers)});return t.status>=500&&await Hn(t,r),t}catch(t){throw t instanceof nr||t instanceof St?t:new St(r,t instanceof Error?t:void 0)}}async function Oc(r){let e=`${r}/api/dev-tool/v2/server/ping`,t=await $n(e);return Dc(t,{url:e,endpoint:"/server/ping",serverUrl:r})}async function Hn(r,e){let t;try{t=await r.text()}catch(n){throw new St(e,n instanceof Error?n:void 0)}throw new nr(r.status,t,r.statusText,new Error(`SuccBI HTTP ${r.status} ${r.statusText}: ${e}`),r.headers.get("content-type")??void 0)}function fu(r){if(!r)return{};if(r instanceof Headers){let e={};return r.forEach((t,n)=>{e[n]=t}),e}return Array.isArray(r)?Object.fromEntries(r):{...r}}function kF(r){let e=fu(r);return Ac(e,"User-Agent",NC()),Ac(e,"X-Succ-Client-Type","nodejs"),Ac(e,"Accept","application/json"),Ac(e,"Accept-Encoding","gzip"),e}function Ac(r,e,t){Object.keys(r).some(o=>An(o,e))||(r[e]=t)}var wF="SuccApp-Devtool",PF="SUCCAPP_OAUTH_APP_ID",RF="/api/oauth2/authorize",GC="/api/oauth2/token",KC="/api/oauth2/refreshToken";function Lc(){return process.env[PF]?.trim()||wF}function JC(r,e){let t=new URL(`${Ce(r)}${RF}`);return t.searchParams.set("appid",e.appId??Lc()),t.searchParams.set("redirect_uri",e.redirectUri),t.searchParams.set("response_type","code"),t.searchParams.set("state",e.state),t.searchParams.set("code_challenge",e.codeChallenge),t.searchParams.set("code_challenge_method","S256"),t.toString()}async function QC(r,e){let t=Ce(r),n=await XC(`${t}${GC}`,{grant_type:"code",appid:e.appId??Lc(),code:e.code,code_verifier:e.codeVerifier});return ZC(t,GC,n)}async function YC(r,e){let t=Ce(r),n=await XC(`${t}${KC}`,{refresh_token:e.refreshToken});return ZC(t,KC,n)}async function XC(r,e){let t=await $n(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});return t.ok||await Hn(t,r),t}async function ZC(r,e,t){let n;try{n=await t.json()}catch(a){throw _c(r,e,"response body is not valid JSON",a)}if(!W(n))throw _c(r,e,"response body is not an object");if(n.result!==!0)throw _c(r,e,"token response result is not true");let o=Ae(n.access_token),i=Ae(n.refresh_token);if(!o||!i)throw _c(r,e,"token response misses token fields");return I({accessToken:o,refreshToken:i,expiresAt:bF(n.expires_in),scope:EF(n.scope)})}function bF(r){let e=typeof r=="number"?r:typeof r=="string"?Number(r):Number.NaN;if(!(!Number.isFinite(e)||e<=0))return new Date(Date.now()+e*1e3).toISOString()}function EF(r){return typeof r=="string"?an(r.split(/\s+/)):an(r)}function _c(r,e,t,n){return new me("err.login.oauthTokenInvalid",{properties:{serverUrl:r,endpoint:e,reason:t},cause:n})}var oS=E(require("http"));F();_();J();var TF=T("common.promise"),hu=new WeakMap,vi=new WeakMap;function yu(r,e){return gu(r)?.get(e)}function vr(r,e,t){let n=gu(r);n||(n=new Map,hu.set(r,n));let o=n.get(e);if(o)return o;let i=(async()=>t())().finally(()=>{let a=gu(r);!a||a.get(e)!==i||(a.delete(e),a.size===0&&hu.delete(r))});return n.set(e,i),i}function ki(r,e,t,n,o={}){let i=vi.get(r);i||(i=new Map,vi.set(r,i));let a=Date.now(),s=i.get(e);s&&MF(s.timer)&&i.delete(e);let c=i.get(e),l=c?.firstScheduledAt??a;c&&clearTimeout(c.timer);let p=Math.max(0,t);if(o.maxWaitMs!==void 0){let g=Math.max(0,l+o.maxWaitMs-a);p=Math.min(p,g)}let u=setTimeout(()=>{let g=vi.get(r);g?.get(e)?.timer===u&&(g.delete(e),g.size===0&&vi.delete(r)),Promise.resolve().then(n).catch(m=>TF.warn(`debounced task failed: ${e}`,m))},p);return i.set(e,{timer:u,firstScheduledAt:l}),u}function wi(r,e){let t=vi.get(r),n=t?.get(e)?.timer;return!t||!n?!1:(clearTimeout(n),t.delete(e),t.size===0&&vi.delete(r),!0)}function gu(r){return hu.get(r)}function MF(r){return!r||typeof r!="object"?!1:r._destroyed===!0}async function eS(r,e){let t;try{return await Promise.race([r,new Promise(n=>{t=setTimeout(()=>n(!1),Math.max(0,e))})])}finally{t&&clearTimeout(t)}}var Cu="127.0.0.1",tS="/callback",IF=2*60*1e3;async function iS(r){let e=!1,t,n,o=new Promise((l,p)=>{t=l,n=p}),i=oS.createServer((l,p)=>{let u=new URL(l.url??"/",`http://${Cu}`);if(u.pathname!==tS){Wa(p,404,"Not Found");return}FF(u,p,r.state).then(g=>{e||(e=!0,t(g))}).catch(g=>{e||(e=!0,n(g))})});await DF(i);let a=i.address();if(!a||typeof a=="string")throw await Nc(i),new me("err.login.oauthLoopbackFailed",{properties:{reason:"loopback server address is unavailable"}});let s=r.timeoutMs??IF,c=()=>{e||(e=!0,n(nS()))};if(r.abortSignal?.aborted)throw await Nc(i),nS();return r.abortSignal?.addEventListener("abort",c,{once:!0}),{redirectUri:`http://${Cu}:${a.port}${tS}`,async waitForCallback(){try{let l=await eS(o,s);if(l===!1)throw new me("err.login.oauthTimeout",{category:"networkAuth",style:"warn"});return l}finally{r.abortSignal?.removeEventListener("abort",c),await Nc(i)}},dispose(){return r.abortSignal?.removeEventListener("abort",c),Nc(i)}}}async function FF(r,e,t){if(r.searchParams.get("state")!==t)throw Wa(e,400,"Authorization state does not match."),new me("err.login.oauthStateMismatch",{category:"networkAuth",style:"warn"});if(r.searchParams.get("error"))throw Wa(e,400,"Authorization failed."),rS("authorization server returned error");let i=r.searchParams.get("code");if(!i)throw Wa(e,400,"Authorization code is missing."),rS("authorization code is missing");return Wa(e,200,"Authorization completed. You can close this page."),{code:i}}function DF(r){return new Promise((e,t)=>{let n=o=>t(o);r.once("error",n),r.listen(0,Cu,()=>{r.off("error",n),e()})})}function Nc(r){return new Promise(e=>{if(!r.listening){e();return}r.close(()=>e())})}function Wa(r,e,t){r.writeHead(e,{"Content-Type":"text/html; charset=utf-8"}),r.end(`<!doctype html><html><body>${cy(t)}</body></html>`)}function rS(r){return new me("err.login.oauthInvalidCallback",{category:"networkAuth",style:"warn",properties:{reason:r}})}function nS(){return new me("err.base.cancel",{category:"cancel",style:"silent"})}async function sS(r,e={}){let t=e.appId??Lc(),n=aS(32),o=aS(64),i=AF(o),a=await iS({state:n,timeoutMs:e.timeoutMs,abortSignal:e.abortSignal});try{let s=JC(r,{appId:t,redirectUri:a.redirectUri,state:n,codeChallenge:i});e.onProgress?.({stage:"openingBrowser"});try{await e.openExternal?.(s)}catch{e.onProgress?.({stage:"manualAuthorizationUrl",authorizationUrl:s})}e.onProgress?.({stage:"waitingForCallback"});let c=await a.waitForCallback();e.onProgress?.({stage:"exchangingToken"});let l=await QC(r,{appId:t,code:c.code,codeVerifier:o});return{type:"oauth",token:l.accessToken,refreshToken:l.refreshToken,expiresAt:l.expiresAt,scope:l.scope}}finally{await a.dispose()}}function aS(r){return Fd((0,Wc.randomBytes)(r))}function AF(r){return Fd((0,Wc.createHash)("sha256").update(r).digest())}Ie();F();_();Z();function Su(r,e=Date.now()){let t=lS(r);return t!==void 0&&t<=e}function cS(r,e,t=Date.now()){let n=lS(r);return n!==void 0&&t>=n-e}function lS(r){if(!r)return;let e=Date.parse(r);return Number.isFinite(e)?e:void 0}var ES=E(require("os")),mn=E(require("path"));tt();var kS=E(require("fs"));function ja(r,e=!1){let t=r.length,n=0,o="",i=0,a=16,s=0,c=0,l=0,p=0,u=0;function g(f,S){let k=0,b=0;for(;k<f||!S;){let P=r.charCodeAt(n);if(P>=48&&P<=57)b=b*16+P-48;else if(P>=65&&P<=70)b=b*16+P-65+10;else if(P>=97&&P<=102)b=b*16+P-97+10;else break;n++,k++}return k<f&&(b=-1),b}function m(f){n=f,o="",i=0,a=16,u=0}function h(){let f=n;if(r.charCodeAt(n)===48)n++;else for(n++;n<r.length&&Pi(r.charCodeAt(n));)n++;if(n<r.length&&r.charCodeAt(n)===46)if(n++,n<r.length&&Pi(r.charCodeAt(n)))for(n++;n<r.length&&Pi(r.charCodeAt(n));)n++;else return u=3,r.substring(f,n);let S=n;if(n<r.length&&(r.charCodeAt(n)===69||r.charCodeAt(n)===101))if(n++,(n<r.length&&r.charCodeAt(n)===43||r.charCodeAt(n)===45)&&n++,n<r.length&&Pi(r.charCodeAt(n))){for(n++;n<r.length&&Pi(r.charCodeAt(n));)n++;S=n}else u=3;return r.substring(f,S)}function y(){let f="",S=n;for(;;){if(n>=t){f+=r.substring(S,n),u=2;break}let k=r.charCodeAt(n);if(k===34){f+=r.substring(S,n),n++;break}if(k===92){if(f+=r.substring(S,n),n++,n>=t){u=2;break}switch(r.charCodeAt(n++)){case 34:f+='"';break;case 92:f+="\\";break;case 47:f+="/";break;case 98:f+="\b";break;case 102:f+="\f";break;case 110:f+=`
|
|
31
|
-
`;break;case 114:
|
|
32
|
-
`),s++,l=n,a=14;switch(
|
|
33
|
-
`+" ".repeat(e)),"\r":new Array(
|
|
34
|
-
`+" ".repeat(e))}," ":{"\n":new Array(
|
|
35
|
-
`+" ".repeat(e)),"\r":new Array(
|
|
36
|
-
`+" ".repeat(e))}},
|
|
41
|
+
`)}`}function Ah(r,e){let t=pn(e.reason);return t?`${r}.${t}`:r}function sW(r,e,t){let n=[...mW(e.issues,t),...dW(r.errorCode,e),...fW(e.sqlInfos)];return n.length>0?n:void 0}function YP(r,e){let t=cW(e);return t.size===0?r:{...r,input:Fh(r.input,t),option:Fh(r.option,t),flag:Fh(r.flag,t),sources:GP(r.sources,t),inputs:GP(r.inputs,t)}}function cW(r){let e=new Map;for(let n of r.commandSpec.flags)n.alias&&e.set(n.alias,n);let t=new Map;for(let n of r.commandArgv){if(n==="--")break;if(n.startsWith("--")||!n.startsWith("-")||n.length<=1)continue;let o=n.slice(1);for(let i=0;i<o.length;i++){let a=o[i],s=e.get(a);if(s&&(t.set(s.name,`-${a}`),s.takesValue))break}}return t}function Fh(r,e){return typeof r=="string"?XP(r,e):r}function GP(r,e){return Array.isArray(r)?r.map(t=>typeof t=="string"?XP(t,e):t):r}function XP(r,e){let t=/^--([A-Za-z0-9-]+)(.*)$/.exec(r);if(!t)return r;let n=e.get(t[1]);if(!n)return r;let o=t[2];return o.startsWith("=")?`${n} ${o.slice(1)}`:`${n}${o}`}function lW(r){let e=id(r.sourceIds);return e.length===0?[]:e.flatMap(t=>{let n=uW(t,r);return n?[n]:[]})}function uW(r,e){let t=pn(e.commandName),n=pn(e.envName)??"SUCCAPP_SERVER";switch(r){case"serverPositional":return t?nd(d("cli.err.context.exampleCommandUrl",{commandName:t})):d("cli.err.context.exampleUrl");case"serverOption":return t?nd(d("cli.err.context.exampleCommandServer",{commandName:t})):d("cli.err.context.exampleServerOpt");case"workspaceRemoteAdd":return nd(d("cli.err.context.workspaceRemoteAdd"));case"environmentServer":return t?nd(d("cli.err.context.exampleEnvUrl",{envName:n,commandName:t})):d("cli.err.context.text",{envName:n});default:return}}function nd(r){return`'${r}'`}function dW(r,e){let t=id(e.details),n=Oh(e),o=Ah(r,e);if(o!==r){let a=tr(`${o}.desc`,n);a&&t.push(a)}let i=pn(e.detailKey);if(i){let a=tr(`${r}.detail.${i}`,n);a&&t.push(a)}return t}function Oh(r){let e={};for(let[n,o]of Object.entries(r)){if(typeof o=="string"||typeof o=="number"||typeof o=="boolean"){e[n]=n==="value"?KP(o):o;continue}let i=id(o);i.length>0&&(e[n]=n==="sources"?zP(i):i.join(", "))}e.input=pW(r),Object.hasOwn(r,"value")&&(e.value=KP(r.value));let t=lW(r);return t.length>0&&(e.sources=zP(t)),e}function zP(r){return r.length<=1?r[0]??"":r.length===2?d("cli.err.context.sourceListPair",{first:r[0],second:r[1]}):d("cli.err.context.sourceListMany",{head:r.slice(0,-1).join(d("cli.err.context.sourceListSeparator")),tail:r[r.length-1]})}function pW(r){let e=pn(r.input);if(e)return e;let t=pn(r.option)??pn(r.flag);if(t)return t;let n=pn(r.argument);if(n)return n;let o=pn(r.inputId);return o?tr(`cli.input.${o}`)??o:d("cli.input.value")}function KP(r){return r==null||r===""?d("cli.out.value.none"):String(r)}function mW(r,e){return Array.isArray(r)?r.flatMap(t=>{if(!W(t))return[];let n=pn(t.errorCode);if(!n||!W(t.properties))return[];let o=e?YP(t.properties,e):t.properties,i=QP(n,o);return i?[i]:[]}):[]}function id(r){return Array.isArray(r)?r.flatMap(e=>typeof e=="string"&&e?[e]:[]):[]}function pn(r){return typeof r=="string"&&r?r:void 0}function fW(r){return Array.isArray(r)?r.flatMap((e,t)=>hW(e,t)):[]}function hW(r,e){if(!W(r))return[];let t=typeof r.sqlType=="string"?r.sqlType:d("cli.out.value.unknown"),n=typeof r.tableName=="string"?` ${r.tableName}`:"",o=gW(r);return[`#${e} ${t}${n}${o}`]}function gW(r){let e=[];return r.schemaMutation===!0&&e.push(d("cli.cmd.db.exec.schemaMutation")),r.dataMutation===!0&&r.manipulateAllRows===!0&&e.push(d("cli.cmd.db.exec.fullTableData")),e.length?` (${e.join(", ")})`:""}ze();var pd=require("crypto");F();O();re();F();var yW=/\/+$/,CW=/^https?:\/\//i,SW="127.0.0.1",vW="localhost";function Lh(r){let e;try{e=new URL(r.trim())}catch(t){throw new Iu(r,t)}return e.hostname===SW&&(e.hostname=vW),e.pathname.length>1&&(e.pathname=e.pathname.replace(/\/+$/,"")),e}function _e(r){return Lh(r).href.replace(yW,"")}function gt(r,e){let t=Lh(r),n=Lh(e);return t.hostname===n.hostname&&t.port===n.port&&t.pathname===n.pathname}function mn(r){return r!==void 0&&CW.test(r)}F();var Di=E(require("node:os"));var kW=2,Nh;function ZP(){let e=Fo().source==="cli"?"SuccAppCLI":"SuccAppForVSCode";return[`SuccAppDevTool/${kW}`,`(${wW()})`,`${e}/${cn}`,`Node.js/${process.versions.node}`].join(" ")}function wW(){return Nh||(Nh=PW()),Nh}function PW(){switch(process.platform){case"darwin":return RW();case"win32":return`Windows NT ${bW()}; ${EW()}`;case"linux":return`X11; Linux ${TW()}`;default:return eR(`${process.platform}; ${Di.arch()}`)||"Unknown OS"}}function RW(){return"Macintosh; Intel Mac OS X"}function bW(){return/^(\d+\.\d+)/.exec(Di.release())?.[1]??"10.0"}function EW(){return Di.arch()==="ia32"?"WOW64":"Win64; x64"}function TW(){switch(Di.arch()){case"x64":return"x86_64";case"arm64":return"aarch64";default:return eR(Di.arch())||"unknown"}}function eR(r){return r.replace(/[^A-Za-z0-9._~; -]/g,"_").trim()}F();O();wi();re();var Wh=512;async function ad(r,e){r.ok||await MW(r,e);let t=await xW(r,e);if(t.trim().length===0)throw Uh(e,r,"empty response body");let n=IW(t,e,r);return DW(n,e,r),n}async function MW(r,e){let t;try{t=await r.text()}catch(o){throw new Vt(e.url,o instanceof Error?o:void 0)}let n=_W(t,e,r);throw n||new jr(r.status,t,r.statusText,new Error(`SuccBI HTTP ${r.status} ${r.statusText}: ${e.url}`),r.headers.get("content-type")??void 0)}async function xW(r,e){try{return await r.text()}catch(t){throw Uh(e,r,"cannot read response body",t)}}function IW(r,e,t){try{return JSON.parse(r)}catch(n){throw Uh(e,t,"response body is not valid JSON",n,r)}}function _W(r,e,t){if(r.trim().length===0)return;let n;try{n=JSON.parse(r)}catch{return}return tR(n,e,t)}function DW(r,e,t){let n=tR(r,e,t);if(n)throw n}function tR(r,e,t){if(W(r)){if(LW(r))return FW(r,e,t);if(r.result===!1)return AW(r,e,t)}}function FW(r,e,t){let n=vc(r),o=Lo(n),i=jt(o)??jt(n),a=i??"err.net.invalidResponse",s={...dr(o),...dr(n),...$h(e,t),...i?{}:{reason:"missingErrorCode"}};return new Pe(a,{message:o.message||n.message||a,properties:s,errorType:un(o)??un(n),errorDialogStyle:o.errorDialogStyle??n.errorDialogStyle,hintMessage:o.hintMessage??n.hintMessage,locationPath:o.locationPath??n.locationPath,cause:n})}function Uh(r,e,t,n,o){return new Pe("err.net.invalidResponse",{properties:{...$h(r,e),reason:t,responsePreview:rR(o),responseTruncated:o!==void 0&&o.length>Wh},cause:n})}function AW(r,e,t){let n=OW(r)??"err.net.invalidResponse";return new Pe(n,{message:typeof r.message=="string"?r.message:n,properties:{...$h(e,t),reason:"failureResult",responsePreview:rR(JSON.stringify(r))}})}function OW(r){if(typeof r.errorCode=="string")return r.errorCode;if(typeof r.code=="string")return r.code}function $h(r,e){return{url:r.url,endpoint:r.endpoint??new URL(r.url).pathname,serverUrl:r.serverUrl,operation:r.operation,request:r.request,httpStatus:e.status,contentType:e.headers.get("content-type")??void 0}}function rR(r){if(r===void 0)return;let e=r.trim();if(e.length!==0)return e.length>Wh?`${e.slice(0,Wh)}...`:e}function LW(r){return typeof r.errorCode=="string"||typeof r.className=="string"||Array.isArray(r.stack)}async function Ho(r,e){try{let t=await fetch(r,{...e,headers:WW(e?.headers)});return t.ok||await NW(t,r),t}catch(t){throw t instanceof jr||t instanceof Vt?t:new Vt(r,t instanceof Error?t:void 0)}}async function cd(r){let e=`${r}/api/dev-tool/v2/server/ping`,t=await Ho(e);return ad(t,{url:e,endpoint:"/server/ping",serverUrl:r})}async function NW(r,e){let t;try{t=await r.text()}catch(o){throw new Vt(e,o instanceof Error?o:void 0)}let n=new jr(r.status,t,r.statusText,new Error(`SuccBI HTTP ${r.status} ${r.statusText}: ${e}`),r.headers.get("content-type")??void 0);throw n.setProperty("url",e),n}function jh(r){if(!r)return{};if(r instanceof Headers){let e={};return r.forEach((t,n)=>{e[n]=t}),e}return Array.isArray(r)?Object.fromEntries(r):{...r}}function WW(r){let e=jh(r);return sd(e,"User-Agent",ZP()),sd(e,"X-Succ-Client-Type","nodejs"),sd(e,"Accept","application/json"),sd(e,"Accept-Encoding","gzip"),e}function sd(r,e,t){Object.keys(r).some(o=>Oo(o,e))||(r[e]=t)}var UW="SuccApp-Devtool",$W="SUCCAPP_OAUTH_APP_ID",jW="/api/oauth2/authorize",nR="/api/oauth2/token",oR="/api/oauth2/refreshToken";function ud(){return process.env[$W]?.trim()||UW}function iR(r,e){let t=new URL(`${_e(r)}${jW}`);return t.searchParams.set("appid",e.appId??ud()),t.searchParams.set("redirect_uri",e.redirectUri),t.searchParams.set("response_type","code"),t.searchParams.set("state",e.state),t.searchParams.set("code_challenge",e.codeChallenge),t.searchParams.set("code_challenge_method","S256"),t.toString()}async function aR(r,e){let t=_e(r),n=await cR(`${t}${nR}`,{grant_type:"code",appid:e.appId??ud(),code:e.code,code_verifier:e.codeVerifier});return lR(t,nR,n)}async function sR(r,e){let t=_e(r),n=await cR(`${t}${oR}`,{refresh_token:e.refreshToken});return lR(t,oR,n)}async function cR(r,e){return await Ho(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async function lR(r,e,t){let n;try{n=await t.json()}catch(a){throw ld(r,e,"response body is not valid JSON",a)}if(!W(n))throw ld(r,e,"response body is not an object");if(n.result!==!0)throw ld(r,e,"token response result is not true");let o=Qe(n.access_token),i=Qe(n.refresh_token);if(!o||!i)throw ld(r,e,"token response misses token fields");return D({accessToken:o,refreshToken:i,expiresAt:VW(n.expires_in),scope:qW(n.scope)})}function VW(r){let e=typeof r=="number"?r:typeof r=="string"?Number(r):Number.NaN;if(!(!Number.isFinite(e)||e<=0))return new Date(Date.now()+e*1e3).toISOString()}function qW(r){return typeof r=="string"?Zn(r.split(/\s+/)):Zn(r)}function ld(r,e,t,n){return new Pe("err.login.oauthTokenInvalid",{properties:{serverUrl:r,endpoint:e,reason:t},cause:n})}var fR=E(require("http"));F();O();Y();var BW=M("common.promise"),Vh=new WeakMap,ja=new WeakMap;function Bh(r,e){return qh(r)?.get(e)}function fn(r,e,t){let n=qh(r);n||(n=new Map,Vh.set(r,n));let o=n.get(e);if(o)return o;let i=(async()=>t())().finally(()=>{let a=qh(r);!a||a.get(e)!==i||(a.delete(e),a.size===0&&Vh.delete(r))});return n.set(e,i),i}function Va(r,e,t,n,o={}){let i=ja.get(r);i||(i=new Map,ja.set(r,i));let a=Date.now(),s=i.get(e);s&&HW(s.timer)&&i.delete(e);let c=i.get(e),l=c?.firstScheduledAt??a;c&&clearTimeout(c.timer);let u=Math.max(0,t);if(o.maxWaitMs!==void 0){let g=Math.max(0,l+o.maxWaitMs-a);u=Math.min(u,g)}let p=setTimeout(()=>{let g=ja.get(r);g?.get(e)?.timer===p&&(g.delete(e),g.size===0&&ja.delete(r)),Promise.resolve().then(n).catch(m=>BW.warn(`debounced task failed: ${e}`,m))},u);return i.set(e,{timer:p,firstScheduledAt:l}),p}function qa(r,e){let t=ja.get(r),n=t?.get(e)?.timer;return!t||!n?!1:(clearTimeout(n),t.delete(e),t.size===0&&ja.delete(r),!0)}function qh(r){return Vh.get(r)}function HW(r){return!r||typeof r!="object"?!1:r._destroyed===!0}async function uR(r,e){let t;try{return await Promise.race([r,new Promise(n=>{t=setTimeout(()=>n(!1),Math.max(0,e))})])}finally{t&&clearTimeout(t)}}var Hh="127.0.0.1",dR="/callback",zW=2*60*1e3;async function hR(r){let e=!1,t,n,o=new Promise((l,u)=>{t=l,n=u}),i=fR.createServer((l,u)=>{let p=new URL(l.url??"/",`http://${Hh}`);if(p.pathname!==dR){Fc(u,404,"Not Found");return}KW(p,u,r.state).then(g=>{e||(e=!0,t(g))}).catch(g=>{e||(e=!0,n(g))})});await JW(i);let a=i.address();if(!a||typeof a=="string")throw await dd(i),new Pe("err.login.oauthLoopbackFailed",{properties:{reason:"loopback server address is unavailable"}});let s=r.timeoutMs??zW,c=()=>{e||(e=!0,n(mR()))};if(r.abortSignal?.aborted)throw await dd(i),mR();return r.abortSignal?.addEventListener("abort",c,{once:!0}),{redirectUri:`http://${Hh}:${a.port}${dR}`,async waitForCallback(){try{let l=await uR(o,s);if(l===!1)throw new Pe("err.login.oauthTimeout",{category:"networkAuth",style:"warn"});return l}finally{r.abortSignal?.removeEventListener("abort",c),await dd(i)}},dispose(){return r.abortSignal?.removeEventListener("abort",c),dd(i)}}}async function KW(r,e,t){if(r.searchParams.get("state")!==t)throw Fc(e,400,"Authorization state does not match."),new Pe("err.login.oauthStateMismatch",{category:"networkAuth",style:"warn"});if(r.searchParams.get("error"))throw Fc(e,400,"Authorization failed."),pR("authorization server returned error");let i=r.searchParams.get("code");if(!i)throw Fc(e,400,"Authorization code is missing."),pR("authorization code is missing");return Fc(e,200,"Authorization completed. You can close this page."),{code:i}}function JW(r){return new Promise((e,t)=>{let n=o=>t(o);r.once("error",n),r.listen(0,Hh,()=>{r.off("error",n),e()})})}function dd(r){return new Promise(e=>{if(!r.listening){e();return}r.close(()=>e())})}function Fc(r,e,t){r.writeHead(e,{"Content-Type":"text/html; charset=utf-8"}),r.end(`<!doctype html><html><body>${Pw(t)}</body></html>`)}function pR(r){return new Pe("err.login.oauthInvalidCallback",{category:"networkAuth",style:"warn",properties:{reason:r}})}function mR(){return new Pe("err.base.cancel",{category:"cancel",style:"silent"})}async function yR(r,e={}){let t=e.appId??ud(),n=gR(32),o=gR(64),i=QW(o),a=await hR({state:n,timeoutMs:e.timeoutMs,abortSignal:e.abortSignal});try{let s=iR(r,{appId:t,redirectUri:a.redirectUri,state:n,codeChallenge:i});e.onProgress?.({stage:"openingBrowser"});try{await e.openExternal?.(s)}catch{e.onProgress?.({stage:"manualAuthorizationUrl",authorizationUrl:s})}e.onProgress?.({stage:"waitingForCallback"});let c=await a.waitForCallback();e.onProgress?.({stage:"exchangingToken"});let l=await aR(r,{appId:t,code:c.code,codeVerifier:o});return{type:"oauth",token:l.accessToken,refreshToken:l.refreshToken,expiresAt:l.expiresAt,scope:l.scope}}finally{await a.dispose()}}function gR(r){return nh((0,pd.randomBytes)(r))}function QW(r){return nh((0,pd.createHash)("sha256").update(r).digest())}ze();F();O();re();function Gh(r,e=Date.now()){let t=SR(r);return t!==void 0&&t<=e}function CR(r,e,t=Date.now()){let n=SR(r);return n!==void 0&&t>=n-e}function SR(r){if(!r)return;let e=Date.parse(r);return Number.isFinite(e)?e:void 0}var OR=E(require("os")),ao=E(require("path"));nt();var IR=E(require("fs"));function Oc(r,e=!1){let t=r.length,n=0,o="",i=0,a=16,s=0,c=0,l=0,u=0,p=0;function g(h,k){let v=0,b=0;for(;v<h||!k;){let R=r.charCodeAt(n);if(R>=48&&R<=57)b=b*16+R-48;else if(R>=65&&R<=70)b=b*16+R-65+10;else if(R>=97&&R<=102)b=b*16+R-97+10;else break;n++,v++}return v<h&&(b=-1),b}function m(h){n=h,o="",i=0,a=16,p=0}function f(){let h=n;if(r.charCodeAt(n)===48)n++;else for(n++;n<r.length&&Ba(r.charCodeAt(n));)n++;if(n<r.length&&r.charCodeAt(n)===46)if(n++,n<r.length&&Ba(r.charCodeAt(n)))for(n++;n<r.length&&Ba(r.charCodeAt(n));)n++;else return p=3,r.substring(h,n);let k=n;if(n<r.length&&(r.charCodeAt(n)===69||r.charCodeAt(n)===101))if(n++,(n<r.length&&r.charCodeAt(n)===43||r.charCodeAt(n)===45)&&n++,n<r.length&&Ba(r.charCodeAt(n))){for(n++;n<r.length&&Ba(r.charCodeAt(n));)n++;k=n}else p=3;return r.substring(h,k)}function y(){let h="",k=n;for(;;){if(n>=t){h+=r.substring(k,n),p=2;break}let v=r.charCodeAt(n);if(v===34){h+=r.substring(k,n),n++;break}if(v===92){if(h+=r.substring(k,n),n++,n>=t){p=2;break}switch(r.charCodeAt(n++)){case 34:h+='"';break;case 92:h+="\\";break;case 47:h+="/";break;case 98:h+="\b";break;case 102:h+="\f";break;case 110:h+=`
|
|
42
|
+
`;break;case 114:h+="\r";break;case 116:h+=" ";break;case 117:let R=g(4,!0);R>=0?h+=String.fromCharCode(R):p=4;break;default:p=5}k=n;continue}if(v>=0&&v<=31)if(Ac(v)){h+=r.substring(k,n),p=2;break}else p=6;n++}return h}function C(){if(o="",p=0,i=n,c=s,u=l,n>=t)return i=t,a=17;let h=r.charCodeAt(n);if(zh(h)){do n++,o+=String.fromCharCode(h),h=r.charCodeAt(n);while(zh(h));return a=15}if(Ac(h))return n++,o+=String.fromCharCode(h),h===13&&r.charCodeAt(n)===10&&(n++,o+=`
|
|
43
|
+
`),s++,l=n,a=14;switch(h){case 123:return n++,a=1;case 125:return n++,a=2;case 91:return n++,a=3;case 93:return n++,a=4;case 58:return n++,a=6;case 44:return n++,a=5;case 34:return n++,o=y(),a=10;case 47:let k=n-1;if(r.charCodeAt(n+1)===47){for(n+=2;n<t&&!Ac(r.charCodeAt(n));)n++;return o=r.substring(k,n),a=12}if(r.charCodeAt(n+1)===42){n+=2;let v=t-1,b=!1;for(;n<v;){let R=r.charCodeAt(n);if(R===42&&r.charCodeAt(n+1)===47){n+=2,b=!0;break}n++,Ac(R)&&(R===13&&r.charCodeAt(n)===10&&n++,s++,l=n)}return b||(n++,p=1),o=r.substring(k,n),a=13}return o+=String.fromCharCode(h),n++,a=16;case 45:if(o+=String.fromCharCode(h),n++,n===t||!Ba(r.charCodeAt(n)))return a=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return o+=f(),a=11;default:for(;n<t&&S(h);)n++,h=r.charCodeAt(n);if(i!==n){switch(o=r.substring(i,n),o){case"true":return a=8;case"false":return a=9;case"null":return a=7}return a=16}return o+=String.fromCharCode(h),n++,a=16}}function S(h){if(zh(h)||Ac(h))return!1;switch(h){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}function w(){let h;do h=C();while(h>=12&&h<=15);return h}return{setPosition:m,getPosition:()=>n,scan:e?w:C,getToken:()=>a,getTokenValue:()=>o,getTokenOffset:()=>i,getTokenLength:()=>n-i,getTokenStartLine:()=>c,getTokenStartCharacter:()=>i-u,getTokenError:()=>p}}function zh(r){return r===32||r===9}function Ac(r){return r===10||r===13}function Ba(r){return r>=48&&r<=57}var vR;(function(r){r[r.lineFeed=10]="lineFeed",r[r.carriageReturn=13]="carriageReturn",r[r.space=32]="space",r[r._0=48]="_0",r[r._1=49]="_1",r[r._2=50]="_2",r[r._3=51]="_3",r[r._4=52]="_4",r[r._5=53]="_5",r[r._6=54]="_6",r[r._7=55]="_7",r[r._8=56]="_8",r[r._9=57]="_9",r[r.a=97]="a",r[r.b=98]="b",r[r.c=99]="c",r[r.d=100]="d",r[r.e=101]="e",r[r.f=102]="f",r[r.g=103]="g",r[r.h=104]="h",r[r.i=105]="i",r[r.j=106]="j",r[r.k=107]="k",r[r.l=108]="l",r[r.m=109]="m",r[r.n=110]="n",r[r.o=111]="o",r[r.p=112]="p",r[r.q=113]="q",r[r.r=114]="r",r[r.s=115]="s",r[r.t=116]="t",r[r.u=117]="u",r[r.v=118]="v",r[r.w=119]="w",r[r.x=120]="x",r[r.y=121]="y",r[r.z=122]="z",r[r.A=65]="A",r[r.B=66]="B",r[r.C=67]="C",r[r.D=68]="D",r[r.E=69]="E",r[r.F=70]="F",r[r.G=71]="G",r[r.H=72]="H",r[r.I=73]="I",r[r.J=74]="J",r[r.K=75]="K",r[r.L=76]="L",r[r.M=77]="M",r[r.N=78]="N",r[r.O=79]="O",r[r.P=80]="P",r[r.Q=81]="Q",r[r.R=82]="R",r[r.S=83]="S",r[r.T=84]="T",r[r.U=85]="U",r[r.V=86]="V",r[r.W=87]="W",r[r.X=88]="X",r[r.Y=89]="Y",r[r.Z=90]="Z",r[r.asterisk=42]="asterisk",r[r.backslash=92]="backslash",r[r.closeBrace=125]="closeBrace",r[r.closeBracket=93]="closeBracket",r[r.colon=58]="colon",r[r.comma=44]="comma",r[r.dot=46]="dot",r[r.doubleQuote=34]="doubleQuote",r[r.minus=45]="minus",r[r.openBrace=123]="openBrace",r[r.openBracket=91]="openBracket",r[r.plus=43]="plus",r[r.slash=47]="slash",r[r.formFeed=12]="formFeed",r[r.tab=9]="tab"})(vR||(vR={}));var _r=new Array(20).fill(0).map((r,e)=>" ".repeat(e)),Ha=200,Kh={" ":{"\n":new Array(Ha).fill(0).map((r,e)=>`
|
|
44
|
+
`+" ".repeat(e)),"\r":new Array(Ha).fill(0).map((r,e)=>"\r"+" ".repeat(e)),"\r\n":new Array(Ha).fill(0).map((r,e)=>`\r
|
|
45
|
+
`+" ".repeat(e))}," ":{"\n":new Array(Ha).fill(0).map((r,e)=>`
|
|
46
|
+
`+" ".repeat(e)),"\r":new Array(Ha).fill(0).map((r,e)=>"\r"+" ".repeat(e)),"\r\n":new Array(Ha).fill(0).map((r,e)=>`\r
|
|
47
|
+
`+" ".repeat(e))}},kR=[`
|
|
37
48
|
`,"\r",`\r
|
|
38
|
-
`];function
|
|
49
|
+
`];function Jh(r,e,t){let n,o,i,a,s;if(e){for(a=e.offset,s=a+e.length,i=a;i>0&&!Lc(r,i-1);)i--;let v=s;for(;v<r.length&&!Lc(r,v);)v++;o=r.substring(i,v),n=XW(o,t)}else o=r,n=0,i=0,a=0,s=r.length;let c=ZW(t,r),l=kR.includes(c),u=0,p=0,g;t.insertSpaces?g=_r[t.tabSize||4]??Ga(_r[1],t.tabSize||4):g=" ";let m=g===" "?" ":" ",f=Oc(o,!1),y=!1;function C(){if(u>1)return Ga(c,u)+Ga(g,n+p);let v=g.length*(n+p);return!l||v>Kh[m][c].length?c+Ga(g,n+p):v<=0?c:Kh[m][c][v]}function S(){let v=f.scan();for(u=0;v===15||v===14;)v===14&&t.keepLines?u+=1:v===14&&(u=1),v=f.scan();return y=v===16||f.getTokenError()!==0,v}let w=[];function h(v,b,R){!y&&(!e||b<s&&R>a)&&r.substring(b,R)!==v&&w.push({offset:b,length:R-b,content:v})}let k=S();if(t.keepLines&&u>0&&h(Ga(c,u),0,0),k!==17){let v=f.getTokenOffset()+i,b=g.length*n<20&&t.insertSpaces?_r[g.length*n]:Ga(g,n);h(b,i,v)}for(;k!==17;){let v=f.getTokenOffset()+f.getTokenLength()+i,b=S(),R="",Q=!1;for(;u===0&&(b===12||b===13);){let H=f.getTokenOffset()+i;h(_r[1],v,H),v=f.getTokenOffset()+f.getTokenLength()+i,Q=b===12,R=Q?C():"",b=S()}if(b===2)k!==1&&p--,t.keepLines&&u>0||!t.keepLines&&k!==1?R=C():t.keepLines&&(R=_r[1]);else if(b===4)k!==3&&p--,t.keepLines&&u>0||!t.keepLines&&k!==3?R=C():t.keepLines&&(R=_r[1]);else{switch(k){case 3:case 1:p++,t.keepLines&&u>0||!t.keepLines?R=C():R=_r[1];break;case 5:t.keepLines&&u>0||!t.keepLines?R=C():R=_r[1];break;case 12:R=C();break;case 13:u>0?R=C():Q||(R=_r[1]);break;case 6:t.keepLines&&u>0?R=C():Q||(R=_r[1]);break;case 10:t.keepLines&&u>0?R=C():b===6&&!Q&&(R="");break;case 7:case 8:case 9:case 11:case 2:case 4:t.keepLines&&u>0?R=C():(b===12||b===13)&&!Q?R=_r[1]:b!==5&&b!==17&&(y=!0);break;case 16:y=!0;break}u>0&&(b===12||b===13)&&(R=C())}b===17&&(t.keepLines&&u>0?R=C():R=t.insertFinalNewline?c:"");let x=f.getTokenOffset()+i;h(R,v,x),k=b}return w}function Ga(r,e){let t="";for(let n=0;n<e;n++)t+=r;return t}function XW(r,e){let t=0,n=0,o=e.tabSize||4;for(;t<r.length;){let i=r.charAt(t);if(i===_r[1])n++;else if(i===" ")n+=o;else break;t++}return Math.floor(n/o)}function ZW(r,e){for(let t=0;t<e.length;t++){let n=e.charAt(t);if(n==="\r")return t+1<e.length&&e.charAt(t+1)===`
|
|
39
50
|
`?`\r
|
|
40
51
|
`:"\r";if(n===`
|
|
41
52
|
`)return`
|
|
42
53
|
`}return r&&r.eol||`
|
|
43
|
-
`}function
|
|
44
|
-
`.indexOf(r.charAt(e))!==-1}var Ba;(function(r){r.DEFAULT={allowTrailingComma:!1}})(Ba||(Ba={}));function uS(r,e=[],t=Ba.DEFAULT){let n=null,o=[],i=[];function a(c){Array.isArray(o)?o.push(c):n!==null&&(o[n]=c)}return Ru(r,{onObjectBegin:()=>{let c={};a(c),i.push(o),o=c,n=null},onObjectProperty:c=>{n=c},onObjectEnd:()=>{o=i.pop()},onArrayBegin:()=>{let c=[];a(c),i.push(o),o=c,n=null},onArrayEnd:()=>{o=i.pop()},onLiteralValue:a,onError:(c,l,p)=>{e.push({error:c,offset:l,length:p})}},t),o[0]}function Pu(r,e=[],t=Ba.DEFAULT){let n={type:"array",offset:-1,length:-1,children:[],parent:void 0};function o(c){n.type==="property"&&(n.length=c-n.offset,n=n.parent)}function i(c){return n.children.push(c),c}Ru(r,{onObjectBegin:c=>{n=i({type:"object",offset:c,length:-1,parent:n,children:[]})},onObjectProperty:(c,l,p)=>{n=i({type:"property",offset:l,length:-1,parent:n,children:[]}),n.children.push({type:"string",value:c,offset:l,length:p,parent:n})},onObjectEnd:(c,l)=>{o(c+l),n.length=c+l-n.offset,n=n.parent,o(c+l)},onArrayBegin:(c,l)=>{n=i({type:"array",offset:c,length:-1,parent:n,children:[]})},onArrayEnd:(c,l)=>{n.length=c+l-n.offset,n=n.parent,o(c+l)},onLiteralValue:(c,l,p)=>{i({type:WF(c),offset:l,length:p,parent:n,value:c}),o(l+p)},onSeparator:(c,l,p)=>{n.type==="property"&&(c===":"?n.colonOffset=l:c===","&&o(l))},onError:(c,l,p)=>{e.push({error:c,offset:l,length:p})}},t);let s=n.children[0];return s&&delete s.parent,s}function Uc(r,e){if(!r)return;let t=r;for(let n of e)if(typeof n=="string"){if(t.type!=="object"||!Array.isArray(t.children))return;let o=!1;for(let i of t.children)if(Array.isArray(i.children)&&i.children[0].value===n&&i.children.length===2){t=i.children[1],o=!0;break}if(!o)return}else{let o=n;if(t.type!=="array"||o<0||!Array.isArray(t.children)||o>=t.children.length)return;t=t.children[o]}return t}function Ru(r,e,t=Ba.DEFAULT){let n=ja(r,!1),o=[],i=0;function a(q){return q?()=>i===0&&q(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function s(q){return q?K=>i===0&&q(K,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function c(q){return q?K=>i===0&&q(K,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),()=>o.slice()):()=>!0}function l(q){return q?()=>{i>0?i++:q(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),()=>o.slice())===!1&&(i=1)}:()=>!0}function p(q){return q?()=>{i>0&&i--,i===0&&q(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter())}:()=>!0}let u=l(e.onObjectBegin),g=c(e.onObjectProperty),m=p(e.onObjectEnd),h=l(e.onArrayBegin),y=p(e.onArrayEnd),C=c(e.onLiteralValue),v=s(e.onSeparator),w=a(e.onComment),f=s(e.onError),S=t&&t.disallowComments,k=t&&t.allowTrailingComma;function b(){for(;;){let q=n.scan();switch(n.getTokenError()){case 4:P(14);break;case 5:P(15);break;case 3:P(13);break;case 1:S||P(11);break;case 2:P(12);break;case 6:P(16);break}switch(q){case 12:case 13:S?P(10):w();break;case 16:P(1);break;case 15:case 14:break;default:return q}}}function P(q,K=[],oe=[]){if(f(q),K.length+oe.length>0){let ae=n.getToken();for(;ae!==17;){if(K.indexOf(ae)!==-1){b();break}else if(oe.indexOf(ae)!==-1)break;ae=b()}}}function Q(q){let K=n.getTokenValue();return q?C(K):(g(K),o.push(K)),b(),!0}function M(){switch(n.getToken()){case 11:let q=n.getTokenValue(),K=Number(q);isNaN(K)&&(P(2),K=0),C(K);break;case 7:C(null);break;case 8:C(!0);break;case 9:C(!1);break;default:return!1}return b(),!0}function z(){return n.getToken()!==10?(P(3,[],[2,5]),!1):(Q(!1),n.getToken()===6?(v(":"),b(),V()||P(4,[],[2,5])):P(5,[],[2,5]),o.pop(),!0)}function j(){u(),b();let q=!1;for(;n.getToken()!==2&&n.getToken()!==17;){if(n.getToken()===5){if(q||P(4,[],[]),v(","),b(),n.getToken()===2&&k)break}else q&&P(6,[],[]);z()||P(4,[],[2,5]),q=!0}return m(),n.getToken()!==2?P(7,[2],[]):b(),!0}function ee(){h(),b();let q=!0,K=!1;for(;n.getToken()!==4&&n.getToken()!==17;){if(n.getToken()===5){if(K||P(4,[],[]),v(","),b(),n.getToken()===4&&k)break}else K&&P(6,[],[]);q?(o.push(0),q=!1):o[o.length-1]++,V()||P(4,[],[4,5]),K=!0}return y(),q||o.pop(),n.getToken()!==4?P(8,[4],[]):b(),!0}function V(){switch(n.getToken()){case 3:return ee();case 1:return j();case 10:return Q(!0);default:return M()}}return b(),n.getToken()===17?t.allowEmptyContent?!0:(P(4,[],[]),!1):V()?(n.getToken()!==17&&P(9,[],[]),!0):(P(4,[],[]),!1)}function WF(r){switch(typeof r){case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"object":{if(r){if(Array.isArray(r))return"array"}else return"null";return"object"}default:return"null"}}function mS(r,e,t,n){let o=e.slice(),a=Pu(r,[]),s,c;for(;o.length>0&&(c=o.pop(),s=Uc(a,o),s===void 0&&t!==void 0);)typeof c=="string"?t={[c]:t}:t=[t];if(s)if(s.type==="object"&&typeof c=="string"&&Array.isArray(s.children)){let l=Uc(s,[c]);if(l!==void 0)if(t===void 0){if(!l.parent)throw new Error("Malformed AST");let p=s.children.indexOf(l.parent),u,g=l.parent.offset+l.parent.length;if(p>0){let m=s.children[p-1];u=m.offset+m.length}else u=s.offset+1,s.children.length>1&&(g=s.children[1].offset);return xo(r,{offset:u,length:g-u,content:""},n)}else return xo(r,{offset:l.offset,length:l.length,content:JSON.stringify(t)},n);else{if(t===void 0)return[];let p=`${JSON.stringify(c)}: ${JSON.stringify(t)}`,u=n.getInsertionIndex?n.getInsertionIndex(s.children.map(m=>m.children[0].value)):s.children.length,g;if(u>0){let m=s.children[u-1];g={offset:m.offset+m.length,length:0,content:","+p}}else s.children.length===0?g={offset:s.offset+1,length:0,content:p}:g={offset:s.offset+1,length:0,content:p+","};return xo(r,g,n)}}else if(s.type==="array"&&typeof c=="number"&&Array.isArray(s.children)){let l=c;if(l===-1){let p=`${JSON.stringify(t)}`,u;if(s.children.length===0)u={offset:s.offset+1,length:0,content:p};else{let g=s.children[s.children.length-1];u={offset:g.offset+g.length,length:0,content:","+p}}return xo(r,u,n)}else if(t===void 0&&s.children.length>=0){let p=c,u=s.children[p],g;if(s.children.length===1)g={offset:s.offset+1,length:s.length-2,content:""};else if(s.children.length-1===p){let m=s.children[p-1],h=m.offset+m.length,y=s.offset+s.length;g={offset:h,length:y-2-h,content:""}}else g={offset:u.offset,length:s.children[p+1].offset-u.offset,content:""};return xo(r,g,n)}else if(t!==void 0){let p,u=`${JSON.stringify(t)}`;if(!n.isArrayInsertion&&s.children.length>c){let g=s.children[c];p={offset:g.offset,length:g.length,content:u}}else if(s.children.length===0||c===0)p={offset:s.offset+1,length:0,content:s.children.length===0?u:u+","};else{let g=c>s.children.length?s.children.length:c,m=s.children[g-1];p={offset:m.offset+m.length,length:0,content:","+u}}return xo(r,p,n)}else throw new Error(`Can not ${t===void 0?"remove":n.isArrayInsertion?"insert":"modify"} Array index ${l} as length is not sufficient`)}else throw new Error(`Can not add ${typeof c!="number"?"index":"property"} to parent of type ${s.type}`);else{if(t===void 0)throw new Error("Can not delete in empty document");return xo(r,{offset:a?a.offset:0,length:a?a.length:0,content:JSON.stringify(t)},n)}}function xo(r,e,t){if(!t.formattingOptions)return[e];let n=jc(r,e),o=e.offset,i=e.offset+e.content.length;if(e.length===0||e.content.length===0){for(;o>0&&!Va(n,o-1);)o--;for(;i<n.length&&!Va(n,i);)i++}let a=wu(n,{offset:o,length:i-o},{...t.formattingOptions,keepLines:!1});for(let c=a.length-1;c>=0;c--){let l=a[c];n=jc(n,l),o=Math.min(o,l.offset),i=Math.max(i,l.offset+l.length),i+=l.content.length-l.length}let s=r.length-(n.length-i)-o;return[{offset:o,length:s,content:n.substring(o,i)}]}function jc(r,e){return r.substring(0,e.offset)+e.content+r.substring(e.offset+e.length)}var fS;(function(r){r[r.None=0]="None",r[r.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",r[r.UnexpectedEndOfString=2]="UnexpectedEndOfString",r[r.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",r[r.InvalidUnicode=4]="InvalidUnicode",r[r.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",r[r.InvalidCharacter=6]="InvalidCharacter"})(fS||(fS={}));var hS;(function(r){r[r.OpenBraceToken=1]="OpenBraceToken",r[r.CloseBraceToken=2]="CloseBraceToken",r[r.OpenBracketToken=3]="OpenBracketToken",r[r.CloseBracketToken=4]="CloseBracketToken",r[r.CommaToken=5]="CommaToken",r[r.ColonToken=6]="ColonToken",r[r.NullKeyword=7]="NullKeyword",r[r.TrueKeyword=8]="TrueKeyword",r[r.FalseKeyword=9]="FalseKeyword",r[r.StringLiteral=10]="StringLiteral",r[r.NumericLiteral=11]="NumericLiteral",r[r.LineCommentTrivia=12]="LineCommentTrivia",r[r.BlockCommentTrivia=13]="BlockCommentTrivia",r[r.LineBreakTrivia=14]="LineBreakTrivia",r[r.Trivia=15]="Trivia",r[r.Unknown=16]="Unknown",r[r.EOF=17]="EOF"})(hS||(hS={}));var yS=uS;var gS;(function(r){r[r.InvalidSymbol=1]="InvalidSymbol",r[r.InvalidNumberFormat=2]="InvalidNumberFormat",r[r.PropertyNameExpected=3]="PropertyNameExpected",r[r.ValueExpected=4]="ValueExpected",r[r.ColonExpected=5]="ColonExpected",r[r.CommaExpected=6]="CommaExpected",r[r.CloseBraceExpected=7]="CloseBraceExpected",r[r.CloseBracketExpected=8]="CloseBracketExpected",r[r.EndOfFileExpected=9]="EndOfFileExpected",r[r.InvalidCommentToken=10]="InvalidCommentToken",r[r.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",r[r.UnexpectedEndOfString=12]="UnexpectedEndOfString",r[r.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",r[r.InvalidUnicode=14]="InvalidUnicode",r[r.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",r[r.InvalidCharacter=16]="InvalidCharacter"})(gS||(gS={}));function CS(r){switch(r){case 1:return"InvalidSymbol";case 2:return"InvalidNumberFormat";case 3:return"PropertyNameExpected";case 4:return"ValueExpected";case 5:return"ColonExpected";case 6:return"CommaExpected";case 7:return"CloseBraceExpected";case 8:return"CloseBracketExpected";case 9:return"EndOfFileExpected";case 10:return"InvalidCommentToken";case 11:return"UnexpectedEndOfComment";case 12:return"UnexpectedEndOfString";case 13:return"UnexpectedEndOfNumber";case 14:return"InvalidUnicode";case 15:return"InvalidEscapeCharacter";case 16:return"InvalidCharacter"}return"<unknown ParseErrorCode>"}function SS(r,e,t,n){return mS(r,e,t,n)}function vS(r,e){let t=e.slice(0).sort((o,i)=>{let a=o.offset-i.offset;return a===0?o.length-i.length:a}),n=r.length;for(let o=t.length-1;o>=0;o--){let i=t[o];if(i.offset+i.length<=n)r=jc(r,i);else throw new Error("Overlapping edit");n=i.offset}return r}tt();J();Z();var VF=T("common.json");var kr={allowComment:!0},BF={insertSpaces:!1,tabSize:4,eol:`
|
|
45
|
-
`,insertFinalNewline:!0};function
|
|
46
|
-
`}function
|
|
47
|
-
`}function
|
|
48
|
-
`)}function Mu(){let r=_S();if(r)return mn.dirname(r);let e=aD();return e||mn.join(ES.homedir(),HF)}function AS(){let r=_S();return r||mn.join(Mu(),zF)}function OS(){return mn.join(Mu(),GF)}function iD(){return mn.join(Mu(),KF)}function _S(){return LS(JF)}function aD(){return LS(QF)}function LS(r){let e=process.env[r]?.trim();return e?mn.resolve(e):void 0}async function xu(r,e){let t=await Bc(r,e);return Iu(r,t)}async function Bc(r,e){let t=Ce(r),n=new Date().toISOString();return e.type==="pat"?NS(t,{authType:"pat",token:e.token,verifiedAt:n}):NS(t,{authType:"oauth",token:e.token,refreshToken:e.refreshToken,expiresAt:e.expiresAt,scope:e.scope,verifiedAt:n})}async function Iu(r,e){H(Je(r,e.serverUrl),`verified credential belongs to another server: ${e.serverUrl}`);let t=Ce(r),n=new Date().toISOString(),o=Ae(e.token);if(!o)throw new Ue({serverUrl:t});let i=I({authType:e.authType,username:e.username,userId:e.userId,lastLoginAt:e.verifiedAt??n,updatedAt:n}),a=I({authType:e.authType,token:I({type:"Bearer",value:o,expiresAt:e.expiresAt,scope:e.scope,updatedAt:e.verifiedAt??n}),refreshToken:e.refreshToken,lastSeenAt:e.verifiedAt??n,updatedAt:n}),s=await Tu({auth:{servers:{[t]:i}},session:{servers:{[t]:a}}}),c=Du(t,s.auth.servers[t],s.session.servers[t]);if(!c)throw new Ue({serverUrl:t});return c}async function Io(r){let e=Ce(r),{auth:t,session:n}=await xS(e);return Du(e,t,n)}async function Fu(r){if(!r){let{result:n}=await Vc(o=>({patch:{auth:{servers:null},session:{servers:null}},result:new Set([...Object.keys(o.auth.servers),...Object.keys(o.session.servers)]).size}));return{all:!0,removed:n}}let e=Ce(r),{result:t}=await Vc(n=>({patch:{auth:{servers:{[e]:null}},session:{servers:{[e]:null}}},result:n.auth.servers[e]||n.session.servers[e]?1:0}));return{all:!1,serverUrl:e,removed:t}}async function US(r,e){let t=Ce(r),n=e??await Io(t),o=n?.authType==="oauth"?Ae(n.refreshToken):void 0;if(!o)throw new Ue({serverUrl:t});let i=await YC(t,{refreshToken:o}),a=new Date().toISOString(),s=I({authType:"oauth",token:I({type:"Bearer",value:i.accessToken,expiresAt:i.expiresAt,scope:i.scope,updatedAt:a}),refreshToken:i.refreshToken,lastSeenAt:a,updatedAt:a}),c=await Tu({auth:{servers:{[t]:{authType:"oauth",updatedAt:a}}},session:{servers:{[t]:s}}}),l=Du(t,c.auth.servers[t],c.session.servers[t]);if(!l)throw new Ue({serverUrl:t});return l}var jS="/api/me/whoami";function Du(r,e,t){if(!t?.authType)return;if(t.authType==="pat")return!t.token||Su(t.token.expiresAt)?void 0:{serverUrl:r,username:e?.username,userId:e?.userId,authType:"pat",token:t.token.value,expiresAt:t.token.expiresAt,scope:t.token.scope,tokenExpired:!1,lastLoginAt:e?.lastLoginAt,updatedAt:t.updatedAt??e?.updatedAt};if(!t.refreshToken)return;let n=Su(t.token?.expiresAt),o=t.token&&!n?t.token:void 0;return{serverUrl:r,username:e?.username,userId:e?.userId,authType:"oauth",token:o?.value,expiresAt:o?.expiresAt??t.token?.expiresAt,scope:o?.scope,refreshToken:t.refreshToken,tokenExpired:n,lastLoginAt:e?.lastLoginAt,updatedAt:t.updatedAt??e?.updatedAt}}async function NS(r,e){let t=Ae(e.token);if(!t)throw new Ue({serverUrl:r});let n=await sD(r,t);return{serverUrl:r,authType:e.authType,username:n.username,userId:n.userId,token:t,expiresAt:Ae(e.expiresAt),scope:an(e.scope),refreshToken:Ae(e.refreshToken),verifiedAt:e.verifiedAt}}async function sD(r,e){let t=`${r}${jS}`,n=await $n(t,{headers:{Authorization:`Bearer ${e}`}});if(n.status===401)throw new Ue({serverUrl:r});n.ok||await Hn(n,t);let o;try{o=await n.json()}catch(s){throw WS(r,t,"response body is not valid JSON",s)}if(!W(o))throw WS(r,t,"response body is not an object");let i=Ae(o.userName)??Ae(o.username),a=Ae(o.userId)??Ae(o.id);if(o.anonymous===!0||!i&&!a)throw new Ue({serverUrl:r});return{username:i,userId:a}}function WS(r,e,t,n){return new me("err.net.invalidResponse",{properties:{url:e,endpoint:jS,serverUrl:r,reason:t},cause:n})}var JS=E(require("fs")),QS=E(require("os")),Ou=E(require("path"));var zS=E(require("fs")),Do=E(require("path")),$a=require("stream");Ie();fn();$();Z();Si();function lD(r){let e="";for(let t=0;t<r.length;t++){let n=r[t];n==="*"&&r[t+1]==="*"?r[t+2]==="/"?(e+="(?:.*/)?",t+=2):(e+=".*",t++):n==="*"?e+="[^/]*":n==="?"?e+="[^/]":".+^$()|{}[]\\".includes(n)?e+="\\"+n:e+=n}return new RegExp("^"+e+"$")}var VS=new Map;function Au(r){let e=VS.get(r);return e||(e=lD(r),VS.set(r,e)),e}function BS(r){let e=r.map(Au);return{matches(t){if(e.length===0)return!1;let n=t.replace(/^\/+/,"");return e.some(o=>o.test(n)||o.test("/"+n))}}}function qc(r,e){if(!e||e.length===0)return!1;let t=r.replace(/^\/+/,"");return e.some(n=>Au(n).test(t)||Au(n).test("/"+t))}$();var qS=/^[a-z0-9]+$/,Fo=class r{constructor(e){this.infos=e;this.infoByExtension=pD(e),this.patternInfos=dD(e)}infoByExtension;patternInfos;static empty(){return new r({})}static fromServerVersions(e){let t={};for(let[n,o]of Object.entries(e??{})){let i=uD(n,o);t[i.metaType]=i}return new r(t)}isEmpty(){return Object.keys(this.infos).length===0}getInfos(){return this.infos}getInfo(e){return this.infos[e]??this.infos[e.toLowerCase()]}getInfoByPath(e){let t=De(pe(e)),n=this.infoByExtension.get(Fc(t));return n||this.patternInfos.find(o=>o.matcher.matches(t))?.info}};function pD(r){let e=new Map;for(let t of Object.values(r))$S(t)&&e.set(t.metaType,t);return e}function dD(r){return Object.values(r).filter(e=>e.fileMatch.length>0&&!$S(e)).map(e=>({info:e,matcher:BS(e.fileMatch),specificity:fD(e)})).sort((e,t)=>t.specificity-e.specificity)}function $S(r){return qS.test(r.metaType)&&r.fileMatch.length===1&&r.fileMatch[0]===`**/*.${r.metaType}`}function uD(r,e){let t=r.trim(),n=t.toLowerCase();if(qS.test(n))return{metaType:n,fileMatch:[`**/*.${n}`],contentVersion:e,upgradeSupported:!0};let o=mD(t);return{metaType:o,fileMatch:[o],contentVersion:e,upgradeSupported:!0}}function mD(r){return De(pe(r))}function fD(r){return Math.max(0,...r.fileMatch.map(e=>e.replace(/[*?]/g,"").length))}F();_();_n();var Yt="/api/dev-tool/v2",hD={viewFile:`${Yt}/file/view`},gD=5*60*1e3;function hn(r,e){let t=new URLSearchParams;return t.set("path",e.path),e[":edit"]!==void 0&&t.set(":edit",e[":edit"]),`${r}${hD.viewFile}?${t.toString()}`}var zr=class{constructor(e,t={}){this.serverUrl=e;this.workspaceRoot=t.workspaceRoot,t.initialCredential&&(this.authCredential=t.initialCredential),this.requestRunner=new it}requestRunner;workspaceRoot;authCredential;rejectedAuthCredentialSignature;get connected(){return this.authCredential?.token!==void 0}get currentAuthorizationHeader(){let e=this.authCredential?.token;return e?`Bearer ${e}`:""}getDiagnostics(e){return null}async verify(){if(this.authCredential===null?await this.doEnsureAuthCredentialLoaded():await this.ensureAuthCredentialLoaded(),await this.refreshOAuthCredentialIfNeeded(!1),!this.authCredential?.token)throw new Ue({workspaceRoot:this.workspaceRoot,serverUrl:this.serverUrl})}async getServerInfo(){return this.get("/server/info")}async getServerDetailInfo(){return this.get("/server/detail-info")}async getMetadataVersions(){return Fo.fromServerVersions((await this.getServerInfo()).metadataVersions)}async getProjects(){return this.get("/project/list")}async createProject(e){return this.post("/project/create",e)}async listFiles(e){return(await this.get(`/file/list?path=${encodeURIComponent(e)}`)).map(n=>this.normalizeMetaFileInfo(n))}async searchFiles(e){return(await this.post("/file/search",e)).map(n=>this.normalizeMetaFileInfo(n))}async countFiles(e){return this.get(`/file/count?path=${encodeURIComponent(e)}`)}async getFileDescendant(e){let t=[];return await this.collectFileDescendants(e,t),t}async getFile(e){return this.normalizeMetaFileInfo(await this.get(`/file/get-info?path=${encodeURIComponent(e)}`))}async getFileById(e){return this.normalizeMetaFileInfo(await this.get(`/file/get-info?id=${encodeURIComponent(e)}`))}async getFileInfos(e){return(await this.post("/file/get-infos",{paths:e})).map(n=>this.normalizeMetaFileInfo(n))}async getFileHistory(e,t={}){return this.get(this.createEndpoint("/file/get-history",{path:e,limit:t.limit}))}isNotFoundError(e){return gy(e)}async getFileContent(e,t){let n=await this.doGetFileContentStream(e,t),o=[];for await(let i of n.stream)o.push(Buffer.isBuffer(i)?i:Buffer.from(i));return{buffer:Buffer.concat(o),revision:n.revision,modifyTime:n.modifyTime}}async getFileContentStream(e,t){return this.doGetFileContentStream(e,t)}async doGetFileContentStream(e,t){let n=`${this.serverUrl}${Yt}/file/get-content?path=${encodeURIComponent(e)}`;t?.revision!==void 0&&(n+=`&revision=${t.revision}`),t?.upgradeContent!==void 0&&(n+=`&upgradeContent=${t.upgradeContent}`);let o=await this.requestStream(n);return{stream:o.stream,revision:Number(o.response.headers.get("X-Meta-Revision")??"0"),modifyTime:Number(o.response.headers.get("X-Meta-ModifyTime")??"0")}}async upgradeFileContent(e){return this.post("/file/upgrade-content",e)}async compileFileContent(e){return this.post("/file/compile-content",e)}async saveFile(e,t,n){let o={action:n?.expectedRevision===null?"create":"modify",path:e,isFolder:!1},i=`${this.serverUrl}${Yt}/file/save?path=${encodeURIComponent(e)}`;n?.desc!==void 0&&(i+=`&desc=${encodeURIComponent(n.desc)}`),n?.expectedRevision!==void 0&&(i+=`&expectedRevision=${n.expectedRevision===null?"":n.expectedRevision}`);let a=await this.requestJson(i,{method:"POST",headers:{"Content-Type":"application/octet-stream"},body:this.toRequestBody(t),duplex:t instanceof $a.Readable?"half":void 0});return this.toFileMutationResponse(a,o)}async createFile(e){return this.postFileMutation("/file/create",e)}async modifyFile(e){return this.postFileMutation("/file/save",e)}async moveFile(e){return this.postFileMutation("/file/move",e)}async deleteFile(e,t){let n={path:e},o={action:"delete",path:e};t?.expectedRevision!==void 0&&(n.expectedRevision=t.expectedRevision),t?.expectedModifyTime!==void 0&&(n.expectedModifyTime=t.expectedModifyTime);let i=await this.post("/file/delete",n);return this.toFileMutationResponse(i,o)}buildViewFileRedirectUrl(e){return hn(this.serverUrl,e)}async getExtensionTemplates(){return this.get("/extension/list-templates")}async downloadExtensionTemplate(e,t){let n=encodeURIComponent(e),o=encodeURIComponent(`${t}.zip`),i=`${this.serverUrl}${Yt}/extension/get-template?extensionPoint=${n}&zipFile=${o}`,a=await this.requestStream(i),s=[];for await(let c of a.stream)s.push(Buffer.isBuffer(c)?c:Buffer.from(c));return Buffer.concat(s)}async getDataSources(){return this.get("/db/list-datasources")}async getSettings(e={}){return this.post("/settings/get",e)}async setSettings(e){return this.post("/settings/set",e)}async probeDataSource(e,t){return this.post("/db/probe-datasource",{dataSource:e})}async getDataSourceConfig(e,t={}){return this.get(this.createEndpoint("/db/get-datasource-config",{dataSource:e}))}async testDataSource(e){let{projectName:t,originalDataSource:n,...o}=e,a={result:await this.post("/db/test-datasource",o)};return e.config.name!==void 0&&(a.dataSource=e.config.name),a}async createDataSource(e){let{projectName:t,...n}=e;return this.post("/db/create-datasource",n)}async updateDataSource(e){let{projectName:t,...n}=e;return this.post("/db/update-datasource",n)}async deleteDataSource(e){let{projectName:t,...n}=e;return this.post("/db/delete-datasource",n)}async listDbSchemas(e,t={}){return this.get(this.createEndpoint("/db/list-schemas",{dataSource:e,catalog:t.catalog}))}async listDbTables(e,t={}){return this.get(this.createEndpoint("/db/list-tables",{dataSource:e,schema:t.schema,tableNameContains:t.tableNameContains}))}async describeDbTable(e,t,n={}){let o={dataSource:e,tableName:t,schema:n.schema},i=this.createEndpoint("/db/describe-table",o),a=await this.get(i);if(!W(a))throw this.createInvalidEndpointResponseError("/db/describe-table","missing table metadata",{dataSource:e,tableName:t,schema:n.schema});let s=n.includeDDL?(await this.queryDbDdl(e,t,n)).ddl:void 0,c={dataSource:e,table:a};return s!==void 0&&(c.ddl=s),c}async executeDbQuery(e){return this.post("/db/exec-query-sql",this.resolveDbSqlExecRequest(e))}async queryDbDdl(e,t,n={}){let o=await this.post("/db/query-ddl",{dataSource:e,tableName:t,...n.schema!==void 0?{schema:n.schema}:{}});return{dataSource:e,tableName:t,ddl:o}}async exportDbQueryData(e){return this.requestJsonBodyStream("/db/export-query-data",this.resolveDbSqlExecRequest(e))}async exportDbTableData(e){return this.requestJsonBodyStream("/db/export-table-data",this.resolveDbTableRequest(e))}async executeDbAny(e){return this.post("/db/exec-any-sql",this.resolveDbSqlExecRequest(e))}async importDbTableData(e){return this.post("/db/import-table-data",this.resolveDbTableRequest(e))}async listModels(e={}){return this.post("/model/list",e)}async getModelSummary(e){return this.post("/model/summary",e)}async listModelFields(e){return this.post("/model/fields",e)}async listModelIndexes(e){return this.post("/model/indexes",e)}async selectModel(e){return this.post("/model/select",e)}async selectModelStream(e){return this.postJsonStream("/model/select",e)}async queryModels(e){return this.post("/model/query",e)}async queryModelsStream(e,t){return this.postJsonStream(this.createEndpoint("/model/query",{maxRows:t}),e)}async exportModelSelectData(e){return this.requestJsonBodyStream("/model/export-select-data",e)}async exportModelQueryData(e){return this.requestJsonBodyStream("/model/export-query-data",e)}async executeScript(e){return this.post("/script/execute-temp",e)}async checkScript(e){return{diagnostics:await this.post("/script/check",e)}}async refreshCache(){await this.post("/server/refresh-cache",{})}async getTypeScriptSupportApiLibs(){return this.get("/support/typescript-libs")}async getJsonSchemaSupport(){return this.get("/support/json-schema-manifest")}async downloadJsonSchema(e){let t="dist/json-schemas/",o=Un(e.startsWith(t)?e.slice(t.length):e,"JSON Schema source").split("/").map(i=>encodeURIComponent(i)).join("/");return this.requestText(`${this.serverUrl}${Yt}/support/json-schema?schemaFile=${o}`)}async getFrontendFrameworksManifest(){return this.get("/support/frontend-frameworks")}async get(e){return this.requestJson(`${this.serverUrl}${Yt}${e}`)}async post(e,t){return this.requestJson(`${this.serverUrl}${Yt}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}async postJsonStream(e,t){return this.requestJsonObjectStream(`${this.serverUrl}${Yt}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}createEndpoint(e,t){let n=new URLSearchParams;for(let[i,a]of Object.entries(t))a!=null&&n.set(i,String(a));let o=n.toString();return o?`${e}?${o}`:e}resolveDbSqlExecRequest(e){let{projectName:t,...n}=e;return n}resolveDbTableRequest(e){let{projectName:t,...n}=e;return n}async postFileMutation(e,t){let n=e==="/file/move"?this.toMoveFileMutationMetadata(t):this.toFileMutationMetadata(t),o=this.toFileMutationContext(e,t),i=t.contentChanged?await this.postMultipartFileMutation(e,t,n):await this.post(e,n);return this.toFileMutationResponse(i,o)}async postMultipartFileMutation(e,t,n){H(t.localContentPath,`localContentPath is required when contentChanged is true: ${t.path}`);let o=this.createMultipartBoundary(),i=$a.Readable.from(this.createFileMutationMultipartBody(o,t.localContentPath,n));return this.requestJson(`${this.serverUrl}${Yt}${e}`,{method:"POST",headers:{"Content-Type":`multipart/form-data; boundary=${o}`},body:i,duplex:"half"})}async*createFileMutationMultipartBody(e,t,n){let o=JSON.stringify(n);yield Buffer.from(`--${e}\r
|
|
54
|
+
`}function Lc(r,e){return`\r
|
|
55
|
+
`.indexOf(r.charAt(e))!==-1}var Nc;(function(r){r.DEFAULT={allowTrailingComma:!1}})(Nc||(Nc={}));function wR(r,e=[],t=Nc.DEFAULT){let n=null,o=[],i=[];function a(c){Array.isArray(o)?o.push(c):n!==null&&(o[n]=c)}return Qh(r,{onObjectBegin:()=>{let c={};a(c),i.push(o),o=c,n=null},onObjectProperty:c=>{n=c},onObjectEnd:()=>{o=i.pop()},onArrayBegin:()=>{let c=[];a(c),i.push(o),o=c,n=null},onArrayEnd:()=>{o=i.pop()},onLiteralValue:a,onError:(c,l,u)=>{e.push({error:c,offset:l,length:u})}},t),o[0]}function md(r,e=[],t=Nc.DEFAULT){let n={type:"array",offset:-1,length:-1,children:[],parent:void 0};function o(c){n.type==="property"&&(n.length=c-n.offset,n=n.parent)}function i(c){return n.children.push(c),c}Qh(r,{onObjectBegin:c=>{n=i({type:"object",offset:c,length:-1,parent:n,children:[]})},onObjectProperty:(c,l,u)=>{n=i({type:"property",offset:l,length:-1,parent:n,children:[]}),n.children.push({type:"string",value:c,offset:l,length:u,parent:n})},onObjectEnd:(c,l)=>{o(c+l),n.length=c+l-n.offset,n=n.parent,o(c+l)},onArrayBegin:(c,l)=>{n=i({type:"array",offset:c,length:-1,parent:n,children:[]})},onArrayEnd:(c,l)=>{n.length=c+l-n.offset,n=n.parent,o(c+l)},onLiteralValue:(c,l,u)=>{i({type:tU(c),offset:l,length:u,parent:n,value:c}),o(l+u)},onSeparator:(c,l,u)=>{n.type==="property"&&(c===":"?n.colonOffset=l:c===","&&o(l))},onError:(c,l,u)=>{e.push({error:c,offset:l,length:u})}},t);let s=n.children[0];return s&&delete s.parent,s}function Wc(r,e){if(!r)return;let t=r;for(let n of e)if(typeof n=="string"){if(t.type!=="object"||!Array.isArray(t.children))return;let o=!1;for(let i of t.children)if(Array.isArray(i.children)&&i.children[0].value===n&&i.children.length===2){t=i.children[1],o=!0;break}if(!o)return}else{let o=n;if(t.type!=="array"||o<0||!Array.isArray(t.children)||o>=t.children.length)return;t=t.children[o]}return t}function Qh(r,e,t=Nc.DEFAULT){let n=Oc(r,!1),o=[],i=0;function a(G){return G?()=>i===0&&G(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function s(G){return G?X=>i===0&&G(X,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function c(G){return G?X=>i===0&&G(X,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),()=>o.slice()):()=>!0}function l(G){return G?()=>{i>0?i++:G(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),()=>o.slice())===!1&&(i=1)}:()=>!0}function u(G){return G?()=>{i>0&&i--,i===0&&G(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter())}:()=>!0}let p=l(e.onObjectBegin),g=c(e.onObjectProperty),m=u(e.onObjectEnd),f=l(e.onArrayBegin),y=u(e.onArrayEnd),C=c(e.onLiteralValue),S=s(e.onSeparator),w=a(e.onComment),h=s(e.onError),k=t&&t.disallowComments,v=t&&t.allowTrailingComma;function b(){for(;;){let G=n.scan();switch(n.getTokenError()){case 4:R(14);break;case 5:R(15);break;case 3:R(13);break;case 1:k||R(11);break;case 2:R(12);break;case 6:R(16);break}switch(G){case 12:case 13:k?R(10):w();break;case 16:R(1);break;case 15:case 14:break;default:return G}}}function R(G,X=[],pe=[]){if(h(G),X.length+pe.length>0){let fe=n.getToken();for(;fe!==17;){if(X.indexOf(fe)!==-1){b();break}else if(pe.indexOf(fe)!==-1)break;fe=b()}}}function Q(G){let X=n.getTokenValue();return G?C(X):(g(X),o.push(X)),b(),!0}function x(){switch(n.getToken()){case 11:let G=n.getTokenValue(),X=Number(G);isNaN(X)&&(R(2),X=0),C(X);break;case 7:C(null);break;case 8:C(!0);break;case 9:C(!1);break;default:return!1}return b(),!0}function H(){return n.getToken()!==10?(R(3,[],[2,5]),!1):(Q(!1),n.getToken()===6?(S(":"),b(),B()||R(4,[],[2,5])):R(5,[],[2,5]),o.pop(),!0)}function j(){p(),b();let G=!1;for(;n.getToken()!==2&&n.getToken()!==17;){if(n.getToken()===5){if(G||R(4,[],[]),S(","),b(),n.getToken()===2&&v)break}else G&&R(6,[],[]);H()||R(4,[],[2,5]),G=!0}return m(),n.getToken()!==2?R(7,[2],[]):b(),!0}function oe(){f(),b();let G=!0,X=!1;for(;n.getToken()!==4&&n.getToken()!==17;){if(n.getToken()===5){if(X||R(4,[],[]),S(","),b(),n.getToken()===4&&v)break}else X&&R(6,[],[]);G?(o.push(0),G=!1):o[o.length-1]++,B()||R(4,[],[4,5]),X=!0}return y(),G||o.pop(),n.getToken()!==4?R(8,[4],[]):b(),!0}function B(){switch(n.getToken()){case 3:return oe();case 1:return j();case 10:return Q(!0);default:return x()}}return b(),n.getToken()===17?t.allowEmptyContent?!0:(R(4,[],[]),!1):B()?(n.getToken()!==17&&R(9,[],[]),!0):(R(4,[],[]),!1)}function tU(r){switch(typeof r){case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"object":{if(r){if(Array.isArray(r))return"array"}else return"null";return"object"}default:return"null"}}function PR(r,e,t,n){let o=e.slice(),a=md(r,[]),s,c;for(;o.length>0&&(c=o.pop(),s=Wc(a,o),s===void 0&&t!==void 0);)typeof c=="string"?t={[c]:t}:t=[t];if(s)if(s.type==="object"&&typeof c=="string"&&Array.isArray(s.children)){let l=Wc(s,[c]);if(l!==void 0)if(t===void 0){if(!l.parent)throw new Error("Malformed AST");let u=s.children.indexOf(l.parent),p,g=l.parent.offset+l.parent.length;if(u>0){let m=s.children[u-1];p=m.offset+m.length}else p=s.offset+1,s.children.length>1&&(g=s.children[1].offset);return Fi(r,{offset:p,length:g-p,content:""},n)}else return Fi(r,{offset:l.offset,length:l.length,content:JSON.stringify(t)},n);else{if(t===void 0)return[];let u=`${JSON.stringify(c)}: ${JSON.stringify(t)}`,p=n.getInsertionIndex?n.getInsertionIndex(s.children.map(m=>m.children[0].value)):s.children.length,g;if(p>0){let m=s.children[p-1];g={offset:m.offset+m.length,length:0,content:","+u}}else s.children.length===0?g={offset:s.offset+1,length:0,content:u}:g={offset:s.offset+1,length:0,content:u+","};return Fi(r,g,n)}}else if(s.type==="array"&&typeof c=="number"&&Array.isArray(s.children)){let l=c;if(l===-1){let u=`${JSON.stringify(t)}`,p;if(s.children.length===0)p={offset:s.offset+1,length:0,content:u};else{let g=s.children[s.children.length-1];p={offset:g.offset+g.length,length:0,content:","+u}}return Fi(r,p,n)}else if(t===void 0&&s.children.length>=0){let u=c,p=s.children[u],g;if(s.children.length===1)g={offset:s.offset+1,length:s.length-2,content:""};else if(s.children.length-1===u){let m=s.children[u-1],f=m.offset+m.length,y=s.offset+s.length;g={offset:f,length:y-2-f,content:""}}else g={offset:p.offset,length:s.children[u+1].offset-p.offset,content:""};return Fi(r,g,n)}else if(t!==void 0){let u,p=`${JSON.stringify(t)}`;if(!n.isArrayInsertion&&s.children.length>c){let g=s.children[c];u={offset:g.offset,length:g.length,content:p}}else if(s.children.length===0||c===0)u={offset:s.offset+1,length:0,content:s.children.length===0?p:p+","};else{let g=c>s.children.length?s.children.length:c,m=s.children[g-1];u={offset:m.offset+m.length,length:0,content:","+p}}return Fi(r,u,n)}else throw new Error(`Can not ${t===void 0?"remove":n.isArrayInsertion?"insert":"modify"} Array index ${l} as length is not sufficient`)}else throw new Error(`Can not add ${typeof c!="number"?"index":"property"} to parent of type ${s.type}`);else{if(t===void 0)throw new Error("Can not delete in empty document");return Fi(r,{offset:a?a.offset:0,length:a?a.length:0,content:JSON.stringify(t)},n)}}function Fi(r,e,t){if(!t.formattingOptions)return[e];let n=fd(r,e),o=e.offset,i=e.offset+e.content.length;if(e.length===0||e.content.length===0){for(;o>0&&!Lc(n,o-1);)o--;for(;i<n.length&&!Lc(n,i);)i++}let a=Jh(n,{offset:o,length:i-o},{...t.formattingOptions,keepLines:!1});for(let c=a.length-1;c>=0;c--){let l=a[c];n=fd(n,l),o=Math.min(o,l.offset),i=Math.max(i,l.offset+l.length),i+=l.content.length-l.length}let s=r.length-(n.length-i)-o;return[{offset:o,length:s,content:n.substring(o,i)}]}function fd(r,e){return r.substring(0,e.offset)+e.content+r.substring(e.offset+e.length)}var RR;(function(r){r[r.None=0]="None",r[r.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",r[r.UnexpectedEndOfString=2]="UnexpectedEndOfString",r[r.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",r[r.InvalidUnicode=4]="InvalidUnicode",r[r.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",r[r.InvalidCharacter=6]="InvalidCharacter"})(RR||(RR={}));var bR;(function(r){r[r.OpenBraceToken=1]="OpenBraceToken",r[r.CloseBraceToken=2]="CloseBraceToken",r[r.OpenBracketToken=3]="OpenBracketToken",r[r.CloseBracketToken=4]="CloseBracketToken",r[r.CommaToken=5]="CommaToken",r[r.ColonToken=6]="ColonToken",r[r.NullKeyword=7]="NullKeyword",r[r.TrueKeyword=8]="TrueKeyword",r[r.FalseKeyword=9]="FalseKeyword",r[r.StringLiteral=10]="StringLiteral",r[r.NumericLiteral=11]="NumericLiteral",r[r.LineCommentTrivia=12]="LineCommentTrivia",r[r.BlockCommentTrivia=13]="BlockCommentTrivia",r[r.LineBreakTrivia=14]="LineBreakTrivia",r[r.Trivia=15]="Trivia",r[r.Unknown=16]="Unknown",r[r.EOF=17]="EOF"})(bR||(bR={}));var hd=wR,TR=md,Yh=Wc;var ER;(function(r){r[r.InvalidSymbol=1]="InvalidSymbol",r[r.InvalidNumberFormat=2]="InvalidNumberFormat",r[r.PropertyNameExpected=3]="PropertyNameExpected",r[r.ValueExpected=4]="ValueExpected",r[r.ColonExpected=5]="ColonExpected",r[r.CommaExpected=6]="CommaExpected",r[r.CloseBraceExpected=7]="CloseBraceExpected",r[r.CloseBracketExpected=8]="CloseBracketExpected",r[r.EndOfFileExpected=9]="EndOfFileExpected",r[r.InvalidCommentToken=10]="InvalidCommentToken",r[r.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",r[r.UnexpectedEndOfString=12]="UnexpectedEndOfString",r[r.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",r[r.InvalidUnicode=14]="InvalidUnicode",r[r.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",r[r.InvalidCharacter=16]="InvalidCharacter"})(ER||(ER={}));function gd(r){switch(r){case 1:return"InvalidSymbol";case 2:return"InvalidNumberFormat";case 3:return"PropertyNameExpected";case 4:return"ValueExpected";case 5:return"ColonExpected";case 6:return"CommaExpected";case 7:return"CloseBraceExpected";case 8:return"CloseBracketExpected";case 9:return"EndOfFileExpected";case 10:return"InvalidCommentToken";case 11:return"UnexpectedEndOfComment";case 12:return"UnexpectedEndOfString";case 13:return"UnexpectedEndOfNumber";case 14:return"InvalidUnicode";case 15:return"InvalidEscapeCharacter";case 16:return"InvalidCharacter"}return"<unknown ParseErrorCode>"}function MR(r,e,t,n){return PR(r,e,t,n)}function xR(r,e){let t=e.slice(0).sort((o,i)=>{let a=o.offset-i.offset;return a===0?o.length-i.length:a}),n=r.length;for(let o=t.length-1;o>=0;o--){let i=t[o];if(i.offset+i.length<=n)r=fd(r,i);else throw new Error("Overlapping edit");n=i.offset}return r}nt();Y();re();var oU=M("common.json");var Dr={allowComment:!0},iU={insertSpaces:!1,tabSize:4,eol:`
|
|
56
|
+
`,insertFinalNewline:!0};function Wn(r){return JSON.stringify(r,null," ")+`
|
|
57
|
+
`}function Rt(r,e={}){try{if(!r.trim())return{};let t;if(e.allowComment===!0){let n=[];if(t=hd(r,n,sU(e)),n.length>0)throw new Error(`JSON cannot be parsed safely: ${aU(e.filePath,n)}`)}else t=JSON.parse(r);if(!W(t))throw new Error(`JSON root is not an object: ${e.filePath??"<inline>"}`);return t}catch(t){if(e.ignoreParseError===!0)return oU.warn(`ignore JSON object because it cannot be parsed safely: ${e.filePath??"<inline>"}`,t instanceof Error?t.message:String(t)),e.defaultValue;throw t}}async function _R(r,e={}){let{attempts:t=3,delayMs:n=50,ignoreParseError:o=!0,...i}=e,a=Math.max(1,Math.floor(t)),s="",c;for(let l=0;l<a;l++){let u=await IR.promises.readFile(r,"utf8");s=u;try{return Rt(u,{...i,filePath:r})}catch(p){c=p}l<a-1&&await new Promise(p=>setTimeout(p,n))}if(o)return Rt(s,{...i,filePath:r,ignoreParseError:!0});throw c}async function hn(r,e={}){let{defaultValue:t,ignoreParseError:n=!0,...o}=e,i=await Ue(r);return i.trim()?Rt(i,{...o,filePath:r,defaultValue:t,ignoreParseError:n}):t??{}}function aU(r,e){let t=r??"<inline>",n=e.map(o=>`${gd(o.error)}@${o.offset}`).join(", ");return`${t} (${n})`}function io(r){return r.trim()?r:`{}
|
|
58
|
+
`}function Fr(r,e,t){let n=io(r);return xR(n,MR(n,e,t,{formattingOptions:iU}))}function sU(r){let e=r.allowComment===!0;return{allowEmptyContent:!0,allowTrailingComma:e,disallowComments:!e}}Y();re();async function LR(){let r=VR();return CU(await hn(r,{defaultValue:{},ignoreParseError:!1}))}async function NR(){let r=qR();return SU(await hn(r,{defaultValue:{},ignoreParseError:!0}))}async function WR(r){let[e,t]=await Promise.all([LR(),NR()]);if(r===void 0)return{auth:e,session:t};let n=_e(r);return{serverUrl:n,auth:e.servers[n],session:t.servers[n]}}async function eg(r){return(await yd(()=>({patch:r,result:void 0}))).state}async function yd(r){return vP(wU(),async()=>{let[e,t]=await Promise.all([LR(),NR()]),n=r({auth:e,session:t}),o=n.patch,i=o.auth===void 0?e:hU(e,o.auth),a=o.session===void 0?t:yU(t,o.session);return await Promise.all([o.auth===void 0?void 0:AR(VR(),i),o.session===void 0?void 0:AR(qR(),a)]),{state:{auth:i,session:a},result:n.result}})}var Xh=1,Zh=1,cU=".succapp",lU="auth.json",uU="session.json",dU="auth-state.lock",pU="SUCCAPP_AUTH_SETTINGS_FILE",mU="SUCCAPP_AUTH_SETTINGS_DIR",fU=M("api.auth-settings");function hU(r,e){if(e.servers===void 0)return r;if(e.servers===null)return{version:Xh,servers:{}};let t={...r.servers};for(let[n,o]of Object.entries(e.servers)){let i=_e(n);if(o==null){delete t[i];continue}let a=gU(t[i]??{},o);Object.keys(a).length===0?delete t[i]:t[i]=a}return{version:Xh,servers:t}}var DR=["authType","username","userId","lastLoginAt","updatedAt"];function gU(r,e){let t={};for(let n of DR){let o=r[n];o!==void 0&&(t[n]=o)}for(let n of DR){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let o=e[n];o==null?delete t[n]:t[n]=o}return t}function yU(r,e){if(e.servers===void 0)return r;if(e.servers===null)return{version:Zh,servers:{}};let t={...r.servers};for(let[n,o]of Object.entries(e.servers)){let i=_e(n),a=o==null?void 0:$R(o);a===void 0?delete t[i]:t[i]=a}return{version:Zh,servers:t}}function CU(r){return{version:Xh,servers:UR(r,"auth settings",!0,vU)}}function UR(r,e,t,n){let o={},a=(W(r)?r:{}).servers;if(a===void 0)return o;if(!W(a)){if(t)throw new Error(`${e} servers must be an object`);return o}for(let[s,c]of Object.entries(a)){let l=kU(s,e,t);if(!l)continue;if(!W(c)){if(!t)continue;throw new Error(`${e} server entry must be an object: ${s}`)}let u=n(c);u!==void 0&&(o[l]=u)}return o}function SU(r){return{version:Zh,servers:UR(r,"session settings",!1,$R)}}function vU(r){if(!W(r))return;let e=D({authType:jR(r.authType),username:Un(r.username),userId:Un(r.userId),lastLoginAt:Un(r.lastLoginAt),updatedAt:Un(r.updatedAt)});return Object.keys(e).length===0?void 0:e}function $R(r){if(!W(r))return;let e=FR(r.token),t=FR(r.accessToken),n=Un(r.refreshToken),o=jR(r.authType);!o&&(t||n)&&(o="oauth"),!o&&e&&(o="pat");let i=D({authType:o,token:e??t,refreshToken:n,lastSeenAt:Un(r.lastSeenAt),updatedAt:Un(r.updatedAt)});return Object.keys(i).length===0?void 0:i}function FR(r){if(!W(r)||r.type!=="Bearer")return;let e=Un(r.value);if(e)return D({type:"Bearer",value:e,expiresAt:Un(r.expiresAt),scope:Zn(r.scope),updatedAt:Un(r.updatedAt)})}function jR(r){return r==="oauth"||r==="pat"?r:void 0}function Un(r){return typeof r=="string"?r:void 0}function kU(r,e,t){try{return _e(r)}catch(n){if(t)throw new Error(`invalid ${e} server key: ${r}`,{cause:n instanceof Error?n:void 0});fU.warn(`ignored invalid ${e} server key: ${r}`,n);return}}async function AR(r,e){await rr(r,`${JSON.stringify(e,void 0," ")}
|
|
59
|
+
`)}function tg(){let r=BR();if(r)return ao.dirname(r);let e=PU();return e||ao.join(OR.homedir(),cU)}function VR(){let r=BR();return r||ao.join(tg(),lU)}function qR(){return ao.join(tg(),uU)}function wU(){return ao.join(tg(),dU)}function BR(){return HR(pU)}function PU(){return HR(mU)}function HR(r){let e=process.env[r]?.trim();return e?ao.resolve(e):void 0}async function rg(r,e){let t=await Cd(r,e);return ng(r,t)}async function Cd(r,e){let t=_e(r),n=new Date().toISOString();return e.type==="pat"?GR(t,{authType:"pat",token:e.token,verifiedAt:n}):GR(t,{authType:"oauth",token:e.token,refreshToken:e.refreshToken,expiresAt:e.expiresAt,scope:e.scope,verifiedAt:n})}async function ng(r,e){K(gt(r,e.serverUrl),`verified credential belongs to another server: ${e.serverUrl}`);let t=_e(r),n=new Date().toISOString(),o=Qe(e.token);if(!o)throw new ft({serverUrl:t});let i=D({authType:e.authType,username:e.username,userId:e.userId,lastLoginAt:e.verifiedAt??n,updatedAt:n}),a=D({authType:e.authType,token:D({type:"Bearer",value:o,expiresAt:e.expiresAt,scope:e.scope,updatedAt:e.verifiedAt??n}),refreshToken:e.refreshToken,lastSeenAt:e.verifiedAt??n,updatedAt:n}),s=await eg({auth:{servers:{[t]:i}},session:{servers:{[t]:a}}}),c=ig(t,s.auth.servers[t],s.session.servers[t]);if(!c)throw new ft({serverUrl:t});return c}async function Ai(r){let e=_e(r),{auth:t,session:n}=await WR(e);return ig(e,t,n)}async function og(r){if(!r){let{result:n}=await yd(o=>({patch:{auth:{servers:null},session:{servers:null}},result:new Set([...Object.keys(o.auth.servers),...Object.keys(o.session.servers)]).size}));return{all:!0,removed:n}}let e=_e(r),{result:t}=await yd(n=>({patch:{auth:{servers:{[e]:null}},session:{servers:{[e]:null}}},result:n.auth.servers[e]||n.session.servers[e]?1:0}));return{all:!1,serverUrl:e,removed:t}}async function KR(r,e){let t=_e(r),n=e??await Ai(t),o=n?.authType==="oauth"?Qe(n.refreshToken):void 0;if(!o)throw new ft({serverUrl:t});let i=await sR(t,{refreshToken:o}),a=new Date().toISOString(),s=D({authType:"oauth",token:D({type:"Bearer",value:i.accessToken,expiresAt:i.expiresAt,scope:i.scope,updatedAt:a}),refreshToken:i.refreshToken,lastSeenAt:a,updatedAt:a}),c=await eg({auth:{servers:{[t]:{authType:"oauth",updatedAt:a}}},session:{servers:{[t]:s}}}),l=ig(t,c.auth.servers[t],c.session.servers[t]);if(!l)throw new ft({serverUrl:t});return l}var JR="/api/me/whoami";function ig(r,e,t){if(!t?.authType)return;if(t.authType==="pat")return!t.token||Gh(t.token.expiresAt)?void 0:{serverUrl:r,username:e?.username,userId:e?.userId,authType:"pat",token:t.token.value,expiresAt:t.token.expiresAt,scope:t.token.scope,tokenExpired:!1,lastLoginAt:e?.lastLoginAt,updatedAt:t.updatedAt??e?.updatedAt};if(!t.refreshToken)return;let n=Gh(t.token?.expiresAt),o=t.token&&!n?t.token:void 0;return{serverUrl:r,username:e?.username,userId:e?.userId,authType:"oauth",token:o?.value,expiresAt:o?.expiresAt??t.token?.expiresAt,scope:o?.scope,refreshToken:t.refreshToken,tokenExpired:n,lastLoginAt:e?.lastLoginAt,updatedAt:t.updatedAt??e?.updatedAt}}async function GR(r,e){let t=Qe(e.token);if(!t)throw new ft({serverUrl:r});let n=await RU(r,t);return{serverUrl:r,authType:e.authType,username:n.username,userId:n.userId,token:t,expiresAt:Qe(e.expiresAt),scope:Zn(e.scope),refreshToken:Qe(e.refreshToken),verifiedAt:e.verifiedAt}}async function RU(r,e){let t=`${r}${JR}`,n;try{n=await Ho(t,{headers:{Authorization:`Bearer ${e}`}})}catch(s){throw sh(s)?new ft({serverUrl:r,cause:s}):s}let o;try{o=await n.json()}catch(s){throw zR(r,t,"response body is not valid JSON",s)}if(!W(o))throw zR(r,t,"response body is not an object");let i=Qe(o.userName)??Qe(o.username),a=Qe(o.userId)??Qe(o.id);if(o.anonymous===!0||!i&&!a)throw new ft({serverUrl:r});return{username:i,userId:a}}function zR(r,e,t,n){return new Pe("err.net.invalidResponse",{properties:{url:e,endpoint:JR,serverUrl:r,reason:t},cause:n})}var sb=E(require("fs")),cb=E(require("os")),cg=E(require("path"));var ob=E(require("fs")),Ui=E(require("path")),Vc=require("stream");ze();$n();V();re();$c();V();function WU(r){let e="";for(let t=0;t<r.length;t++){let n=r[t];n==="*"&&r[t+1]==="*"?r[t+2]==="/"?(e+="(?:.*/)?",t+=2):(e+=".*",t++):n==="*"?e+="[^/]*":n==="?"?e+="[^/]":".+^$()|{}[]\\".includes(n)?e+="\\"+n:e+=n}return new RegExp("^"+e+"$")}var eb=new Map;function sg(r){let e=eb.get(r);return e||(e=WU(r),eb.set(r,e)),e}function gn(r){return r.indexOf("*")!==-1||r.indexOf("?")!==-1}function jc(r){let e=r.map(sg);return{matches(t){if(e.length===0)return!1;let n=Je(t);return e.some(o=>o.test(n)||o.test("/"+n))}}}function Ni(r,e){if(!e||e.length===0)return!1;let t=Je(r);return e.some(n=>sg(n).test(t)||sg(n).test("/"+t))}V();var tb=/^[a-z0-9]+$/,Wi=class r{constructor(e){this.infos=e;this.infoByExtension=UU(e),this.patternInfos=$U(e)}infoByExtension;patternInfos;static empty(){return new r({})}static fromServerVersions(e){let t={};for(let[n,o]of Object.entries(e??{})){let i=jU(n,o);t[i.metaType]=i}return new r(t)}isEmpty(){return Object.keys(this.infos).length===0}getInfos(){return this.infos}getInfo(e){return this.infos[e]??this.infos[e.toLowerCase()]}getInfoByPath(e){let t=Ee(ie(e)),n=this.infoByExtension.get(Sd(t));return n||this.patternInfos.find(o=>o.matcher.matches(t))?.info}};function UU(r){let e=new Map;for(let t of Object.values(r))rb(t)&&e.set(t.metaType,t);return e}function $U(r){return Object.values(r).filter(e=>e.fileMatch.length>0&&!rb(e)).map(e=>({info:e,matcher:jc(e.fileMatch),specificity:qU(e)})).sort((e,t)=>t.specificity-e.specificity)}function rb(r){return tb.test(r.metaType)&&r.fileMatch.length===1&&r.fileMatch[0]===`**/*.${r.metaType}`}function jU(r,e){let t=r.trim(),n=t.toLowerCase();if(tb.test(n))return{metaType:n,fileMatch:[`**/*.${n}`],contentVersion:e,upgradeSupported:!0};let o=VU(t);return{metaType:o,fileMatch:[o],contentVersion:e,upgradeSupported:!0}}function VU(r){return Ee(ie(r))}function qU(r){return Math.max(0,...r.fileMatch.map(e=>e.replace(/[*?]/g,"").length))}F();O();var Ar="/api/dev-tool/v2",BU={viewFile:`${Ar}/file/view`},HU=5*60*1e3;function so(r,e){let t=new URLSearchParams;return t.set("path",e.path),e[":edit"]!==void 0&&t.set(":edit",e[":edit"]),`${r}${BU.viewFile}?${t.toString()}`}var jn=class{constructor(e,t={}){this.serverUrl=e;this.workspaceRoot=t.workspaceRoot,t.initialCredential&&(this.authCredential=t.initialCredential),this.requestRunner=new bt}requestRunner;workspaceRoot;authCredential;rejectedAuthCredentialSignature;get connected(){return this.authCredential?.token!==void 0}get currentAuthorizationHeader(){let e=this.authCredential?.token;return e?`Bearer ${e}`:""}getDiagnostics(e){return null}async verify(){if(this.authCredential===null?await this.doEnsureAuthCredentialLoaded():await this.ensureAuthCredentialLoaded(),await this.refreshOAuthCredentialIfNeeded(!1),!this.authCredential?.token)throw new ft({workspaceRoot:this.workspaceRoot,serverUrl:this.serverUrl})}async getServerInfo(){return this.get("/server/info")}async getServerDetailInfo(){return this.get("/server/detail-info")}async getMetadataVersions(){return Wi.fromServerVersions((await this.getServerInfo()).metadataVersions)}async getProjects(){return this.get("/project/list")}async createProject(e){return this.post("/project/create",e)}async listFiles(e){return(await this.get(`/file/list?path=${encodeURIComponent(e)}`)).map(n=>this.normalizeMetaFileInfo(n))}async searchFiles(e){let t=await this.post("/file/search",e);return{...t,results:t.results.map(n=>({...n,matchedOn:{...n.matchedOn},warnings:[...n.warnings],file:this.normalizeMetaFileInfo(n.file)}))}}async countFiles(e){return this.get(`/file/count?path=${encodeURIComponent(e)}`)}async getFileDescendant(e){let t=[];return await this.collectFileDescendants(e,t),t}async getFile(e){return this.normalizeMetaFileInfo(await this.get(`/file/get-info?path=${encodeURIComponent(e)}`))}async getFileById(e){return this.normalizeMetaFileInfo(await this.get(`/file/get-info?id=${encodeURIComponent(e)}`))}async getFileInfos(e){return(await this.post("/file/get-infos",{paths:e})).map(n=>this.normalizeMetaFileInfo(n))}async getFileHistory(e,t={}){return this.get(this.createEndpoint("/file/get-history",{path:e,limit:t.limit}))}isNotFoundError(e){return Fw(e)}async getFileContent(e,t){let n=await this.doGetFileContentStream(e,t),o=[];for await(let i of n.stream)o.push(Buffer.isBuffer(i)?i:Buffer.from(i));return{buffer:Buffer.concat(o),revision:n.revision,modifyTime:n.modifyTime}}async getFileContentStream(e,t){return this.doGetFileContentStream(e,t)}async doGetFileContentStream(e,t){let n=`${this.serverUrl}${Ar}/file/get-content?path=${encodeURIComponent(e)}`;t?.revision!==void 0&&(n+=`&revision=${t.revision}`),t?.upgradeContent!==void 0&&(n+=`&upgradeContent=${t.upgradeContent}`);let o=await this.requestStream(n);return{stream:o.stream,revision:Number(o.response.headers.get("X-Meta-Revision")??"0"),modifyTime:Number(o.response.headers.get("X-Meta-ModifyTime")??"0")}}async upgradeFileContent(e){return this.post("/file/upgrade-content",e)}async compileFileContent(e){return this.post("/file/compile-content",e)}async saveFile(e,t,n){let o={action:n?.expectedRevision===null?"create":"modify",path:e,isFolder:!1},i=`${this.serverUrl}${Ar}/file/save?path=${encodeURIComponent(e)}`;n?.desc!==void 0&&(i+=`&desc=${encodeURIComponent(n.desc)}`),n?.expectedRevision!==void 0&&(i+=`&expectedRevision=${n.expectedRevision===null?"":n.expectedRevision}`);let a=await this.requestJson(i,{method:"POST",headers:{"Content-Type":"application/octet-stream"},body:this.toRequestBody(t),duplex:t instanceof Vc.Readable?"half":void 0});return this.toFileMutationResponse(a,o)}async createFile(e){return this.postFileMutation("/file/create",e)}async modifyFile(e){return this.postFileMutation("/file/save",e)}async moveFile(e){return this.postFileMutation("/file/move",e)}async deleteFile(e,t){let n={path:e},o={action:"delete",path:e};t?.expectedRevision!==void 0&&(n.expectedRevision=t.expectedRevision),t?.expectedModifyTime!==void 0&&(n.expectedModifyTime=t.expectedModifyTime);let i=await this.post("/file/delete",n);return this.toFileMutationResponse(i,o)}buildViewFileRedirectUrl(e){return so(this.serverUrl,e)}async getExtensionTemplates(){return this.get("/extension/list-templates")}async downloadExtensionTemplate(e,t){let n=encodeURIComponent(e),o=encodeURIComponent(`${t}.zip`),i=`${this.serverUrl}${Ar}/extension/get-template?extensionPoint=${n}&zipFile=${o}`,a=await this.requestStream(i),s=[];for await(let c of a.stream)s.push(Buffer.isBuffer(c)?c:Buffer.from(c));return Buffer.concat(s)}async getDataSources(){return this.get("/db/list-datasources")}async getSettings(e={}){return this.post("/settings/get",e)}async setSettings(e){return this.post("/settings/set",e)}async probeDataSource(e){return this.post("/db/probe-datasource",{dataSource:e})}async getDataSourceConfig(e,t={}){return this.get(this.createEndpoint("/db/get-datasource-config",{dataSource:e}))}async testDataSource(e){return this.post("/db/test-datasource",e)}async createDataSource(e){let{projectName:t,...n}=e;return this.post("/db/create-datasource",n)}async updateDataSource(e){let{projectName:t,...n}=e;return this.post("/db/update-datasource",n)}async deleteDataSource(e){let{projectName:t,...n}=e;return this.post("/db/delete-datasource",n)}async listDbSchemas(e,t={}){return this.get(this.createEndpoint("/db/list-schemas",{dataSource:e,catalog:t.catalog}))}async listDbTables(e,t={}){return this.get(this.createEndpoint("/db/list-tables",{dataSource:e,schema:t.schema,tableNameContains:t.tableNameContains}))}async describeDbTable(e,t,n={}){let o={dataSource:e,tableName:t,schema:n.schema},i=this.createEndpoint("/db/describe-table",o),a=await this.get(i);if(!W(a))throw this.createInvalidEndpointResponseError("/db/describe-table","missing table metadata",{dataSource:e,tableName:t,schema:n.schema});let s=n.includeDDL?(await this.queryDbDdl(e,t,n)).ddl:void 0,c={dataSource:e,table:a};return s!==void 0&&(c.ddl=s),c}async executeDbQuery(e){return this.post("/db/exec-query-sql",this.resolveDbSqlExecRequest(e))}async queryDbDdl(e,t,n={}){let o=await this.post("/db/query-ddl",{dataSource:e,tableName:t,...n.schema!==void 0?{schema:n.schema}:{}});return{dataSource:e,tableName:t,ddl:o}}async exportDbQueryData(e){return this.requestJsonBodyStream("/db/export-query-data",this.resolveDbSqlExecRequest(e))}async exportDbTableData(e){return this.requestJsonBodyStream("/db/export-table-data",this.resolveDbTableRequest(e))}async executeDbAny(e){return this.post("/db/exec-any-sql",this.resolveDbSqlExecRequest(e))}async importDbTableData(e){return this.post("/db/import-table-data",this.resolveDbTableRequest(e))}async searchModels(e={}){return this.post("/model/search",e)}async getModelSummary(e){return this.post("/model/summary",e)}async listModelFields(e){return this.post("/model/fields",e)}async listModelIndexes(e){return this.post("/model/indexes",e)}async selectModel(e){return this.post("/model/select",e)}async selectModelStream(e){return this.postJsonStream("/model/select",e)}async queryModels(e){return this.post("/model/query",e)}async queryModelsStream(e,t){return this.postJsonStream(this.createEndpoint("/model/query",{maxRows:t}),e)}async exportModelSelectData(e){return this.requestJsonBodyStream("/model/export-select-data",e)}async exportModelQueryData(e){return this.requestJsonBodyStream("/model/export-query-data",e)}async profile(e){return this.post("/model/profile",e)}async fieldProfile(e){return this.post("/model/field-profile",e)}async executeScript(e){return this.post("/script/execute-temp",e)}async checkScript(e){return{diagnostics:await this.post("/script/check",e)}}async listCaches(){return this.get("/server/caches")}async cleanCache(e){await this.post("/server/caches/clean",{cacheName:e})}async getTypeScriptSupportApiLibs(){return this.get("/support/typescript-libs")}async getJsonSchemaSupport(){return this.get("/support/json-schema-manifest")}async downloadJsonSchema(e){let t="dist/json-schemas/",o=jo(e.startsWith(t)?e.slice(t.length):e,"JSON Schema source").split("/").map(i=>encodeURIComponent(i)).join("/");return this.requestText(`${this.serverUrl}${Ar}/support/json-schema?schemaFile=${o}`)}async getFrontendFrameworksManifest(){return this.get("/support/frontend-frameworks")}async get(e){return this.requestJson(`${this.serverUrl}${Ar}${e}`)}async post(e,t){return this.requestJson(`${this.serverUrl}${Ar}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}async postJsonStream(e,t){return this.requestJsonObjectStream(`${this.serverUrl}${Ar}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}createEndpoint(e,t){let n=new URLSearchParams;for(let[i,a]of Object.entries(t))a!=null&&n.set(i,String(a));let o=n.toString();return o?`${e}?${o}`:e}resolveDbSqlExecRequest(e){let{projectName:t,...n}=e;return n}resolveDbTableRequest(e){let{projectName:t,...n}=e;return n}async postFileMutation(e,t){let n=e==="/file/move"?this.toMoveFileMutationMetadata(t):this.toFileMutationMetadata(t),o=this.toFileMutationContext(e,t),i=t.contentChanged?await this.postMultipartFileMutation(e,t,n):await this.post(e,n);return this.toFileMutationResponse(i,o)}async postMultipartFileMutation(e,t,n){K(t.localContentPath,`localContentPath is required when contentChanged is true: ${t.path}`);let o=this.createMultipartBoundary(),i=Vc.Readable.from(this.createFileMutationMultipartBody(o,t.localContentPath,n));return this.requestJson(`${this.serverUrl}${Ar}${e}`,{method:"POST",headers:{"Content-Type":`multipart/form-data; boundary=${o}`},body:i,duplex:"half"})}async*createFileMutationMultipartBody(e,t,n){let o=JSON.stringify(n);yield Buffer.from(`--${e}\r
|
|
49
60
|
Content-Disposition: form-data; name="metadata"\r
|
|
50
61
|
Content-Type: application/json; charset=utf-8\r
|
|
51
62
|
\r
|
|
@@ -54,65 +65,68 @@ Content-Type: application/json; charset=utf-8\r
|
|
|
54
65
|
Content-Disposition: form-data; name="content"; filename="content.bin"\r
|
|
55
66
|
Content-Type: application/octet-stream\r
|
|
56
67
|
\r
|
|
57
|
-
`,"utf-8");for await(let i of
|
|
68
|
+
`,"utf-8");for await(let i of ob.createReadStream(t))yield Buffer.isBuffer(i)?i:Buffer.from(i);yield Buffer.from(`\r
|
|
58
69
|
--${e}--\r
|
|
59
|
-
`,"utf-8")}toFileMutationMetadata(e){let{localContentPath:t,contentChanged:n,...o}=e;return o}toMoveFileMutationMetadata(e){let{isFolder:t,...n}=this.toFileMutationMetadata(e);return n}toFileMutationContext(e,t){return e==="/file/create"?{action:"create",path:t.path,isFolder:t.isFolder}:e==="/file/move"?{action:"move",path:t.path,targetPath:t.targetPath,isFolder:t.isFolder}:{action:"modify",path:t.path,isFolder:t.isFolder}}toFileMutationResponse(e,t){let n=e.fileInfo?this.normalizeMetaFileInfo(e.fileInfo):void 0,o=n?.path??(t.action==="move"?t.targetPath??t.path:t.path),i={path:o,success:!0,contentMutation:this.getContentMutation(e,t.action),pathMutation:this.getPathMutation(t,o)};t.action==="move"&&(i.oldPath=t.path),e.modifyTime!==void 0&&(i.modifyTime=e.modifyTime);let a=this.getMetaInfoChanged(e,t);return a!==void 0&&(i.metaInfoChanged=a),n!==void 0&&(i.metaInfo=n),i}getContentMutation(e,t){return t==="delete"?"deleted":e.created===!0?"created":e.contentChanged===!0?"modified":"none"}getPathMutation(e,t){if(e.action!=="move"||e.path===t)return"none";let n=Do.posix.dirname(e.path)!==Do.posix.dirname(t),o=Do.posix.basename(e.path)!==Do.posix.basename(t);return n&&o?"renamedAndMoved":n?"moved":"renamed"}getMetaInfoChanged(e,t){return t.action==="create"&&t.isFolder===!0&&e.created!==!0?!0:e.metaInfoChanged}createMultipartBoundary(){return"----succapp-"+Date.now().toString(36)+"-"+Math.random().toString(36).slice(2)}toRequestBody(e){return e instanceof $a.Readable||Buffer.isBuffer(e)?e:Buffer.from(e,"utf-8")}normalizeMetaFileInfo(e){return{...e,parentDir:Do.posix.dirname(e.path),name:Do.posix.basename(e.path)}}async collectFileDescendants(e,t){let n=await this.listFiles(e);t.push(...n);for(let o of n)o.isFolder&&await this.collectFileDescendants(o.path,t)}async requestJson(e,t){return this.requestRunner.addTask(async()=>{let n=await this.fetchWithAuth(e,t);return await Dc(n,this.createRequestContext(e,t))})}async requestText(e,t){return this.requestRunner.addTask(async()=>await(await this.fetchWithAuth(e,t)).text())}async requestStream(e,t){let n=await this.requestRunner.acquire();try{let o=await this.fetchWithAuth(e,t);if(await qC(o.clone(),this.createRequestContext(e,t)),o.ok||await Hn(o,e),!o.body)throw new St(e);let i=$a.Readable.fromWeb(o.body);return this.releaseRequestSlotAfterStream(i,n),{response:o,stream:i}}catch(o){throw n.release(),o}}async requestJsonObjectStream(e,t){return(await this.requestStream(e,t)).stream}async requestJsonBodyStream(e,t){return(await this.requestStream(`${this.serverUrl}${Yt}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})).stream}async fetchWithAuth(e,t,n=!1){await this.ensureAuthCredentialLoaded(),await this.refreshOAuthCredentialIfNeeded(!1);let o=fu(t?.headers),i=this.authCredential?.token;i&&(o.Authorization=`Bearer ${i}`);let a=await $n(e,{...t,headers:o});if(a.status===401){if(!n&&await this.isOAuthTokenExpiredResponse(a)&&await this.refreshOAuthCredentialIfNeeded(!0))return this.fetchWithAuth(e,t,!0);throw this.handleAuthFailure(),new Ue({workspaceRoot:this.workspaceRoot,serverUrl:this.serverUrl})}return a.ok||await Hn(a,e),a}createRequestContext(e,t){return{url:e,endpoint:yD(e),serverUrl:this.serverUrl,request:CD(t?.body)}}createInvalidEndpointResponseError(e,t,n){return new me("err.net.invalidResponse",{properties:{url:`${this.serverUrl}${Yt}${e}`,endpoint:e,serverUrl:this.serverUrl,reason:t,request:n}})}async ensureAuthCredentialLoaded(){if(!this.authCredential)return vr(this,"authCredential",()=>this.doEnsureAuthCredentialLoaded())}async doEnsureAuthCredentialLoaded(){let e=await Io(this.serverUrl);if(!e||!e.token&&(e.authType!=="oauth"||!e.refreshToken)){this.authCredential=null;return}if(this.rejectedAuthCredentialSignature===HS(e)){this.authCredential=null;return}this.rejectedAuthCredentialSignature=void 0,this.authCredential=e}async refreshOAuthCredentialIfNeeded(e){let t=this.authCredential;if(!t||t.authType!=="oauth"||!t.refreshToken||!e&&!this.shouldRefreshOAuthCredential(t))return!1;try{let n=await vr(this,`oauthRefresh:${this.serverUrl}`,()=>US(this.serverUrl,t));return this.authCredential=n,!0}catch(n){throw SD(n)&&this.handleAuthFailure(),n}}shouldRefreshOAuthCredential(e){return e.tokenExpired||!e.token?!0:cS(e.expiresAt,gD)}async isOAuthTokenExpiredResponse(e){let t;try{t=await e.clone().text()}catch{return!1}if(!t.trim())return!1;let n;try{n=JSON.parse(t)}catch{return!1}return lt(n)==="err.oauth2.tokenExpired"}handleAuthFailure(){this.authCredential&&(this.rejectedAuthCredentialSignature=HS(this.authCredential)),this.authCredential=null}releaseRequestSlotAfterStream(e,t){e.once("close",()=>t.release()),e.once("error",()=>t.release())}};function yD(r){try{let e=new URL(r),t=e.pathname.indexOf(Yt);return t<0?e.pathname:e.pathname.slice(t+Yt.length)||"/"}catch{return}}function CD(r){if(typeof r=="string")try{let e=JSON.parse(r);return W(e)?e:void 0}catch{return}}function SD(r){return r instanceof Ue?!0:nc(r)?r.status>=400&&r.status<500:r instanceof me&&r.errorCode==="err.login.oauthTokenInvalid"}function HS(r){return[r.authType,r.token??"",r.refreshToken??""].join("\0")}_();F();tt();$();var GS=E(require("fs")),Ha=E(require("path"));F();$();var vD=8;async function KS(r){let e=Ha.resolve(r.startPath),t=new Set((r.excludedRoots??[]).map(o=>Ha.resolve(o))),n=r.maxDepth??vD;for(let o=0;o<=n;o++){if(!t.has(e)&&await kD(e))return e;let i=Ha.dirname(e);if(i===e)return;e=i}}async function kD(r){try{return(await GS.promises.stat(Wr(r))).isDirectory()}catch(e){if(x(e))return!1;throw e}}async function Ei(r,e){let t=r.command,n=t?.serverTarget??e.serverTarget??"required",o=t?.spec.positionals.some(C=>C.role==="server-url")??e.explicitServerUrl!==void 0,i=t?nn(t,"server"):!0,a=n!=="none"&&(t?t.workspaceTarget!=="none":!0),s=n!=="none",c=r.workspace;c&&a&&await c.config.ensureLoaded();let l=o?e.explicitServerUrl:void 0,p=i?r.config.server:void 0,u=a?c?.activeServerUrl:void 0,g=s?r.config.envServer:void 0,m=l??p??u??g;if(!m)throw new R("err.cli.missingInput",{inputId:"server",sourceIds:wD({positionalServerUrl:o,serverOption:i,workspaceServer:a,environmentServer:s}),commandName:r.command?.spec.name,envName:Gt.server});let h=c?.config.resolveServerUrl(m);if(h!==void 0)return h;if(l!==void 0||p===void 0)return wr(m);let y=Se("server");return wr(m,{input:y,option:y,flag:"server"})}function wr(r,e={inputId:"server"}){try{return Ce(r)}catch(t){throw So(t,"err.net.invalidUrl")?new R("err.cli.invalidUrl",{...e,value:r,url:r},{cause:t}):t}}async function Gr(r,e){let t=r.config.server;await e.config.ensureLoaded();let n=e.activeServerUrl;if(!n)throw new R("err.cli.missingInput",{inputId:"activeServer",sourceIds:["workspaceRemoteAdd"]});if(!t)return;let o=Se("server"),i=wr(t,{input:o,option:o,flag:"server"});if(!Je(i,n))throw new R("err.cli.serverMismatch",{input:o,option:o,value:i,expected:n,context:{target:i,active:n}})}function wD(r){let e=[];return r.positionalServerUrl&&e.push("serverPositional"),r.serverOption&&e.push("serverOption"),r.workspaceServer&&e.push("workspaceRemoteAdd"),r.environmentServer&&e.push("environmentServer"),e}async function za(r,e){let t=r.workspace?.config.resolveServerUrl(e);return r.workspace&&t?r.workspace.requireServerClient(t):new zr(e,{workspaceRoot:r.workspace?.root})}async function $c(r){let e=r.workspace?Ou.resolve(r.cwd,r.workspace):Ou.resolve(r.cwd);r.workspace!==void 0&&await Sc(e);let t=await KS({startPath:e,excludedRoots:[PD(r.env)],maxDepth:r.maxDepth});if(!t&&r.required!==!1)throw new R("err.cli.invalidWorkspace",{inputId:"workspace",source:e});return t}async function zn(r){try{return await Da(r)}catch(e){throw YS(r,e)}}async function Ti(r){try{return await JS.promises.stat(r)}catch(e){throw YS(r,e)}}function ne(r,e){return{...r.workspace?{workspace:r.workspace.root}:{},server:e}}function PD(r=process.env){return r.HOME||r.USERPROFILE||QS.homedir()}function YS(r,e){return x(e)?new R("err.file.notFound",{path:r},{cause:e}):new R("err.cli.invalidReadableFile",{inputId:"inputFile",source:r,path:r},{cause:e})}Ie();var te=class{toOptions(e){return{}}async execute(e,t){return await this.validateOptions(e,t),this.executeCommand(e,t)}validateOptions(e,t){}requireWorkspace(e){return H(e.workspace,"CLI command requires a workspace context"),e.workspace}async resolveServerUrl(e,t){return Ei(e,{explicitServerUrl:t})}createServerApiClient(e,t){return za(e,t)}},fe=class extends te{async executeCommand(e,t){let n=this.requireWorkspace(e);return this.executeWorkspaceCommand(n,e,t)}};var XS=require("node:child_process"),ZS=require("node:util"),RD=(0,ZS.promisify)(XS.execFile);async function Mi(r,e){let t=bD(r);await RD(t.command,t.args,{signal:e})}function bD(r){return process.platform==="darwin"?{command:"open",args:[r]}:process.platform==="win32"?{command:"rundll32",args:["url.dll,FileProtocolHandler",r]}:{command:"xdg-open",args:[r]}}var PP=require("crypto"),Ef=E(require("path"));tt();D();J();Z();xi();var Mp=E(require("fs")),Fr=E(require("path"));var Gc=class{total=0;byApi=new Map;byPath=new Map;pathKeyCount=0;droppedPathKeys=0;recentCallsDropped=0;recentCalls=[];maxPathKeys;maxRecentCalls;constructor(e={}){this.maxPathKeys=e.maxPathKeys??500,this.maxRecentCalls=e.maxRecentCalls??200}record(e){this.total++,this.byApi.set(e.name,(this.byApi.get(e.name)??0)+1),e.path!==void 0&&this.recordPath(e.name,e.path),this.recordRecentCall(e)}getSnapshot(e={}){let t={total:this.total,byApi:Object.fromEntries(this.byApi),byPath:this.createByPathSnapshot(),droppedPathKeys:this.droppedPathKeys,recentCallsDropped:this.recentCallsDropped,...e.includeRecentCalls?{recentCalls:this.recentCalls.map(n=>({...n}))}:{}};return e.reset&&this.reset(),t}reset(){this.total=0,this.byApi.clear(),this.byPath.clear(),this.pathKeyCount=0,this.droppedPathKeys=0,this.recentCallsDropped=0,this.recentCalls.length=0}recordPath(e,t){let n=this.byPath.get(e);if(n?.has(t)){n.set(t,(n.get(t)??0)+1);return}if(this.pathKeyCount>=this.maxPathKeys){this.droppedPathKeys++;return}n||(n=new Map,this.byPath.set(e,n)),n.set(t,1),this.pathKeyCount++}recordRecentCall(e){if(this.maxRecentCalls<=0){this.recentCallsDropped++;return}this.recentCalls.length>=this.maxRecentCalls&&(this.recentCalls.shift(),this.recentCallsDropped++),this.recentCalls.push({...e})}createByPathSnapshot(){let e={};for(let[t,n]of this.byPath)e[t]=Object.fromEntries(n);return e}};var _u=class{constructor(e){this.delegate=e}diagnostics=new Gc;get serverUrl(){return this.delegate.serverUrl}get currentAuthorizationHeader(){return this.delegate.currentAuthorizationHeader}getDiagnostics(e){return this.diagnostics.getSnapshot(e)}async getServerInfo(){return this.recordApiCall("getServerInfo"),this.delegate.getServerInfo()}async getServerDetailInfo(){return this.recordApiCall("getServerDetailInfo"),this.delegate.getServerDetailInfo()}async getMetadataVersions(){return this.recordApiCall("getMetadataVersions"),this.delegate.getMetadataVersions()}async getProjects(){return this.recordApiCall("getProjects"),this.delegate.getProjects()}async createProject(e){return this.recordApiCall("createProject",e.name),this.delegate.createProject(e)}async listFiles(e){return this.recordApiCall("listFiles",e),this.delegate.listFiles(e)}async searchFiles(e){return this.recordApiCall("searchFiles",e.path??e.query),this.delegate.searchFiles(e)}async countFiles(e){return this.recordApiCall("countFiles",e),this.delegate.countFiles(e)}async getFileDescendant(e){return this.recordApiCall("getFileDescendant",e),this.delegate.getFileDescendant(e)}async getFile(e){return this.recordApiCall("getFile",e),this.delegate.getFile(e)}async getFileById(e){return this.recordApiCall("getFileById",e),this.delegate.getFileById(e)}async getFileInfos(e){return this.recordApiCall("getFileInfos"),this.delegate.getFileInfos(e)}async getFileHistory(e,t){return this.recordApiCall("getFileHistory",e),this.delegate.getFileHistory(e,t)}isNotFoundError(e){return this.delegate.isNotFoundError(e)}async getFileContent(e,t){return this.recordApiCall("getFileContent",e),this.delegate.getFileContent(e,t)}async getFileContentStream(e,t){return this.recordApiCall("getFileContentStream",e),this.delegate.getFileContentStream(e,t)}async saveFile(e,t,n){return this.recordApiCall("saveFile",e),this.delegate.saveFile(e,t,n)}async createFile(e){return this.recordApiCall("createFile",e.path),this.delegate.createFile(e)}async modifyFile(e){return this.recordApiCall("modifyFile",e.path),this.delegate.modifyFile(e)}async moveFile(e){return this.recordApiCall("moveFile",e.path),this.delegate.moveFile(e)}async upgradeFileContent(e){return this.recordApiCall("upgradeFileContent",e.path),this.delegate.upgradeFileContent(e)}async compileFileContent(e){return this.recordApiCall("compileFileContent",e.path),this.delegate.compileFileContent(e)}async deleteFile(e,t){return this.recordApiCall("deleteFile",e),this.delegate.deleteFile(e,t)}async getExtensionTemplates(){return this.recordApiCall("getExtensionTemplates"),this.delegate.getExtensionTemplates()}async downloadExtensionTemplate(e,t){return this.recordApiCall("downloadExtensionTemplate",`${e}/${t}`),this.delegate.downloadExtensionTemplate(e,t)}async getDataSources(){return this.recordApiCall("getDataSources"),this.delegate.getDataSources()}async getSettings(e){return this.recordApiCall("getSettings",e?.path),this.delegate.getSettings(e)}async setSettings(e){return this.recordApiCall("setSettings",e.path),this.delegate.setSettings(e)}async probeDataSource(e,t){return this.recordApiCall("probeDataSource",e),this.delegate.probeDataSource(e,t)}async getDataSourceConfig(e,t){return this.recordApiCall("getDataSourceConfig",e),this.delegate.getDataSourceConfig(e,t)}async testDataSource(e){return this.recordApiCall("testDataSource",e.originalDataSource??e.config.name),this.delegate.testDataSource(e)}async createDataSource(e){return this.recordApiCall("createDataSource",e.config.name),this.delegate.createDataSource(e)}async updateDataSource(e){return this.recordApiCall("updateDataSource",e.dataSource),this.delegate.updateDataSource(e)}async deleteDataSource(e){return this.recordApiCall("deleteDataSource",e.dataSource),this.delegate.deleteDataSource(e)}async listDbSchemas(e,t){return this.recordApiCall("listDbSchemas",e),this.delegate.listDbSchemas(e,t)}async listDbTables(e,t){return this.recordApiCall("listDbTables",e),this.delegate.listDbTables(e,t)}async describeDbTable(e,t,n){return this.recordApiCall("describeDbTable",`${e}/${t}`),this.delegate.describeDbTable(e,t,n)}async queryDbDdl(e,t,n){return this.recordApiCall("queryDbDdl",`${e}/${t}`),this.delegate.queryDbDdl(e,t,n)}async executeDbQuery(e){return this.recordApiCall("executeDbQuery",e.dataSource),this.delegate.executeDbQuery(e)}async exportDbQueryData(e){return this.recordApiCall("exportDbQueryData",e.dataSource),this.delegate.exportDbQueryData(e)}async exportDbTableData(e){return this.recordApiCall("exportDbTableData",`${e.dataSource}/${e.tableName}`),this.delegate.exportDbTableData(e)}async executeDbAny(e){return this.recordApiCall("executeDbAny",e.dataSource),this.delegate.executeDbAny(e)}async importDbTableData(e){return this.recordApiCall("importDbTableData",`${e.dataSource}/${e.tableName}`),this.delegate.importDbTableData(e)}async listModels(e){return this.recordApiCall("listModels",e?.project),this.delegate.listModels(e)}async getModelSummary(e){return this.recordApiCall("getModelSummary",e.model),this.delegate.getModelSummary(e)}async listModelFields(e){return this.recordApiCall("listModelFields",e.model),this.delegate.listModelFields(e)}async listModelIndexes(e){return this.recordApiCall("listModelIndexes",e.model),this.delegate.listModelIndexes(e)}async selectModel(e){return this.recordApiCall("selectModel",e.model),this.delegate.selectModel(e)}async selectModelStream(e){return this.recordApiCall("selectModelStream",e.model),this.delegate.selectModelStream(e)}async queryModels(e){return this.recordApiCall("queryModels"),this.delegate.queryModels(e)}async queryModelsStream(e,t){return this.recordApiCall("queryModelsStream"),this.delegate.queryModelsStream(e,t)}async exportModelSelectData(e){return this.recordApiCall("exportModelSelectData",e.model),this.delegate.exportModelSelectData(e)}async exportModelQueryData(e){return this.recordApiCall("exportModelQueryData"),this.delegate.exportModelQueryData(e)}async executeScript(e){return this.recordApiCall("executeScript","<temporary-script>"),this.delegate.executeScript(e)}async checkScript(e){return this.recordApiCall("checkScript","<temporary-script>"),this.delegate.checkScript(e)}async refreshCache(){return this.recordApiCall("refreshCache"),this.delegate.refreshCache()}buildViewFileRedirectUrl(e){return this.delegate.buildViewFileRedirectUrl(e)}async getTypeScriptSupportApiLibs(){return this.recordApiCall("getTypeScriptSupportApiLibs"),this.delegate.getTypeScriptSupportApiLibs()}async getJsonSchemaSupport(){return this.recordApiCall("getJsonSchemaSupport"),this.delegate.getJsonSchemaSupport()}async downloadJsonSchema(e){return this.recordApiCall("downloadJsonSchema"),this.delegate.downloadJsonSchema(e)}async getFrontendFrameworksManifest(){return this.recordApiCall("getFrontendFrameworksManifest"),this.delegate.getFrontendFrameworksManifest()}recordApiCall(e,t){this.diagnostics.record({name:e,path:t})}};function tv(r){return new _u(r)}$();qr();Bn();ft();Tr();tr();var dl=class extends Ut{async execute(){this.task.throwIfAborted();let e=this.options.scope??"both",t=e==="local",n=this.options.refreshAll?await this.context.refreshSyncStatusState({scope:e,forceRefresh:this.options.forceRefresh,rootRemotePath:this.options.rootRemotePath,source:this.options.source,task:this.task}):void 0,o=this.context.getSyncChanges();if(t&&(o=o.filter(a=>a.type!=="conflict"&&ht(a))),this.options.paths?.length){let a=await this.resolveTargetRemotePaths(this.options.paths,t?"mirror-only":"server-backed");o=this.filterChangesByTargets(o,a)}let i=n?.warnings??[];return{changes:o,localChanges:o.filter(a=>ht(a)),remoteChanges:t?[]:o.filter(a=>Er(a)),conflicts:t?[]:o.filter(a=>a.type==="conflict"),...i.length>0?{warnings:i}:{}}}};var ek=E(require("fs"));J();D();_();F();$();ft();var Cn=E(require("fs")),Sn=E(require("path")),mm=require("node:util");$();Bn();Ie();F();Ge();J();ft();fn();Bn();F();J();tt();var ZD=T("sync.file-fetcher"),eA=3,tA=20,rA=300,ul=class{constructor(e){this.options=e;let t={};e.maxConcurrency!==void 0&&(t.maxConcurrency=e.maxConcurrency),e.signal&&(t.signal=e.signal),this.runner=new it(t),this.maxAttemptsPerFile=Math.max(1,e.maxAttemptsPerFile??eA),this.maxRetries=Math.max(0,e.maxRetries??tA),this.retryBaseDelayMs=Math.max(0,e.retryBaseDelayMs??rA)}runner;maxAttemptsPerFile;maxRetries;retryBaseDelayMs;retryCount=0;stoppedError;fetchToLocal(e,t){return Pt(this.options.signal),this.stoppedError?Promise.reject(this.stoppedError):this.runner.addTask(()=>this.fetchToLocalWithRetry(e,t))}async fetchToLocalWithRetry(e,t){let n;for(let o=1;o<=this.maxAttemptsPerFile;o++){if(Pt(this.options.signal),this.stoppedError)throw this.stoppedError;try{let i=await this.options.getContentStream(e);return Pt(this.options.signal),await It(t,i.stream),i}catch(i){if(i instanceof or)throw i;if(n=i,!this.shouldRetryContentDownload(i))throw this.stop(i),i;if(o>=this.maxAttemptsPerFile){let s=new Error(`download file content failed: ${e}: ${vo(i)}`);throw this.stop(s),s}if(!this.consumeRetryBudget()){let s=new Error(`download file content retry budget exhausted after ${this.maxRetries} retries: ${e}: ${vo(i)}`);throw this.stop(s),s}let a=this.retryBaseDelayMs*o;ZD.warn(`content download interrupted, retrying file attempt ${o+1}/${this.maxAttemptsPerFile}, fetch retry budget ${this.retryCount}/${this.maxRetries}: `+e,i),await new Promise(s=>setTimeout(s,a)),Pt(this.options.signal)}}throw n instanceof Error?n:new Error(String(n??"content download failed"))}stop(e){this.stoppedError||(this.stoppedError=e instanceof Error?e:new Error(String(e??"content download failed")),this.runner.cancel(this.stoppedError))}consumeRetryBudget(){return this.retryCount>=this.maxRetries?!1:(this.retryCount++,!0)}shouldRetryContentDownload(e){return yy(e)}};var dm=E(require("fs")),ml=E(require("path"));$();Ge();J();fn();F();tr();No();function Jv(r){let e=new Map(r.serverProjects.map(a=>[a.remotePath,a])),t=nA(r.serverProjects),n=new Map(r.mirrorProjects.map(a=>[a.remotePath,a])),o=oA(r.mirrorProjects),i={scannableProjectPaths:new Set,unavailableProjects:[],renamedProjects:[]};for(let a of r.trackedProjects){let s=n.get(a),c=s?.id,l=e.get(a);if(l){c&&l.id&&c!==l.id?i.unavailableProjects.push(Kv(a,s)):i.scannableProjectPaths.add(a);continue}let p=c&&!o.has(c)?t.get(c):void 0;if(p&&p.remotePath!==a){i.renamedProjects.push({oldProject:s??{name:Qv(a),remotePath:a,id:c},newProject:p});continue}i.unavailableProjects.push(Kv(a,s))}return i}function nA(r){let e=new Map,t=new Set;for(let n of r)if(n.id){if(e.has(n.id)){t.add(n.id);continue}e.set(n.id,n)}for(let n of t)e.delete(n);return e}function oA(r){let e=new Set,t=new Set;for(let n of r)n.id&&(e.has(n.id)&&t.add(n.id),e.add(n.id));return t}function Kv(r,e){return e||{name:Qv(r),remotePath:r}}function Qv(r){let e=r.lastIndexOf("/");return e>=0?r.slice(e+1):r}var iA=8,Yv=100,aA=/^[0-9a-f]{64}$/,Dt=T("sync.detector.remote"),um=class{detectRuns=0;serverFileInfoRequests=0;serverFileInfoHits=0;serverFileInfoMisses=0;serverFoldersListed=0;serverFoldersSkippedByScope=0;serverFoldersSkippedByWaterline=0;mirrorFoldersScanned=0;mirrorEntriesCollected=0;mirrorContentStatChecks=0;mirrorContentHashChecks=0;changesByType={};changesByKind=sA();scanScope=cA();visitorEvents={};api={total:0,byApi:{},byPath:{},droppedPathKeys:0,recentCallsDropped:0};describeForLog(){return`
|
|
60
|
-
`+JSON.stringify(this.createSnapshot(),null,2).replace(/^\{\n/,"").replace(/\n\}$/,"")}createSnapshot(){return{detectRuns:this.detectRuns,serverFileInfoRequests:this.serverFileInfoRequests,serverFileInfoHits:this.serverFileInfoHits,serverFileInfoMisses:this.serverFileInfoMisses,serverFoldersListed:this.serverFoldersListed,serverFoldersSkippedByScope:this.serverFoldersSkippedByScope,serverFoldersSkippedByWaterline:this.serverFoldersSkippedByWaterline,mirrorFoldersScanned:this.mirrorFoldersScanned,mirrorEntriesCollected:this.mirrorEntriesCollected,mirrorContentStatChecks:this.mirrorContentStatChecks,mirrorContentHashChecks:this.mirrorContentHashChecks,changesByType:{...this.changesByType},changesByKind:{...this.changesByKind},scanScope:{...this.scanScope},visitorEvents:{...this.visitorEvents},api:this.api}}},Kr=class{constructor(e){this.options=e;this.serverRequestRunner=new it({maxConcurrency:iA,signal:e.task.getAbortSignal()})}diagnostics=Xv();workspaceState;workspaceStateInitialized=!1;expandedServerFolders=new Set;serverRequestRunner;loggedChangeDetailCount=0;changeDetailLimitLogged=!1;loggedChangeDetailKeys=new Set;visitorTasks=[];visitorChangeKeys=new Set;getDiagnostics(e={}){this.diagnostics.api=this.workspaceStateInitialized?this.workspaceState.client.getDiagnostics({reset:e.reset,includeRecentCalls:e.includeApiRecentCalls})??pm():pm();let t=this.diagnostics.createSnapshot();return e.reset&&this.resetDiagnostics(),t}async detect(){this.diagnostics.detectRuns++;let e=Date.now();Dt.debug(`detect start targets=${this.options.targets?.size??"<all>"}`);try{if(this.isSignalAborted()||!await this.initializeWorkspaceState())return[];this.resetChangeDetailLogState();let t=await this.createSnapshot(),n=Date.now(),o=await this.matchSnapshot(t);for(Dt.debug(`match snapshot done elapsed=${Date.now()-n}ms changes=${o.changes.length} renamedFolders=${o.renamedFolders.length}`);await this.expandRenamedFolderChildren(t,o.renamedFolders);)n=Date.now(),o=await this.matchSnapshot(t),Dt.debug(`rematch after folder expansion done elapsed=${Date.now()-n}ms changes=${o.changes.length} renamedFolders=${o.renamedFolders.length}`);let i=o.changes.filter(a=>this.isTargetChange(a));for(let a of i)this.incrementRecordCounter(this.diagnostics.changesByType,a.type),this.recordChangeKind(a),this.dispatchChange(a,t);return await this.waitVisitorTasks(),Dt.debug(`detect diagnostics ${this.describeDiagnosticsForLog()}`),Dt.debug(`detect done elapsed=${Date.now()-e}ms changes=${i.length}`),i}catch(t){throw this.serverRequestRunner.cancel(t),await this.serverRequestRunner.waitAll(),t}}async initializeWorkspaceState(){if(this.workspaceStateInitialized)return!0;let e=this.options.workspace,t=await e.requireServerClient(e.activeServerUrl);if(this.isSignalAborted())return!1;let n=new Rt(e.getMirrorRoot()),o=await e.listWorkspaceProjects();return this.isSignalAborted()?!1:(this.workspaceState={client:t,mirror:n,trackedProjects:new Set(o.map(i=>"/"+i))},this.workspaceStateInitialized=!0,!0)}isSignalAborted(){return this.options.signal?.aborted===!0}async createSnapshot(){let e=Date.now(),t={server:new Map,mirror:new Map,skippedServerFolders:new Set,explicitMissingTargets:new Set};return this.diagnostics.scanScope.trackedProjects=this.workspaceState.trackedProjects.size,this.options.targets||(t.projectCompare=await this.computeProjectCompare()),await Promise.all([this.collectMirrorSnapshot(t),this.collectServerSnapshot(t)]),await this.collectMirrorRenameCandidates(t),Dt.debug(`create snapshot done elapsed=${Date.now()-e}ms serverEntries=${t.server.size} mirrorEntries=${t.mirror.size} skippedServerFolders=${t.skippedServerFolders.size} explicitMissingTargets=${t.explicitMissingTargets.size}`),t}async collectServerSnapshot(e){let t=Date.now();if(this.options.targets){let a=await this.filterCloneInProgressPaths(wt(this.options.targets));await Promise.all(a.map(s=>this.collectServerTarget(s,e))),Dt.debug(`collect server targets done elapsed=${Date.now()-t}ms targets=${this.options.targets.size} serverEntries=${e.server.size}`);return}let n=e.projectCompare,o=n?[...n.scannableProjectPaths]:[],i=n?n.renamedProjects.map(a=>a.newProject.remotePath):[];await Promise.all([...o.map(a=>this.collectServerEntry(a,e,!0)),...i.map(a=>this.collectServerEntry(a,e,!1))]),Dt.debug(`collect server projects done elapsed=${Date.now()-t}ms scannableProjects=${o.length} renameTargets=${i.length} trackedProjects=${this.workspaceState.trackedProjects.size} serverEntries=${e.server.size} skippedServerFolders=${e.skippedServerFolders.size}`)}async computeProjectCompare(){let[e,t]=await Promise.all([this.workspaceState.client.getProjects(),this.listMirrorProjectPaths()]),n=e.map(s=>({name:s.name,remotePath:"/"+s.name,id:s.id,desc:s.desc})),o=await Promise.all([...t].map(async s=>{let c=await this.workspaceState.mirror.readMeta(s);return{name:s.slice(1),remotePath:s,id:c?.id,desc:c?.desc}})),i=new Set(await this.filterCloneInProgressPaths([...this.workspaceState.trackedProjects])),a=Jv({trackedProjects:i,serverProjects:n,mirrorProjects:o});return this.recordProjectCompareScanScope(a,e.length,t),a}recordProjectCompareScanScope(e,t,n){let o=e.scannableProjectPaths.size+e.renamedProjects.length,i=[...e.scannableProjectPaths].filter(s=>n.has(s)).length+e.renamedProjects.filter(s=>n.has(s.oldProject.remotePath)).length,a=this.diagnostics.scanScope;a.serverProjects=t,a.probedProjects=o,a.missingTrackedProjects=e.unavailableProjects.length,a.skippedUntrackedProjects=Math.max(t-o,0),a.mirrorProjectsScanned=i,a.skippedUntrackedMirrorProjects=[...n].filter(s=>!this.workspaceState.trackedProjects.has(s)).length}async collectServerTarget(e,t){let[n,o]=await Promise.all([this.collectServerEntry(e,t,!0),this.workspaceState.mirror.readMeta(e)]);n||!o||(t.explicitMissingTargets.add(e),await this.collectServerEntry(ze(e)??"/",t,!0))}async collectServerEntry(e,t,n){this.options.task.throwIfAborted();let o=await this.getRemoteFileInfo(e);return o?(await this.collectKnownServerEntry(o,t,n),!0):!1}async collectKnownServerEntry(e,t,n){let o=this.createServerEntry(e);if(o.shouldReport=n,o.isFolder||await this.enrichFileContentState(o),t.server.set(o.remotePath,o),!o.isFolder)return;if(!n){t.skippedServerFolders.add(o.remotePath),this.diagnostics.serverFoldersSkippedByScope++;return}if(await this.canSkipServerFolder(o.remotePath,e)){t.skippedServerFolders.add(o.remotePath),this.diagnostics.serverFoldersSkippedByWaterline++,this.dispatchFolderSkipped(o.remotePath,e);return}let i=await this.listRemoteFiles(o.remotePath);await this.dispatchFolderScanned(o.remotePath,e,i),await Promise.all(i.map(a=>this.collectServerChild(a,t)))}async collectServerChild(e,t){await this.collectKnownServerEntry(e,t,!0)}async canSkipServerFolder(e,t){if(this.options.forceRefresh||this.expandedServerFolders.has(e))return!1;let n=await this.workspaceState.mirror.readMeta(e);return!n||n.modifyTime!==t.modifyTime||!await this.workspaceState.mirror.exists(e)?!1:this.hasHealthyDirectMirrorChildren(e)}async hasHealthyDirectMirrorChildren(e){let t;try{t=(await dm.promises.readdir(this.workspaceState.mirror.toLocalPath(e),{withFileTypes:!0})).filter(a=>a.name!==X).map(a=>a.name).sort()}catch(i){if(x(i))return Dt.debug(`mirror folder baseline cannot be listed: ${e}`),!1;throw i}let n=await br(this.workspaceState.mirror.root,ml.posix.join(e,X));if(!n.exists||n.damaged)return!1;let o=Object.keys(n.dotMeta).sort();return t.length===o.length&&t.every((i,a)=>i===o[a])}async enrichFileContentState(e){!this.options.forceRefresh||!e.serverInfo||(e.contentMatchesMirror=await this.getContentMatchesMirrorPath(e,e.remotePath))}async getContentMatchesMirrorPath(e,t){if(!e.serverInfo)return;let n=this.getValidServerHash(e.serverInfo),o=this.getValidServerSize(e.serverInfo);if(!(n===void 0||o===void 0)){try{this.diagnostics.mirrorContentStatChecks++;let i=await dm.promises.stat(this.workspaceState.mirror.toLocalPath(t));if(!i.isFile()||i.size!==o)return!1}catch(i){if(x(i))return Dt.debug(`mirror file content cannot be verified during remote detection: ${t}`),!1;throw i}return this.diagnostics.mirrorContentHashChecks++,await el(this.workspaceState.mirror.toLocalPath(t))===n}}getValidServerHash(e){if(e.hash===void 0||e.hash===null)return;if(typeof e.hash!="string")throw new Error(`invalid file content hash: ${e.path}`);let t=e.hash.trim().toLowerCase();if(!aA.test(t))throw new Error(`invalid file content hash: ${e.path}`);return t}getValidServerSize(e){if(!(e.size===void 0||e.size===null)){if(!Number.isSafeInteger(e.size)||e.size<0)throw new Error(`invalid file content size: ${e.path}`);return e.size}}async collectMirrorSnapshot(e){if(this.options.targets){let i=await this.filterCloneInProgressPaths(wt(this.options.targets));await Promise.all(i.map(a=>this.collectMirrorRootAndSubtree(a,e)));return}let t=e.projectCompare,n=t?[...t.scannableProjectPaths]:[],o=t?t.renamedProjects.map(i=>i.oldProject.remotePath):[];await Promise.all([...n.map(i=>this.collectMirrorRootAndSubtree(i,e)),...o.map(i=>this.collectMirrorRootEntry(i,e))])}async collectMirrorRenameCandidates(e){if(!this.options.targets)return;let t=new Set;for(let i of e.mirror.values())i.meta.id&&t.add(i.meta.id);let n=new Set,o=new Set;for(let i of e.server.values()){let a=i.meta.id;if(!a||t.has(a))continue;n.add(a);let s=ml.posix.dirname(i.remotePath);s!=="/"&&o.add(s)}n.size!==0&&await Promise.all([...o].map(i=>this.collectMirrorDirectMetaCandidates(i,n,e)))}async collectMirrorDirectMetaCandidates(e,t,n){this.options.task.throwIfAborted(),this.diagnostics.mirrorFoldersScanned++;let o=await this.workspaceState.mirror.listDirectMetaChildren(e);await Promise.all(o.map(async i=>{let a=i.meta.id;if(!a||!t.has(a)||n.mirror.has(i.path))return;let[s,c]=await Promise.all([this.workspaceState.mirror.exists(i.path),this.workspaceState.mirror.isFolder(i.path)]);n.mirror.set(i.path,{remotePath:i.path,isFolder:s?c:i.isFolder,meta:i.meta,exists:s}),this.diagnostics.mirrorEntriesCollected++}))}async listMirrorProjectPaths(){let[e,t]=await Promise.all([this.workspaceState.mirror.listDirectChildren("/"),this.workspaceState.mirror.listDirectMetaChildren("/")]);return new Set([...e,...t].map(n=>n.path))}async filterCloneInProgressPaths(e){return(await Promise.all(e.map(async n=>await this.shouldSkipCloneInProgressProject(n)?void 0:n))).filter(n=>n!==void 0)}async shouldSkipCloneInProgressProject(e){if(this.options.visitor)return!1;let t=ze(e);if(!t)return!1;let n=await this.workspaceState.mirror.isCloneInProgress(t);return n&&Dt.debug(`skip clone in-progress mirror project: ${t}`),n}async collectMirrorRootAndSubtree(e,t){if(e==="/"){await this.collectMirrorSubtree(e,t);return}(await this.collectMirrorRootEntry(e,t))?.isFolder&&await this.collectMirrorSubtree(e,t)}async collectMirrorRootEntry(e,t){let[n,o,i]=await Promise.all([this.workspaceState.mirror.readMeta(e),this.workspaceState.mirror.exists(e),this.workspaceState.mirror.isFolder(e)]);if(n||o){let a={remotePath:e,isFolder:o?i:!!n?.type&&n.type!=="file",meta:n??{},exists:o};return t.mirror.set(e,a),this.diagnostics.mirrorEntriesCollected++,a}}async collectMirrorSubtree(e,t){this.options.task.throwIfAborted(),this.diagnostics.mirrorFoldersScanned++;let[n,o]=await Promise.all([this.workspaceState.mirror.listDirectChildren(e),this.workspaceState.mirror.listDirectMetaChildren(e)]),i=new Map(o.map(a=>[a.path,a]));await Promise.all(n.map(async a=>{let c=i.get(a.path)?.meta;(c||!a.isFolder)&&(t.mirror.set(a.path,{remotePath:a.path,isFolder:a.isFolder,meta:c??{},exists:!0}),this.diagnostics.mirrorEntriesCollected++),a.isFolder&&await this.collectMirrorSubtree(a.path,t)}));for(let a of o)t.mirror.has(a.path)||(t.mirror.set(a.path,{remotePath:a.path,isFolder:a.isFolder,meta:a.meta,exists:!1}),this.diagnostics.mirrorEntriesCollected++)}async matchSnapshot(e){let t=new Set,n=new Set,o=[],i=[];return await this.matchByPath(e,t,n,o,i),await this.matchById(e,t,n,o,i),this.addUnmatchedChanges(e,t,n,o),{changes:o,renamedFolders:i}}async matchByPath(e,t,n,o,i){let a=this.groupMirrorEntriesById(e.mirror);for(let s of e.server.values()){let c=e.mirror.get(s.remotePath);if(!c)continue;t.add(s.remotePath),n.add(c.remotePath);let l=this.findUnmatchedMirrorEntryById(a,s.meta.id,n);if(!s.meta.id||s.meta.id!==c.meta.id){if(l){if(!c.meta.id){await this.addRemoteRenameChange(e,s,l,n,o,i);continue}n.add(l.remotePath),this.addChange(o,this.createConflictChange(s,l.remotePath),e);continue}if(s.meta.id&&!c.meta.id){this.addChange(o,this.createMirrorRecoveryChange(s,c),e);continue}this.addChange(o,this.createConflictChange(s),e);continue}if(l){await this.addRemoteRenameChange(e,s,l,n,o,i);continue}this.addComparedChange(s,c,o,e)}}async matchById(e,t,n,o,i){let a=this.indexUniqueById(e.server,t),s=this.indexUniqueById(e.mirror,n);for(let c of e.server.values()){if(t.has(c.remotePath)||!c.meta.id)continue;let l=s.get(c.meta.id);if(!(!l||n.has(l.remotePath))&&a.get(c.meta.id)===c){if(t.add(c.remotePath),c.isFolder!==l.isFolder){n.add(l.remotePath),this.addChange(o,this.createConflictChange(c,l.remotePath),e);continue}await this.addRemoteRenameChange(e,c,l,n,o,i)}}}async addRemoteRenameChange(e,t,n,o,i,a){o.add(n.remotePath);let s=await this.createRenamedChange(t,n);this.addChange(i,s,e),t.isFolder&&a.push(s)}addUnmatchedChanges(e,t,n,o){this.addUnavailableTrackedProjectChanges(e,o);for(let i of e.server.values())t.has(i.remotePath)||i.shouldReport===!1||!this.isUnmatchedChangeInTargetSubtree(i.remotePath)||this.addChange(o,this.createRemoteChange(i,"remoteAdded"),e);for(let i of e.mirror.values())n.has(i.remotePath)||this.isUnmatchedChangeInTargetSubtree(i.remotePath)&&(!this.isUnderExplicitMissingTarget(e,i.remotePath)&&this.isUnderSkippedServerFolder(e,i.remotePath)||this.addChange(o,this.createRemoteChange(i,"remoteDeleted"),e))}addUnavailableTrackedProjectChanges(e,t){for(let n of e.projectCompare?.unavailableProjects??[])this.addChange(t,this.createProjectUnavailableChange(n),e)}async expandRenamedFolderChildren(e,t){let n=!1;return await Promise.all(t.map(async o=>{!o.isFolder||this.expandedServerFolders.has(o.remotePath)||this.isProjectRootRenameChange(o)||(this.expandedServerFolders.add(o.remotePath),e.skippedServerFolders.delete(o.remotePath),await this.collectServerEntry(o.remotePath,e,!0),n=!0)})),n}isProjectRootRenameChange(e){return!!e.oldRemotePath&&ze(e.remotePath)===e.remotePath&&ze(e.oldRemotePath)===e.oldRemotePath}addComparedChange(e,t,n,o){if(e.isFolder!==t.isFolder){this.addChange(n,this.createConflictChange(e),o);return}let i=this.isRemoteMetaChanged(t.meta,e.meta)||this.isRemoteContentBaselineChanged(t,e,e.contentMatchesMirror),a=!e.isFolder&&(t.exists===!1||this.isRemoteFileContentChanged(t,e,e.contentMatchesMirror,i));(a||i)&&this.addChange(n,this.createRemoteChange(e,"remoteModified",{contentChanged:a,metaChanged:i}),o)}indexUniqueById(e,t){let n=new Map,o=new Set;for(let i of e.values()){let a=i.meta.id;if(!(!a||t.has(i.remotePath))){if(n.has(a)){o.add(a);continue}n.set(a,i)}}for(let i of o)n.delete(i);return n}groupMirrorEntriesById(e){let t=new Map;for(let n of e.values()){let o=n.meta.id;if(!o)continue;let i=t.get(o);i?i.push(n):t.set(o,[n])}return t}findUnmatchedMirrorEntryById(e,t,n){if(!t)return;let o=e.get(t);if(!o)return;let i;for(let a of o)if(!n.has(a.remotePath)){if(i)return;i=a}return i}isUnderSkippedServerFolder(e,t){for(let n of e.skippedServerFolders)if(t!==n&&re(t,n))return!0;return!1}isUnmatchedChangeInTargetSubtree(e){let t=this.options.targets;if(!t||t.size===0)return!0;for(let n of t)if(re(e,n))return!0;return!1}isUnderExplicitMissingTarget(e,t){for(let n of e.explicitMissingTargets)if(re(t,n))return!0;return!1}isTargetChange(e){let t=this.options.targets;return!t||t.size===0?!0:[...t].some(n=>re(e.remotePath,n)||re(n,e.remotePath)||!!e.oldRemotePath&&(re(e.oldRemotePath,n)||re(n,e.oldRemotePath)))}async getRemoteFileInfo(e){this.diagnostics.serverFileInfoRequests++;try{let t=await this.serverRequestRunner.addTask(()=>this.workspaceState.client.getFile(e));return this.diagnostics.serverFileInfoHits++,t}catch(t){if(this.workspaceState.client.isNotFoundError(t)){Dt.debug(`remote file disappeared during remote change detection: ${e}`),this.diagnostics.serverFileInfoMisses++;return}throw t}}async listRemoteFiles(e){return this.diagnostics.serverFoldersListed++,this.serverRequestRunner.addTask(()=>this.workspaceState.client.listFiles(e))}createServerEntry(e){return{remotePath:e.path,isFolder:!!e.isFolder,meta:Wt(e),contentMeta:Wt(e,{writeContentInfo:!0}),serverInfo:e}}isRemoteMetaChanged(e,t){return!_o(e,t)}isRemoteContentBaselineChanged(e,t,n){return!t.contentMeta||t.isFolder||n===!1||t.contentMeta.hash===void 0||t.contentMeta.size===void 0?!1:n===!0&&((e.meta.revision??0)!==(t.meta.revision??0)||(e.meta.modifyTime??0)!==(t.meta.modifyTime??0))?!0:this.hasCompleteContentBaseline(e.meta)?e.meta.hash!==t.contentMeta.hash||e.meta.size!==t.contentMeta.size?n===!0:(e.meta.revision??0)!==(t.meta.revision??0)||(e.meta.modifyTime??0)!==(t.meta.modifyTime??0):!0}isRemoteFileContentChanged(e,t,n,o){return n===!1?!0:n===!0?!1:t.contentMeta&&this.hasCompleteContentBaseline(e.meta)&&t.contentMeta.hash!==void 0&&t.contentMeta.size!==void 0?e.meta.hash!==t.contentMeta.hash||e.meta.size!==t.contentMeta.size:t.contentMeta?.hash!==void 0&&t.contentMeta.size!==void 0?(e.meta.revision??0)!==(t.meta.revision??0)||(e.meta.modifyTime??0)!==(t.meta.modifyTime??0):(e.meta.revision??0)!==(t.meta.revision??0)?!0:!o&&(e.meta.modifyTime??0)!==(t.meta.modifyTime??0)}hasCompleteContentBaseline(e){return e.hash!==void 0&&e.size!==void 0}resetChangeDetailLogState(){this.loggedChangeDetailCount=0,this.changeDetailLimitLogged=!1,this.loggedChangeDetailKeys.clear(),this.visitorChangeKeys.clear(),this.visitorTasks.length=0}addChange(e,t,n){e.push(t),this.logChangeDetail(t,n)}dispatchChange(e,t){if(!this.options.visitor?.onChange||!this.isTargetChange(e))return;let n=this.getChangeDetailLogKey(e);if(this.visitorChangeKeys.has(n))return;this.visitorChangeKeys.add(n),this.incrementRecordCounter(this.diagnostics.visitorEvents,"change");let o={change:e,serverEntry:t.server.get(e.remotePath),mirrorEntry:t.mirror.get(e.oldRemotePath??e.remotePath)};this.addVisitorTask(()=>this.options.visitor?.onChange?.(o))}async dispatchFolderScanned(e,t,n){if(!this.options.visitor?.onFolderScanned)return;this.incrementRecordCounter(this.diagnostics.visitorEvents,"folderScanned");let o=await this.workspaceState.mirror.listDirectMetaChildren(e),i={remotePath:e,folderInfo:t,children:n,mirrorChildMetas:new Map(o.map(a=>[ml.posix.basename(a.path),a.meta])),serverChildPaths:new Set(n.map(a=>a.path))};this.addVisitorTask(()=>this.options.visitor?.onFolderScanned?.(i))}dispatchFolderSkipped(e,t){if(!this.options.visitor?.onFolderSkipped)return;this.incrementRecordCounter(this.diagnostics.visitorEvents,"folderSkipped");let n={remotePath:e,folderInfo:t,reason:"waterlineUnchanged"};this.addVisitorTask(()=>this.options.visitor?.onFolderSkipped?.(n))}addVisitorTask(e){this.visitorTasks.push(()=>Promise.resolve(e()))}async waitVisitorTasks(){for(let e of this.visitorTasks)await e()}logChangeDetail(e,t){if(!Dt.isDebugEnabled()||!this.isTargetChange(e))return;let n=this.getChangeDetailLogKey(e);if(!this.loggedChangeDetailKeys.has(n)){if(this.loggedChangeDetailKeys.add(n),this.loggedChangeDetailCount>=Yv){this.changeDetailLimitLogged||(Dt.debug(`change detail ... displayed=${Yv} further changes omitted`),this.changeDetailLimitLogged=!0);return}this.loggedChangeDetailCount++,Dt.debug(`change detail ${this.loggedChangeDetailCount} ${this.describeChange(e,t)}`)}}getChangeDetailLogKey(e){return`${e.type}|${e.remotePath}|${e.oldRemotePath??""}`}describeChange(e,t){let n=t.server.get(e.remotePath),o=t.mirror.get(e.oldRemotePath??e.remotePath);return[`type=${e.type}`,`remotePath=${e.remotePath}`,`oldRemotePath=${e.oldRemotePath??"<none>"}`,`fileId=${e.fileId??"<none>"}`,`isFolder=${e.isFolder}`,`contentChanged=${e.contentChanged}`,`metaChanged=${e.metaChanged}`,`serverRevision=${this.formatLogValue(n?.meta.revision)}`,`mirrorRevision=${this.formatLogValue(o?.meta.revision)}`,`serverModifyTime=${this.formatLogValue(n?.meta.modifyTime)}`,`mirrorModifyTime=${this.formatLogValue(o?.meta.modifyTime)}`,`serverModifier=${this.formatLogValue(n?.meta.modifier)}`,`mirrorModifier=${this.formatLogValue(o?.meta.modifier)}`].join(" ")}formatLogValue(e){return e===void 0?"<none>":String(e)}describeDiagnosticsForLog(){return this.diagnostics.api=this.workspaceState.client.getDiagnostics()??pm(),this.diagnostics.describeForLog()}recordChangeKind(e){switch(e.type){case"remoteModified":e.contentChanged?this.diagnostics.changesByKind.contentModified++:e.metaChanged&&this.diagnostics.changesByKind.metaOnlyModified++;break;case"remoteDeleted":this.diagnostics.changesByKind.remoteDeleted++;break;case"remoteProjectUnavailable":this.diagnostics.changesByKind.remoteProjectUnavailable++;break;case"remoteAdded":this.diagnostics.changesByKind.remoteAdded++;break;case"remoteRenamed":this.diagnostics.changesByKind.remoteRenamed++;break;case"conflict":this.diagnostics.changesByKind.conflict++;break;default:break}}incrementRecordCounter(e,t){e[t]=(e[t]??0)+1}resetDiagnostics(){this.diagnostics=Xv()}createRemoteChange(e,t,n){return{path:De(e.remotePath),remotePath:e.remotePath,...e.meta.id!==void 0?{fileId:e.meta.id}:{},type:t,isFolder:e.isFolder,contentChanged:n?.contentChanged??(t!=="remoteDeleted"&&!e.isFolder),metaChanged:n?.metaChanged??t!=="remoteDeleted",...t==="remoteDeleted"?{}:{modifier:e.meta.modifier,modifyTime:e.meta.modifyTime}}}createProjectUnavailableChange(e){return{path:De(e.remotePath),remotePath:e.remotePath,...e.id!==void 0?{fileId:e.id}:{},type:"remoteProjectUnavailable",isFolder:!0,contentChanged:!1,metaChanged:!1}}async createRenamedChange(e,t){let n=e.remotePath===t.remotePath?e.contentMatchesMirror:this.options.forceRefresh?await this.getContentMatchesMirrorPath(e,t.remotePath):void 0,o=this.isRemoteMetaChanged(t.meta,e.meta)||this.isRemoteContentBaselineChanged(t,e,n),i=!e.isFolder&&this.isRemoteFileContentChanged(t,e,n,o);return{path:De(e.remotePath),remotePath:e.remotePath,...e.meta.id!==void 0?{fileId:e.meta.id}:{},oldPath:De(t.remotePath),oldRemotePath:t.remotePath,type:"remoteRenamed",isFolder:e.isFolder,contentChanged:i,metaChanged:o,modifier:e.meta.modifier,modifyTime:e.meta.modifyTime}}createMirrorRecoveryChange(e,t){return this.createRemoteChange(e,"remoteModified",{contentChanged:this.isMirrorRecoveryContentChanged(e,t),metaChanged:!0})}isMirrorRecoveryContentChanged(e,t){return e.isFolder?!1:t?t.exists===!1?!0:this.isRemoteFileContentChanged(t,e,e.contentMatchesMirror,!0):e.contentMatchesMirror!==!0}createConflictChange(e,t){return{path:De(e.remotePath),remotePath:e.remotePath,...e.meta.id!==void 0?{fileId:e.meta.id}:{},oldPath:t?De(t):void 0,oldRemotePath:t,type:"conflict",isFolder:e.isFolder,contentChanged:!e.isFolder,metaChanged:!0,modifier:e.meta.modifier,modifyTime:e.meta.modifyTime}}};function Xv(){return new um}function sA(){return{contentModified:0,metaOnlyModified:0,remoteDeleted:0,remoteProjectUnavailable:0,remoteAdded:0,remoteRenamed:0,conflict:0}}function cA(){return{trackedProjects:0,serverProjects:0,probedProjects:0,missingTrackedProjects:0,skippedUntrackedProjects:0,mirrorProjectsScanned:0,skippedUntrackedMirrorProjects:0}}function pm(){return{total:0,byApi:{},byPath:{},droppedPathKeys:0,recentCallsDropped:0}}Tr();tr();var lA=4,ke=T("sync.fetch"),fm=class extends Wi{projectTargets=0;resourceTargets=0;countedResources=0;remoteResourceCountRequests=0;mirrorResourceCountRequests=0;contentDownloadsScheduled=0;mirrorFilesMoved=0;mirrorResourcesRemoved=0;mirrorPhysicalChildrenRemoved=0;mirrorMetaWrites=0;downloaded=0;deleted=0;skippedFolders=0;updatedMetas=0;detector;setDetector(e){this.detector=e}createSnapshot(){return{runs:this.runs,durationMs:this.durationMs,projectTargets:this.projectTargets,resourceTargets:this.resourceTargets,countedResources:this.countedResources,remoteResourceCountRequests:this.remoteResourceCountRequests,mirrorResourceCountRequests:this.mirrorResourceCountRequests,contentDownloadsScheduled:this.contentDownloadsScheduled,mirrorFilesMoved:this.mirrorFilesMoved,mirrorResourcesRemoved:this.mirrorResourcesRemoved,mirrorPhysicalChildrenRemoved:this.mirrorPhysicalChildrenRemoved,mirrorMetaWrites:this.mirrorMetaWrites,downloaded:this.downloaded,deleted:this.deleted,skippedFolders:this.skippedFolders,updatedMetas:this.updatedMetas,...this.detector?{detector:this.detector}:{},api:this.api}}},Zn=class extends Ve{mirror;fileFetcher;fetchResult;diagnostics=Zv();downloadTask;downloadTotal=0;constructor(e,t){super(e,t),this.mirror=this.createMirrorStore(),this.fileFetcher=new ul({maxConcurrency:lA,signal:this.task.getAbortSignal(),getContentStream:async n=>{Pt(this.task.getAbortSignal());let o=await this.getApiClient();return Pt(this.task.getAbortSignal()),o.getFileContentStream(n)}}),this.fetchResult={mirrorRoot:this.mirrorRoot,downloaded:[],deleted:[],skippedFolders:[],updatedMetas:[]}}execute(){return this.fetchTrackedMirror()}getDiagnostics(e={}){this.syncResultDiagnostics();let t=this.diagnostics.createSnapshot();return e.reset&&this.resetDiagnostics(),t}async fetchTrackedMirror(){let e=this.diagnostics.startRun(),t=!1;ke.info("fetch start: {0}",this.createFetchScopeLog()),this.task.start(100);let n=this.task.subTaskMonitor(5),o=this.task.subTaskMonitor(5),i=this.task.subTaskMonitor(90),a=[];if(this.hasKnownChanges(this.options.changes)){n.start(1),ke.info("fetch prepare start"),this.task.throwIfAborted(),await Cn.promises.mkdir(this.mirrorRoot,{recursive:!0}),n.step(1),ke.info("fetch prepare done: knownChanges={0}",this.options.changes.length),this.downloadTask=i;try{return await this.fetchKnownChanges(o),this.finishRunDiagnostics(e),t=!0,this.logFetchDone(),this.fetchResult}finally{t||this.finishRunDiagnostics(e),this.downloadTask=void 0,this.downloadTotal=0}}n.start(1);let s=this.resolveFetchProjectPaths(),c=await this.getApiClient(),l=c.getProjects();ke.info("fetch prepare start"),this.task.throwIfAborted(),await Cn.promises.mkdir(this.mirrorRoot,{recursive:!0});let p=this.createWorkspaceStore(this.mirror).listProjectPaths(),[u,g,m]=await Promise.all([l,this.readMirrorChildMetas("/"),p]),h=new Set(m),y=new Set([...u.map(C=>"/"+C.name),...h]);await this.removeMissingMirrorChildren("/",y,g),s&&(a=await this.markNewFetchProjects(s)),n.step(1),ke.info("fetch prepare done: serverProjects={0}",u.length),this.downloadTask=i;try{if(s){this.diagnostics.projectTargets=s.length,ke.info("fetch count resources start: {0}",this.createFetchScopeLog());let S=await this.countFetchResources(o,()=>this.countRemoteFiles(s));return ke.info("fetch count resources done: resources={0}",S),this.startFetchProgress(S),s.length===0&&this.completeDownloadProgress(),ke.info("fetch mirror update start: targets={0}",s.length),await this.fetchWithRemoteChangeDetector({targets:new Set(s),forceRefresh:this.options.forceRefresh===!0}),this.completeDownloadProgress(),await this.clearNewFetchProjectMarkers(a),ke.info("fetch mirror update done: targets={0}",s.length),this.captureApiDiagnostics(c),this.finishRunDiagnostics(e),t=!0,this.logFetchDone(),this.fetchResult}let C=await this.resolveTargetRemotePaths(this.options.paths);if(C){let S=wt(C);this.diagnostics.resourceTargets=S.length,ke.info("fetch count resources start: {0}",this.createFetchScopeLog());let k=await this.countFetchResources(o,()=>(this.diagnostics.mirrorResourceCountRequests++,this.mirror.countMetaResources(S)));return ke.info("fetch count resources done: resources={0}",k),this.startFetchProgress(k),S.length===0&&this.completeDownloadProgress(),ke.info("fetch mirror update start: targets={0}",S.length),await this.fetchWithRemoteChangeDetector({targets:new Set(S),forceRefresh:!1}),this.completeDownloadProgress(),ke.info("fetch mirror update done: targets={0}",S.length),this.captureApiDiagnostics(c),this.finishRunDiagnostics(e),t=!0,this.logFetchDone(),this.fetchResult}let v=u.filter(S=>h.has("/"+S.name)),w=v.map(S=>"/"+S.name);a=await this.markNewFetchProjects(w),this.diagnostics.projectTargets=w.length,ke.info("fetch count resources start: {0}",this.createFetchScopeLog());let f=await this.countFetchResources(o,()=>this.countRemoteFiles(w));return ke.info("fetch count resources done: resources={0}",f),this.startFetchProgress(f),v.length===0&&this.completeDownloadProgress(),ke.info("fetch mirror update start: targets={0}",v.length),await this.fetchWithRemoteChangeDetector({forceRefresh:!1}),this.completeDownloadProgress(),await this.clearNewFetchProjectMarkers(a),ke.info("fetch mirror update done: targets={0}",v.length),this.captureApiDiagnostics(c),this.finishRunDiagnostics(e),t=!0,this.logFetchDone(),this.fetchResult}finally{t||(await this.cleanupNewFetchProjectsAfterFailure(a),this.finishRunDiagnostics(e)),this.downloadTask=void 0,this.downloadTotal=0}}async markNewFetchProjects(e){let t=[];try{for(let n of e){let[o,i]=await Promise.all([this.mirror.isCloneInProgress(n),this.mirror.exists(n)]);!o&&i||(o&&(await this.mirror.removePath(n),await this.mirror.removeMeta(n)),t.push(n),await this.mirror.markCloneInProgress(n))}return t}catch(n){throw await this.cleanupNewFetchProjectsAfterFailure(t),n}}async clearNewFetchProjectMarkers(e){await Promise.all(e.map(t=>this.mirror.clearCloneInProgress(t)))}async cleanupNewFetchProjectsAfterFailure(e){if(e.length!==0)try{await Promise.all(e.map(async t=>{await this.mirror.removePath(t),await this.mirror.removeMeta(t)}))}catch(t){ke.warn(`fetch failed, cleanup new mirror projects failed: ${e.join(", ")}`,t)}}createFetchScopeLog(){return this.hasKnownChanges(this.options.changes)?`changes=${this.options.changes.length}`:this.options.projectNames?`projects=${this.options.projectNames.join(", ")}`:this.options.paths?`paths=${this.options.paths.join(", ")}`:"<tracked>"}logFetchDone(){this.syncResultDiagnostics(),ke.info("fetch done: downloaded={0} deleted={1} updatedMetas={2} skippedFolders={3}",this.fetchResult.downloaded.length,this.fetchResult.deleted.length,this.fetchResult.updatedMetas.length,this.fetchResult.skippedFolders.length),ke.debug(`fetch diagnostics ${this.diagnostics.describeForLog()}`)}resolveFetchProjectPaths(){if(!this.options.projectNames){H(!this.options.forceRefresh,"FetchOptions.forceRefresh can only be used with FetchOptions.projectNames");return}return H(!this.options.paths,"FetchOptions.projectNames and FetchOptions.paths cannot be used together"),wt(new Set(this.options.projectNames.map(e=>kt(e))))}startFetchProgress(e){this.downloadTotal=Math.max(e,1),this.progressTask.start(this.downloadTotal)}async countFetchResources(e,t){e.start(1);let n=await t();return this.diagnostics.countedResources+=n,e.step(1),n}completeDownloadProgress(){this.progressTask.progress(this.downloadTotal||1)}stepFetchProgress(){this.progressTask.step(1)}get progressTask(){return this.downloadTask??this.task}async countRemoteFiles(e){let t=await this.getApiClient();return this.diagnostics.remoteResourceCountRequests+=e.length,(await Promise.all(e.map(o=>t.countFiles(o)))).reduce((o,i)=>o+i,0)}async fetchWithRemoteChangeDetector(e){let t=[],n=[],o=new Map,i=e.targets&&e.targets.size>0?Ni([...e.targets]):void 0,a=new Kr({workspace:this.context,targets:e.targets,task:this.progressTask,forceRefresh:e.forceRefresh,visitor:{onFolderScanned:c=>this.prepareScannedFolder(c,n),onFolderSkipped:c=>this.applySkippedFolder(c),onChange:c=>{if(this.isActionableFetchChange(c.change,i))return this.applyRemoteChange(c,t,o)}}});await a.detect(),this.diagnostics.setDetector(a.getDiagnostics());let s=(await Promise.all(t)).filter(c=>c instanceof Error);if(s.length>0)throw s[0];await this.writeScannedFolderMetas(n,o)}async fetchKnownChanges(e){let t=this.getKnownFetchChanges();this.diagnostics.resourceTargets=wt(new Set(this.getKnownChangeTargetRemotePaths(t))).length,ke.info("fetch count resources start: {0}",this.createFetchScopeLog());let n=await this.countFetchResources(e,async()=>t.length);if(ke.info("fetch count resources done: resources={0}",n),this.startFetchProgress(n),t.length===0){this.completeDownloadProgress();return}ke.info("fetch mirror update start: changes={0}",t.length);let o=await this.getApiClient(),i=[],a=new Map;for(let c of t)await this.applyKnownRemoteChange(c,o,i,a);let s=(await Promise.all(i)).filter(c=>c instanceof Error);if(s.length>0)throw s[0];this.completeDownloadProgress(),this.captureApiDiagnostics(o),ke.info("fetch mirror update done: changes={0}",t.length)}getKnownFetchChanges(){return ns(this.options.changes??[]).filter(e=>!sm(e))}async applyKnownRemoteChange(e,t,n,o){if(e.type==="remoteDeleted"){await this.removeMirrorResource(e.oldRemotePath??e.remotePath),this.stepFetchProgress();return}let i=await this.getKnownRemoteFileInfo(t,e.remotePath);if(!i){await this.removeMirrorResource(e.remotePath),this.stepFetchProgress();return}if(e.type==="remoteRenamed"){await this.applyRemoteRenamedChange(e,i,n,o);return}if(e.type==="conflict"){await this.applyRemoteConflictChange(e,i,n,o);return}await this.applyRemotePresentChange(e,i,n,o)}async getKnownRemoteFileInfo(e,t){try{return await e.getFile(t)}catch(n){if(e.isNotFoundError(n)){ke.debug(`known remote change target disappeared before fetch: ${t}`);return}throw n}}isActionableFetchChange(e,t){return sm(e)?!1:!t||t(e)}async prepareScannedFolder(e,t){this.task.throwIfAborted(),await Cn.promises.mkdir(this.mirror.toLocalPath(e.remotePath),{recursive:!0}),t.push(e)}async writeScannedFolderMetas(e,t){for(let n of e)await this.writeMirrorChildMetas(n.remotePath,n.mirrorChildMetas,n.children.map(o=>t.get(o.path)??o),n.serverChildPaths)&&this.addUpdatedMeta(n.remotePath),await this.removeMissingMirrorPhysicalChildren(n.remotePath,n.serverChildPaths)}async applySkippedFolder(e){this.addSkippedFolder(e.remotePath),await this.completeSkippedFolderProgress(e.remotePath)}async applyRemoteChange(e,t,n){let o=e.change;if(o.type==="remoteDeleted"){await this.removeMirrorResource(o.oldRemotePath??o.remotePath),this.stepFetchProgress();return}if(o.type==="remoteRenamed"){await this.applyRemoteRenamedChange(o,e.serverEntry?.serverInfo,t,n);return}if(o.type==="conflict"){let i=e.serverEntry?.serverInfo;H(i,`remote conflict missing server entry: ${o.remotePath}`),await this.applyRemoteConflictChange(o,i,t,n);return}if(e.serverEntry?.serverInfo){await this.applyRemotePresentChange(o,e.serverEntry.serverInfo,t,n);return}this.stepFetchProgress()}async applyRemoteConflictChange(e,t,n,o){if(e.oldRemotePath&&!t.isFolder&&e.contentChanged===!1){if(await this.moveMirrorFile(e.oldRemotePath,e.remotePath)){await this.removeMirrorMetaIfReadable(e.oldRemotePath),this.addDeleted(e.oldRemotePath),await this.writeMirrorMetaIfChanged(t,await this.mirror.readMeta(t.path)),this.stepFetchProgress();return}await this.removeMirrorResource(e.oldRemotePath),await this.removeMirrorResource(e.remotePath),await this.applyRemotePresentChange(e,t,n,o,!0);return}if(e.oldRemotePath&&await this.removeMirrorResource(e.oldRemotePath),t.isFolder||e.contentChanged!==!1){await this.removeMirrorResource(e.remotePath),await this.applyRemotePresentChange(e,t,n,o);return}await this.applyRemotePresentChange(e,t,n,o,!t.isFolder&&!await this.mirror.exists(e.remotePath))}async applyRemoteRenamedChange(e,t,n,o){if(!e.oldRemotePath){if(t){await this.applyRemotePresentChange(e,t,n,o);return}this.stepFetchProgress();return}if(t&&!t.isFolder&&e.contentChanged===!1&&await this.moveMirrorFile(e.oldRemotePath,e.remotePath)){await this.removeMirrorMetaIfReadable(e.oldRemotePath),this.addDeleted(e.oldRemotePath),await this.writeMirrorMetaIfChanged(t,await this.mirror.readMeta(t.path)),this.stepFetchProgress();return}if(await this.removeMirrorResource(e.oldRemotePath),t){await this.applyRemotePresentChange(e,t,n,o);return}this.stepFetchProgress()}async applyRemotePresentChange(e,t,n,o,i=!1){if(t.isFolder){await this.applyRemoteFolder(t),this.stepFetchProgress();return}if(!i&&e.contentChanged===!1){await this.writeMirrorMetaIfChanged(t,await this.mirror.readMeta(t.path)),this.stepFetchProgress();return}this.addPendingDownload(n,this.fetchMirrorFile(t).then(a=>(o.set(a.path,a),this.writeMirrorMetaIfChanged(a,void 0))).finally(()=>this.stepFetchProgress()))}async applyRemoteFolder(e){this.task.throwIfAborted(),await Cn.promises.mkdir(this.mirror.toLocalPath(e.path),{recursive:!0}),await this.writeMirrorMetaIfChanged(e,await this.mirror.readMeta(e.path))}addPendingDownload(e,t){this.diagnostics.contentDownloadsScheduled++,e.push(t.then(()=>{},n=>n instanceof Error?n:new Error(String(n??"fetch download failed"))))}async completeSkippedFolderProgress(e){let t=Math.max(await this.mirror.countMetaResources([e])-1,0);t>0&&this.progressTask.step(t)}async fetchMirrorFile(e){let t=this.mirror.toLocalPath(e.path),n=await this.fileFetcher.fetchToLocal(e.path,t),o={...e,revision:n.revision??e.revision,modifyTime:n.modifyTime??e.modifyTime};return this.addDownloaded(e.path),o}async readMirrorChildMetas(e){let t=await Qa(this.mirror.root,Sn.posix.join(e,X),{strict:!1});return new Map(Object.entries(t))}async writeMirrorMetaIfChanged(e,t){this.isMirrorMetaSame(t,e)||(await this.mirror.writeMeta(e,this.task),this.diagnostics.mirrorMetaWrites++)}isMirrorMetaSame(e,t){return e!==void 0&&(0,mm.isDeepStrictEqual)(e,Wt(t,{writeContentInfo:!0}))}async writeMirrorChildMetas(e,t,n,o){let i={};for(let[c,l]of t)(!o||o.has(Sn.posix.join(e,c)))&&(i[c]=l);for(let c of n)i[Sn.posix.basename(c.path)]=Wt(c,{writeContentInfo:!0});let a=Sn.posix.join(e,X),s=await br(this.mirror.root,a);return s.exists&&!s.damaged&&(0,mm.isDeepStrictEqual)(i,Object.fromEntries(t))?!1:(await Xc(this.mirror.root,a,i),!0)}async removeMissingMirrorChildren(e,t,n){let o={},i=[...n.keys()].map(a=>({name:a,path:Sn.posix.join(e,a)})).filter(a=>!t.has(a.path));await Promise.all(i.map(a=>this.mirror.removePath(a.path)));for(let a of i)o[a.name]=void 0,this.addDeleted(a.path);Object.keys(o).length>0&&await this.mirror.patchMeta(e,o,this.task),await this.removeMissingMirrorPhysicalChildren(e,t)}async removeMissingMirrorPhysicalChildren(e,t){let n=this.mirror.toLocalPath(e),o;try{o=await Cn.promises.readdir(n,{withFileTypes:!0})}catch(a){if(x(a)){ke.debug(`mirror folder physical children cannot be listed: ${e}`);return}throw a}let i=o.filter(a=>a.name!==X).map(a=>Sn.posix.join(e,a.name)).filter(a=>!t.has(a));await Promise.all(i.map(a=>this.mirror.removePath(a))),this.diagnostics.mirrorPhysicalChildrenRemoved+=i.length;for(let a of i)this.addDeleted(a)}async removeMirrorResource(e){await Promise.all([this.mirror.removePath(e),this.removeMirrorMetaIfReadable(e)]),this.diagnostics.mirrorResourcesRemoved++,this.addDeleted(e)}async removeMirrorMetaIfReadable(e){try{await this.mirror.removeMeta(e)}catch(t){if(t instanceof Fi){ke.debug(`skip removing mirror meta from damaged .meta during fetch: ${e}`,t);return}throw t}}async moveMirrorFile(e,t){let n=this.mirror.toLocalPath(e),o=this.mirror.toLocalPath(t);try{return this.task.throwIfAborted(),await Cn.promises.mkdir(Sn.dirname(o),{recursive:!0}),await Cn.promises.rm(o,{force:!0,recursive:!0}),await Cn.promises.rename(n,o),this.diagnostics.mirrorFilesMoved++,!0}catch(i){if(x(i))return ke.debug(`mirror file cannot be moved during remote rename: ${e} -> ${t}`),!1;throw i}}addDownloaded(e){this.addUniqueResultPath(this.fetchResult.downloaded,e)}addDeleted(e){this.addUniqueResultPath(this.fetchResult.deleted,e)}addSkippedFolder(e){this.addUniqueResultPath(this.fetchResult.skippedFolders,e)}addUpdatedMeta(e){this.addUniqueResultPath(this.fetchResult.updatedMetas,e)}addUniqueResultPath(e,t){e.includes(t)||e.push(t)}captureApiDiagnostics(e){let t=e.getDiagnostics();t&&this.diagnostics.captureApiDiagnostics(t)}finishRunDiagnostics(e){this.diagnostics.finishRun(e)}syncResultDiagnostics(){this.diagnostics.downloaded=this.fetchResult.downloaded.length,this.diagnostics.deleted=this.fetchResult.deleted.length,this.diagnostics.skippedFolders=this.fetchResult.skippedFolders.length,this.diagnostics.updatedMetas=this.fetchResult.updatedMetas.length}resetDiagnostics(){this.diagnostics=Zv()}};function Zv(){return new fm}var hm=E(require("fs"));Ge();$();J();ft();Di();var Jr=T("sync.checkout"),fl=class extends Ve{mirror=this.createMirrorStore();workspace=this.createWorkspaceStore(this.mirror);async execute(){Jr.info("checkout start: {0}",this.options.projectNames.join(", ")||"<none>");let e=await this.createCheckoutItems();if(e.length===0)return this.task.start(1),this.task.finish(),Jr.info("checkout done: <none>"),{projectNames:[]};let t=e.reduce((o,i)=>o+i.total,0);this.task.start(Math.max(t,1));for(let o of e)this.task.throwIfAborted(),await this.checkoutProject(o.projectPath,this.task);let n=e.map(o=>o.projectPath);return Jr.info("checkout cleanup status start: {0}",n.join(", ")),this.clearSyncStatusTargets(n),Jr.info("checkout cleanup status done"),e.some(o=>!o.workspaceProjectExists)&&this.context.notifyLocalProjectsChanged?.(),this.task.finish(),Jr.info("checkout done: {0}",e.map(o=>o.projectName).join(", ")),{projectNames:e.map(o=>o.projectName)}}async createCheckoutItems(){let e=[],t=[...new Set(this.options.projectNames.map(n=>kt(n)))];for(let n of t){await this.assertMirrorProjectDirectory(n);let o=await Ku(this.workspace.toLocalPath(n));e.push({projectName:n.slice(1),projectPath:n,total:Math.max(await this.workspace.countCheckoutResources(n),1),workspaceProjectExists:o})}return e}async assertMirrorProjectDirectory(e){let t=this.mirror.toLocalPath(e);if(!(await hm.promises.stat(t)).isDirectory())throw new Error(`checkout source must be a mirror project directory: ${e}`)}async checkoutProject(e,t){let n=Date.now(),o=this.workspace.toLocalPath(e),i=await Rv(o);if(Jr.debug(`checkout project start: projectPath=${e} projectBlank=${i}`),!i){await this.workspace.checkoutFromMirror(e,t),Jr.debug(`checkout project done: projectPath=${e} elapsed=${Date.now()-n}ms`);return}try{await this.workspace.prepareCheckoutDirectory(e,t),await nl(this.workspaceRoot,e),await this.workspace.checkoutMirrorDirectory(e,t),t.throwIfAborted(),await this.workspace.copyMirrorMetaInfo(e,!0),t.step(1)}catch(a){throw await this.rollbackNewProjectCheckout(e,o,a),a}finally{await ol(this.workspaceRoot,e)}Jr.debug(`checkout project done: projectPath=${e} elapsed=${Date.now()-n}ms`)}async rollbackNewProjectCheckout(e,t,n){try{await hm.promises.rm(t,{force:!0,recursive:!0}),Jr.info(`checkout failed, rolled back new workspace project: projectPath=${e}`)}catch(o){Jr.warn(`checkout failed, rollback new workspace project failed: projectPath=${e} cause=${String(n)}`,o)}}};Tr();var hl=T("sync.clone"),gl=class extends Ve{async execute(){hl.info("clone start: {0}",this.options.projectNames?.join(", ")??"<all>"),hl.info("clone prepare start"),this.task.throwIfAborted();let e=await this.resolveCloneProjects();this.task.start(100,{message:d("workspace.sync.progress.clone.running"),retainOnFinish:!0});let t=this.task.subTaskMonitor(5),n=this.task.subTaskMonitor(68),o=this.task.subTaskMonitor(17),i=this.task.subTaskMonitor(6),a=this.task.subTaskMonitor(4);t.start(1),await ek.promises.mkdir(this.mirrorRoot,{recursive:!0}),t.step(1);let s=e.map(p=>p.name),c=s.map(p=>kt(p));hl.info("clone prepare done: projects={0}",s.join(", ")),await new Zn(this.context,{task:n,projectNames:s,forceRefresh:!0}).execute(),e.length===0&&(n.start(1),n.step(1)),await new fl(this.context,{task:o,projectNames:s}).execute();let l=await cl(this.context,i,c);return a.finish(),hl.info("clone done: {0}",s.join(", ")),this.task.setMessage(d("workspace.sync.progress.clone.done",s.length)),this.task.finish(),{projectNames:s,oldFiles:l}}async resolveCloneProjects(){if(this.options.projectNames&&this.options.projectNames.length===0)return[];let e=await this.getApiClient(),t=await e.getProjects(),n=this.options.projectNames??t.map(s=>s.name),o=[...new Set(n.map(s=>kt(s)))],i=new Set(t.map(s=>kt(s.name))),a=o.filter(s=>!i.has(s));if(a.length>0)throw new ut("err.sync.projectUnavailable",{actionName:"clone",paths:a.join(", "),projectNames:a.map(s=>s.slice(1)).join(", ")},{hint:"err.sync.projectUnavailable.hint"});return Promise.all(o.map(s=>e.getFile(s)))}};var vn=E(require("fs")),jt=E(require("path"));ft();$();Ge();J();Ie();tr();var ji=E(require("fs")),ck=E(require("os")),Qr=E(require("path")),lk=require("node:util");var as=E(require("fs")),sk=E(require("os")),Cm=E(require("path"));$();Ge();nm();var is=E(require("fs"));function rk(r,e){let t={};for(let i=0;i<e.length;i++){let a=e[i];t[a]?t[a].push(i):t[a]=[i]}let o=[{buffer1index:-1,buffer2index:-1,chain:null}];for(let i=0;i<r.length;i++){let a=r[i],s=t[a]||[],c=0,l=o[0];for(let p=0;p<s.length;p++){let u=s[p],g;for(g=c;g<o.length&&!(o[g].buffer2index<u&&(g===o.length-1||o[g+1].buffer2index>u));g++);if(g<o.length){let m={buffer1index:i,buffer2index:u,chain:o[g]};if(c===o.length?o.push(l):o[c]=l,c=g+1,l=m,c===o.length)break}}o[c]=l}return o[o.length-1]}function tk(r,e){let t=rk(r,e),n=[],o=r.length,i=e.length;for(let a=t;a!==null;a=a.chain){let s=o-a.buffer1index-1,c=i-a.buffer2index-1;o=a.buffer1index,i=a.buffer2index,(s||c)&&n.push({buffer1:[o+1,s],buffer1Content:r.slice(o+1,o+1+s),buffer2:[i+1,c],buffer2Content:e.slice(i+1,i+1+c)})}return n.reverse(),n}function nk(r,e){let t=rk(r,e),n=[],o=r.length,i=e.length;function a(s,c,l){let p=[];for(let u=0;u<l;u++)p.push(s[c+u]);return{offset:c,length:l,chunk:p}}for(let s=t;s!==null;s=s.chain){let c=o-s.buffer1index-1,l=i-s.buffer2index-1;o=s.buffer1index,i=s.buffer2index,(c||l)&&n.push({buffer1:a(r,s.buffer1index+1,c),buffer2:a(e,s.buffer2index+1,l)})}return n.reverse(),n}function pA(r,e,t){let n=[];function o(c,l){n.push({ab:l,oStart:c.buffer1[0],oLength:c.buffer1[1],abStart:c.buffer2[0],abLength:c.buffer2[1]})}tk(e,r).forEach(c=>o(c,"a")),tk(e,t).forEach(c=>o(c,"b")),n.sort((c,l)=>c.oStart-l.oStart);let i=[],a=0;function s(c){c>a&&(i.push({stable:!0,buffer:"o",bufferStart:a,bufferLength:c-a,bufferContent:e.slice(a,c)}),a=c)}for(;n.length;){let c=n.shift(),l=c.oStart,p=c.oStart+c.oLength,u=[c];for(s(l);n.length;){let g=n[0],m=g.oStart;if(m>p)break;p=Math.max(p,m+g.oLength),u.push(n.shift())}if(u.length===1){if(c.abLength>0){let g=c.ab==="a"?r:t;i.push({stable:!0,buffer:c.ab,bufferStart:c.abStart,bufferLength:c.abLength,bufferContent:g.slice(c.abStart,c.abStart+c.abLength)})}}else{let g={a:[r.length,-1,e.length,-1],b:[t.length,-1,e.length,-1]};for(;u.length;){c=u.shift();let w=c.oStart,f=w+c.oLength,S=c.abStart,k=S+c.abLength,b=g[c.ab];b[0]=Math.min(S,b[0]),b[1]=Math.max(k,b[1]),b[2]=Math.min(w,b[2]),b[3]=Math.max(f,b[3])}let m=g.a[0]+(l-g.a[2]),h=g.a[1]+(p-g.a[3]),y=g.b[0]+(l-g.b[2]),C=g.b[1]+(p-g.b[3]),v={stable:!1,aStart:m,aLength:h-m,aContent:r.slice(m,h),oStart:l,oLength:p-l,oContent:e.slice(l,p),bStart:y,bLength:C-y,bContent:t.slice(y,C)};i.push(v)}a=p}return s(e.length),i}function ok(r,e,t,n){n=Object.assign({excludeFalseConflicts:!0,stringSeparator:/\s+/},n);let i=typeof r=="string",a=typeof e=="string",s=typeof t=="string";i&&(r=r.split(n.stringSeparator)),a&&(e=e.split(n.stringSeparator)),s&&(t=t.split(n.stringSeparator));let c=[],l=pA(r,e,t),p=[];function u(){p.length&&c.push({ok:p}),p=[]}function g(m,h){if(m.length!==h.length)return!1;for(let y=0;y<m.length;y++)if(m[y]!==h[y])return!1;return!0}return l.forEach(m=>{m.stable?p.push(...m.bufferContent):n.excludeFalseConflicts&&g(m.aContent,m.bContent)?p.push(...m.aContent):(u(),c.push({conflict:{a:m.aContent,aIndex:m.aStart,o:m.oContent,oIndex:m.oStart,b:m.bContent,bIndex:m.bStart}}))}),u(),c}J();Si();var ak=T("sync.three-way-merge"),dA=/\n|\r\n|\r/;function gm(r){return r.split(dA)}function uA(r){return r.includes(`\r
|
|
70
|
+
`,"utf-8")}toFileMutationMetadata(e){let{localContentPath:t,contentChanged:n,metaInfoChanged:o,...i}=e;return i}toMoveFileMutationMetadata(e){let{isFolder:t,...n}=this.toFileMutationMetadata(e);return n}toFileMutationContext(e,t){return e==="/file/create"?{action:"create",path:t.path,isFolder:t.isFolder}:e==="/file/move"?{action:"move",path:t.path,targetPath:t.targetPath,isFolder:t.isFolder}:{action:"modify",path:t.path,isFolder:t.isFolder}}toFileMutationResponse(e,t){let n=e.fileInfo?this.normalizeMetaFileInfo(e.fileInfo):void 0,o=n?.path??(t.action==="move"?t.targetPath??t.path:t.path),i={path:o,success:!0,contentMutation:this.getContentMutation(e,t.action),pathMutation:this.getPathMutation(t,o)};t.action==="move"&&(i.oldPath=t.path),e.modifyTime!==void 0&&(i.modifyTime=e.modifyTime);let a=this.getMetaInfoChanged(e,t);return a!==void 0&&(i.metaInfoChanged=a),n!==void 0&&(i.metaInfo=n),i}getContentMutation(e,t){return t==="delete"?"deleted":e.created===!0?"created":e.contentChanged===!0?"modified":"none"}getPathMutation(e,t){if(e.action!=="move"||e.path===t)return"none";let n=Ui.posix.dirname(e.path)!==Ui.posix.dirname(t),o=Ui.posix.basename(e.path)!==Ui.posix.basename(t);return n&&o?"renamedAndMoved":n?"moved":"renamed"}getMetaInfoChanged(e,t){return t.action==="create"&&t.isFolder===!0&&e.created!==!0?!0:e.metaInfoChanged}createMultipartBoundary(){return"----succapp-"+Date.now().toString(36)+"-"+Math.random().toString(36).slice(2)}toRequestBody(e){return e instanceof Vc.Readable||Buffer.isBuffer(e)?e:Buffer.from(e,"utf-8")}normalizeMetaFileInfo(e){return{...e,parentDir:Ui.posix.dirname(e.path),name:Ui.posix.basename(e.path)}}async collectFileDescendants(e,t){let n=await this.listFiles(e);t.push(...n);for(let o of n)o.isFolder&&await this.collectFileDescendants(o.path,t)}async requestJson(e,t){return this.requestRunner.addTask(()=>this.requestWithAuth(e,t,n=>ad(n,this.createRequestContext(e,t))))}async requestText(e,t){return this.requestRunner.addTask(()=>this.requestWithAuth(e,t,n=>n.text()))}async requestStream(e,t){let n=await this.requestRunner.acquire();try{return await this.requestWithAuth(e,t,async o=>{if(!o.body)throw new Vt(e);let i=Vc.Readable.fromWeb(o.body);return this.releaseRequestSlotAfterStream(i,n),{response:o,stream:i}})}catch(o){throw n.release(),o}}async requestJsonObjectStream(e,t){return(await this.requestStream(e,t)).stream}async requestJsonBodyStream(e,t){return(await this.requestStream(`${this.serverUrl}${Ar}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})).stream}async requestWithAuth(e,t,n,o=!1){await this.ensureAuthCredentialLoaded(),await this.refreshOAuthCredentialIfNeeded(!1);let i=jh(t?.headers),a=this.authCredential?.token;a&&(i.Authorization=`Bearer ${a}`);try{let s=await Ho(e,{...t,headers:i});return n(s)}catch(s){if(!o&&Ir(s,"err.oauth2.tokenExpired")&&await this.refreshOAuthCredentialIfNeeded(!0))return this.requestWithAuth(e,t,n,!0);let c=ch(s);throw c&&this.handleAuthFailure(),c?new ft({workspaceRoot:this.workspaceRoot,serverUrl:this.serverUrl,cause:s}):s}}createRequestContext(e,t){return{url:e,endpoint:GU(e),serverUrl:this.serverUrl,request:zU(t?.body)}}createInvalidEndpointResponseError(e,t,n){return new Pe("err.net.invalidResponse",{properties:{url:`${this.serverUrl}${Ar}${e}`,endpoint:e,serverUrl:this.serverUrl,reason:t,request:n}})}async ensureAuthCredentialLoaded(){if(!this.authCredential)return fn(this,"authCredential",()=>this.doEnsureAuthCredentialLoaded())}async doEnsureAuthCredentialLoaded(){let e=await Ai(this.serverUrl);if(!e||!e.token&&(e.authType!=="oauth"||!e.refreshToken)){this.authCredential=null;return}if(this.rejectedAuthCredentialSignature===nb(e)){this.authCredential=null;return}this.rejectedAuthCredentialSignature=void 0,this.authCredential=e}async refreshOAuthCredentialIfNeeded(e){let t=this.authCredential;if(!t||t.authType!=="oauth"||!t.refreshToken||!e&&!this.shouldRefreshOAuthCredential(t))return!1;try{let n=await fn(this,`oauthRefresh:${this.serverUrl}`,()=>KR(this.serverUrl,t));return this.authCredential=n,!0}catch(n){throw Aw(n)&&this.handleAuthFailure(),n}}shouldRefreshOAuthCredential(e){return e.tokenExpired||!e.token?!0:CR(e.expiresAt,HU)}handleAuthFailure(){this.authCredential&&(this.rejectedAuthCredentialSignature=nb(this.authCredential)),this.authCredential=null}releaseRequestSlotAfterStream(e,t){e.once("close",()=>t.release()),e.once("error",()=>t.release())}};function GU(r){try{let e=new URL(r),t=e.pathname.indexOf(Ar);return t<0?e.pathname:e.pathname.slice(t+Ar.length)||"/"}catch{return}}function zU(r){if(typeof r=="string")try{let e=JSON.parse(r);return W(e)?e:void 0}catch{return}}function nb(r){return[r.authType,r.token??"",r.refreshToken??""].join("\0")}O();F();nt();V();var ib=E(require("fs")),qc=E(require("path"));F();V();var KU=8;async function ab(r){let e=qc.resolve(r.startPath),t=new Set((r.excludedRoots??[]).map(o=>qc.resolve(o))),n=r.maxDepth??KU;for(let o=0;o<=n;o++){if(!t.has(e)&&await JU(e))return e;let i=qc.dirname(e);if(i===e)return;e=i}}async function JU(r){try{return(await ib.promises.stat(An(r))).isDirectory()}catch(e){if(_(e))return!1;throw e}}async function Ka(r,e){let t=r.command,n=t?.serverTarget??e.serverTarget??"required",o=t?.spec.positionals.some(C=>C.role==="server-url")??e.explicitServerUrl!==void 0,i=t?ln(t,"server"):!0,a=n!=="none"&&(t?t.workspaceTarget!=="none":!0),s=n!=="none",c=r.workspace;c&&a&&await c.config.ensureLoaded();let l=o?e.explicitServerUrl:void 0,u=i?r.config.server:void 0,p=a?c?.activeServerUrl:void 0,g=s?r.config.envServer:void 0,m=l??u??p??g;if(!m)throw new P("err.cli.missingInput",{inputId:"server",sourceIds:QU({positionalServerUrl:o,serverOption:i,workspaceServer:a,environmentServer:s}),commandName:r.command?.spec.name,envName:Mr.server});let f=c?.config.resolveServerUrl(m);if(f!==void 0)return f;if(l!==void 0||u===void 0)return yn(m);let y=De("server");return yn(m,{input:y,option:y,flag:"server"})}function yn(r,e={inputId:"server"}){try{return _e(r)}catch(t){throw Ir(t,"err.net.invalidUrl")?new P("err.cli.invalidUrl",{...e,value:r,url:r},{cause:t}):t}}async function Vn(r,e){let t=r.config.server;await e.config.ensureLoaded();let n=e.activeServerUrl;if(!n)throw new P("err.cli.missingInput",{inputId:"activeServer",sourceIds:["workspaceRemoteAdd"]});if(!t)return;let o=De("server"),i=yn(t,{input:o,option:o,flag:"server"});if(!gt(i,n))throw new P("err.cli.serverMismatch",{input:o,option:o,value:i,expected:n,context:{target:i,active:n}})}function QU(r){let e=[];return r.positionalServerUrl&&e.push("serverPositional"),r.serverOption&&e.push("serverOption"),r.workspaceServer&&e.push("workspaceRemoteAdd"),r.environmentServer&&e.push("environmentServer"),e}async function Bc(r,e){let t=r.workspace?.config.resolveServerUrl(e);return r.workspace&&t?r.workspace.requireServerClient(t):new jn(e,{workspaceRoot:r.workspace?.root})}async function vd(r){let e=r.workspace?cg.resolve(r.cwd,r.workspace):cg.resolve(r.cwd);r.workspace!==void 0&&await Ku(e);let t=await ab({startPath:e,excludedRoots:[YU(r.env)],maxDepth:r.maxDepth});if(!t&&r.required!==!1)throw new P("err.cli.invalidWorkspace",{inputId:"workspace",source:e});return t}async function Go(r){try{return await ro(r)}catch(e){throw lb(r,e)}}async function Ja(r){try{return await sb.promises.stat(r)}catch(e){throw lb(r,e)}}function ee(r,e){return{...r.workspace?{workspace:r.workspace.root}:{},server:e}}function YU(r=process.env){return r.HOME||r.USERPROFILE||cb.homedir()}function lb(r,e){return _(e)?new P("err.file.notFound",{path:r},{cause:e}):new P("err.cli.invalidReadableFile",{inputId:"inputFile",source:r,path:r},{cause:e})}ze();var ae=class{toOptions(e){return{}}async execute(e,t){return await this.validateOptions(e,t),this.executeCommand(e,t)}validateOptions(e,t){}requireWorkspace(e){return K(e.workspace,"CLI command requires a workspace context"),e.workspace}async resolveServerUrl(e,t){return Ka(e,{explicitServerUrl:t})}createServerApiClient(e,t){return Bc(e,t)}},Te=class extends ae{async executeCommand(e,t){let n=this.requireWorkspace(e);return this.executeWorkspaceCommand(n,e,t)}};var ub=require("node:child_process"),db=require("node:util"),XU=(0,db.promisify)(ub.execFile);async function Qa(r,e){let t=ZU(r);await XU(t.command,t.args,{signal:e})}function ZU(r){return process.platform==="darwin"?{command:"open",args:[r]}:process.platform==="win32"?{command:"rundll32",args:["url.dll,FileProtocolHandler",r]}:{command:"xdg-open",args:[r]}}var AM=require("crypto"),Yy=E(require("path"));nt();oo();O();F();async function Hc(r,e,t,n){e$(t.timeoutMs);let o=new AbortController,i=e?.signal??void 0,a=t.fetchImpl??fetch,s,c=new Promise((m,f)=>{s=f}),l=()=>{if(!i)return;let m=Dc(i);o.abort(m),s?.(m)};i?.aborted?l():i?.addEventListener("abort",l,{once:!0});let u,p=(async()=>{let m=await a(r,{...e,signal:o.signal});return n?await n(m):m})(),g=new Promise((m,f)=>{u=setTimeout(()=>{let y=t.timeoutMessage??`fetch timed out after ${t.timeoutMs}ms: ${r}`,C=new Pe("err.net.connectionFailed",{category:"networkAuth",properties:{url:r,causeMessage:` - ${y}`,reason:"timeout",timeoutMs:t.timeoutMs},message:y});o.abort(C),f(C)},t.timeoutMs)});try{return await Promise.race([p,g,c])}finally{u&&clearTimeout(u),i?.removeEventListener("abort",l)}}function e$(r){if(!Number.isFinite(r)||r<=0)throw new RangeError(`fetch timeout must be a positive finite number: ${r}`)}async function Gc(r){try{await r.body?.cancel()}catch{}}I();Y();re();$i();var nm=E(require("fs")),Rn=E(require("path"));var kd=class{total=0;byApi=new Map;byPath=new Map;pathKeyCount=0;droppedPathKeys=0;recentCallsDropped=0;recentCalls=[];maxPathKeys;maxRecentCalls;constructor(e={}){this.maxPathKeys=e.maxPathKeys??500,this.maxRecentCalls=e.maxRecentCalls??200}record(e){this.total++,this.byApi.set(e.name,(this.byApi.get(e.name)??0)+1),e.path!==void 0&&this.recordPath(e.name,e.path),this.recordRecentCall(e)}getSnapshot(e={}){let t={total:this.total,byApi:Object.fromEntries(this.byApi),byPath:this.createByPathSnapshot(),droppedPathKeys:this.droppedPathKeys,recentCallsDropped:this.recentCallsDropped,...e.includeRecentCalls?{recentCalls:this.recentCalls.map(n=>({...n}))}:{}};return e.reset&&this.reset(),t}reset(){this.total=0,this.byApi.clear(),this.byPath.clear(),this.pathKeyCount=0,this.droppedPathKeys=0,this.recentCallsDropped=0,this.recentCalls.length=0}recordPath(e,t){let n=this.byPath.get(e);if(n?.has(t)){n.set(t,(n.get(t)??0)+1);return}if(this.pathKeyCount>=this.maxPathKeys){this.droppedPathKeys++;return}n||(n=new Map,this.byPath.set(e,n)),n.set(t,1),this.pathKeyCount++}recordRecentCall(e){if(this.maxRecentCalls<=0){this.recentCallsDropped++;return}this.recentCalls.length>=this.maxRecentCalls&&(this.recentCalls.shift(),this.recentCallsDropped++),this.recentCalls.push({...e})}createByPathSnapshot(){let e={};for(let[t,n]of this.byPath)e[t]=Object.fromEntries(n);return e}};var lg=class{constructor(e){this.delegate=e}diagnostics=new kd;get serverUrl(){return this.delegate.serverUrl}get currentAuthorizationHeader(){return this.delegate.currentAuthorizationHeader}getDiagnostics(e){return this.diagnostics.getSnapshot(e)}async getServerInfo(){return this.recordApiCall("getServerInfo"),this.delegate.getServerInfo()}async getServerDetailInfo(){return this.recordApiCall("getServerDetailInfo"),this.delegate.getServerDetailInfo()}async getMetadataVersions(){return this.recordApiCall("getMetadataVersions"),this.delegate.getMetadataVersions()}async getProjects(){return this.recordApiCall("getProjects"),this.delegate.getProjects()}async createProject(e){return this.recordApiCall("createProject",e.name),this.delegate.createProject(e)}async listFiles(e){return this.recordApiCall("listFiles",e),this.delegate.listFiles(e)}async searchFiles(e){return this.recordApiCall("searchFiles",e.path??e.name),this.delegate.searchFiles(e)}async countFiles(e){return this.recordApiCall("countFiles",e),this.delegate.countFiles(e)}async getFileDescendant(e){return this.recordApiCall("getFileDescendant",e),this.delegate.getFileDescendant(e)}async getFile(e){return this.recordApiCall("getFile",e),this.delegate.getFile(e)}async getFileById(e){return this.recordApiCall("getFileById",e),this.delegate.getFileById(e)}async getFileInfos(e){return this.recordApiCall("getFileInfos"),this.delegate.getFileInfos(e)}async getFileHistory(e,t){return this.recordApiCall("getFileHistory",e),this.delegate.getFileHistory(e,t)}isNotFoundError(e){return this.delegate.isNotFoundError(e)}async getFileContent(e,t){return this.recordApiCall("getFileContent",e),this.delegate.getFileContent(e,t)}async getFileContentStream(e,t){return this.recordApiCall("getFileContentStream",e),this.delegate.getFileContentStream(e,t)}async saveFile(e,t,n){return this.recordApiCall("saveFile",e),this.delegate.saveFile(e,t,n)}async createFile(e){return this.recordApiCall("createFile",e.path),this.delegate.createFile(e)}async modifyFile(e){return this.recordApiCall("modifyFile",e.path),this.delegate.modifyFile(e)}async moveFile(e){return this.recordApiCall("moveFile",e.path),this.delegate.moveFile(e)}async upgradeFileContent(e){return this.recordApiCall("upgradeFileContent",e.path),this.delegate.upgradeFileContent(e)}async compileFileContent(e){return this.recordApiCall("compileFileContent",e.path),this.delegate.compileFileContent(e)}async deleteFile(e,t){return this.recordApiCall("deleteFile",e),this.delegate.deleteFile(e,t)}async getExtensionTemplates(){return this.recordApiCall("getExtensionTemplates"),this.delegate.getExtensionTemplates()}async downloadExtensionTemplate(e,t){return this.recordApiCall("downloadExtensionTemplate",`${e}/${t}`),this.delegate.downloadExtensionTemplate(e,t)}async getDataSources(){return this.recordApiCall("getDataSources"),this.delegate.getDataSources()}async getSettings(e){return this.recordApiCall("getSettings",e?.path),this.delegate.getSettings(e)}async setSettings(e){return this.recordApiCall("setSettings",e.path),this.delegate.setSettings(e)}async probeDataSource(e){return this.recordApiCall("probeDataSource",e),this.delegate.probeDataSource(e)}async getDataSourceConfig(e,t){return this.recordApiCall("getDataSourceConfig",e),this.delegate.getDataSourceConfig(e,t)}async testDataSource(e){return this.recordApiCall("testDataSource",e.config.name),this.delegate.testDataSource(e)}async createDataSource(e){return this.recordApiCall("createDataSource",e.config.name),this.delegate.createDataSource(e)}async updateDataSource(e){return this.recordApiCall("updateDataSource",e.dataSource),this.delegate.updateDataSource(e)}async deleteDataSource(e){return this.recordApiCall("deleteDataSource",e.dataSource),this.delegate.deleteDataSource(e)}async listDbSchemas(e,t){return this.recordApiCall("listDbSchemas",e),this.delegate.listDbSchemas(e,t)}async listDbTables(e,t){return this.recordApiCall("listDbTables",e),this.delegate.listDbTables(e,t)}async describeDbTable(e,t,n){return this.recordApiCall("describeDbTable",`${e}/${t}`),this.delegate.describeDbTable(e,t,n)}async queryDbDdl(e,t,n){return this.recordApiCall("queryDbDdl",`${e}/${t}`),this.delegate.queryDbDdl(e,t,n)}async executeDbQuery(e){return this.recordApiCall("executeDbQuery",e.dataSource),this.delegate.executeDbQuery(e)}async exportDbQueryData(e){return this.recordApiCall("exportDbQueryData",e.dataSource),this.delegate.exportDbQueryData(e)}async exportDbTableData(e){return this.recordApiCall("exportDbTableData",`${e.dataSource}/${e.tableName}`),this.delegate.exportDbTableData(e)}async executeDbAny(e){return this.recordApiCall("executeDbAny",e.dataSource),this.delegate.executeDbAny(e)}async importDbTableData(e){return this.recordApiCall("importDbTableData",`${e.dataSource}/${e.tableName}`),this.delegate.importDbTableData(e)}async searchModels(e){return this.recordApiCall("searchModels",e?.query??e?.path??e?.name??e?.projectName),this.delegate.searchModels(e)}async getModelSummary(e){return this.recordApiCall("getModelSummary",e.model),this.delegate.getModelSummary(e)}async listModelFields(e){return this.recordApiCall("listModelFields",e.model),this.delegate.listModelFields(e)}async listModelIndexes(e){return this.recordApiCall("listModelIndexes",e.model),this.delegate.listModelIndexes(e)}async selectModel(e){return this.recordApiCall("selectModel",e.model),this.delegate.selectModel(e)}async selectModelStream(e){return this.recordApiCall("selectModelStream",e.model),this.delegate.selectModelStream(e)}async queryModels(e){return this.recordApiCall("queryModels"),this.delegate.queryModels(e)}async queryModelsStream(e,t){return this.recordApiCall("queryModelsStream"),this.delegate.queryModelsStream(e,t)}async exportModelSelectData(e){return this.recordApiCall("exportModelSelectData",e.model),this.delegate.exportModelSelectData(e)}async exportModelQueryData(e){return this.recordApiCall("exportModelQueryData"),this.delegate.exportModelQueryData(e)}async profile(e){return this.recordApiCall("profile",e.model),this.delegate.profile(e)}async fieldProfile(e){return this.recordApiCall("fieldProfile",e.model),this.delegate.fieldProfile(e)}async executeScript(e){return this.recordApiCall("executeScript","<temporary-script>"),this.delegate.executeScript(e)}async checkScript(e){return this.recordApiCall("checkScript","<temporary-script>"),this.delegate.checkScript(e)}async listCaches(){return this.recordApiCall("listCaches"),this.delegate.listCaches()}async cleanCache(e){return this.recordApiCall("cleanCache",e),this.delegate.cleanCache(e)}buildViewFileRedirectUrl(e){return this.delegate.buildViewFileRedirectUrl(e)}async getTypeScriptSupportApiLibs(){return this.recordApiCall("getTypeScriptSupportApiLibs"),this.delegate.getTypeScriptSupportApiLibs()}async getJsonSchemaSupport(){return this.recordApiCall("getJsonSchemaSupport"),this.delegate.getJsonSchemaSupport()}async downloadJsonSchema(e){return this.recordApiCall("downloadJsonSchema"),this.delegate.downloadJsonSchema(e)}async getFrontendFrameworksManifest(){return this.recordApiCall("getFrontendFrameworksManifest"),this.delegate.getFrontendFrameworksManifest()}recordApiCall(e,t){this.diagnostics.record({name:e,path:t})}};function mb(r){return new lg(r)}V();Nn();oo();Ft();wn();Wr();var Ud=class extends hr{async execute(){this.task.throwIfAborted();let e=this.options.scope??"both",t=e==="local",n=this.options.refreshAll?await this.context.refreshSyncStatusState({scope:e,forceRefresh:this.options.forceRefresh,rootRemotePath:this.options.rootRemotePath,source:this.options.source,task:this.task}):void 0,o=this.context.getSyncChanges();if(t&&(o=o.filter(a=>a.type!=="conflict"&&At(a))),this.options.paths?.length){let a=await this.resolveTargetRemotePaths(this.options.paths,t?"mirror-only":"server-backed");o=this.filterChangesByTargets(o,a)}let i=n?.warnings??[];return{changes:o,localChanges:o.filter(a=>At(a)),remoteChanges:t?[]:o.filter(a=>kn(a)),conflicts:t?[]:o.filter(a=>a.type==="conflict"),...i.length>0?{warnings:i}:{}}}};var pE=E(require("fs"));Y();I();O();F();V();Ft();var uo=E(require("fs")),po=E(require("path")),$g=require("node:util");V();oo();ze();F();it();Y();Ft();$n();oo();F();Y();nt();var M$=M("sync.file-fetcher"),x$=3,I$=20,_$=300,$d=class{constructor(e){this.options=e;let t={};e.maxConcurrency!==void 0&&(t.maxConcurrency=e.maxConcurrency),e.signal&&(t.signal=e.signal),this.runner=new bt(t),this.maxAttemptsPerFile=Math.max(1,e.maxAttemptsPerFile??x$),this.maxRetries=Math.max(0,e.maxRetries??I$),this.retryBaseDelayMs=Math.max(0,e.retryBaseDelayMs??_$)}runner;maxAttemptsPerFile;maxRetries;retryBaseDelayMs;retryCount=0;stoppedError;fetchToLocal(e,t){return Gt(this.options.signal),this.stoppedError?Promise.reject(this.stoppedError):this.runner.addTask(()=>this.fetchToLocalWithRetry(e,t))}async fetchToLocalWithRetry(e,t){let n;for(let o=1;o<=this.maxAttemptsPerFile;o++){if(Gt(this.options.signal),this.stoppedError)throw this.stoppedError;try{let i=await this.options.getContentStream(e);return Gt(this.options.signal),await rr(t,i.stream),i}catch(i){if(i instanceof Vr)throw i;if(n=i,!this.shouldRetryContentDownload(i))throw this.stop(i),i;if(o>=this.maxAttemptsPerFile){let s=new Error(`download file content failed: ${e}: ${Ri(i)}`);throw this.stop(s),s}if(!this.consumeRetryBudget()){let s=new Error(`download file content retry budget exhausted after ${this.maxRetries} retries: ${e}: ${Ri(i)}`);throw this.stop(s),s}let a=this.retryBaseDelayMs*o;M$.warn(`content download interrupted, retrying file attempt ${o+1}/${this.maxAttemptsPerFile}, fetch retry budget ${this.retryCount}/${this.maxRetries}: `+e,i),await new Promise(s=>setTimeout(s,a)),Gt(this.options.signal)}}throw n instanceof Error?n:new Error(String(n??"content download failed"))}stop(e){this.stoppedError||(this.stoppedError=e instanceof Error?e:new Error(String(e??"content download failed")),this.runner.cancel(this.stoppedError))}consumeRetryBudget(){return this.retryCount>=this.maxRetries?!1:(this.retryCount++,!0)}shouldRetryContentDownload(e){return Ow(e)}};var Wg=E(require("fs")),jd=E(require("path"));V();it();Y();$n();F();Wr();Hi();function sE(r){let e=new Map(r.serverProjects.map(a=>[a.remotePath,a])),t=D$(r.serverProjects),n=new Map(r.mirrorProjects.map(a=>[a.remotePath,a])),o=F$(r.mirrorProjects),i={scannableProjectPaths:new Set,unavailableProjects:[],renamedProjects:[]};for(let a of r.trackedProjects){let s=n.get(a),c=s?.id,l=e.get(a);if(l){c&&l.id&&c!==l.id?i.unavailableProjects.push(aE(a,s)):i.scannableProjectPaths.add(a);continue}let u=c&&!o.has(c)?t.get(c):void 0;if(u&&u.remotePath!==a){i.renamedProjects.push({oldProject:s??{name:cE(a),remotePath:a,id:c},newProject:u});continue}i.unavailableProjects.push(aE(a,s))}return i}function D$(r){let e=new Map,t=new Set;for(let n of r)if(n.id){if(e.has(n.id)){t.add(n.id);continue}e.set(n.id,n)}for(let n of t)e.delete(n);return e}function F$(r){let e=new Set,t=new Set;for(let n of r)n.id&&(e.has(n.id)&&t.add(n.id),e.add(n.id));return t}function aE(r,e){return e||{name:cE(r),remotePath:r}}function cE(r){let e=r.lastIndexOf("/");return e>=0?r.slice(e+1):r}var A$=8,lE=100,O$=/^[0-9a-f]{64}$/,or=M("sync.detector.remote"),Ug=class{detectRuns=0;serverFileInfoRequests=0;serverFileInfoHits=0;serverFileInfoMisses=0;serverFoldersListed=0;serverFoldersSkippedByScope=0;serverFoldersSkippedByWaterline=0;mirrorFoldersScanned=0;mirrorEntriesCollected=0;mirrorContentStatChecks=0;mirrorContentHashChecks=0;changesByType={};changesByKind=L$();scanScope=N$();visitorEvents={};api={total:0,byApi:{},byPath:{},droppedPathKeys:0,recentCallsDropped:0};describeForLog(){return`
|
|
71
|
+
`+JSON.stringify(this.createSnapshot(),null,2).replace(/^\{\n/,"").replace(/\n\}$/,"")}createSnapshot(){return{detectRuns:this.detectRuns,serverFileInfoRequests:this.serverFileInfoRequests,serverFileInfoHits:this.serverFileInfoHits,serverFileInfoMisses:this.serverFileInfoMisses,serverFoldersListed:this.serverFoldersListed,serverFoldersSkippedByScope:this.serverFoldersSkippedByScope,serverFoldersSkippedByWaterline:this.serverFoldersSkippedByWaterline,mirrorFoldersScanned:this.mirrorFoldersScanned,mirrorEntriesCollected:this.mirrorEntriesCollected,mirrorContentStatChecks:this.mirrorContentStatChecks,mirrorContentHashChecks:this.mirrorContentHashChecks,changesByType:{...this.changesByType},changesByKind:{...this.changesByKind},scanScope:{...this.scanScope},visitorEvents:{...this.visitorEvents},api:this.api}}},qn=class{constructor(e){this.options=e;this.serverRequestRunner=new bt({maxConcurrency:A$,signal:e.task.getAbortSignal()})}diagnostics=uE();workspaceState;workspaceStateInitialized=!1;expandedServerFolders=new Set;serverRequestRunner;loggedChangeDetailCount=0;changeDetailLimitLogged=!1;loggedChangeDetailKeys=new Set;visitorTasks=[];visitorChangeKeys=new Set;getDiagnostics(e={}){this.diagnostics.api=this.workspaceStateInitialized?this.workspaceState.client.getDiagnostics({reset:e.reset,includeRecentCalls:e.includeApiRecentCalls})??Ng():Ng();let t=this.diagnostics.createSnapshot();return e.reset&&this.resetDiagnostics(),t}async detect(){this.diagnostics.detectRuns++;let e=Date.now();or.debug(`detect start targets=${this.options.targets?.size??"<all>"}`);try{if(this.isSignalAborted()||!await this.initializeWorkspaceState())return[];this.resetChangeDetailLogState();let t=await this.createSnapshot(),n=Date.now(),o=await this.matchSnapshot(t);for(or.debug(`match snapshot done elapsed=${Date.now()-n}ms changes=${o.changes.length} renamedFolders=${o.renamedFolders.length}`);await this.expandRenamedFolderChildren(t,o.renamedFolders);)n=Date.now(),o=await this.matchSnapshot(t),or.debug(`rematch after folder expansion done elapsed=${Date.now()-n}ms changes=${o.changes.length} renamedFolders=${o.renamedFolders.length}`);let i=o.changes.filter(a=>this.isTargetChange(a));for(let a of i)this.incrementRecordCounter(this.diagnostics.changesByType,a.type),this.recordChangeKind(a),this.dispatchChange(a,t);return await this.waitVisitorTasks(),or.debug(`detect diagnostics ${this.describeDiagnosticsForLog()}`),or.debug(`detect done elapsed=${Date.now()-e}ms changes=${i.length}`),i}catch(t){throw this.serverRequestRunner.cancel(t),await this.serverRequestRunner.waitAll(),t}}async initializeWorkspaceState(){if(this.workspaceStateInitialized)return!0;let e=this.options.workspace,t=await e.requireServerClient(e.activeServerUrl);if(this.isSignalAborted())return!1;let n=new zt(e.getMirrorRoot()),o=await e.listWorkspaceProjects();return this.isSignalAborted()?!1:(this.workspaceState={client:t,mirror:n,trackedProjects:new Set(o.map(i=>"/"+i))},this.workspaceStateInitialized=!0,!0)}isSignalAborted(){return this.options.signal?.aborted===!0}async createSnapshot(){let e=Date.now(),t={server:new Map,mirror:new Map,skippedServerFolders:new Set,explicitMissingTargets:new Set};return this.diagnostics.scanScope.trackedProjects=this.workspaceState.trackedProjects.size,this.options.targets||(t.projectCompare=await this.computeProjectCompare()),await Promise.all([this.collectMirrorSnapshot(t),this.collectServerSnapshot(t)]),await this.collectMirrorRenameCandidates(t),or.debug(`create snapshot done elapsed=${Date.now()-e}ms serverEntries=${t.server.size} mirrorEntries=${t.mirror.size} skippedServerFolders=${t.skippedServerFolders.size} explicitMissingTargets=${t.explicitMissingTargets.size}`),t}async collectServerSnapshot(e){let t=Date.now();if(this.options.targets){let a=await this.filterCloneInProgressPaths(Ht(this.options.targets));await Promise.all(a.map(s=>this.collectServerTarget(s,e))),or.debug(`collect server targets done elapsed=${Date.now()-t}ms targets=${this.options.targets.size} serverEntries=${e.server.size}`);return}let n=e.projectCompare,o=n?[...n.scannableProjectPaths]:[],i=n?n.renamedProjects.map(a=>a.newProject.remotePath):[];await Promise.all([...o.map(a=>this.collectServerEntry(a,e,!0)),...i.map(a=>this.collectServerEntry(a,e,!1))]),or.debug(`collect server projects done elapsed=${Date.now()-t}ms scannableProjects=${o.length} renameTargets=${i.length} trackedProjects=${this.workspaceState.trackedProjects.size} serverEntries=${e.server.size} skippedServerFolders=${e.skippedServerFolders.size}`)}async computeProjectCompare(){let[e,t]=await Promise.all([this.workspaceState.client.getProjects(),this.listMirrorProjectPaths()]),n=e.map(s=>({name:s.name,remotePath:"/"+s.name,id:s.id,desc:s.desc})),o=await Promise.all([...t].map(async s=>{let c=await this.workspaceState.mirror.readMeta(s);return{name:s.slice(1),remotePath:s,id:c?.id,desc:c?.desc}})),i=new Set(await this.filterCloneInProgressPaths([...this.workspaceState.trackedProjects])),a=sE({trackedProjects:i,serverProjects:n,mirrorProjects:o});return this.recordProjectCompareScanScope(a,e.length,t),a}recordProjectCompareScanScope(e,t,n){let o=e.scannableProjectPaths.size+e.renamedProjects.length,i=[...e.scannableProjectPaths].filter(s=>n.has(s)).length+e.renamedProjects.filter(s=>n.has(s.oldProject.remotePath)).length,a=this.diagnostics.scanScope;a.serverProjects=t,a.probedProjects=o,a.missingTrackedProjects=e.unavailableProjects.length,a.skippedUntrackedProjects=Math.max(t-o,0),a.mirrorProjectsScanned=i,a.skippedUntrackedMirrorProjects=[...n].filter(s=>!this.workspaceState.trackedProjects.has(s)).length}async collectServerTarget(e,t){let[n,o]=await Promise.all([this.collectServerEntry(e,t,!0),this.workspaceState.mirror.readMeta(e)]);n||!o||(t.explicitMissingTargets.add(e),await this.collectServerEntry(dt(e)??"/",t,!0))}async collectServerEntry(e,t,n){this.options.task.throwIfAborted();let o=await this.getRemoteFileInfo(e);return o?(await this.collectKnownServerEntry(o,t,n),!0):!1}async collectKnownServerEntry(e,t,n){let o=this.createServerEntry(e);if(o.shouldReport=n,o.isFolder||await this.enrichFileContentState(o),t.server.set(o.remotePath,o),!o.isFolder)return;if(!n){t.skippedServerFolders.add(o.remotePath),this.diagnostics.serverFoldersSkippedByScope++;return}if(await this.canSkipServerFolder(o.remotePath,e)){t.skippedServerFolders.add(o.remotePath),this.diagnostics.serverFoldersSkippedByWaterline++,this.dispatchFolderSkipped(o.remotePath,e);return}let i=await this.listRemoteFiles(o.remotePath);await this.dispatchFolderScanned(o.remotePath,e,i),await Promise.all(i.map(a=>this.collectServerChild(a,t)))}async collectServerChild(e,t){await this.collectKnownServerEntry(e,t,!0)}async canSkipServerFolder(e,t){if(this.options.forceRefresh||this.expandedServerFolders.has(e))return!1;let n=await this.workspaceState.mirror.readMeta(e);return!n||n.modifyTime!==t.modifyTime||!await this.workspaceState.mirror.exists(e)?!1:this.hasHealthyDirectMirrorChildren(e)}async hasHealthyDirectMirrorChildren(e){let t;try{t=(await Wg.promises.readdir(this.workspaceState.mirror.toLocalPath(e),{withFileTypes:!0})).filter(a=>a.name!==te).map(a=>a.name).sort()}catch(i){if(_(i))return or.debug(`mirror folder baseline cannot be listed: ${e}`),!1;throw i}let n=await vn(this.workspaceState.mirror.root,jd.posix.join(e,te));if(!n.exists||n.damaged)return!1;let o=Object.keys(n.dotMeta).sort();return t.length===o.length&&t.every((i,a)=>i===o[a])}async enrichFileContentState(e){!this.options.forceRefresh||!e.serverInfo||(e.contentMatchesMirror=await this.getContentMatchesMirrorPath(e,e.remotePath))}async getContentMatchesMirrorPath(e,t){if(!e.serverInfo)return;let n=this.getValidServerHash(e.serverInfo),o=this.getValidServerSize(e.serverInfo);if(!(n===void 0||o===void 0)){try{this.diagnostics.mirrorContentStatChecks++;let i=await Wg.promises.stat(this.workspaceState.mirror.toLocalPath(t));if(!i.isFile()||i.size!==o)return!1}catch(i){if(_(i))return or.debug(`mirror file content cannot be verified during remote detection: ${t}`),!1;throw i}return this.diagnostics.mirrorContentHashChecks++,await Md(this.workspaceState.mirror.toLocalPath(t))===n}}getValidServerHash(e){if(e.hash===void 0||e.hash===null)return;if(typeof e.hash!="string")throw new Error(`invalid file content hash: ${e.path}`);let t=e.hash.trim().toLowerCase();if(!O$.test(t))throw new Error(`invalid file content hash: ${e.path}`);return t}getValidServerSize(e){if(!(e.size===void 0||e.size===null)){if(!Number.isSafeInteger(e.size)||e.size<0)throw new Error(`invalid file content size: ${e.path}`);return e.size}}async collectMirrorSnapshot(e){if(this.options.targets){let i=await this.filterCloneInProgressPaths(Ht(this.options.targets));await Promise.all(i.map(a=>this.collectMirrorRootAndSubtree(a,e)));return}let t=e.projectCompare,n=t?[...t.scannableProjectPaths]:[],o=t?t.renamedProjects.map(i=>i.oldProject.remotePath):[];await Promise.all([...n.map(i=>this.collectMirrorRootAndSubtree(i,e)),...o.map(i=>this.collectMirrorRootEntry(i,e))])}async collectMirrorRenameCandidates(e){if(!this.options.targets)return;let t=new Set;for(let i of e.mirror.values())i.meta.id&&t.add(i.meta.id);let n=new Set,o=new Set;for(let i of e.server.values()){let a=i.meta.id;if(!a||t.has(a))continue;n.add(a);let s=jd.posix.dirname(i.remotePath);s!=="/"&&o.add(s)}n.size!==0&&await Promise.all([...o].map(i=>this.collectMirrorDirectMetaCandidates(i,n,e)))}async collectMirrorDirectMetaCandidates(e,t,n){this.options.task.throwIfAborted(),this.diagnostics.mirrorFoldersScanned++;let o=await this.workspaceState.mirror.listDirectMetaChildren(e);await Promise.all(o.map(async i=>{let a=i.meta.id;if(!a||!t.has(a)||n.mirror.has(i.path))return;let[s,c]=await Promise.all([this.workspaceState.mirror.exists(i.path),this.workspaceState.mirror.isFolder(i.path)]);n.mirror.set(i.path,{remotePath:i.path,isFolder:s?c:i.isFolder,meta:i.meta,exists:s}),this.diagnostics.mirrorEntriesCollected++}))}async listMirrorProjectPaths(){let[e,t]=await Promise.all([this.workspaceState.mirror.listDirectChildren("/"),this.workspaceState.mirror.listDirectMetaChildren("/")]);return new Set([...e,...t].map(n=>n.path))}async filterCloneInProgressPaths(e){return(await Promise.all(e.map(async n=>await this.shouldSkipCloneInProgressProject(n)?void 0:n))).filter(n=>n!==void 0)}async shouldSkipCloneInProgressProject(e){if(this.options.visitor)return!1;let t=dt(e);if(!t)return!1;let n=await this.workspaceState.mirror.isCloneInProgress(t);return n&&or.debug(`skip clone in-progress mirror project: ${t}`),n}async collectMirrorRootAndSubtree(e,t){if(e==="/"){await this.collectMirrorSubtree(e,t);return}(await this.collectMirrorRootEntry(e,t))?.isFolder&&await this.collectMirrorSubtree(e,t)}async collectMirrorRootEntry(e,t){let[n,o,i]=await Promise.all([this.workspaceState.mirror.readMeta(e),this.workspaceState.mirror.exists(e),this.workspaceState.mirror.isFolder(e)]);if(n||o){let a={remotePath:e,isFolder:o?i:!!n?.type&&n.type!=="file",meta:n??{},exists:o};return t.mirror.set(e,a),this.diagnostics.mirrorEntriesCollected++,a}}async collectMirrorSubtree(e,t){this.options.task.throwIfAborted(),this.diagnostics.mirrorFoldersScanned++;let[n,o]=await Promise.all([this.workspaceState.mirror.listDirectChildren(e),this.workspaceState.mirror.listDirectMetaChildren(e)]),i=new Map(o.map(a=>[a.path,a]));await Promise.all(n.map(async a=>{let c=i.get(a.path)?.meta;(c||!a.isFolder)&&(t.mirror.set(a.path,{remotePath:a.path,isFolder:a.isFolder,meta:c??{},exists:!0}),this.diagnostics.mirrorEntriesCollected++),a.isFolder&&await this.collectMirrorSubtree(a.path,t)}));for(let a of o)t.mirror.has(a.path)||(t.mirror.set(a.path,{remotePath:a.path,isFolder:a.isFolder,meta:a.meta,exists:!1}),this.diagnostics.mirrorEntriesCollected++)}async matchSnapshot(e){let t=new Set,n=new Set,o=[],i=[];return await this.matchByPath(e,t,n,o,i),await this.matchById(e,t,n,o,i),this.addUnmatchedChanges(e,t,n,o),{changes:o,renamedFolders:i}}async matchByPath(e,t,n,o,i){let a=this.groupMirrorEntriesById(e.mirror);for(let s of e.server.values()){let c=e.mirror.get(s.remotePath);if(!c)continue;t.add(s.remotePath),n.add(c.remotePath);let l=this.findUnmatchedMirrorEntryById(a,s.meta.id,n);if(!s.meta.id||s.meta.id!==c.meta.id){if(l){if(!c.meta.id){await this.addRemoteRenameChange(e,s,l,n,o,i);continue}n.add(l.remotePath),this.addChange(o,this.createConflictChange(s,l.remotePath),e);continue}if(s.meta.id&&!c.meta.id){this.addChange(o,this.createMirrorRecoveryChange(s,c),e);continue}this.addChange(o,this.createConflictChange(s),e);continue}if(l){await this.addRemoteRenameChange(e,s,l,n,o,i);continue}this.addComparedChange(s,c,o,e)}}async matchById(e,t,n,o,i){let a=this.indexUniqueById(e.server,t),s=this.indexUniqueById(e.mirror,n);for(let c of e.server.values()){if(t.has(c.remotePath)||!c.meta.id)continue;let l=s.get(c.meta.id);if(!(!l||n.has(l.remotePath))&&a.get(c.meta.id)===c){if(t.add(c.remotePath),c.isFolder!==l.isFolder){n.add(l.remotePath),this.addChange(o,this.createConflictChange(c,l.remotePath),e);continue}await this.addRemoteRenameChange(e,c,l,n,o,i)}}}async addRemoteRenameChange(e,t,n,o,i,a){o.add(n.remotePath);let s=await this.createRenamedChange(t,n);this.addChange(i,s,e),t.isFolder&&a.push(s)}addUnmatchedChanges(e,t,n,o){this.addUnavailableTrackedProjectChanges(e,o);for(let i of e.server.values())t.has(i.remotePath)||i.shouldReport===!1||!this.isUnmatchedChangeInTargetSubtree(i.remotePath)||this.addChange(o,this.createRemoteChange(i,"remoteAdded"),e);for(let i of e.mirror.values())n.has(i.remotePath)||this.isUnmatchedChangeInTargetSubtree(i.remotePath)&&(!this.isUnderExplicitMissingTarget(e,i.remotePath)&&this.isUnderSkippedServerFolder(e,i.remotePath)||this.addChange(o,this.createRemoteChange(i,"remoteDeleted"),e))}addUnavailableTrackedProjectChanges(e,t){for(let n of e.projectCompare?.unavailableProjects??[])this.addChange(t,this.createProjectUnavailableChange(n),e)}async expandRenamedFolderChildren(e,t){let n=!1;return await Promise.all(t.map(async o=>{!o.isFolder||this.expandedServerFolders.has(o.remotePath)||this.isProjectRootRenameChange(o)||(this.expandedServerFolders.add(o.remotePath),e.skippedServerFolders.delete(o.remotePath),await this.collectServerEntry(o.remotePath,e,!0),n=!0)})),n}isProjectRootRenameChange(e){return!!e.oldRemotePath&&dt(e.remotePath)===e.remotePath&&dt(e.oldRemotePath)===e.oldRemotePath}addComparedChange(e,t,n,o){if(e.isFolder!==t.isFolder){this.addChange(n,this.createConflictChange(e),o);return}let i=this.isRemoteMetaChanged(t.meta,e.meta)||this.isRemoteContentBaselineChanged(t,e,e.contentMatchesMirror),a=!e.isFolder&&(t.exists===!1||this.isRemoteFileContentChanged(t,e,e.contentMatchesMirror,i));(a||i)&&this.addChange(n,this.createRemoteChange(e,"remoteModified",{contentChanged:a,metaChanged:i}),o)}indexUniqueById(e,t){let n=new Map,o=new Set;for(let i of e.values()){let a=i.meta.id;if(!(!a||t.has(i.remotePath))){if(n.has(a)){o.add(a);continue}n.set(a,i)}}for(let i of o)n.delete(i);return n}groupMirrorEntriesById(e){let t=new Map;for(let n of e.values()){let o=n.meta.id;if(!o)continue;let i=t.get(o);i?i.push(n):t.set(o,[n])}return t}findUnmatchedMirrorEntryById(e,t,n){if(!t)return;let o=e.get(t);if(!o)return;let i;for(let a of o)if(!n.has(a.remotePath)){if(i)return;i=a}return i}isUnderSkippedServerFolder(e,t){for(let n of e.skippedServerFolders)if(t!==n&&le(t,n))return!0;return!1}isUnmatchedChangeInTargetSubtree(e){let t=this.options.targets;if(!t||t.size===0)return!0;for(let n of t)if(le(e,n))return!0;return!1}isUnderExplicitMissingTarget(e,t){for(let n of e.explicitMissingTargets)if(le(t,n))return!0;return!1}isTargetChange(e){let t=this.options.targets;return!t||t.size===0?!0:[...t].some(n=>le(e.remotePath,n)||le(n,e.remotePath)||!!e.oldRemotePath&&(le(e.oldRemotePath,n)||le(n,e.oldRemotePath)))}async getRemoteFileInfo(e){this.diagnostics.serverFileInfoRequests++;try{let t=await this.serverRequestRunner.addTask(()=>this.workspaceState.client.getFile(e));return this.diagnostics.serverFileInfoHits++,t}catch(t){if(this.workspaceState.client.isNotFoundError(t)){or.debug(`remote file disappeared during remote change detection: ${e}`),this.diagnostics.serverFileInfoMisses++;return}throw t}}async listRemoteFiles(e){return this.diagnostics.serverFoldersListed++,this.serverRequestRunner.addTask(()=>this.workspaceState.client.listFiles(e))}createServerEntry(e){return{remotePath:e.path,isFolder:!!e.isFolder,meta:fr(e),contentMeta:fr(e,{writeContentInfo:!0}),serverInfo:e}}isRemoteMetaChanged(e,t){return!qi(e,t)}isRemoteContentBaselineChanged(e,t,n){return!t.contentMeta||t.isFolder||n===!1||t.contentMeta.hash===void 0||t.contentMeta.size===void 0?!1:n===!0&&((e.meta.revision??0)!==(t.meta.revision??0)||(e.meta.modifyTime??0)!==(t.meta.modifyTime??0))?!0:this.hasCompleteContentBaseline(e.meta)?e.meta.hash!==t.contentMeta.hash||e.meta.size!==t.contentMeta.size?n===!0:(e.meta.revision??0)!==(t.meta.revision??0)||(e.meta.modifyTime??0)!==(t.meta.modifyTime??0):!0}isRemoteFileContentChanged(e,t,n,o){return n===!1?!0:n===!0?!1:t.contentMeta&&this.hasCompleteContentBaseline(e.meta)&&t.contentMeta.hash!==void 0&&t.contentMeta.size!==void 0?e.meta.hash!==t.contentMeta.hash||e.meta.size!==t.contentMeta.size:t.contentMeta?.hash!==void 0&&t.contentMeta.size!==void 0?(e.meta.revision??0)!==(t.meta.revision??0)||(e.meta.modifyTime??0)!==(t.meta.modifyTime??0):(e.meta.revision??0)!==(t.meta.revision??0)?!0:!o&&(e.meta.modifyTime??0)!==(t.meta.modifyTime??0)}hasCompleteContentBaseline(e){return e.hash!==void 0&&e.size!==void 0}resetChangeDetailLogState(){this.loggedChangeDetailCount=0,this.changeDetailLimitLogged=!1,this.loggedChangeDetailKeys.clear(),this.visitorChangeKeys.clear(),this.visitorTasks.length=0}addChange(e,t,n){e.push(t),this.logChangeDetail(t,n)}dispatchChange(e,t){if(!this.options.visitor?.onChange||!this.isTargetChange(e))return;let n=this.getChangeDetailLogKey(e);if(this.visitorChangeKeys.has(n))return;this.visitorChangeKeys.add(n),this.incrementRecordCounter(this.diagnostics.visitorEvents,"change");let o={change:e,serverEntry:t.server.get(e.remotePath),mirrorEntry:t.mirror.get(e.oldRemotePath??e.remotePath)};this.addVisitorTask(()=>this.options.visitor?.onChange?.(o))}async dispatchFolderScanned(e,t,n){if(!this.options.visitor?.onFolderScanned)return;this.incrementRecordCounter(this.diagnostics.visitorEvents,"folderScanned");let o=await this.workspaceState.mirror.listDirectMetaChildren(e),i={remotePath:e,folderInfo:t,children:n,mirrorChildMetas:new Map(o.map(a=>[jd.posix.basename(a.path),a.meta])),serverChildPaths:new Set(n.map(a=>a.path))};this.addVisitorTask(()=>this.options.visitor?.onFolderScanned?.(i))}dispatchFolderSkipped(e,t){if(!this.options.visitor?.onFolderSkipped)return;this.incrementRecordCounter(this.diagnostics.visitorEvents,"folderSkipped");let n={remotePath:e,folderInfo:t,reason:"waterlineUnchanged"};this.addVisitorTask(()=>this.options.visitor?.onFolderSkipped?.(n))}addVisitorTask(e){this.visitorTasks.push(()=>Promise.resolve(e()))}async waitVisitorTasks(){for(let e of this.visitorTasks)await e()}logChangeDetail(e,t){if(!or.isDebugEnabled()||!this.isTargetChange(e))return;let n=this.getChangeDetailLogKey(e);if(!this.loggedChangeDetailKeys.has(n)){if(this.loggedChangeDetailKeys.add(n),this.loggedChangeDetailCount>=lE){this.changeDetailLimitLogged||(or.debug(`change detail ... displayed=${lE} further changes omitted`),this.changeDetailLimitLogged=!0);return}this.loggedChangeDetailCount++,or.debug(`change detail ${this.loggedChangeDetailCount} ${this.describeChange(e,t)}`)}}getChangeDetailLogKey(e){return`${e.type}|${e.remotePath}|${e.oldRemotePath??""}`}describeChange(e,t){let n=t.server.get(e.remotePath),o=t.mirror.get(e.oldRemotePath??e.remotePath);return[`type=${e.type}`,`remotePath=${e.remotePath}`,`oldRemotePath=${e.oldRemotePath??"<none>"}`,`fileId=${e.fileId??"<none>"}`,`isFolder=${e.isFolder}`,`contentChanged=${e.contentChanged}`,`metaChanged=${e.metaChanged}`,`serverRevision=${this.formatLogValue(n?.meta.revision)}`,`mirrorRevision=${this.formatLogValue(o?.meta.revision)}`,`serverModifyTime=${this.formatLogValue(n?.meta.modifyTime)}`,`mirrorModifyTime=${this.formatLogValue(o?.meta.modifyTime)}`,`serverModifier=${this.formatLogValue(n?.meta.modifier)}`,`mirrorModifier=${this.formatLogValue(o?.meta.modifier)}`].join(" ")}formatLogValue(e){return e===void 0?"<none>":String(e)}describeDiagnosticsForLog(){return this.diagnostics.api=this.workspaceState.client.getDiagnostics()??Ng(),this.diagnostics.describeForLog()}recordChangeKind(e){switch(e.type){case"remoteModified":e.contentChanged?this.diagnostics.changesByKind.contentModified++:e.metaChanged&&this.diagnostics.changesByKind.metaOnlyModified++;break;case"remoteDeleted":this.diagnostics.changesByKind.remoteDeleted++;break;case"remoteProjectUnavailable":this.diagnostics.changesByKind.remoteProjectUnavailable++;break;case"remoteAdded":this.diagnostics.changesByKind.remoteAdded++;break;case"remoteRenamed":this.diagnostics.changesByKind.remoteRenamed++;break;case"conflict":this.diagnostics.changesByKind.conflict++;break;default:break}}incrementRecordCounter(e,t){e[t]=(e[t]??0)+1}resetDiagnostics(){this.diagnostics=uE()}createRemoteChange(e,t,n){return{path:Ee(e.remotePath),remotePath:e.remotePath,...e.meta.id!==void 0?{fileId:e.meta.id}:{},type:t,isFolder:e.isFolder,contentChanged:n?.contentChanged??(t!=="remoteDeleted"&&!e.isFolder),metaChanged:n?.metaChanged??t!=="remoteDeleted",...t==="remoteDeleted"?{}:{modifier:e.meta.modifier,modifyTime:e.meta.modifyTime}}}createProjectUnavailableChange(e){return{path:Ee(e.remotePath),remotePath:e.remotePath,...e.id!==void 0?{fileId:e.id}:{},type:"remoteProjectUnavailable",isFolder:!0,contentChanged:!1,metaChanged:!1}}async createRenamedChange(e,t){let n=e.remotePath===t.remotePath?e.contentMatchesMirror:this.options.forceRefresh?await this.getContentMatchesMirrorPath(e,t.remotePath):void 0,o=this.isRemoteMetaChanged(t.meta,e.meta)||this.isRemoteContentBaselineChanged(t,e,n),i=!e.isFolder&&this.isRemoteFileContentChanged(t,e,n,o);return{path:Ee(e.remotePath),remotePath:e.remotePath,...e.meta.id!==void 0?{fileId:e.meta.id}:{},oldPath:Ee(t.remotePath),oldRemotePath:t.remotePath,type:"remoteRenamed",isFolder:e.isFolder,contentChanged:i,metaChanged:o,modifier:e.meta.modifier,modifyTime:e.meta.modifyTime}}createMirrorRecoveryChange(e,t){return this.createRemoteChange(e,"remoteModified",{contentChanged:this.isMirrorRecoveryContentChanged(e,t),metaChanged:!0})}isMirrorRecoveryContentChanged(e,t){return e.isFolder?!1:t?t.exists===!1?!0:this.isRemoteFileContentChanged(t,e,e.contentMatchesMirror,!0):e.contentMatchesMirror!==!0}createConflictChange(e,t){return{path:Ee(e.remotePath),remotePath:e.remotePath,...e.meta.id!==void 0?{fileId:e.meta.id}:{},oldPath:t?Ee(t):void 0,oldRemotePath:t,type:"conflict",isFolder:e.isFolder,contentChanged:!e.isFolder,metaChanged:!0,modifier:e.meta.modifier,modifyTime:e.meta.modifyTime}}};function uE(){return new Ug}function L$(){return{contentModified:0,metaOnlyModified:0,remoteDeleted:0,remoteProjectUnavailable:0,remoteAdded:0,remoteRenamed:0,conflict:0}}function N$(){return{trackedProjects:0,serverProjects:0,probedProjects:0,missingTrackedProjects:0,skippedUntrackedProjects:0,mirrorProjectsScanned:0,skippedUntrackedMirrorProjects:0}}function Ng(){return{total:0,byApi:{},byPath:{},droppedPathKeys:0,recentCallsDropped:0}}wn();Wr();var W$=4,Ae=M("sync.fetch"),jg=class extends ss{projectTargets=0;resourceTargets=0;countedResources=0;remoteResourceCountRequests=0;mirrorResourceCountRequests=0;contentDownloadsScheduled=0;mirrorFilesMoved=0;mirrorResourcesRemoved=0;mirrorPhysicalChildrenRemoved=0;mirrorMetaWrites=0;downloaded=0;deleted=0;skippedFolders=0;updatedMetas=0;detector;setDetector(e){this.detector=e}createSnapshot(){return{runs:this.runs,durationMs:this.durationMs,projectTargets:this.projectTargets,resourceTargets:this.resourceTargets,countedResources:this.countedResources,remoteResourceCountRequests:this.remoteResourceCountRequests,mirrorResourceCountRequests:this.mirrorResourceCountRequests,contentDownloadsScheduled:this.contentDownloadsScheduled,mirrorFilesMoved:this.mirrorFilesMoved,mirrorResourcesRemoved:this.mirrorResourcesRemoved,mirrorPhysicalChildrenRemoved:this.mirrorPhysicalChildrenRemoved,mirrorMetaWrites:this.mirrorMetaWrites,downloaded:this.downloaded,deleted:this.deleted,skippedFolders:this.skippedFolders,updatedMetas:this.updatedMetas,...this.detector?{detector:this.detector}:{},api:this.api}}},Zo=class extends at{mirror;fileFetcher;fetchResult;diagnostics=dE();downloadTask;downloadTotal=0;constructor(e,t){super(e,t),this.mirror=this.createMirrorStore(),this.fileFetcher=new $d({maxConcurrency:W$,signal:this.task.getAbortSignal(),getContentStream:async n=>{Gt(this.task.getAbortSignal());let o=await this.getApiClient();return Gt(this.task.getAbortSignal()),o.getFileContentStream(n)}}),this.fetchResult={mirrorRoot:this.mirrorRoot,downloaded:[],deleted:[],skippedFolders:[],updatedMetas:[]}}execute(){return this.fetchTrackedMirror()}getDiagnostics(e={}){this.syncResultDiagnostics();let t=this.diagnostics.createSnapshot();return e.reset&&this.resetDiagnostics(),t}async fetchTrackedMirror(){let e=this.diagnostics.startRun(),t=!1;Ae.info("fetch start: {0}",this.createFetchScopeLog()),this.task.start(100);let n=this.task.subTaskMonitor(5),o=this.task.subTaskMonitor(5),i=this.task.subTaskMonitor(90),a=[];if(this.hasKnownChanges(this.options.changes)){n.start(1),Ae.info("fetch prepare start"),this.task.throwIfAborted(),await uo.promises.mkdir(this.mirrorRoot,{recursive:!0}),n.step(1),Ae.info("fetch prepare done: knownChanges={0}",this.options.changes.length),this.downloadTask=i;try{return await this.fetchKnownChanges(o),this.finishRunDiagnostics(e),t=!0,this.logFetchDone(),this.fetchResult}finally{t||this.finishRunDiagnostics(e),this.downloadTask=void 0,this.downloadTotal=0}}n.start(1);let s=this.resolveFetchProjectPaths(),c=await this.getApiClient(),l=c.getProjects();Ae.info("fetch prepare start"),this.task.throwIfAborted(),await uo.promises.mkdir(this.mirrorRoot,{recursive:!0});let u=this.createWorkspaceStore(this.mirror).listProjectPaths(),[p,g,m]=await Promise.all([l,this.readMirrorChildMetas("/"),u]),f=new Set(m),y=new Set([...p.map(C=>"/"+C.name),...f]);await this.removeMissingMirrorChildren("/",y,g),s&&(a=await this.markNewFetchProjects(s)),n.step(1),Ae.info("fetch prepare done: serverProjects={0}",p.length),this.downloadTask=i;try{if(s){this.diagnostics.projectTargets=s.length,Ae.info("fetch count resources start: {0}",this.createFetchScopeLog());let k=await this.countFetchResources(o,()=>this.countRemoteFiles(s));return Ae.info("fetch count resources done: resources={0}",k),this.startFetchProgress(k),s.length===0&&this.completeDownloadProgress(),Ae.info("fetch mirror update start: targets={0}",s.length),await this.fetchWithRemoteChangeDetector({targets:new Set(s),forceRefresh:this.options.forceRefresh===!0}),this.completeDownloadProgress(),await this.clearNewFetchProjectMarkers(a),Ae.info("fetch mirror update done: targets={0}",s.length),this.captureApiDiagnostics(c),this.finishRunDiagnostics(e),t=!0,this.logFetchDone(),this.fetchResult}let C=await this.resolveTargetRemotePaths(this.options.paths);if(C){let k=Ht(C);this.diagnostics.resourceTargets=k.length,Ae.info("fetch count resources start: {0}",this.createFetchScopeLog());let v=await this.countFetchResources(o,()=>(this.diagnostics.mirrorResourceCountRequests++,this.mirror.countMetaResources(k)));return Ae.info("fetch count resources done: resources={0}",v),this.startFetchProgress(v),k.length===0&&this.completeDownloadProgress(),Ae.info("fetch mirror update start: targets={0}",k.length),await this.fetchWithRemoteChangeDetector({targets:new Set(k),forceRefresh:!1}),this.completeDownloadProgress(),Ae.info("fetch mirror update done: targets={0}",k.length),this.captureApiDiagnostics(c),this.finishRunDiagnostics(e),t=!0,this.logFetchDone(),this.fetchResult}let S=p.filter(k=>f.has("/"+k.name)),w=S.map(k=>"/"+k.name);a=await this.markNewFetchProjects(w),this.diagnostics.projectTargets=w.length,Ae.info("fetch count resources start: {0}",this.createFetchScopeLog());let h=await this.countFetchResources(o,()=>this.countRemoteFiles(w));return Ae.info("fetch count resources done: resources={0}",h),this.startFetchProgress(h),S.length===0&&this.completeDownloadProgress(),Ae.info("fetch mirror update start: targets={0}",S.length),await this.fetchWithRemoteChangeDetector({forceRefresh:!1}),this.completeDownloadProgress(),await this.clearNewFetchProjectMarkers(a),Ae.info("fetch mirror update done: targets={0}",S.length),this.captureApiDiagnostics(c),this.finishRunDiagnostics(e),t=!0,this.logFetchDone(),this.fetchResult}finally{t||(await this.cleanupNewFetchProjectsAfterFailure(a),this.finishRunDiagnostics(e)),this.downloadTask=void 0,this.downloadTotal=0}}async markNewFetchProjects(e){let t=[];try{for(let n of e){let[o,i]=await Promise.all([this.mirror.isCloneInProgress(n),this.mirror.exists(n)]);!o&&i||(o&&(await this.mirror.removePath(n),await this.mirror.removeMeta(n)),t.push(n),await this.mirror.markCloneInProgress(n))}return t}catch(n){throw await this.cleanupNewFetchProjectsAfterFailure(t),n}}async clearNewFetchProjectMarkers(e){await Promise.all(e.map(t=>this.mirror.clearCloneInProgress(t)))}async cleanupNewFetchProjectsAfterFailure(e){if(e.length!==0)try{await Promise.all(e.map(async t=>{await this.mirror.removePath(t),await this.mirror.removeMeta(t)}))}catch(t){Ae.warn(`fetch failed, cleanup new mirror projects failed: ${e.join(", ")}`,t)}}createFetchScopeLog(){return this.hasKnownChanges(this.options.changes)?`changes=${this.options.changes.length}`:this.options.projectNames?`projects=${this.options.projectNames.join(", ")}`:this.options.paths?`paths=${this.options.paths.join(", ")}`:"<tracked>"}logFetchDone(){this.syncResultDiagnostics(),Ae.info("fetch done: downloaded={0} deleted={1} updatedMetas={2} skippedFolders={3}",this.fetchResult.downloaded.length,this.fetchResult.deleted.length,this.fetchResult.updatedMetas.length,this.fetchResult.skippedFolders.length),Ae.debug(`fetch diagnostics ${this.diagnostics.describeForLog()}`)}resolveFetchProjectPaths(){if(!this.options.projectNames){K(!this.options.forceRefresh,"FetchOptions.forceRefresh can only be used with FetchOptions.projectNames");return}return K(!this.options.paths,"FetchOptions.projectNames and FetchOptions.paths cannot be used together"),Ht(new Set(this.options.projectNames.map(e=>Bt(e))))}startFetchProgress(e){this.downloadTotal=Math.max(e,1),this.progressTask.start(this.downloadTotal)}async countFetchResources(e,t){e.start(1);let n=await t();return this.diagnostics.countedResources+=n,e.step(1),n}completeDownloadProgress(){this.progressTask.progress(this.downloadTotal||1)}stepFetchProgress(){this.progressTask.step(1)}get progressTask(){return this.downloadTask??this.task}async countRemoteFiles(e){let t=await this.getApiClient();return this.diagnostics.remoteResourceCountRequests+=e.length,(await Promise.all(e.map(o=>t.countFiles(o)))).reduce((o,i)=>o+i,0)}async fetchWithRemoteChangeDetector(e){let t=[],n=[],o=new Map,i=e.targets&&e.targets.size>0?as([...e.targets]):void 0,a=new qn({workspace:this.context,targets:e.targets,task:this.progressTask,forceRefresh:e.forceRefresh,visitor:{onFolderScanned:c=>this.prepareScannedFolder(c,n),onFolderSkipped:c=>this.applySkippedFolder(c),onChange:c=>{if(this.isActionableFetchChange(c.change,i))return this.applyRemoteChange(c,t,o)}}});await a.detect(),this.diagnostics.setDetector(a.getDiagnostics());let s=(await Promise.all(t)).filter(c=>c instanceof Error);if(s.length>0)throw s[0];await this.writeScannedFolderMetas(n,o)}async fetchKnownChanges(e){let t=this.getKnownFetchChanges();this.diagnostics.resourceTargets=Ht(new Set(this.getKnownChangeTargetRemotePaths(t))).length,Ae.info("fetch count resources start: {0}",this.createFetchScopeLog());let n=await this.countFetchResources(e,async()=>t.length);if(Ae.info("fetch count resources done: resources={0}",n),this.startFetchProgress(n),t.length===0){this.completeDownloadProgress();return}Ae.info("fetch mirror update start: changes={0}",t.length);let o=await this.getApiClient(),i=[],a=new Map;for(let c of t)await this.applyKnownRemoteChange(c,o,i,a);let s=(await Promise.all(i)).filter(c=>c instanceof Error);if(s.length>0)throw s[0];this.completeDownloadProgress(),this.captureApiDiagnostics(o),Ae.info("fetch mirror update done: changes={0}",t.length)}getKnownFetchChanges(){return ol(this.options.changes??[]).filter(e=>!Ag(e))}async applyKnownRemoteChange(e,t,n,o){if(e.type==="remoteDeleted"){await this.removeMirrorResource(e.oldRemotePath??e.remotePath),this.stepFetchProgress();return}let i=await this.getKnownRemoteFileInfo(t,e.remotePath);if(!i){await this.removeMirrorResource(e.remotePath),this.stepFetchProgress();return}if(e.type==="remoteRenamed"){await this.applyRemoteRenamedChange(e,i,n,o);return}if(e.type==="conflict"){await this.applyRemoteConflictChange(e,i,n,o);return}await this.applyRemotePresentChange(e,i,n,o)}async getKnownRemoteFileInfo(e,t){try{return await e.getFile(t)}catch(n){if(e.isNotFoundError(n)){Ae.debug(`known remote change target disappeared before fetch: ${t}`);return}throw n}}isActionableFetchChange(e,t){return Ag(e)?!1:!t||t(e)}async prepareScannedFolder(e,t){this.task.throwIfAborted(),await uo.promises.mkdir(this.mirror.toLocalPath(e.remotePath),{recursive:!0}),t.push(e)}async writeScannedFolderMetas(e,t){for(let n of e)await this.writeMirrorChildMetas(n.remotePath,n.mirrorChildMetas,n.children.map(o=>t.get(o.path)??o),n.serverChildPaths)&&this.addUpdatedMeta(n.remotePath),await this.removeMissingMirrorPhysicalChildren(n.remotePath,n.serverChildPaths)}async applySkippedFolder(e){this.addSkippedFolder(e.remotePath),await this.completeSkippedFolderProgress(e.remotePath)}async applyRemoteChange(e,t,n){let o=e.change;if(o.type==="remoteDeleted"){await this.removeMirrorResource(o.oldRemotePath??o.remotePath),this.stepFetchProgress();return}if(o.type==="remoteRenamed"){await this.applyRemoteRenamedChange(o,e.serverEntry?.serverInfo,t,n);return}if(o.type==="conflict"){let i=e.serverEntry?.serverInfo;K(i,`remote conflict missing server entry: ${o.remotePath}`),await this.applyRemoteConflictChange(o,i,t,n);return}if(e.serverEntry?.serverInfo){await this.applyRemotePresentChange(o,e.serverEntry.serverInfo,t,n);return}this.stepFetchProgress()}async applyRemoteConflictChange(e,t,n,o){if(e.oldRemotePath&&!t.isFolder&&e.contentChanged===!1){if(await this.moveMirrorFile(e.oldRemotePath,e.remotePath)){await this.removeMirrorMetaIfReadable(e.oldRemotePath),this.addDeleted(e.oldRemotePath),await this.writeMirrorMetaIfChanged(t,await this.mirror.readMeta(t.path)),this.stepFetchProgress();return}await this.removeMirrorResource(e.oldRemotePath),await this.removeMirrorResource(e.remotePath),await this.applyRemotePresentChange(e,t,n,o,!0);return}if(e.oldRemotePath&&await this.removeMirrorResource(e.oldRemotePath),t.isFolder||e.contentChanged!==!1){await this.removeMirrorResource(e.remotePath),await this.applyRemotePresentChange(e,t,n,o);return}await this.applyRemotePresentChange(e,t,n,o,!t.isFolder&&!await this.mirror.exists(e.remotePath))}async applyRemoteRenamedChange(e,t,n,o){if(!e.oldRemotePath){if(t){await this.applyRemotePresentChange(e,t,n,o);return}this.stepFetchProgress();return}if(t&&!t.isFolder&&e.contentChanged===!1&&await this.moveMirrorFile(e.oldRemotePath,e.remotePath)){await this.removeMirrorMetaIfReadable(e.oldRemotePath),this.addDeleted(e.oldRemotePath),await this.writeMirrorMetaIfChanged(t,await this.mirror.readMeta(t.path)),this.stepFetchProgress();return}if(await this.removeMirrorResource(e.oldRemotePath),t){await this.applyRemotePresentChange(e,t,n,o);return}this.stepFetchProgress()}async applyRemotePresentChange(e,t,n,o,i=!1){if(t.isFolder){await this.applyRemoteFolder(t),this.stepFetchProgress();return}if(!i&&e.contentChanged===!1){await this.writeMirrorMetaIfChanged(t,await this.mirror.readMeta(t.path)),this.stepFetchProgress();return}this.addPendingDownload(n,this.fetchMirrorFile(t).then(a=>(o.set(a.path,a),this.writeMirrorMetaIfChanged(a,void 0))).finally(()=>this.stepFetchProgress()))}async applyRemoteFolder(e){this.task.throwIfAborted(),await uo.promises.mkdir(this.mirror.toLocalPath(e.path),{recursive:!0}),await this.writeMirrorMetaIfChanged(e,await this.mirror.readMeta(e.path))}addPendingDownload(e,t){this.diagnostics.contentDownloadsScheduled++,e.push(t.then(()=>{},n=>n instanceof Error?n:new Error(String(n??"fetch download failed"))))}async completeSkippedFolderProgress(e){let t=Math.max(await this.mirror.countMetaResources([e])-1,0);t>0&&this.progressTask.step(t)}async fetchMirrorFile(e){let t=this.mirror.toLocalPath(e.path),n=await this.fileFetcher.fetchToLocal(e.path,t),o={...e,revision:n.revision??e.revision,modifyTime:n.modifyTime??e.modifyTime};return this.addDownloaded(e.path),o}async readMirrorChildMetas(e){let t=await Yc(this.mirror.root,po.posix.join(e,te),{strict:!1});return new Map(Object.entries(t))}async writeMirrorMetaIfChanged(e,t){this.isMirrorMetaSame(t,e)||(await this.mirror.writeMeta(e,this.task),this.diagnostics.mirrorMetaWrites++)}isMirrorMetaSame(e,t){return e!==void 0&&(0,$g.isDeepStrictEqual)(e,fr(t,{writeContentInfo:!0}))}async writeMirrorChildMetas(e,t,n,o){let i={};for(let[c,l]of t)(!o||o.has(po.posix.join(e,c)))&&(i[c]=l);for(let c of n)i[po.posix.basename(c.path)]=fr(c,{writeContentInfo:!0});let a=po.posix.join(e,te),s=await vn(this.mirror.root,a);return s.exists&&!s.damaged&&(0,$g.isDeepStrictEqual)(i,Object.fromEntries(t))?!1:(await Ed(this.mirror.root,a,i),!0)}async removeMissingMirrorChildren(e,t,n){let o={},i=[...n.keys()].map(a=>({name:a,path:po.posix.join(e,a)})).filter(a=>!t.has(a.path));await Promise.all(i.map(a=>this.mirror.removePath(a.path)));for(let a of i)o[a.name]=void 0,this.addDeleted(a.path);Object.keys(o).length>0&&await this.mirror.patchMeta(e,o,this.task),await this.removeMissingMirrorPhysicalChildren(e,t)}async removeMissingMirrorPhysicalChildren(e,t){let n=this.mirror.toLocalPath(e),o;try{o=await uo.promises.readdir(n,{withFileTypes:!0})}catch(a){if(_(a)){Ae.debug(`mirror folder physical children cannot be listed: ${e}`);return}throw a}let i=o.filter(a=>a.name!==te).map(a=>po.posix.join(e,a.name)).filter(a=>!t.has(a));await Promise.all(i.map(a=>this.mirror.removePath(a))),this.diagnostics.mirrorPhysicalChildrenRemoved+=i.length;for(let a of i)this.addDeleted(a)}async removeMirrorResource(e){await Promise.all([this.mirror.removePath(e),this.removeMirrorMetaIfReadable(e)]),this.diagnostics.mirrorResourcesRemoved++,this.addDeleted(e)}async removeMirrorMetaIfReadable(e){try{await this.mirror.removeMeta(e)}catch(t){if(t instanceof es){Ae.debug(`skip removing mirror meta from damaged .meta during fetch: ${e}`,t);return}throw t}}async moveMirrorFile(e,t){let n=this.mirror.toLocalPath(e),o=this.mirror.toLocalPath(t);try{return this.task.throwIfAborted(),await uo.promises.mkdir(po.dirname(o),{recursive:!0}),await uo.promises.rm(o,{force:!0,recursive:!0}),await uo.promises.rename(n,o),this.diagnostics.mirrorFilesMoved++,!0}catch(i){if(_(i))return Ae.debug(`mirror file cannot be moved during remote rename: ${e} -> ${t}`),!1;throw i}}addDownloaded(e){this.addUniqueResultPath(this.fetchResult.downloaded,e)}addDeleted(e){this.addUniqueResultPath(this.fetchResult.deleted,e)}addSkippedFolder(e){this.addUniqueResultPath(this.fetchResult.skippedFolders,e)}addUpdatedMeta(e){this.addUniqueResultPath(this.fetchResult.updatedMetas,e)}addUniqueResultPath(e,t){e.includes(t)||e.push(t)}captureApiDiagnostics(e){let t=e.getDiagnostics();t&&this.diagnostics.captureApiDiagnostics(t)}finishRunDiagnostics(e){this.diagnostics.finishRun(e)}syncResultDiagnostics(){this.diagnostics.downloaded=this.fetchResult.downloaded.length,this.diagnostics.deleted=this.fetchResult.deleted.length,this.diagnostics.skippedFolders=this.fetchResult.skippedFolders.length,this.diagnostics.updatedMetas=this.fetchResult.updatedMetas.length}resetDiagnostics(){this.diagnostics=dE()}};function dE(){return new jg}var Vg=E(require("fs"));it();V();Y();Ft();ts();var Bn=M("sync.checkout"),Vd=class extends at{mirror=this.createMirrorStore();workspace=this.createWorkspaceStore(this.mirror);async execute(){Bn.info("checkout start: {0}",this.options.projectNames.join(", ")||"<none>");let e=await this.createCheckoutItems();if(e.length===0)return this.task.start(1),this.task.finish(),Bn.info("checkout done: <none>"),{projectNames:[]};let t=e.reduce((o,i)=>o+i.total,0);this.task.start(Math.max(t,1));for(let o of e)this.task.throwIfAborted(),await this.checkoutProject(o.projectPath,this.task);let n=e.map(o=>o.projectPath);return Bn.info("checkout cleanup status start: {0}",n.join(", ")),this.clearSyncStatusTargets(n),Bn.info("checkout cleanup status done"),e.some(o=>!o.workspaceProjectExists)&&this.context.notifyLocalProjectsChanged?.(),this.task.finish(),Bn.info("checkout done: {0}",e.map(o=>o.projectName).join(", ")),{projectNames:e.map(o=>o.projectName)}}async createCheckoutItems(){let e=[],t=[...new Set(this.options.projectNames.map(n=>Bt(n)))];for(let n of t){await this.assertMirrorProjectDirectory(n);let o=await wg(this.workspace.toLocalPath(n));e.push({projectName:n.slice(1),projectPath:n,total:Math.max(await this.workspace.countCheckoutResources(n),1),workspaceProjectExists:o})}return e}async assertMirrorProjectDirectory(e){let t=this.mirror.toLocalPath(e);if(!(await Vg.promises.stat(t)).isDirectory())throw new Error(`checkout source must be a mirror project directory: ${e}`)}async checkoutProject(e,t){let n=Date.now(),o=this.workspace.toLocalPath(e),i=await Lb(o);if(Bn.debug(`checkout project start: projectPath=${e} projectBlank=${i}`),!i){await this.workspace.checkoutFromMirror(e,t),Bn.debug(`checkout project done: projectPath=${e} elapsed=${Date.now()-n}ms`);return}try{await this.workspace.prepareCheckoutDirectory(e,t),await _d(this.workspaceRoot,e),await this.workspace.checkoutMirrorDirectory(e,t),t.throwIfAborted(),await this.workspace.copyMirrorMetaInfo(e,!0),t.step(1)}catch(a){throw await this.rollbackNewProjectCheckout(e,o,a),a}finally{await Dd(this.workspaceRoot,e)}Bn.debug(`checkout project done: projectPath=${e} elapsed=${Date.now()-n}ms`)}async rollbackNewProjectCheckout(e,t,n){try{await Vg.promises.rm(t,{force:!0,recursive:!0}),Bn.info(`checkout failed, rolled back new workspace project: projectPath=${e}`)}catch(o){Bn.warn(`checkout failed, rollback new workspace project failed: projectPath=${e} cause=${String(n)}`,o)}}};wn();var qd=M("sync.clone"),Bd=class extends at{async execute(){qd.info("clone start: {0}",this.options.projectNames?.join(", ")??"<all>"),qd.info("clone prepare start"),this.task.throwIfAborted();let e=await this.resolveCloneProjects();this.task.start(100,{message:d("workspace.sync.progress.clone.running"),retainOnFinish:!0});let t=this.task.subTaskMonitor(5),n=this.task.subTaskMonitor(68),o=this.task.subTaskMonitor(17),i=this.task.subTaskMonitor(6),a=this.task.subTaskMonitor(4);t.start(1),await pE.promises.mkdir(this.mirrorRoot,{recursive:!0}),t.step(1);let s=e.map(u=>u.name),c=s.map(u=>Bt(u));qd.info("clone prepare done: projects={0}",s.join(", ")),await new Zo(this.context,{task:n,projectNames:s,forceRefresh:!0}).execute(),e.length===0&&(n.start(1),n.step(1)),await new Vd(this.context,{task:o,projectNames:s}).execute();let l=await Ld(this.context,i,c);return a.finish(),qd.info("clone done: {0}",s.join(", ")),this.task.setMessage(d("workspace.sync.progress.clone.done",s.length)),this.task.finish(),{projectNames:s,oldFiles:l}}async resolveCloneProjects(){if(this.options.projectNames&&this.options.projectNames.length===0)return[];let e=await this.getApiClient(),t=await e.getProjects(),n=this.options.projectNames??t.map(s=>s.name),o=[...new Set(n.map(s=>Bt(s)))],i=new Set(t.map(s=>Bt(s.name))),a=o.filter(s=>!i.has(s));if(a.length>0)throw new _t("err.sync.projectUnavailable",{actionName:"clone",paths:a.join(", "),projectNames:a.map(s=>s.slice(1)).join(", ")},{hint:"err.sync.projectUnavailable.hint"});return Promise.all(o.map(s=>e.getFile(s)))}};var mo=E(require("fs")),gr=E(require("path"));Ft();V();it();Y();ze();Wr();var ls=E(require("fs")),vE=E(require("os")),Hn=E(require("path")),kE=require("node:util");var sl=E(require("fs")),SE=E(require("os")),Hg=E(require("path"));V();it();Ig();var al=E(require("fs"));function fE(r,e){let t={};for(let i=0;i<e.length;i++){let a=e[i];t[a]?t[a].push(i):t[a]=[i]}let o=[{buffer1index:-1,buffer2index:-1,chain:null}];for(let i=0;i<r.length;i++){let a=r[i],s=t[a]||[],c=0,l=o[0];for(let u=0;u<s.length;u++){let p=s[u],g;for(g=c;g<o.length&&!(o[g].buffer2index<p&&(g===o.length-1||o[g+1].buffer2index>p));g++);if(g<o.length){let m={buffer1index:i,buffer2index:p,chain:o[g]};if(c===o.length?o.push(l):o[c]=l,c=g+1,l=m,c===o.length)break}}o[c]=l}return o[o.length-1]}function mE(r,e){let t=fE(r,e),n=[],o=r.length,i=e.length;for(let a=t;a!==null;a=a.chain){let s=o-a.buffer1index-1,c=i-a.buffer2index-1;o=a.buffer1index,i=a.buffer2index,(s||c)&&n.push({buffer1:[o+1,s],buffer1Content:r.slice(o+1,o+1+s),buffer2:[i+1,c],buffer2Content:e.slice(i+1,i+1+c)})}return n.reverse(),n}function hE(r,e){let t=fE(r,e),n=[],o=r.length,i=e.length;function a(s,c,l){let u=[];for(let p=0;p<l;p++)u.push(s[c+p]);return{offset:c,length:l,chunk:u}}for(let s=t;s!==null;s=s.chain){let c=o-s.buffer1index-1,l=i-s.buffer2index-1;o=s.buffer1index,i=s.buffer2index,(c||l)&&n.push({buffer1:a(r,s.buffer1index+1,c),buffer2:a(e,s.buffer2index+1,l)})}return n.reverse(),n}function U$(r,e,t){let n=[];function o(c,l){n.push({ab:l,oStart:c.buffer1[0],oLength:c.buffer1[1],abStart:c.buffer2[0],abLength:c.buffer2[1]})}mE(e,r).forEach(c=>o(c,"a")),mE(e,t).forEach(c=>o(c,"b")),n.sort((c,l)=>c.oStart-l.oStart);let i=[],a=0;function s(c){c>a&&(i.push({stable:!0,buffer:"o",bufferStart:a,bufferLength:c-a,bufferContent:e.slice(a,c)}),a=c)}for(;n.length;){let c=n.shift(),l=c.oStart,u=c.oStart+c.oLength,p=[c];for(s(l);n.length;){let g=n[0],m=g.oStart;if(m>u)break;u=Math.max(u,m+g.oLength),p.push(n.shift())}if(p.length===1){if(c.abLength>0){let g=c.ab==="a"?r:t;i.push({stable:!0,buffer:c.ab,bufferStart:c.abStart,bufferLength:c.abLength,bufferContent:g.slice(c.abStart,c.abStart+c.abLength)})}}else{let g={a:[r.length,-1,e.length,-1],b:[t.length,-1,e.length,-1]};for(;p.length;){c=p.shift();let w=c.oStart,h=w+c.oLength,k=c.abStart,v=k+c.abLength,b=g[c.ab];b[0]=Math.min(k,b[0]),b[1]=Math.max(v,b[1]),b[2]=Math.min(w,b[2]),b[3]=Math.max(h,b[3])}let m=g.a[0]+(l-g.a[2]),f=g.a[1]+(u-g.a[3]),y=g.b[0]+(l-g.b[2]),C=g.b[1]+(u-g.b[3]),S={stable:!1,aStart:m,aLength:f-m,aContent:r.slice(m,f),oStart:l,oLength:u-l,oContent:e.slice(l,u),bStart:y,bLength:C-y,bContent:t.slice(y,C)};i.push(S)}a=u}return s(e.length),i}function gE(r,e,t,n){n=Object.assign({excludeFalseConflicts:!0,stringSeparator:/\s+/},n);let i=typeof r=="string",a=typeof e=="string",s=typeof t=="string";i&&(r=r.split(n.stringSeparator)),a&&(e=e.split(n.stringSeparator)),s&&(t=t.split(n.stringSeparator));let c=[],l=U$(r,e,t),u=[];function p(){u.length&&c.push({ok:u}),u=[]}function g(m,f){if(m.length!==f.length)return!1;for(let y=0;y<m.length;y++)if(m[y]!==f[y])return!1;return!0}return l.forEach(m=>{m.stable?u.push(...m.bufferContent):n.excludeFalseConflicts&&g(m.aContent,m.bContent)?u.push(...m.aContent):(p(),c.push({conflict:{a:m.aContent,aIndex:m.aStart,o:m.oContent,oIndex:m.oStart,b:m.bContent,bIndex:m.bStart}}))}),p(),c}Y();$c();var CE=M("sync.three-way-merge"),$$=/\n|\r\n|\r/;function qg(r){return r.split($$)}function j$(r){return r.includes(`\r
|
|
61
72
|
`)?`\r
|
|
62
73
|
`:r.includes("\r")?"\r":`
|
|
63
|
-
`}function mA(r,e){if(VC(r))return!0;let t=e.trimStart();return t.startsWith("{")||t.startsWith("[")}function ym(r){try{return JSON.stringify(JSON.parse(r),null,2)}catch(e){return ak.debug("skip JSON normalization because content is not valid JSON",e),r}}function ik(r){return r===void 0||r===""||r===!1||typeof r=="object"&&r!==null&&Object.keys(r).length===0}var yl=class{serverControlledKeys;constructor(e=["id","revision","creator","createTime","modifier","modifyTime"]){this.serverControlledKeys=new Set(e)}async merge(e){let t=await this.mergeContent(e),n=this.mergeMetaInfo(e.workspaceMeta,e.baseMeta,e.remoteMeta);return{hasConflict:t.hasConflict,mergedMeta:n.merged,hasMetaConflict:n.hasConflict}}async mergeContent(e){let[t,n,o]=[];try{[t,n,o]=await Promise.all([is.promises.readFile(e.workspaceFile,"utf-8"),is.promises.readFile(e.baseFile,"utf-8"),is.promises.readFile(e.remoteFile,"utf-8")])}catch(g){return ak.debug(`treat merge content as conflicted because inputs cannot be read: ${e.workspaceFile}`,g),{hasConflict:!0}}mA(e.workspaceFile,t)&&(t=ym(t),n=ym(n),o=ym(o));let i=gm(t),a=gm(n),s=gm(o),c=ok(i,a,s),l=uA(t),p=c.some(g=>"conflict"in g),u=c.flatMap(g=>{if("ok"in g)return g.ok;let m=g.conflict;return["<<<<<<< Local",...m.a,"=======",...m.b,">>>>>>> Remote"]}).join(l);return await is.promises.writeFile(e.workspaceFile,u,"utf-8"),{hasConflict:p}}mergeMetaInfo(e,t,n){if(!e&&!t&&!n)return{hasConflict:!1};let o=t??{},i=n??{},a=e??{},s={...o},c=!1,l=new Set([...Object.keys(o),...Object.keys(i),...Object.keys(a)]);for(let p of l){if(this.serverControlledKeys.has(p)){p in a?s[p]=a[p]:p in i&&(s[p]=i[p]);continue}let u=p in o,g=p in i,m=p in a,h=u!==g||u&&g&&this.isMetaFieldDifferent(o[p],i[p]),y=u!==m||u&&m&&this.isMetaFieldDifferent(o[p],a[p]);if(!(!h&&!y)){if(h&&!y){g?s[p]=i[p]:delete s[p];continue}if(!h&&y){m?s[p]=a[p]:delete s[p];continue}if(!g&&!m){delete s[p];continue}if(!g&&m){c=!0,s[p]=a[p];continue}if(g&&!m){delete s[p];continue}c=!0,s[p]=a[p]}}return{merged:Object.keys(s).length>0?s:void 0,hasConflict:c}}isMetaFieldDifferent(e,t){if(e===t)return!1;let n=ik(e),o=ik(t);return n&&o?!1:e!==t}};var Cl=class{input;constructor(e){this.input=e}async execute(){let e;try{e=await this.normalizeMergeFiles();let t={workspaceFile:e.workspaceFile,baseFile:e.baseFile,remoteFile:e.remoteFile,workspaceMeta:this.input.workspaceMeta,baseMeta:this.input.baseMeta,remoteMeta:this.input.remoteMeta},n=await(this.input.threeWayMerge??new yl).merge(t);return e.workspaceFile!==this.input.workspaceFile&&await as.promises.copyFile(e.workspaceFile,this.input.workspaceFile),{merged:!n.hasConflict,hasConflict:n.hasConflict,conflictReason:n.hasConflict?"contentConflict":void 0,threeWayResult:n}}catch(t){if(t instanceof Uo)return{merged:!1,hasConflict:!0,conflictReason:t.conflictReason,metadataUpgradeReason:t.reason,errorInfo:t.errorInfo};throw t}finally{e?.tempDir&&await sr(e.tempDir)}}async normalizeMergeFiles(){if(!this.input.versionInfo?.upgradeSupported)return this.createOriginalMergeFiles();if(!this.input.client)return this.createOriginalMergeFiles();let t=await this.readMergeContentVersions();if(this.areMergeContentVersionsSame(t))return this.createOriginalMergeFiles();let n=await as.promises.mkdtemp(Cm.join(sk.tmpdir(),"succapp-single-file-merge-"));try{let o=new _i({client:this.input.client}),i=await Promise.all([this.readAndNormalizeContent(o,"workspace",this.input.workspaceFile),this.readAndNormalizeContent(o,"base",this.input.baseFile),this.readAndNormalizeContent(o,"remote",this.input.remoteFile)]),[a,s,c]=await Promise.all([this.writeTempContent(n,"workspace",i[0]),this.writeTempContent(n,"base",i[1]),this.writeTempContent(n,"remote",i[2])]);return{workspaceFile:a,baseFile:s,remoteFile:c,tempDir:n}}catch(o){throw await sr(n),o}}createOriginalMergeFiles(){return{workspaceFile:this.input.workspaceFile,baseFile:this.input.baseFile,remoteFile:this.input.remoteFile}}async readMergeContentVersions(){let[e,t,n]=await Promise.all([this.readMergeContentVersion("workspace",this.input.workspaceFile),this.readMergeContentVersion("base",this.input.baseFile),this.readMergeContentVersion("remote",this.input.remoteFile)]);return{workspace:e,base:t,remote:n}}async readMergeContentVersion(e,t){try{return await Yc(t)}catch(n){throw new Uo("metadataVersionUpgradeFailed",n instanceof SyntaxError?"invalidContent":"readFailed",`metadata ${e} version normalize input cannot be read`,n)}}areMergeContentVersionsSame(e){return e.workspace===e.base&&e.workspace===e.remote}async readAndNormalizeContent(e,t,n){let o;try{o=await as.promises.readFile(n,"utf-8")}catch(a){throw new Uo("metadataVersionUpgradeFailed","readFailed",`metadata ${t} version normalize input cannot be read`,a)}let i=await e.upgradeContent({path:this.input.remotePath,content:o,versionInfo:this.input.versionInfo});if(i.reason==="newerVersion")throw new Uo("metadataVersionNewerThanServer",i.reason,`metadata ${t} version is newer than server target version`,i.errorInfo);if(i.reason&&i.reason!=="upToDate")throw new Uo("metadataVersionUpgradeFailed",i.reason,`metadata ${t} version normalize failed`,i.errorInfo);return i.content}async writeTempContent(e,t,n){let o=Cm.join(e,t);return await as.promises.writeFile(o,n,"utf-8"),o}},Uo=class extends Error{conflictReason;reason;errorInfo;constructor(e,t,n,o){super(n),this.name="MetadataVersionNormalizeError",this.conflictReason=e,this.reason=t,this.errorInfo=o}};ft();var jo=T("sync.apply-remote"),Sl=class extends Ve{mirror=this.createMirrorStore();workspace=this.createWorkspaceStore(this.mirror);updated=[];deleted=[];conflicts=[];currentChangeTask;async execute(){this.updated=[],this.deleted=[],this.conflicts=[],this.currentChangeTask=void 0;let e=this.sortRemoteChanges(this.options.remoteChanges);jo.info("apply remote changes start: changes={0}",e.length);let t=new Set;if(e.length===0)return this.task.start(1),this.task.step(1),this.finishApplyRemoteChanges({updated:this.updated,deleted:this.deleted,conflicts:this.conflicts});let n=await this.createProgressItems(e);jo.info("apply remote changes prepared: changes={0} resources={1}",e.length,n.reduce((i,a)=>i+a.total,0)),this.task.start(Math.max(n.reduce((i,a)=>i+a.total,0),1));let o=n.map(i=>({change:i.change,total:i.total,task:this.task.subTaskMonitor(i.total)}));for(let{change:i,total:a,task:s}of o){this.task.throwIfAborted(),s.start(a),this.currentChangeTask=s;try{if(this.isCoveredByAppliedFolderCheckout(i,t)){s.progress(a);continue}let c=this.findLocalOverlaps(i);if(c.length>0&&!this.options.force){if(await this.tryApplyRemoteChangeWithLocalOverlaps(i,c))continue;this.conflicts.push(i),s.step(1);continue}i.type==="remoteDeleted"?(await this.workspace.deletePath(i.remotePath,s),this.deleted.push(i.remotePath)):i.type==="remoteRenamed"?(i.oldRemotePath&&(await this.workspace.deletePath(i.oldRemotePath,s),this.deleted.push(i.oldRemotePath)),await this.workspace.checkoutFromMirror(i.remotePath,s),this.updated.push(i.remotePath)):i.isFolder&&i.type==="remoteModified"?(await this.workspace.copyMirrorMetaInfo(i.remotePath,!0,s),this.updated.push(i.remotePath),s.step(1)):(await this.workspace.checkoutFromMirror(i.remotePath,s),this.updated.push(i.remotePath),i.isFolder&&t.add(i.remotePath))}finally{this.currentChangeTask=void 0}}return await this.cleanupEmptyOrphanParents(this.deleted,this.mirror,this.workspace),this.finishApplyRemoteChanges({updated:this.updated,deleted:this.deleted,conflicts:this.conflicts})}finishApplyRemoteChanges(e){jo.info("apply remote changes done: updated={0} deleted={1} conflicts={2}",e.updated.length,e.deleted.length,e.conflicts.length);for(let t of e.updated)jo.info("apply remote change item: status=updated path={0}",t);for(let t of e.deleted)jo.info("apply remote change item: status=deleted path={0}",t);for(let t of e.conflicts)jo.info("apply remote change item: status=conflict path={0}",t.remotePath);return e}isCoveredByAppliedFolderCheckout(e,t){for(let n of t)if(e.remotePath!==n&&re(e.remotePath,n))return!0;return!1}async createProgressItems(e){return Promise.all(e.map(async t=>({change:t,total:await this.countChangeProgress(t)})))}async countChangeProgress(e){if(e.type==="remoteDeleted")return this.countWorkspaceProgress(e.remotePath);if(e.type==="remoteRenamed"){let[t,n]=await Promise.all([e.oldRemotePath?this.countWorkspaceProgress(e.oldRemotePath):Promise.resolve(0),this.countCheckoutProgress(e.remotePath)]);return t+n}return e.isFolder&&e.type==="remoteModified"?1:this.countCheckoutProgress(e.remotePath)}async countCheckoutProgress(e){return Math.max(await this.workspace.countCheckoutResources(e),1)}async countWorkspaceProgress(e){return Math.max(await this.workspace.countResources([e]),1)}async tryApplyRemoteChangeWithLocalOverlaps(e,t){return await this.tryApplyRemoteRenamePreservingLocalModification(e,t)||await this.tryMergeSeparatedMetaAndContentChanges(e,t)?!0:this.canApplyFolderMetaOnly(e,t)?(await this.workspace.copyMirrorMetaInfo(e.remotePath,!0,this.getCurrentChangeTask()),this.updated.push(e.remotePath),this.getCurrentChangeTask().step(1),!0):this.tryThreeWayMergeSameFileContentChange(e,t)}async tryMergeSeparatedMetaAndContentChanges(e,t){if(e.type!=="remoteModified"||t.length!==1)return!1;let n=t[0];return n.remotePath!==e.remotePath||n.type!=="modified"?!1:e.metaChanged&&!e.contentChanged&&n.contentChanged&&!n.metaChanged?(await this.workspace.copyMirrorMetaInfo(e.remotePath,!!e.isFolder,this.getCurrentChangeTask()),this.updated.push(e.remotePath),this.getCurrentChangeTask().step(1),!0):e.contentChanged&&!e.metaChanged&&n.metaChanged&&!n.contentChanged?(await this.workspace.copyMirrorContent(e.remotePath,this.getCurrentChangeTask()),this.updated.push(e.remotePath),this.getCurrentChangeTask().step(1),!0):!1}async tryApplyRemoteRenamePreservingLocalModification(e,t){if(e.type!=="remoteRenamed"||!e.oldRemotePath||t.length!==1)return!1;let n=t[0];return n.type!=="modified"||n.remotePath!==e.oldRemotePath||!await this.applyRemoteRenameContent(e,n)?!1:(await this.applyRemoteRenameMeta(e,n),await this.workspace.deletePath(e.oldRemotePath,this.getCurrentChangeTask()),this.updated.push(e.remotePath),this.deleted.push(e.oldRemotePath),e.isFolder||this.getCurrentChangeTask().step(1),!0)}async applyRemoteRenameContent(e,t){if(e.isFolder)return await this.workspace.checkoutFromMirror(e.remotePath,this.getCurrentChangeTask()),!0;let n=this.workspace.toLocalPath(e.remotePath);return this.task.throwIfAborted(),await ji.promises.mkdir(Qr.dirname(n),{recursive:!0}),e.contentChanged&&t.contentChanged?this.mergeRemoteRenameContent(e,n):t.contentChanged&&e.oldRemotePath?(this.options.mergeBaseDir&&await this.mergeRemoteRenameContent(e,n)||(this.task.throwIfAborted(),await ji.promises.copyFile(this.workspace.toLocalPath(e.oldRemotePath),n)),!0):(await this.workspace.copyMirrorContent(e.remotePath,this.getCurrentChangeTask()),!0)}async mergeRemoteRenameContent(e,t){if(!e.oldRemotePath)return!1;let n;try{if(!this.options.mergeBaseDir||!e.oldRemotePath)return!1;n=await ji.promises.mkdtemp(Qr.join(ck.tmpdir(),"succapp-remote-rename-merge-"));let o=Qr.join(n,"workspace");this.task.throwIfAborted(),await ji.promises.copyFile(this.workspace.toLocalPath(e.oldRemotePath),o);let i=Qr.join(this.options.mergeBaseDir,De(e.oldRemotePath)),a=this.mirror.toLocalPath(e.remotePath),s=await this.mergeSingleFileContent({remotePath:e.remotePath,workspaceFile:o,baseFile:i,remoteFile:a});return s.threeWayResult&&(this.task.throwIfAborted(),await ji.promises.copyFile(o,t)),s.merged}catch(o){return jo.debug(`merge remote rename content failed: ${e.remotePath}`,o),!1}finally{n&&await sr(n)}}async applyRemoteRenameMeta(e,t){let n=await je(this.mirror.root,e.remotePath);if(!n)return;let o=n;if(t.metaChanged&&e.oldRemotePath){let[i,a]=await Promise.all([je(this.workspaceRoot,e.oldRemotePath),this.options.mergeBaseDir?je(this.options.mergeBaseDir,e.oldRemotePath):Promise.resolve(void 0)]);o=this.mergeMetaWithLocalDelta(n,i,a)}await this.workspace.patchMeta(Qr.posix.dirname(e.remotePath),{[Qr.posix.basename(e.remotePath)]:o},this.getCurrentChangeTask())}mergeMetaWithLocalDelta(e,t,n){let o={...e},i=Lo(t),a=Lo(n),s=new Set([...Object.keys(i),...Object.keys(a)]);for(let c of s)(0,lk.isDeepStrictEqual)(i[c],a[c])||(c in i?o[c]=i[c]:delete o[c]);return o}canApplyFolderMetaOnly(e,t){return e.type==="remoteModified"&&!!e.isFolder&&!!e.metaChanged&&!e.contentChanged&&t.every(n=>n.remotePath!==e.remotePath&&n.oldRemotePath!==e.remotePath)}findLocalOverlaps(e){return this.options.localChanges.filter(t=>jn(t.remotePath,t.oldRemotePath,e.remotePath,e.oldRemotePath))}sortRemoteChanges(e){return[...e].sort((t,n)=>{let o=this.getApplyOrderRank(t),i=this.getApplyOrderRank(n);return o!==i?o-i:t.type==="remoteDeleted"&&n.type==="remoteDeleted"?Br(n.remotePath)-Br(t.remotePath)||t.remotePath.localeCompare(n.remotePath):t.type==="remoteRenamed"&&n.type==="remoteRenamed"?this.getRemoteRenameDeleteDepth(n)-this.getRemoteRenameDeleteDepth(t)||this.getRemoteRenameDeletePath(t).localeCompare(this.getRemoteRenameDeletePath(n)):t.remotePath.localeCompare(n.remotePath)})}getApplyOrderRank(e){return e.type==="remoteDeleted"?0:e.type==="remoteRenamed"?1:2}getRemoteRenameDeleteDepth(e){return Br(this.getRemoteRenameDeletePath(e))}getRemoteRenameDeletePath(e){return e.oldRemotePath??e.remotePath}async tryThreeWayMergeSameFileContentChange(e,t){if(e.type!=="remoteModified"||!e.contentChanged||t.length!==1)return!1;let n=t[0];if(n.type!=="modified"||!n.contentChanged||n.remotePath!==e.remotePath||!this.options.mergeBaseDir)return!1;let o=this.workspace.toLocalPath(e.remotePath),i=Qr.join(this.options.mergeBaseDir,De(e.remotePath)),a=this.mirror.toLocalPath(e.remotePath),s=await this.mergeSingleFileContent({remotePath:e.remotePath,workspaceFile:o,baseFile:i,remoteFile:a});return s.threeWayResult&&(await this.workspace.copyMirrorMetaInfo(e.remotePath,!!e.isFolder,this.getCurrentChangeTask()),this.updated.push(e.remotePath)),s.merged?(this.getCurrentChangeTask().step(1),!0):!1}async mergeSingleFileContent(e){let t=(await this.context.getMetadataVersionCatalog()).getInfoByPath(e.remotePath),n=t?.upgradeSupported?await this.getApiClient():void 0;return new Cl({...e,versionInfo:t,client:n}).execute()}getCurrentChangeTask(){return H(this.currentChangeTask,"current apply remote change task is missing."),this.currentChangeTask}};tr();$();J();D();Ge();var pk="merge-base",Vo="merge-backup";Tr();var at=T("sync.pull"),vl=class extends Ve{async execute(){at.info("pull start: {0}",this.createPullScopeLog()),this.task.start(100,{message:d("workspace.sync.progress.pull.running"),retainOnFinish:!0});let e=this.task.subTaskMonitor(8),t=this.task.subTaskMonitor(55),n=this.task.subTaskMonitor(3),o=this.task.subTaskMonitor(22),i=this.task.subTaskMonitor(8),a=this.task.subTaskMonitor(2),s=this.task.subTaskMonitor(2);e.start(4),at.info("pull prepare start");let c=e.subTaskMonitor(1),l=e.subTaskMonitor(1),p=e.subTaskMonitor(1),u=e.subTaskMonitor(1);c.start(1),this.assertNoRemoteProjectUnavailableChanges(this.options.changes,"pull"),this.assertNoProjectRootRenameChanges(this.options.changes,"pull");let g=this.getKnownRemoteChanges(),m=g?this.getKnownChangeTargets(g):await this.resolveTargetRemotePaths(this.options.paths);c.step(1),at.info("pull targets resolved: {0}",this.formatTargetsForLog(m)),!this.options.paths&&!g?(at.info("pull refresh status start"),await this.context.refreshSyncStatus(l),at.info("pull refresh status done")):l.finish();let h,y,C=[],v;if(g?(h=this.getTargetLocalChanges(m),y=g,C=this.options.force===!0?this.getTargetCachedPullChanges(m):[],p.finish()):this.options.paths?(h=this.getTargetLocalChanges(m),C=this.options.force===!0?this.getTargetCachedPullChanges(m):[],v=this.expandTargetsForRenameChanges(m,[...h,...C]),p.start(1),y=this.filterChangesByTargets(await this.detectRemoteChanges(v,p),v),p.step(1)):(h=this.getLocalSyncChanges().filter(b=>b.type!=="conflict"),y=this.getRemoteSyncChanges(),p.finish()),at.info("pull changes prepared: local={0} remote={1}",h.length,y.length),y.length===0&&this.options.force!==!0)return at.info("pull skipped: no applicable remote changes"),u.finish(),t.finish(),n.finish(),o.finish(),i.finish(),a.finish(),s.finish(),this.task.setMessage(d("workspace.sync.progress.pull.done",0,0,0)),this.task.finish(),{updated:[],deleted:[],conflicts:[],oldFiles:[]};u.start(1),at.info("pull merge base capture start");let w=await this.captureMergeBaseDir(h,y);u.step(1),at.info("pull merge base capture done");let f,S=!1,k;try{await new Zn(this.context,{task:t,...this.createFetchOptions(y,m,g)}).execute(),at.info("pull reconcile local changes start");let b=await this.reconcileLocalChangesAfterFetch(h,y,m,n);at.info("pull reconcile local changes done: local={0}",b.length);let P=this.options.force?await this.includeForceTargetChanges(y,b,m,C):y;f=await new Sl(this.context,{remoteChanges:P,localChanges:b,force:!!this.options.force,mergeBaseDir:w,task:o}).execute(),this.applyPullOperationResult(P,f),at.info("pull metadata version check start: paths={0}",f.updated.length);let Q=await this.detectOldFiles(i,f.updated);at.info("pull metadata version check done: oldFiles={0}",Q.length);let M={...f,oldFiles:Q};return S=!0,k=d("workspace.sync.progress.pull.done",M.updated.length,M.deleted.length,M.conflicts.length),at.info("pull done: updated={0} deleted={1} conflicts={2} oldFiles={3}",M.updated.length,M.deleted.length,M.conflicts.length,Q.length),M}finally{await this.cleanupPullState(a,w,f),S&&(s.finish(),this.task.setMessage(k),this.task.finish())}}createPullScopeLog(){return this.hasKnownChanges(this.options.changes)?`changes=${this.options.changes.length}`:this.options.paths?.join(", ")??"<all>"}getKnownRemoteChanges(){if(this.hasKnownChanges(this.options.changes))return ns(this.options.changes)}getTargetLocalChanges(e){return this.filterChangesByTargets(this.context.getSyncChanges().filter(t=>ht(t)&&t.type!=="conflict"),e)}getTargetCachedPullChanges(e){return this.filterChangesByTargets(ns(this.context.getSyncChanges()),e)}async detectRemoteChanges(e,t){return new Kr({targets:e,task:t,workspace:this.context}).detect()}async detectOldFiles(e,t){return t.length===0?(e.finish(),[]):cl(this.context,e,t.map(n=>ce(this.workspaceRoot,n)))}async cleanupPullState(e,t,n){if(!t){e.finish();return}let o=!n||n.conflicts.length===0;at.info("pull cleanup start"),e.start(o?2:1),await sr(t),e.step(1),o&&(await sr(jt.join(this.workspaceRoot,".succapp",Vo)),e.step(1)),at.info("pull cleanup done")}formatTargetsForLog(e){return e?`targets=${e.size}`:"<all>"}getFetchPaths(e,t){if(!this.options.paths)return;if(e.length===0)return[...t||new Set(this.options.paths)];let n=new Set;for(let o of e)n.add(o.remotePath),o.oldRemotePath&&n.add(o.oldRemotePath);return[...n]}createFetchOptions(e,t,n){return n?{changes:e}:{paths:this.getFetchPaths(e,t)}}async reconcileLocalChangesAfterFetch(e,t,n,o){if(o.start(1),e.length===0||t.length===0||!e.some(s=>t.some(c=>this.isOverlappedChange(s,c)))||n)return o.step(1),e;await this.context.refreshSyncStatus(o);let i=this.filterChangesByTargets(this.getLocalSyncChanges().filter(s=>s.type!=="conflict"),n),a=e.filter(s=>t.some(c=>this.isOverlappedChange(s,c))?i.some(c=>this.isOverlappedChange(s,c)):!0);for(let s of i){let c=t.find(l=>this.isOverlappedChange(s,l));c&&(a.some(l=>this.isSameChange(l,s))||this.isFetchIntroducedRemoteMetaOnlyChange(s,c)||a.push(s))}return a}applyPullOperationResult(e,t){for(let n of e)this.context.applySyncOperationResult(n,t.conflicts.filter(o=>this.isOverlappedChange(n,o)))}isFetchIntroducedRemoteMetaOnlyChange(e,t){return e.remotePath===t.remotePath&&e.type==="modified"&&t.type==="remoteModified"&&!!e.metaChanged&&!e.contentChanged&&!!t.metaChanged&&!t.contentChanged}isOverlappedChange(e,t){return jn(e.remotePath,e.oldRemotePath,t.remotePath,t.oldRemotePath)}isSameChange(e,t){return e.type===t.type&&e.remotePath===t.remotePath&&e.oldRemotePath===t.oldRemotePath}async includeForceTargetChanges(e,t,n,o=[]){if(!n)return e;let i=[...e],a=new Set(e.map(c=>c.remotePath)),s=this.createMirrorStore();for(let c of o)if(!a.has(c.remotePath)){if(c.type==="conflict"){await this.addForceMirrorChange(i,a,s,c);continue}i.push(c),a.add(c.remotePath)}for(let c of t){if(c.type==="renamed"&&c.oldRemotePath){if(!n.has(c.remotePath)&&!n.has(c.oldRemotePath))continue;await this.addForceMirrorChange(i,a,s,{path:c.oldPath??De(c.oldRemotePath),remotePath:c.oldRemotePath,isFolder:c.isFolder,contentChanged:c.contentChanged,metaChanged:c.metaChanged}),await this.addForceMirrorChange(i,a,s,c);continue}a.has(c.remotePath)||n.has(c.remotePath)&&await this.addForceMirrorChange(i,a,s,c)}return i}async addForceMirrorChange(e,t,n,o){if(t.has(o.remotePath))return;let i=await n.exists(o.remotePath);e.push({path:o.path,remotePath:o.remotePath,...o.fileId!==void 0?{fileId:o.fileId}:{},type:i?"remoteModified":"remoteDeleted",isFolder:i?await n.isFolder(o.remotePath):o.isFolder,contentChanged:i?o.contentChanged:!1,metaChanged:i?o.metaChanged:!1}),t.add(o.remotePath)}async captureMergeBaseDir(e,t){let n=e.filter(u=>u.type==="modified"&&u.contentChanged),o=e.filter(u=>u.type==="modified"&&(u.contentChanged||u.metaChanged));if(o.length===0)return;let i=t.filter(u=>u.type==="remoteModified"?!!u.contentChanged&&n.some(g=>this.isOverlappedChange(g,u)):u.type==="remoteRenamed"?o.some(g=>this.isOverlappedChange(g,u)):!1);if(i.length===0)return;let a=jt.join(this.workspaceRoot,".succapp"),s=jt.join(a,pk),c=jt.join(a,Vo);await Promise.all([sr(s),sr(c)]),this.task.throwIfAborted(),await Promise.all([vn.promises.mkdir(s,{recursive:!0}),vn.promises.mkdir(c,{recursive:!0})]);let l=this.createMirrorStore(),p=this.createWorkspaceStore(l);return await Promise.all(i.map(async u=>{let g=u.type==="remoteRenamed"&&u.oldRemotePath?u.oldRemotePath:u.remotePath,m=De(g),h=jt.join(s,m),y=jt.join(c,m);await Promise.all([(async()=>{try{this.task.throwIfAborted(),await vn.promises.mkdir(jt.dirname(h),{recursive:!0}),await vn.promises.copyFile(l.toLocalPath(g),h),await this.copyBaseMetaFile(l.root,s,m,g)}catch(C){at.debug(`capture merge base failed for ${g}`,C)}})(),(async()=>{try{this.task.throwIfAborted(),await vn.promises.mkdir(jt.dirname(y),{recursive:!0}),await vn.promises.copyFile(p.toLocalPath(g),y)}catch(C){at.debug(`backup workspace file failed for ${g}`,C)}})()])})),s}async copyBaseMetaFile(e,t,n,o){let i=jt.dirname(n),a=jt.join(e,i,X),s=jt.join(t,i,X);try{this.task.throwIfAborted(),await vn.promises.mkdir(jt.dirname(s),{recursive:!0}),await vn.promises.copyFile(a,s)}catch(c){at.debug(`capture merge base meta failed for ${o}`,c)}}};var El=E(require("fs")),wm=E(require("path"));F();Ie();_();_n();_();_n();function dk(r,e={}){return kl(r,e)!==void 0}function ss(r,e={}){let t=kl(r,e);if(!t||!r||typeof r!="object")return r;let n={...Lt(r),suggestedAction:t,retryable:!1},o=lt(r);return t==="fixMeta"&&typeof n.backendErrorCode!="string"&&typeof o=="string"&&(n.backendErrorCode=o),(typeof n.path!="string"||n.path.length===0)&&(n.path=e.targetPath??e.path),r.properties=n,gr(r)==null&&(r.errorType=hA(r)),r}function kl(r,e={}){let t=Lt(r)?.suggestedAction;if(gA(t))return t;let n=lt(r);if(n==="err.meta.fileExists"||n==="err.meta.file.notfound"||n==="err.meta.saveConcurrent")return"pull";if(n==="err.meta.filefolder.notfound")return"fixMeta";if(n==="err.meta.fileExistsIgnoreCase")return"rename";if(n==="err.meta.delete.project")return"refresh";if(n==="err.permission.denied")return e.action==="delete"&&yA(e.path)?"refresh":"contactAdmin"}function hA(r){let e=lt(r);return e==="err.permission.denied"||e==="err.meta.delete.project"?"error":"warn"}function gA(r){return r==="pull"||r==="rename"||r==="refresh"||r==="fixMeta"||r==="contactAdmin"}function yA(r){return typeof r=="string"&&/^\/[^/]+$/.test(r)}$();Ge();tr();var CA;function Sm(){return CA}J();D();xi();ft();Tr();var vm=E(require("path"));Ge();J();F();tr();var SA=T("sync.meta-repair"),uk="unreadableMeta",mk="blockedMetaPath",wl=class{constructor(e){this.workspace=e}async repair(e){let t=new Set(e.suspectMetaPaths),n=new Map,o=[],i=new Set;for(let s of t)await this.getWorkItem(s,n,o);for(let s of e.localChanges)await this.repairChange(s,t,n,o,i);let a=[];for(let s of n.values())!s.changed||s.blocked||(await Xc(this.workspace.root,s.metaPath,s.dotMeta),a.push(s.metaPath));return{repairedMetaPaths:a,affectedRemotePaths:[...i].sort(),failures:o}}async repairChange(e,t,n,o,i){if(e.type==="deleted"){await this.repairDeleted(e,t,n,o,i);return}if(e.type==="modified"){await this.repairModified(e,t,n,o,i);return}e.type==="renamed"&&e.oldRemotePath&&await this.repairRenamed(e,t,n,o,i)}async repairDeleted(e,t,n,o,i){let a=this.getDotMetaMetaPath(e.remotePath);if(!t.has(a))return;let s=await this.getWorkItem(a,n,o);if(!s||s.blocked)return;let c=this.getDotMetaKey(e.remotePath);s.dotMeta[c]&&(delete s.dotMeta[c],s.changed=!0,i.add(e.remotePath))}async repairModified(e,t,n,o,i){let a=this.getDotMetaMetaPath(e.remotePath);if(!t.has(a))return;let s=await this.getWorkItem(a,n,o);if(!s||s.blocked)return;let c=this.getDotMetaKey(e.remotePath);if(s.dotMeta[c])return;let l=await this.readMirrorMeta(e.remotePath);l&&(s.dotMeta[c]=this.cloneMetaInfo(l),s.changed=!0,i.add(e.remotePath))}async repairRenamed(e,t,n,o,i){let a=this.getDotMetaMetaPath(e.oldRemotePath),s=this.getDotMetaMetaPath(e.remotePath);if(!t.has(a)&&!t.has(s))return;let c=await this.getWorkItem(a,n,o),l=await this.getWorkItem(s,n,o);if(!c||!l||c.blocked||l.blocked)return;let p=this.getDotMetaKey(e.oldRemotePath),u=this.getDotMetaKey(e.remotePath),g=c.dotMeta[p]??await this.readMirrorMeta(e.oldRemotePath);!l.dotMeta[u]&&g&&(l.dotMeta[u]=this.cloneMetaInfo(g),l.changed=!0),c.dotMeta[p]&&(delete c.dotMeta[p],c.changed=!0),i.add(e.remotePath),i.add(e.oldRemotePath)}async getWorkItem(e,t,n){let o=t.get(e);if(o)return o;let i;try{i=await br(this.workspace.root,e)}catch(c){if(!this.isBlockedMetaPathError(c))throw c;let l={metaPath:e,dotMeta:{},changed:!1,blocked:!0};return n.push({path:e,errorInfo:mk}),this.logRepairFailure(e,mk),t.set(e,l),l}let a=this.normalizeDotMeta(i.dotMeta),s={metaPath:e,dotMeta:a.dotMeta,changed:!!i.damaged||a.changed,blocked:i.repairable===!1};return s.blocked&&(n.push({path:e,errorInfo:uk}),this.logRepairFailure(e,uk)),t.set(e,s),s}isBlockedMetaPathError(e){let t=Ln(e);return t==="ENOTDIR"||t==="EISDIR"}logRepairFailure(e,t){SA.warn(["workspace meta repair failed",`workspaceRoot=${this.workspace.root}`,`mirrorRoot=${this.workspace.getMirrorRoot()}`,`path=${e}`,`errorInfo=${String(t)}`].join(`
|
|
64
|
-
`))}normalizeDotMeta(e){let t={},n=!1;for(let o of Object.keys(e)){let i=e[o];if(typeof i=="object"&&i!==null&&!Array.isArray(i)){t[o]=i;continue}n=!0}return{dotMeta:t,changed:n}}async readMirrorMeta(e){let t=this.getDotMetaMetaPath(e);return(await br(this.workspace.getMirrorRoot(),t)).dotMeta[this.getDotMetaKey(e)]}cloneMetaInfo(e){return{...e,option:e.option?{...e.option}:void 0,customOption:e.customOption?{...e.customOption}:void 0}}getDotMetaMetaPath(e){let t=vm.posix.dirname(e);return t==="/"?"/"+X:t+"/"+X}getDotMetaKey(e){return vm.posix.basename(e)}};No();es();em();var fk="10Mb";var vA=/^\s*(\d+(?:\.\d+)?)\s*(b|kb|mb|gb)?\s*$/i,kA={b:1,kb:1024,mb:1048576,gb:1073741824};function wA(r,e=10485760){let t=vA.exec(r);if(!t)return e;let n=Number(t[1]),o=(t[2]??"b").toLowerCase(),i=kA[o]??1;return Math.floor(n*i)}var km=class{reader;writer;autoPushValue=!1;autoPushDelayValue=2e3;autoPullValue=!1;autoPullIntervalValue=60;syncIgnoreValue=[];maxPushFileSizeValue=fk;configure(e,t){this.reader=e,this.writer=t,this.load()}load(){let e=this.reader;e&&(this.autoPushValue=e("sync.autoPush",!1),this.autoPushDelayValue=e("sync.autoPushDelay",2e3),this.autoPullValue=e("sync.autoPull",!1),this.autoPullIntervalValue=e("sync.autoPullInterval",60),this.syncIgnoreValue=e("sync.ignore",[]),this.maxPushFileSizeValue=e("sync.maxPushFileSize",fk))}get autoPush(){return this.autoPushValue}get autoPushDelay(){return this.autoPushDelayValue}get autoPull(){return this.autoPullValue}get autoPullInterval(){return this.autoPullIntervalValue}get conflictStrategy(){return"ask"}get syncIgnore(){return[...this.syncIgnoreValue]}get maxPushFileSizeBytes(){return wA(this.maxPushFileSizeValue,10485760)}async setAutoPush(e){this.autoPushValue=e,await this.writer?.("sync.autoPush",e),this.load()}},bt=new km;var xe=T("sync.push"),Pl=class extends Wi{targets;localChanges=0;remoteChanges=0;requests=0;missingParentCreates=0;workspaceMetaRepairCandidates=0;workspaceMetaRepairRepaired=0;workspaceMetaRepairFailures=0;requestsByType={};preflightFailures=0;preflightFailuresByReason={};pushed=0;rejected=0;failures=0;remoteDetector;recordRequests(e){this.requests=e.length,this.requestsByType={};for(let t of e)this.incrementCounter(this.requestsByType,t.action)}recordPreflightFailures(e){this.preflightFailures+=e.length;for(let t of e)this.incrementCounter(this.preflightFailuresByReason,this.getFailureReason(t))}recordResult(e){this.pushed=e.pushed.length,this.rejected=e.rejected.length,this.failures=e.failures.length}createSnapshot(){return{runs:this.runs,durationMs:this.durationMs,...this.targets!==void 0?{targets:this.targets}:{},localChanges:this.localChanges,remoteChanges:this.remoteChanges,requests:this.requests,missingParentCreates:this.missingParentCreates,workspaceMetaRepairCandidates:this.workspaceMetaRepairCandidates,workspaceMetaRepairRepaired:this.workspaceMetaRepairRepaired,workspaceMetaRepairFailures:this.workspaceMetaRepairFailures,requestsByType:{...this.requestsByType},preflightFailures:this.preflightFailures,preflightFailuresByReason:{...this.preflightFailuresByReason},pushed:this.pushed,rejected:this.rejected,failures:this.failures,...this.remoteDetector?{remoteDetector:this.remoteDetector}:{},api:this.api}}getFailureReason(e){let t=e.errorInfo;if(!t||typeof t!="object")return"unknown";let n=t.reason;if(n!=null)return String(n);let o=t.errorCode;if(typeof o=="string"&&o.length>0)return o;let i=t.errorType;return typeof i=="string"&&i.length>0?i:"unknown"}incrementCounter(e,t){e[t]=(e[t]??0)+1}},Rl=class extends Ve{constructor(e,t){super(e,t)}diagnostics=new Pl;apiClient;pushContext=this.context;pushOptions=this.options;workspaceRootPath=this.workspaceRoot;mirrorRootPath=this.mirrorRoot;pushResult=this.createEmptyPushResult();run=this.createEmptyRunState();async execute(){this.beginPushRun();for(let e of this.createPushStageTasks())await e.run();return this.finishPush(this.run.startedAt)}beginPushRun(){this.assertNoRemoteProjectUnavailableChanges(this.options.changes,"push"),this.assertNoProjectRootRenameChanges(this.options.changes,"push"),this.pushResult=this.createEmptyPushResult(),this.run={...this.createEmptyRunState(),startedAt:this.diagnostics.startRun()},xe.info("push start: {0}",this.createPushScopeLog()),this.task.start(100,{message:d("workspace.sync.progress.push.running"),retainOnFinish:!0})}createPushScopeLog(){return this.hasKnownChanges(this.options.changes)?`changes=${this.options.changes.length}`:this.options.paths?.join(", ")??"<all>"}getDiagnostics(e={}){if(this.apiClient){let n=this.apiClient.getDiagnostics();n&&this.diagnostics.captureApiDiagnostics(n)}let t=this.diagnostics.createSnapshot();return e.reset&&(this.diagnostics=new Pl,this.apiClient=void 0),t}finishPush(e){if(this.diagnostics.recordResult(this.pushResult),this.apiClient){let t=this.apiClient.getDiagnostics();t&&this.diagnostics.captureApiDiagnostics(t)}return this.diagnostics.finishRun(e),xe.info("push done: pushed={0} rejected={1} failures={2}",this.pushResult.pushed.length,this.pushResult.rejected.length,this.pushResult.failures.length),xe.debug(`push diagnostics ${this.diagnostics.describeForLog()}`),this.task.setMessage(d("workspace.sync.progress.push.done",this.pushResult.pushed.length,this.pushResult.rejected.length,this.pushResult.failures.length)),this.task.finish(),this.pushResult}createEmptyRunState(){return{startedAt:0,localChanges:[],workspaceMetaRepairPaths:[],missingParentFolderCreates:[],remoteChanges:[],requests:[]}}createPushStageTasks(){let e=this.task.subTaskMonitor(20),t=this.task.subTaskMonitor(20),n=this.task.subTaskMonitor(54),o=this.task.subTaskMonitor(3),i=this.task.subTaskMonitor(3);return e.start(5),[new Pm(this,e),new Rm(this,e),new bm(this,e),new Em(this,e),new Tm(this,e),new Mm(this,t),new xm(this,n,o,i)]}canContinuePushPipeline(){return this.pushResult.rejected.length===0&&this.pushResult.failures.length===0}hasPushRequests(){return this.run.requests.length>0}finishTask(){this.task.setMessage(d("workspace.sync.progress.push.stopped")),this.task.finish()}isForcePush(){return!!this.options.force}expandPushTargetsForRenameChanges(e,t){return this.expandTargetsForRenameChanges(e,t)}async getApiClientForPush(){let e=await this.getApiClient();return this.apiClient=e,e}async uploadFileMutation(e,t){return await this.notifySyncPushFileRequest(t),t.action==="create"?e.createFile(this.toApiFileMutationRequest(t)):t.action==="modify"?e.modifyFile(this.toApiModifyFileRequest(t)):t.action==="move"?(H(t.targetPath,`targetPath is required when moving file: ${t.path}`),e.moveFile(this.toApiMoveFileRequest(t,t.targetPath))):e.deleteFile(t.path,{expectedRevision:t.expectedRevision===null?void 0:t.expectedRevision,expectedModifyTime:t.expectedModifyTime===null?void 0:t.expectedModifyTime})}notifySyncPushFileRequest(e){return this.options.onSyncPushFileRequest?.(e)}toApiFileMutationRequest(e){let{action:t,contentValidated:n,...o}=e;return o}toApiModifyFileRequest(e){let t=this.toApiFileMutationRequest(e);return{...t,expectedRevision:this.toWriteExpectedRevision(t.expectedRevision)}}toApiMoveFileRequest(e,t){let n=this.toApiFileMutationRequest(e);return{...n,targetPath:t,expectedRevision:this.toWriteExpectedRevision(n.expectedRevision)}}toWriteExpectedRevision(e){return e===null?void 0:e}reportPushDiagnostic(e,t,n){this.reportDiagnostic({path:e,message:t,errorInfo:n})}createEmptyPushResult(){return{pushed:[],rejected:[],failures:[]}}formatTargetsForLog(e){return e?`${e.size}`:"<all>"}reportPushFailure(e,t){this.reportDiagnostic({path:e.path,message:t,errorInfo:e.errorInfo})}},cs=class{constructor(e,t){this.command=e;this.task=t}async run(){this.shouldRun()&&await this.doRun()}shouldRun(){return!0}async isFolderPath(e,t){try{return(await El.promises.stat(ce(e,t))).isDirectory()}catch(n){if(x(n))return xe.debug(`sync folder path does not exist: ${e}:${t}`),!1;throw n}}getParentPaths(e){let t=e.replace(/^\/+|\/+$/g,"").split("/").filter(Boolean),n=[];for(let o=0;o<t.length-1;o++)n.push("/"+t.slice(0,o+1).join("/"));return n}},Pm=class extends cs{constructor(e,t){super(e,t.subTaskMonitor(1))}doRun(){return this.collectLocalChanges()}async collectLocalChanges(){xe.info("push prepare start");let{targets:e,localChanges:t}=await this.getLocalChangesForPush();this.command.run.targets=e,this.command.run.localChanges=t,this.command.diagnostics.targets=e?.size,this.command.diagnostics.localChanges=t.length,xe.info("push local changes prepared: targets={0} local={1}",this.command.formatTargetsForLog(e),t.length)}async getLocalChangesForPush(){let e=this.command.pushOptions;if(this.command.hasKnownChanges(e.changes))return this.task.finish(),{targets:new Set(this.command.getKnownChangeTargetRemotePaths(e.changes)),localChanges:e.changes};this.task.start(2);let t=this.task.subTaskMonitor(1),n=this.task.subTaskMonitor(1);t.start(1);let o=this.normalizeDotMetaTargets(await this.command.resolveTargetRemotePaths(e.paths)),i=o?new Set(wt(o)):void 0;return t.step(1),await this.refreshTargetChangesForPush(i,n),{targets:i,localChanges:this.command.filterChangesByTargets(this.command.pushContext.getSyncChanges().filter(a=>ht(a)),i)}}async refreshTargetChangesForPush(e,t){if(!e){await this.command.pushContext.refreshSyncStatus(t);return}if(e.size===0){t.finish();return}if(await this.hasDirectoryTarget(e)){await this.command.pushContext.refreshSyncStatus(t);return}t.start(1),await this.command.pushContext.consumeFileChanges([...e].map(n=>({filePath:ce(this.command.workspaceRootPath,n),type:"changed"}))),t.step(1)}async hasDirectoryTarget(e){return(await Promise.all([...e].map(async n=>await this.isDirectoryTarget(this.command.workspaceRootPath,n)||await this.isDirectoryTarget(this.command.mirrorRootPath,n)))).some(Boolean)}async isDirectoryTarget(e,t){try{return(await El.promises.stat(ce(e,t))).isDirectory()}catch(n){return x(n)?(xe.debug(`push target is not a directory: ${e}:${t}`),!1):(xe.debug(`push target stat failed, fallback to full status: ${e}:${t}`,n),!0)}}normalizeDotMetaTargets(e){if(!e)return;let t=new Set;for(let n of e){if(wm.posix.basename(n)===X){t.add(wm.posix.dirname(n));continue}t.add(n)}return t}},Rm=class extends cs{constructor(e,t){super(e,t.subTaskMonitor(1))}doRun(){return this.repairWorkspaceMeta()}async repairWorkspaceMeta(){this.task.start(1),this.command.run.workspaceMetaRepairPaths=$v(this.command.run.localChanges),this.command.diagnostics.workspaceMetaRepairCandidates=this.command.run.workspaceMetaRepairPaths.length,xe.info("push workspace metadata repair start: candidates={0}",this.command.run.workspaceMetaRepairPaths.length);let e=await new wl(this.command.pushContext).repair({suspectMetaPaths:this.command.run.workspaceMetaRepairPaths,localChanges:this.command.run.localChanges});this.command.diagnostics.workspaceMetaRepairRepaired=e.repairedMetaPaths.length,this.command.diagnostics.workspaceMetaRepairFailures=e.failures.length,this.task.step(1),xe.info("push workspace metadata repair done: failures={0}",e.failures.length),e.failures.length>0&&(this.command.finishTask(),this.command.pushResult.failures.push(...e.failures))}},Vi=class extends cs{shouldRun(){return this.command.canContinuePushPipeline()}},bm=class extends Vi{constructor(e,t){super(e,t.subTaskMonitor(1))}doRun(){return this.analyzeParentFolders()}async analyzeParentFolders(){if(this.task.start(1),xe.info("push parent folder analysis start"),this.command.run.missingParentFolderCreates=await this.collectMissingParentFolderCreates(this.command.run.localChanges),this.command.diagnostics.missingParentCreates=this.command.run.missingParentFolderCreates.length,this.command.run.operationTargets=this.command.expandPushTargetsForRenameChanges(this.command.run.targets,this.command.run.localChanges),this.command.run.operationTargets)for(let e of this.command.run.missingParentFolderCreates)this.command.run.operationTargets.add(e);this.task.step(1),xe.info("push parent folder analysis done: missingParents={0}",this.command.run.missingParentFolderCreates.length)}async collectMissingParentFolderCreates(e){let t=new Set,n=new Set;for(let o of e)o.isFolder&&(o.type==="added"||o.type==="renamed")&&n.add(o.remotePath);for(let o of e)if(!(o.type!=="added"&&o.type!=="modified"&&o.type!=="renamed"))for(let i of this.getParentPaths(o.remotePath))n.has(i)||t.has(i)||await this.isFolderPath(this.command.mirrorRootPath,i)||!await this.isFolderPath(this.command.workspaceRootPath,i)||t.add(i);return[...t].sort((o,i)=>{let a=Br(o)-Br(i);return a!==0?a:o.localeCompare(i)})}},Em=class extends Vi{constructor(e,t){super(e,t.subTaskMonitor(1))}doRun(){return this.checkRemoteChanges()}async checkRemoteChanges(){if(this.task.start(1),xe.info("push remote change check start: {0}",this.command.formatTargetsForLog(this.command.run.operationTargets)),this.command.run.remoteChanges=await this.getRemoteChangesForPush(this.command.run.operationTargets),this.command.diagnostics.remoteChanges=this.command.run.remoteChanges.length,this.task.step(1),xe.info("push remote change check done: remote={0}",this.command.run.remoteChanges.length),this.command.run.remoteChanges.length>0&&!this.command.isForcePush()){this.command.finishTask(),this.command.pushResult.rejected.push(...this.command.run.remoteChanges);for(let e of this.command.run.remoteChanges)xe.info("push item done: status=rejected path={0}",e.remotePath)}}async getRemoteChangesForPush(e){if(this.command.hasKnownChanges(this.command.pushOptions.changes)||!e)return this.command.filterChangesByTargets(this.command.pushContext.getSyncChanges().filter(o=>Er(o)),e);if(e.size===0)return[];let t=new Kr({workspace:this.command.pushContext,targets:e,task:this.task}),n=await t.detect();return this.command.diagnostics.remoteDetector=t.getDiagnostics(),this.command.filterChangesByTargets(n,e)}},Tm=class extends Vi{constructor(e,t){super(e,t.subTaskMonitor(1))}doRun(){return this.buildPushRequests()}async buildPushRequests(){this.task.start(1),xe.info("push request build start: local={0}",this.command.run.localChanges.length),this.command.run.requests=await this.createPushRequests(this.command.run.localChanges,this.command.run.missingParentFolderCreates),this.command.diagnostics.recordRequests(this.command.run.requests),this.task.step(1),xe.info("push request build done: requests={0}",this.command.run.requests.length),this.command.run.requests.length===0&&this.command.finishTask()}async createPushRequests(e,t=[]){let n=[],o=[],i=new Set,a=new Set,s=new Set(t);for(let c of this.sortChangesForPush(this.filterDerivedFolderRenameChanges(e))){if(c.type==="renamed"&&c.oldRemotePath){await this.appendMissingParentFolderCreates(c.remotePath,s,a,i,n);let l=this.getMovedFolderChildSource(c.oldRemotePath,o);if(l===c.remotePath){(c.contentChanged||c.metaChanged)&&n.push(await this.createModifyRequest(c,c.oldRemotePath,!0));continue}n.push(await this.createMoveRequest(c,l)),c.isFolder&&(o.push({oldRemotePath:c.oldRemotePath,newRemotePath:c.remotePath}),a.add(c.remotePath));continue}if(c.type==="added"){await this.appendMissingParentFolderCreates(c.remotePath,s,a,i,n),n.push(await this.createCreateRequest(c.remotePath,c.isFolder)),c.isFolder&&a.add(c.remotePath);continue}if(c.type==="modified"){await this.appendMissingParentFolderCreates(c.remotePath,s,a,i,n),n.push(await this.createModifyRequest(c));continue}c.type==="deleted"&&n.push(await this.createDeleteRequest(c.remotePath,c.isFolder))}return n}async appendMissingParentFolderCreates(e,t,n,o,i){for(let a of this.getParentPaths(e))if(!(o.has(a)||!t.has(a)||a==="/"||n.has(a))){if(await this.isFolderPath(this.command.mirrorRootPath,a)){n.add(a);continue}i.push(await this.createCreateRequest(a,!0)),o.add(a),n.add(a)}}filterDerivedFolderRenameChanges(e){let t=e.filter(n=>n.type==="renamed"&&n.isFolder&&!!n.oldRemotePath);return t.length===0?e:e.filter(n=>n.type!=="renamed"||!n.oldRemotePath?!0:!t.some(o=>{if(o===n)return!1;let i=o.oldRemotePath,a=o.remotePath;if(!re(n.oldRemotePath,i)||!re(n.remotePath,a))return!1;let s=n.oldRemotePath.slice(i.length),c=n.remotePath.slice(a.length);return s===c&&!n.contentChanged&&!n.metaChanged}))}async createCreateRequest(e,t){let n=this.command.workspaceRootPath,o={path:e,action:"create",isFolder:t,expectedRevision:null,expectedModifyTime:null,metaInfo:Lo(await je(n,e,{strict:!0})),metaInfoChanged:!0};return t||(o.localContentPath=ce(n,e),o.contentChanged=!0),o}async createModifyRequest(e,t=e.remotePath,n=!1){let o=this.command.workspaceRootPath,i=await je(this.command.mirrorRootPath,t);if(!i)throw new Kt("err.sync.conflict",{remotePath:e.remotePath,reason:"remoteVersionChanged"});let a=!e.isFolder&&!!e.contentChanged,s={path:e.remotePath,action:"modify",isFolder:e.isFolder,expectedRevision:this.command.isForcePush()||e.isFolder?void 0:i.revision??0,expectedModifyTime:this.command.isForcePush()||n?void 0:i.modifyTime??0,metaInfo:Lo(await je(o,e.remotePath,{strict:!0})),metaInfoChanged:!!e.metaChanged};return a&&(s.localContentPath=ce(o,e.remotePath),s.contentChanged=!0),s}async createMoveRequest(e,t){if(!e.oldRemotePath)throw new Kt("err.sync.conflict",{remotePath:e.remotePath,reason:"remoteVersionChanged"});let n=this.command.workspaceRootPath,o=await je(this.command.mirrorRootPath,e.oldRemotePath);if(!o)throw new Kt("err.sync.conflict",{remotePath:e.oldRemotePath,reason:"remoteVersionChanged"});let i=Lo(await je(n,e.remotePath,{strict:!0})),a={path:t??e.oldRemotePath,targetPath:e.remotePath,action:"move",isFolder:e.isFolder,expectedRevision:this.command.isForcePush()||e.isFolder?void 0:o.revision??0,expectedModifyTime:this.command.isForcePush()||e.isFolder||t?void 0:o.modifyTime??0,metaInfo:i,metaInfoChanged:!!e.metaChanged};return!e.isFolder&&e.contentChanged&&(a.localContentPath=ce(n,e.remotePath),a.contentChanged=!0),a}getMovedFolderChildSource(e,t){for(let n of[...t].reverse())if(!(e===n.oldRemotePath||!re(e,n.oldRemotePath)))return n.newRemotePath+e.slice(n.oldRemotePath.length)}async createDeleteRequest(e,t){let n=await je(this.command.mirrorRootPath,e);if(!n)throw new Kt("err.sync.conflict",{remotePath:e,reason:"remoteVersionChanged"});return{path:e,action:"delete",expectedRevision:this.command.isForcePush()||t?void 0:n.revision??0,expectedModifyTime:this.command.isForcePush()||t?void 0:n.modifyTime??0}}sortChangesForPush(e){let t=n=>n.type==="deleted"?-Br(n.remotePath):n.type==="renamed"?10:n.type==="added"?20+Br(n.remotePath):30+Br(n.remotePath);return[...e].sort((n,o)=>{let i=t(n),a=t(o);return i!==a?i-a:n.remotePath.localeCompare(o.remotePath)})}},bl=class extends Vi{shouldRun(){return super.shouldRun()&&this.command.hasPushRequests()}async validatePushRequest(e){let t=bt.maxPushFileSizeBytes;if(e.localContentPath)try{let n=await El.promises.stat(e.localContentPath);if(t>0&&n.size>t){let o={path:e.path,errorInfo:{reason:"fileTooLarge",message:`File is larger than configured push limit: ${e.path}`,size:n.size,limit:t}};return this.command.reportPushFailure(o,"push validation failed"),o}if(await Bv(e.localContentPath)){let o={path:e.path,errorInfo:{reason:"conflictMarkers",message:`File contains unresolved conflict markers: ${e.path}`}};return this.command.reportPushFailure(o,"push validation failed"),o}}catch(n){let o={path:e.path,errorInfo:{reason:"fileReadFailed",message:`Failed to validate push file content: ${e.path}`,cause:n instanceof Error?n.message:String(n)}};return this.command.reportPushFailure(o,"push validation failed"),o}}},Mm=class extends bl{doRun(){return this.preflightPushRequests()}async preflightPushRequests(){xe.info("push preflight start: requests={0}",this.command.run.requests.length);let e=await this.validatePushRequestsBeforePush(this.command.run.requests);this.command.diagnostics.recordPreflightFailures(e),xe.info("push preflight done: failures={0}",e.length),e.length>0&&(this.command.finishTask(),this.command.pushResult.failures.push(...e))}async validatePushRequestsBeforePush(e){let t=[];if(this.task.start(Math.max(e.length,1)),e.length===0)return this.task.step(1),t;let n=e.map(o=>({request:o,task:this.task.subTaskMonitor(1)}));for(let{request:o,task:i}of n){this.task.throwIfAborted(),i.start(1);let a=await this.validatePushRequest(o);if(a){t.push(a),i.progress(1);continue}o.contentValidated=!0,i.step(1)}return t}},xm=class extends bl{constructor(t,n,o,i){super(t,n);this.resultTask=o;this.doneTask=i}doRun(){return this.uploadPushRequests()}async uploadPushRequests(){xe.info("push upload start: requests={0}",this.command.run.requests.length);let t=await this.pushRequests(this.command.run.requests);this.command.pushResult={pushed:[...t.pushed],rejected:[...t.rejected],failures:[...t.failures],...t.metadataVersionSuggestions?{metadataVersionSuggestions:[...t.metadataVersionSuggestions]}:{}},xe.info("push upload done: pushed={0} failures={1}",this.command.pushResult.pushed.length,this.command.pushResult.failures.length),this.doneTask.finish()}async pushRequests(t){let n=await this.command.getApiClientForPush(),o=[],i=[];this.task.start(Math.max(t.length,1)),t.length===0&&this.task.step(1);try{for(let l of t){this.task.throwIfAborted();let p=await this.preparePushRequestForUpload(l);if(p){i.push(p),xe.info("push item done: status=failed path={0}",p.path),this.task.step(1);continue}try{let u=await this.command.uploadFileMutation(n,l);if(!u.success){let g={path:u.path,errorInfo:u.errorInfo};this.command.reportPushFailure(g,"push item failed")}o.push(u),xe.info("push item done: status={0} path={1}",u.success?"pushed":"failed",u.path)}catch(u){let g=this.createPushFailureFromMutationError(l,u);if(!g)throw u;i.push(g),this.command.reportPushFailure(g,"push item failed"),xe.info("push item done: status=failed path={0}",g.path)}this.task.step(1)}}catch(l){throw await this.applyPushResponsesWithProgress(o),l}let a=await this.applyPushResponsesWithProgress(o),s=await this.createMetadataVersionSuggestions(t,o),c=s.length>0?{...a,metadataVersionSuggestions:s}:a;return i.length===0?c:{...c,failures:[...c.failures,...i]}}createPushFailureFromMutationError(t,n){if(!(n instanceof nr))return;let o=n.remoteError?this.toMutationErrorInfo(ss(On(n.remoteError),{action:t.action,path:t.path,targetPath:t.targetPath}),n):void 0;if(!(!o||!this.isMutationBlockedErrorInfo(o,t)))return{path:this.getMutationFailurePath(t,o),errorInfo:o}}toMutationErrorInfo(t,n){let o=n.remoteError;return{errorCode:t.errorCode??o?.errorCode??n.errorCode,errorType:t.errorType??o?.errorType??n.errorType,message:t.message??o?.message??n.message,properties:Lt(t)}}isMutationBlockedErrorInfo(t,n){return dk(t,{action:n.action,path:n.path,targetPath:n.targetPath})}getMutationFailurePath(t,n){let o=Lt(n)?.path;return typeof o=="string"&&o.length>0?o:this.getRequestTargetPath(t)}async applyPushResponsesWithProgress(t){this.resultTask.start(Math.max(t.length,1));let n=await this.applyPushResponses(t);return this.resultTask.step(Math.max(t.length,1)),n}async applyPushResponses(t){let n=new Rt(this.command.mirrorRootPath),o=new pr(this.command.workspaceRootPath,n);await new Ai({workspace:o,mirror:n,getApiClient:()=>this.command.getApiClientForPush()}).apply(t);let i=t.filter(s=>s.success).map(s=>s.path);return i.length>0&&this.command.pushContext.clearSyncStatusTargets(i),{pushed:i,rejected:[],failures:t.filter(s=>!s.success).map(s=>({path:s.path,errorInfo:s.errorInfo}))}}async preparePushRequestForUpload(t){return t.contentValidated?void 0:this.validatePushRequest(t)}async createMetadataVersionSuggestions(t,n){let o=new Set(n.filter(s=>s.success).map(s=>s.path));if(o.size===0)return[];let i=[],a=new Set;for(let s of t){if(!this.shouldCheckMetadataVersionSuggestion(s,o))continue;let c=this.getRequestTargetPath(s);if(a.has(c))continue;let l=await this.createMetadataVersionSuggestion(s,c);l&&(a.add(c),i.push(l))}return i}shouldCheckMetadataVersionSuggestion(t,n){if(!t.localContentPath||!t.contentChanged||t.isFolder||t.action==="delete")return!1;let o=this.getRequestTargetPath(t);return n.has(o)||n.has(t.path)}async createMetadataVersionSuggestion(t,n){try{let o=t.localContentPath;if(!o)return;let i=(await this.command.pushContext.getMetadataVersionCatalog()).getInfoByPath(n),a=i?.contentVersion;if(!i?.upgradeSupported||!a)return;let s=await Yc(o),c=this.getMetadataVersionSuggestionKind(s,a);return c?{path:n,currentVersion:s,targetVersion:a,metaType:i.metaType,kind:c}:void 0}catch(o){xe.debug(`push metadata suggestion check failed: ${n}`,o);return}}getMetadataVersionSuggestionKind(t,n){return zc(t,n)?"newer":Hc(t,n)?"older":void 0}getRequestTargetPath(t){return t.targetPath??t.path}};im();ft();F();_();$();J();D();Tr();var At=T("sync.reset"),Tl=class extends Ve{mirror=this.createMirrorStore();workspace=this.createWorkspaceStore(this.mirror);async execute(){At.info("reset start: {0}",this.createResetScopeLog()),this.task.start(100,{message:d("workspace.sync.progress.reset.running"),retainOnFinish:!0});let e=this.task.subTaskMonitor(8),t=this.task.subTaskMonitor(87),n=this.task.subTaskMonitor(3),o=this.task.subTaskMonitor(2);e.start(4),At.info("reset prepare start");let{targets:i,localChanges:a}=await this.prepareResetScope();e.step(1),At.info("reset targets resolved: {0}",this.formatTargetsForLog(i)),At.info("reset local changes checked: local={0}",a.length),a.length>0&&!this.options.force&&this.throwFirstConflict(a,"requiresOverwrite"),e.step(1);let s=this.expandTargetsForRenameChanges(i,a),c=s?this.sortRemotePathsForCheckout(wt(s)):this.sortRemotePathsForCheckout(await this.workspace.listProjectPaths());e.step(1),At.info("reset checkout target paths prepared: paths={0}",c.length),At.debug(`reset checkout target paths: ${c.join("|")}`);let l=await this.createCheckoutItems(c);e.step(1),At.info("reset checkout items prepared: items={0} resources={1}",l.length,l.reduce((g,m)=>g+m.total,0));for(let g of l)At.debug(`reset checkout item: remotePath=${g.remotePath} existsInMirror=${g.existsInMirror} total=${g.total}`);At.info("reset checkout start: items={0}",l.length);let p=await this.checkoutMirrorToWorkspace(l,t);At.info("reset checkout done: updated={0} deleted={1}",p.updated.length,p.deleted.length);let u=[...p.updated,...p.deleted];return n.start(1),At.info("reset cleanup status start"),await this.cleanupEmptyOrphanParents(p.deleted,this.mirror,this.workspace),u.length>0&&this.clearSyncStatusTargets(u),n.step(1),At.info("reset cleanup status done"),o.finish(),At.info("reset done: updated={0} deleted={1}",p.updated.length,p.deleted.length),this.task.setMessage(d("workspace.sync.progress.reset.done",p.updated.length,p.deleted.length)),this.task.finish(),p}createResetScopeLog(){return this.hasKnownChanges(this.options.changes)?`changes=${this.options.changes.length}`:this.options.paths?.join(", ")??"<all>"}async prepareResetScope(){if(this.hasKnownChanges(this.options.changes)){let t=this.options.changes.filter(ht);return{targets:this.getKnownChangeTargets(t),localChanges:t}}let e=await this.resolveTargetRemotePaths(this.options.paths,"mirror-only");return{targets:e,localChanges:this.filterChangesByTargets(this.getLocalSyncChanges(),e)}}formatTargetsForLog(e){return e?`targets=${e.size}`:"<all>"}async checkoutMirrorToWorkspace(e,t){let n=[],o=[];if(e.length===0)return t.finish(),{updated:n,deleted:o};t.start(e.reduce((a,s)=>a+s.total,0));let i=e.map(a=>({...a,task:t.subTaskMonitor(a.total)}));for(let a of i){t.throwIfAborted(),a.task.start(a.total);let s=Date.now();At.debug(`reset item start: remotePath=${a.remotePath} existsInMirror=${a.existsInMirror} total=${a.total}`),a.existsInMirror?(await this.workspace.checkoutFromMirror(a.remotePath,a.task),t.throwIfAborted(),n.push(a.remotePath)):(await this.workspace.deletePath(a.remotePath,a.task),t.throwIfAborted(),o.push(a.remotePath)),At.debug(`reset item done: remotePath=${a.remotePath} elapsed=${Date.now()-s}ms`)}return t.finish(),{updated:n,deleted:o}}async createCheckoutItems(e){return Promise.all(e.map(async t=>{let n=await this.mirror.exists(t);return{remotePath:t,existsInMirror:n,total:await this.countCheckoutTotal(t,n)}}))}async countCheckoutTotal(e,t){let n=await(t?this.workspace.countCheckoutResources(e):this.workspace.countResources([e]));return Math.max(n,1)}throwFirstConflict(e,t){let n=e[0];throw new Kt("err.sync.conflict",{remotePath:n.remotePath,reason:t})}sortRemotePathsForCheckout(e){return e.sort((t,n)=>t.localeCompare(n))}};var Im=E(require("fs")),ls=E(require("path"));$();F();J();D();ft();var RA=T("sync.restore-local"),Ml=class extends Ui{constructor(e,t){super(e,t)}async execute(){this.task.start(1,{message:d("workspace.sync.progress.restore.running")});let e=this.options.change,t=ls.join(this.workspaceRoot,".succapp",Vo,De(e.remotePath)),n=ls.join(this.workspaceRoot,e.path);try{this.task.throwIfAborted(),await Im.promises.mkdir(ls.dirname(n),{recursive:!0}),await Im.promises.copyFile(t,n)}catch(o){if(x(o))return RA.debug(`pull backup file does not exist: ${t}`),this.task.step(1),{restored:!1};throw o}return this.context.applySyncOperationResult(e,[{path:e.path,remotePath:e.remotePath,...e.fileId!==void 0?{fileId:e.fileId}:{},type:"modified",contentChanged:!0,metaChanged:!1}]),this.task.step(1),{restored:!0}}};var Bo=E(require("fs")),Yr=E(require("path"));F();D();$();ft();var ps=class extends Ut{async execute(){this.task.start(1,{message:d("workspace.sync.progress.backupList.running")});let e=await this.listEntries();return this.task.step(1),{workspaceRootPath:this.workspaceRoot,entries:e}}async listEntries(){let e=this.resolveFilterTargets(),t=await hk(this.workspaceRoot);return e.length===0?t:t.filter(n=>e.some(o=>re(n.path,o)))}resolveFilterTargets(){return(this.options.paths??[]).map(e=>bA(this.workspaceRoot,e))}},xl=class extends Ve{async execute(){this.task.start(1,{message:d("workspace.sync.progress.backupClear.running")});let e=await new ps(this.context,this.options).listEntries(),t=yk(this.workspaceRoot);if(!this.options.paths||this.options.paths.length===0)return await Bo.promises.rm(t,{recursive:!0,force:!0}),this.task.step(1),{workspaceRootPath:this.workspaceRoot,cleared:e,remaining:[]};for(let n of e)this.task.throwIfAborted(),await Bo.promises.rm(n.backupPath,{force:!0}),await EA(Yr.dirname(n.backupPath),t);return this.task.step(1),{workspaceRootPath:this.workspaceRoot,cleared:e,remaining:await hk(this.workspaceRoot)}}};async function hk(r){let e=yk(r);return(await gk(e,e)).sort((n,o)=>n.path.localeCompare(o.path))}async function gk(r,e){let t=await Bo.promises.readdir(e,{withFileTypes:!0}).catch(o=>{if(x(o))return[];throw o}),n=[];for(let o of t){let i=Yr.join(e,o.name);if(o.isDirectory()){n.push(...await gk(r,i));continue}if(!o.isFile())continue;let a=await Bo.promises.stat(i),s=Yr.relative(r,i).replace(/\\/g,"/");n.push({path:pe(s),backupPath:i,size:a.size,mtime:a.mtime.toISOString()})}return n}function bA(r,e){return pe(Vr(r,e)??e)}function yk(r){return Yr.join(r,".succapp",Vo)}async function EA(r,e){let t=r;for(;t!==e&&t.startsWith(e+Yr.sep);){if((await Bo.promises.readdir(t).catch(o=>{if(x(o))return[];throw o})).length>0)return;await Bo.promises.rmdir(t),t=Yr.dirname(t)}}J();D();_();F();$();ft();var eo=T("sync.remove-project"),Il=class extends Ve{mirror=this.createMirrorStore();workspace=this.createWorkspaceStore(this.mirror);async execute(){let e=[...new Set(this.options.projectNames.map(l=>kt(l)))];eo.info("remove local project start: {0}",e.join(", "));let[t,n]=await Promise.all([this.workspace.listProjectPaths(),this.mirror.listProjectPaths()]),o=new Set([...t,...n]),i=e.filter(l=>!o.has(l)).map(l=>l.slice(1));if(i.length>0)throw new ut("err.sync.projectNotFound",{projectNames:i.join(", ")});eo.info("remove local project resource count start: projects={0}",e.length);let a=await this.createRemoveItems(e);eo.info("remove local project resource count done: resources={0}",a.reduce((l,p)=>l+p.total,0)),this.task.start(Math.max(a.reduce((l,p)=>l+p.total,0),1),{message:d("workspace.sync.progress.removeProject.running"),retainOnFinish:!0}),a.length===0&&this.task.step(1),eo.info("remove local project files start: projects={0}",a.length);let s=a.map(l=>({...l,task:this.task.subTaskMonitor(l.total)}));for(let l of s)this.task.throwIfAborted(),l.task.start(l.total),await this.workspace.deletePath(l.projectPath,l.task),this.task.throwIfAborted(),await this.mirror.removePath(l.projectPath,l.task),this.task.throwIfAborted(),await this.mirror.removeMeta(l.projectPath);eo.info("remove local project files done: projects={0}",a.length);let c=e.map(l=>l.slice(1));return eo.info("remove local project cleanup status start"),this.clearSyncStatusTargets(e),eo.info("remove local project cleanup status done"),c.length>0&&this.context.notifyLocalProjectsChanged?.(),eo.info("remove local project done: {0}",c.join(", ")),this.task.setMessage(d("workspace.sync.progress.removeProject.done",c.length)),this.task.finish(),{projectNames:c}}async createRemoveItems(e){return Promise.all(e.map(async t=>{let[n,o]=await Promise.all([this.workspace.countResources([t]),this.mirror.countMetaResources([t])]);return{projectPath:t,total:Math.max(n+o,1)}}))}};var Ck=E(require("fs")),Sk=E(require("path"));ft();D();var Fl=class extends Ut{async execute(){this.task.start(1,{message:d("workspace.sync.progress.show.running")});let e=this.options.source??"server",t=await this.resolveRemotePath(this.options.path,e==="mirror"?"mirror-only":"server-backed"),n;if(e==="mirror"){let o=this.createMirrorStore();n=await Ck.promises.readFile(o.toLocalPath(t))}else n=(await(await this.getApiClient()).getFileContent(t,{revision:this.options.revision})).buffer;return this.task.step(1),{path:this.options.path,remotePath:t,fileName:Sk.basename(t),source:e,buffer:n}}};var Fm=E(require("fs"));ft();D();var Dl=3,TA=/\r\n|\n|\r/,Ol=class extends Ut{async execute(){let e=this.options.source??"server";this.task.start(Math.max(this.options.paths.length,1),{message:d("workspace.sync.progress.diff.running")});let t=await Promise.all(this.options.paths.map(async n=>{try{return this.task.throwIfAborted(),await this.diffFile(n,e)}finally{this.task.step()}}));return this.options.paths.length===0&&this.task.step(1),{source:e,items:t}}async diffFile(e,t){let n=await this.resolveRemotePath(e,t==="mirror"?"mirror-only":"server-backed"),o=this.createMirrorStore(),a=this.createWorkspaceStore(o).toLocalPath(n),[s,c]=await Promise.all([this.readSourceBuffer(n,t,o),Fm.promises.readFile(a)]),l=MA({sourceBuffer:s,workspaceBuffer:c,sourceLabel:`${t}:${n}`,workspaceLabel:`workspace:${n}`});return{path:e,remotePath:n,localPath:a,source:t,sourceSize:s.length,workspaceSize:c.length,changed:l.changed,binary:l.binary,patch:l.text}}async readSourceBuffer(e,t,n){return t==="mirror"?Fm.promises.readFile(n.toLocalPath(e)):(await(await this.getApiClient()).getFileContent(e)).buffer}};function MA(r){if(r.sourceBuffer.equals(r.workspaceBuffer))return{changed:!1,binary:Al(r.sourceBuffer)||Al(r.workspaceBuffer),text:""};if(Al(r.sourceBuffer)||Al(r.workspaceBuffer))return{changed:!0,binary:!0,text:[`diff --succapp ${r.sourceLabel} ${r.workspaceLabel}`,`Binary files ${r.sourceLabel} and ${r.workspaceLabel} differ`,""].join(`
|
|
65
|
-
`)};let e=
|
|
66
|
-
`)}function IA(r,e,t){let n=[];for(let o of t){let i=FA(r,e,o),a=n.at(-1);if(a&&i.oldStart<=a.oldEnd&&i.newStart<=a.newEnd){a.oldEnd=Math.max(a.oldEnd,i.oldEnd),a.newEnd=Math.max(a.newEnd,i.newEnd),a.patches.push(o);continue}n.push(i)}return n}function FA(r,e,t){let n=Math.max(0,t.buffer1.offset-Dl),o=Math.max(0,t.buffer2.offset-Dl);return{oldStart:n,oldEnd:Math.min(r.length,t.buffer1.offset+t.buffer1.length+Dl),newStart:o,newEnd:Math.min(e.length,t.buffer2.offset+t.buffer2.length+Dl),patches:[t]}}function DA(r,e){let t=[`@@ -${vk(r.oldStart,r.oldEnd-r.oldStart)} +${vk(r.newStart,r.newEnd-r.newStart)} @@`],n=r.oldStart;for(let o of r.patches){for(let i=n;i<o.buffer1.offset;i++)t.push(` ${e[i]}`);t.push(...o.buffer1.chunk.map(i=>`-${i}`)),t.push(...o.buffer2.chunk.map(i=>`+${i}`)),n=o.buffer1.offset+o.buffer1.length}for(let o=n;o<r.oldEnd;o++)t.push(` ${e[o]}`);return t}function vk(r,e){return e===0?`${r}`:e===1?`${r+1}`:`${r+1},${e}`}function kk(r){let e=r.toString("utf8");if(e.length===0)return[];let t=e.split(TA);return t.at(-1)===""&&t.pop(),t}function Al(r){return r.includes(0)}ft();D();var _l=class extends Ut{async execute(){this.task.start(1,{message:d("workspace.sync.progress.history.running")});let e=await this.resolveRemotePath(this.options.path,"server-backed"),n=await(await this.getApiClient()).getFileHistory(e,{limit:this.options.limit});return this.task.step(1),{path:this.options.path,remotePath:e,histories:n}}};ft();var Ll=class extends Ut{async execute(){return(await this.getApiClient()).getProjects()}};var wk=["workspace-settings","workspace-gitignore","workspace-agent-files"],Pk=["typescript-support","json-schema-support"],Rk=["succapp-docs-skill"],Nl=[...wk,...Pk],AA=["workspace-config",...Nl,...Rk],bk=["workspace-config",...Nl,"sync-baseline"],Dm={base:["workspace-config",...wk],dev:Pk,"agent-docs":Rk,all:AA};function _m(r,e){return new Om(r,e)}var Am=class{constructor(e,t){this.context=e;this.activeServerUrl=t}get root(){return this.context.root}get isConnected(){return this.context.isConnected}get eventBus(){return this.context.eventBus}get lockManager(){return this.context.lockManager}get lockWait(){return this.context.lockWait}get config(){return this.context.config}ensureConfigLoaded(){return this.context.ensureConfigLoaded()}async ensureActiveServerReady(){return this.activeServerUrl?this.activeServerUrl:this.context.ensureActiveServerReady()}startIdeRuntime(){return this.context.startIdeRuntime()}waitInitialized(){return this.context.waitInitialized()}addServer(e){return this.context.addServer(e)}verifyServerReachable(e){return this.context.verifyServerReachable(e)}removeServer(e){return this.context.removeServer(e)}changeServerUrl(e,t,n){return this.context.changeServerUrl(e,t,n)}switchActiveServer(e){return this.context.switchActiveServer(e)}listWorkspaceProjects(){return this.context.listWorkspaceProjects()}listBaselineProjects(e){return this.context.listBaselineProjects(e)}getMetaProjectLocalPath(e){return this.context.getMetaProjectLocalPath(e)}getMetaFileLocalPath(e){return this.context.getMetaFileLocalPath(e)}countWorkspaceFiles(e,t){return this.context.countWorkspaceFiles(e,t)}runMaintenance(e){return this.context.runMaintenance(e)}connect(e,t){return this.context.connect(e,t)}disconnect(){this.context.disconnect()}requireClient(){return this.context.requireServerClient()}requireServerClient(e){return this.context.requireServerClient(e)}resolveRemoteFilePath(e){return this.context.resolveRemoteFilePath(e)}getMirrorRoot(e=this.activeServerUrl){return this.context.getMirrorRoot(e)}createSyncService(){return _m(this)}getMetadataVersionCatalog(){return this.context.getMetadataVersionCatalog()}getSyncChanges(){return this.context.getSyncChanges()}getSyncSummary(){return this.context.getSyncSummary()}refreshSyncStatus(e){return this.context.refreshSyncStatus(e)}refreshSyncStatusState(e){return this.context.refreshSyncStatusState(e)}clearSyncStatusTargets(e){this.context.clearSyncStatusTargets(e)}notifyLocalProjectsChanged(){this.context.notifyLocalProjectsChanged?.()}applySyncOperationResult(e,t){this.context.applySyncOperationResult(e,t)}consumeFileChanges(e,t){return this.context.consumeFileChanges(e,t)}clearSyncStatus(){this.context.clearSyncStatus()}readTargetStatusSnapshot(e){return this.context.readTargetStatusSnapshot(e)}notifySyncStatusChanged(){this.context.notifySyncStatusChanged()}notifySyncStatusRefreshing(e,t){this.context.notifySyncStatusRefreshing(e,t)}isGitIgnored(e){return this.context.isGitIgnored(e)}dispose(){}};function Et(r,e){return new Am(r,e)}var Om=class{constructor(e,t){this.context=e;this.agentSource=t?.agentSource??Fn().source}agentSource;get config(){return{root:this.context.root}}async status(e={}){let t=Et(this.context,await this.context.ensureActiveServerReady());return new dl(t,e).execute()}async clone(e={}){let t=Et(this.context,await this.context.ensureActiveServerReady());return this.withWriteLock("clone",e.task,n=>new gl(t,{...e,task:n}).execute())}async pull(e={}){let t=Et(this.context,await this.context.ensureActiveServerReady());return this.withWriteLock("pull",e.task,n=>new vl(t,{...e,task:n}).execute())}async push(e={}){let t=Et(this.context,await this.context.ensureActiveServerReady());return this.withWriteLock("push",e.task,n=>new Rl(t,{...e,task:n}).execute())}async upgradeMetadata(e={}){let t=Et(this.context,await this.context.ensureActiveServerReady());return this.withWriteLock("upgradeMetadata",e.task,n=>new ts(t,{...e,task:n}).execute())}async reset(e={}){let t=Et(this.context,await this.context.ensureActiveServerReady());return this.withWriteLock("reset",e.task,n=>new Tl(t,{...e,task:n}).execute())}async restoreLocalChange(e){await this.context.ensureConfigLoaded();let t=Et(this.context,this.context.activeServerUrl);return this.withWriteLock("restoreLocalChange",e.task,n=>new Ml(t,{...e,task:n}).execute())}async listMergeBackups(e={}){await this.context.ensureConfigLoaded();let t=Et(this.context,this.context.activeServerUrl);return new ps(t,e).execute()}async clearMergeBackups(e={}){await this.context.ensureConfigLoaded();let t=Et(this.context,this.context.activeServerUrl);return this.withWriteLock("merge-backup clear",e.task,n=>new xl(t,{...e,task:n}).execute())}async removeProject(e){let t=Et(this.context,await this.context.ensureActiveServerReady());return this.withWriteLock("removeProject",e.task,n=>new Il(t,{...e,task:n}).execute())}async repairWorkspace(e={}){return this.context.runMaintenance({taskIds:e.checks??bk,explicitTaskIds:e.checks,dryRun:e.dryRun===!0,task:e.task})}async listWorkspaceProjects(){return await this.context.ensureConfigLoaded(),Et(this.context,this.context.activeServerUrl).listWorkspaceProjects()}async listBaselineProjects(){await this.context.ensureConfigLoaded();let e=Et(this.context,this.context.activeServerUrl);return e.listBaselineProjects(e.activeServerUrl)}async lsRemote(){let e=Et(this.context,await this.context.ensureActiveServerReady());return new Ll(e,{}).execute()}async show(e){let t=Et(this.context,await this.context.ensureActiveServerReady());return new Fl(t,e).execute()}async history(e){let t=Et(this.context,await this.context.ensureActiveServerReady());return new _l(t,e).execute()}async diff(e){let t=Et(this.context,await this.context.ensureActiveServerReady());return new Ol(t,e).execute()}localToMetaPath(e){return Vr(this.context.root,e)}isTrackedFile(e){return this.localToMetaPath(e)!==void 0}async withWriteLock(e,t,n,o=["sync"]){let i=t&&t!==nt.INSTANCE?t:new qn;return this.context.lockManager.withLock({scopes:o,command:e,source:this.agentSource,wait:this.context.lockWait},async a=>(i.setAbortSignal(bc(i.getAbortSignal(),a)),n(i)))}};tm();var Nm=E(require("fs")),qo=E(require("path"));J();var to=class{disposables=[];_disposed=!1;get disposed(){return this._disposed}add(e){return this.disposables.push(e),e}dispose(){if(!this._disposed){this._disposed=!0;for(let e of this.disposables.splice(0))e.dispose()}}};F();_();Z();xi();var Lm=T("workspace.config"),OA=".succapp/config.json",Ek="reloadConfigAfterFileChange";function ds(){return{version:2,servers:[],activeServerUrl:""}}function _A(r,e,t){let n=Ce(e),o=Ce(t);if(o===n)throw new R("err.workspace.sameServerUrl",{server:o});let i=r.find(a=>!Je(a,n)&&Je(a,o));if(i)throw new R("err.workspace.serverAlreadyExists",{duplicatedServer:i,server:o});return o}var Wl=class{constructor(e,t,n){this.workspaceRoot=e;this.eventBus=t;if(this.configPath=qo.join(e,".succapp","config.json"),t&&n){let o=this.disposables.add(n.createFileWatcher(e,OA));this.disposables.add(o.onFileChanged(i=>{this.isConfigFilePath(i.filePath)&&ki(this,Ek,50,async()=>{await this.reloadAfterFileChange().catch(a=>{Lm.warn(`reload workspace config after file change failed: ${this.configPath}`,a)})})}))}}disposables=new to;data=null;loaded=!1;configPath;get path(){return this.configPath}get(){return this.data??void 0}async load(){return vr(this,"load",()=>this.doLoad())}async ensureLoaded(){this.loaded||await this.load()}async reloadIfChanged(){return await vr(this,"reload",()=>this.doReloadIfChanged())===!0}async doReloadIfChanged(e=!1){let t=this.data!==null,n=pi(this.get()),o=await this.readConfigData(!e,e);if(o===void 0&&e){this.loaded=!0;return}this.data=o,this.loaded=!0;let i=t!==(this.data!==null)||!on(n??null,this.get()??null);return i&&this.fireConfigChanged(),i}async doLoad(){this.data=await this.readConfigData(),this.loaded=!0}async readConfigData(e=!0,t=!1){try{let n=await wS(this.configPath,{attempts:t?3:1,delayMs:50,ignoreParseError:e});return n?this.normalizeLoadedData(n):void 0}catch(n){if(x(n))return null;let o=n instanceof Error?n.message:String(n);e?Lm.warn(".succapp/config.json is corrupted, ignoring",o):Lm.debug(".succapp/config.json is not ready, will retry",o);return}}normalizeLoadedData(e){if(Array.isArray(e.servers)&&typeof e.activeServerUrl=="string"){let t=[];for(let s of e.servers){let c=Ce(s);t.some(l=>Je(l,c))||t.push(c)}let n=e.activeServerUrl?Ce(e.activeServerUrl):"",o=n?t.find(s=>Je(s,n)):void 0,i={version:e.version??2,servers:t,activeServerUrl:o??t[0]??""},a=Xt(e.serverVersion);return a&&(i.serverVersion=a),i}return ds()}async save(){if(!this.data)return;let e=qo.dirname(this.configPath);await Nm.promises.mkdir(e,{recursive:!0}),await Nm.promises.writeFile(this.configPath,JSON.stringify(this.data,null,2),"utf-8"),this.loaded=!0}async mutateAndSave(e){let t=this.data!==null,n=pi(this.get()),o=this.data?pi(this.data):this.data;e();try{await this.save()}catch(i){throw this.data=o,i}(t!==(this.data!==null)||!on(n??null,this.get()??null))&&this.fireConfigChanged()}async initialize(e){let t=Ce(e);await this.mutateAndSave(()=>{this.data={version:2,servers:[t],activeServerUrl:t}})}async ensureFile(){return await this.ensureLoaded(),this.data===null&&await this.mutateAndSave(()=>{this.data=ds()}),this.configPath}getServers(){return this.data?.servers??[]}getActiveServerUrl(){return this.data?.activeServerUrl??""}getServerVersion(){return this.data?.serverVersion}async setServerVersion(e){await this.ensureLoaded();let t=Xt(e);!t||this.data?.serverVersion===t||await this.mutateAndSave(()=>{let n=this.data??ds();n.serverVersion=t,this.data=n})}hasServer(e){return!!this.resolveServerUrl(e)}resolveServerUrl(e){let t=Ce(e);return this.getServers().find(n=>Je(n,t))}validateServerUrlChange(e,t){return _A(this.getServers(),e,t)}async addServer(e){await this.ensureLoaded();let t=Ce(e);await this.mutateAndSave(()=>{let n=this.data??ds();n.servers=n.servers??[];let o=n.servers.find(i=>Je(i,t));o||n.servers.push(t),n.activeServerUrl=o??t,this.data=n})}async removeServer(e){if(await this.ensureLoaded(),!this.data)return;let t=Ce(e);await this.mutateAndSave(()=>{let n=this.data;n.servers=n.servers.filter(o=>!Je(o,t)),Je(n.activeServerUrl,t)&&(n.activeServerUrl=n.servers[0]??"")})}async changeServerUrl(e,t){await this.ensureLoaded();let n=this.data;if(!n)throw new Error(`server not configured: ${e}`);let o=this.resolveServerUrl(e);if(!o)throw new Error(`server not configured: ${e}`);let i=this.validateServerUrlChange(o,t);return await this.mutateAndSave(()=>{n.servers=n.servers.map(a=>Je(a,o)?i:a),Je(n.activeServerUrl,o)&&(n.activeServerUrl=i),this.data=n}),i}async setActiveServerUrl(e){await this.ensureLoaded();let t=Ce(e);await this.mutateAndSave(()=>{let n=this.data??ds();n.servers=n.servers??[];let o=n.servers.find(i=>Je(i,t));o||n.servers.push(t),n.activeServerUrl=o??t,this.data=n})}get root(){return this.workspaceRoot}dispose(){wi(this,Ek),this.disposables.dispose()}fireConfigChanged(){this.eventBus?.fire(new et("workspace.config.changed",{root:this.workspaceRoot},this))}async reloadAfterFileChange(){await vr(this,"reload",()=>this.doReloadIfChanged(!0))===void 0&&await this.reloadIfChanged()}isConfigFilePath(e){return qo.resolve(e)===qo.resolve(this.configPath)}};F();J();D();No();es();J();var Tk=T("sync.auto"),Mk="autoPush",Ul=class{constructor(e,t,n){this.workspaceRoot=e;this.callbacks=n;this.disposables.push(t.on("workspace.file.changed",o=>{o.payload.root===this.workspaceRoot&&bt.autoPush&&this.scheduleAutoPush()}))}autoPullTimer;disposables=[];scheduleAutoPush(){bt.autoPush&&ki(this,Mk,bt.autoPushDelay,async()=>{bt.autoPush&&await this.callbacks.onAutoPush().catch(e=>Tk.error("auto push failed",e))})}cancelPendingAutoPush(){wi(this,Mk)}refreshAutoSync(){bt.autoPush||this.cancelPendingAutoPush(),this.startAutoPull()}startAutoPull(){this.stopAutoPull(),bt.autoPull&&(this.autoPullTimer=setInterval(()=>{this.callbacks.onAutoPull().catch(e=>Tk.error("auto pull failed",e))},bt.autoPullInterval*1e3))}stopAutoPull(){this.autoPullTimer&&(clearInterval(this.autoPullTimer),this.autoPullTimer=void 0)}dispose(){this.stopAutoPull(),this.cancelPendingAutoPush(),this.disposables.forEach(e=>e.dispose())}};$();Ge();Tr();J();var jl=class{constructor(e,t,n=()=>{}){this.id=e;this.target=t;this.publishResult=n;this.scope=t.kind==="all"?"all":"targets"}kind="clear";source="clear";scope;toResult(){return{kind:"clear",target:this.target}}async run(){return this.toResult()}publish(e){return this.publishResult(e)}};var us=E(require("path"));Ge();$();Tr();var dr=class{constructor(e,t){this.id=e;this.fileChanges=[...t.fileChanges],this.workspace=t.workspace,this.bulk=!!t.bulk,this.getChanges=t.getChanges,this.publishResult=t.publish??(()=>{})}kind="fileWatch";source="fileWatch";scope="targets";cancelled=!1;fileChanges;workspace;bulk;getChanges;publishResult;abort(){this.cancelled=!0}isCancelled(){return this.cancelled}merge(e){this.cancelled||e.length===0||this.fileChanges.push(...e)}mergeTask(e){this.merge(e.fileChanges),this.bulk=this.bulk||e.bulk}async run(){let e=this.workspace;if(this.cancelled||!e||this.fileChanges.length===0)return{kind:"noop"};if(this.bulk)return this.requestBulkLocalRefresh();let t=this.createFileChangeStatusTargets(e);if(this.cancelled||t.length===0)return{kind:"noop"};if(t.some(i=>i.isDotMeta))return this.requestLocalRefresh(t);let n=await Promise.all(t.map(i=>e.readTargetStatusSnapshot(i)));if(this.cancelled)return{kind:"noop"};if(this.shouldRefreshAllForFolderRenameRelatedTargets(t,n))return this.requestLocalRefresh(t);let o=this.createFastFileWatchChanges(e,n);return!o||this.shouldRefreshAllForFolderSubtreeBoundary(o)?this.requestLocalRefresh(t):{kind:"replaceTargets",targetRemotePaths:[...new Set(t.map(i=>i.remotePath))],changes:o,mode:"fileWatch"}}publish(e){if(!this.cancelled)return this.publishResult(e)}createFileChangeStatusTargets(e){let t=new Map;for(let n of this.fileChanges){let o=this.resolveFileChangeStatusTarget(e,n);o&&t.set(`${o.type}\0${o.remotePath}`,o)}return[...t.values()]}requestLocalRefresh(e){return{kind:"requestRefresh",scope:"local",source:"manual",rootRemotePath:this.createRefreshRootRemotePath(e)}}requestBulkLocalRefresh(){return{kind:"requestRefresh",scope:"local",source:"manual",rootRemotePath:void 0}}createRefreshRootRemotePath(e){let t=[...e.map(o=>o.remotePath),...this.getChanges().filter(ht).flatMap(o=>[o.remotePath,o.oldRemotePath])].filter(o=>!!o),n=dC(t);return n==="/"?void 0:n}resolveFileChangeStatusTarget(e,t){let n=Vr(e.root,t.filePath);if(!n)return;let o=us.posix.basename(n)===X,i=o?us.posix.dirname(n):n;return{filePath:o?us.dirname(t.filePath):t.filePath,remotePath:i,type:t.type,isDotMeta:o}}shouldRefreshAllForFolderRenameRelatedTargets(e,t){let n=this.getChanges().filter(i=>i.type==="renamed"&&!!i.isFolder&&!!i.oldRemotePath);if(n.length===0)return!1;let o=new Map(t.map(i=>[i.remotePath,i]));for(let i of e){let a=o.get(i.remotePath),s=a?.workspace.kind==="folder"||a?.mirror.kind==="folder";for(let c of n){let l=c.oldRemotePath;if(s&&(i.remotePath!==c.remotePath&&re(c.remotePath,i.remotePath)||i.remotePath!==l&&re(l,i.remotePath))||i.remotePath!==l&&re(i.remotePath,l))return!0;if(!(i.remotePath===c.remotePath||!re(i.remotePath,c.remotePath))&&(i.type==="deleted"||a?.workspace.fileId!==void 0||a?.mirror.fileId!==void 0))return!0}}return!1}createFastFileWatchChanges(e,t){if(t.some(s=>s.workspace.kind==="unknown"||s.mirror.kind==="unknown"))return;let n=this.createFastRenameChanges(t);if(!n)return;let o=new Set;for(let s of n)o.add(s.remotePath),s.oldRemotePath&&o.add(s.oldRemotePath);let i=[...n];for(let s of t){if(o.has(s.remotePath))continue;if(this.shouldRefreshForUnpairedIdentitySnapshot(s))return;let c=this.createFastChange(s);c&&i.push(c)}let a=new Map(t.map(s=>[s.remotePath,s]));return i.filter(s=>{if(s.type!=="added")return!0;let c=a.get(s.remotePath);return!c||c.workspace.fileId||c.mirror.fileId?!0:!e.isGitIgnored(s.remotePath)&&!qc(s.remotePath.replace(/^\//,""),bt.syncIgnore)})}shouldRefreshForUnpairedIdentitySnapshot(e){return e.workspace.kind!=="missing"&&e.mirror.kind==="missing"&&!e.workspace.fileId&&!!e.workspace.identity||e.workspace.kind==="missing"&&e.mirror.kind!=="missing"&&!e.mirror.fileId&&!!e.mirror.identity}shouldRefreshAllForFolderSubtreeBoundary(e){return e.some(t=>t.isFolder&&(t.type==="added"||t.type==="deleted"))}createFastRenameChanges(e){let t=e.filter(a=>a.workspace.kind==="missing"&&a.mirror.kind!=="missing"),n=e.filter(a=>a.workspace.kind!=="missing"&&a.mirror.kind==="missing");if(t.length===0||n.length===0)return[];if(t.length!==n.length)return;let o=[],i=new Set;for(let a of t){let s=a.mirror.identity;if(!s)return;let c=n.filter(p=>!i.has(p)&&p.workspace.identity===s);if(c.length!==1||a.mirror.kind==="folder"||c[0].workspace.kind==="folder")return;let l=c[0];i.add(l),o.push({path:this.toRelativePath(l.remotePath),remotePath:l.remotePath,...this.getFileIdProperty(l.workspace.fileId??a.mirror.fileId),oldPath:this.toRelativePath(a.remotePath),oldRemotePath:a.remotePath,type:"renamed",isFolder:!1,contentChanged:l.contentChanged,metaChanged:l.metaChanged})}if(!(i.size!==n.length||o.length!==t.length))return o}createFastChange(e){let t=e.workspace.kind,n=e.mirror.kind;if(!(t==="missing"&&n==="missing")){if(t!=="missing"&&n==="missing")return{path:this.toRelativePath(e.remotePath),remotePath:e.remotePath,...this.getFileIdProperty(e.workspace.fileId),type:"added",isFolder:t==="folder"};if(t==="missing"&&n!=="missing")return{path:this.toRelativePath(e.remotePath),remotePath:e.remotePath,...this.getFileIdProperty(e.mirror.fileId),type:"deleted",isFolder:n==="folder"};if(!(!e.contentChanged&&!e.metaChanged))return{path:this.toRelativePath(e.remotePath),remotePath:e.remotePath,...this.getFileIdProperty(e.workspace.fileId??e.mirror.fileId),type:"modified",isFolder:t==="folder",contentChanged:e.contentChanged,metaChanged:e.metaChanged}}}getFileIdProperty(e){return e===void 0?{}:{fileId:e}}toRelativePath(e){return e.replace(/^\//,"")}};Tr();var Vl=class{constructor(e,t,n=[],o=()=>{}){this.id=e;this.handledChange=t;this.remainingChanges=n;this.publishResult=o}kind="operationResult";source="operation";scope="targets";toResult(){return{kind:"replaceTargets",targetRemotePaths:rs(this.handledChange),changes:this.remainingChanges}}async run(){return this.toResult()}publish(e){return this.publishResult(e)}};var Bl=class{constructor(e,t){this.id=e;this.source=t.source,this.targetRemotePaths=[...t.targetRemotePaths],this.changes=[...t.changes],this.mode=t.mode,this.publishResult=t.publish??(()=>{})}kind="replaceTargets";source;scope="targets";targetRemotePaths;changes;mode;publishResult;toResult(){return{kind:"replaceTargets",targetRemotePaths:this.targetRemotePaths,changes:this.changes,mode:this.mode}}async run(){return this.toResult()}publish(e){return this.publishResult(e)}};qr();J();D();F();_();var hs=E(require("fs")),zl=E(require("path"));Ge();$();F();J();fn();qr();No();es();tr();var ms=E(require("fs")),fs=E(require("path")),dw=require("crypto"),uw=E(iw()),mw=E(sw());Ge();tt();$();F();fn();J();function $l(r){return{dev:r.dev,ino:r.ino,size:r.size,mtimeMs:r.mtimeMs,ctimeMs:r.ctimeMs}}var Gm="sha256",cw=".succapp/cache/inode-index.json",yO=.6,lw=2,CO=1e4,SO=20,pw=5*1024*1024,vO=80,kO=200,wO=8,PO=4,RO=64,bO=2,EO=500,TO=1e4,Be=T("sync.detector.workspace"),Hl=class{constructor(e){this.options=e;this.workspaceCachePath=fs.join(e.workspaceRoot,cw),this.mirrorCachePath=fs.join(e.remoteMirrorRoot,cw)}workspaceInodeCache=new Map;mirrorInodeCache=new Map;workspacePathToInode=new Map;mirrorPathToInode=new Map;workspaceCachePath;mirrorCachePath;workspaceInodeCacheDirty=!1;mirrorInodeCacheDirty=!1;workspaceFullScanInodeKeys=new Set;mirrorFullScanInodeKeys=new Set;workspaceFullScanRecorded=!1;mirrorFullScanRecorded=!1;projectCaches=new Map;pendingDigests=new Map;pendingSimilarity=new Map;async findInodeFileCandidates(e,t){let n=this.createOperationCache();await this.prefetchStats([...e,...t],n);let o=await this.groupFilesByInode(t,n),i=[];for(let a of e){let s=await this.getStatCached(a,n),c=s?this.getInodeKey(s):void 0;if(c)for(let l of o.get(c)??[])a.metaPath!==l.metaPath&&i.push({localEntry:a,remoteEntry:l,score:1,reason:"sameInode"})}return i}async findEqualFileCandidates(e,t){let n=this.createOperationCache();await this.prefetchStats([...e,...t],n);let o=await this.groupFilesBySize(t,n),i=[];for(let a of e){let s=await this.getStatCached(a,n);if(!s)continue;let c=o.get(s.size);if(!c)continue;let l;for(let p of c){let u=await this.compareByStat(a,p,n);if(u==="different")continue;if(u==="same"){i.push({localEntry:a,remoteEntry:p,score:1,reason:"sameContentHash"});continue}if(l??=await this.getContentDigest(a,n),!l)continue;(await this.getContentDigest(p,n))?.value===l.value&&i.push({localEntry:a,remoteEntry:p,score:1,reason:"sameContentHash"})}}return i}async findSimilarFileCandidates(e,t){let n={fileCandidateBuckets:0,fileComparableRefs:0,fileEstimatedPairs:0,fileComparedPairs:0,fileTopByLeft:0,fileTopByRight:0};if(e.length===0||t.length===0)return{candidates:[],stats:n};let o=this.createOperationCache(!0),i=this.groupSimilarityRightFiles(t),a=this.collectComparableEntries(e,i),s=this.estimateSimilarityPairs(e,i);n.fileCandidateBuckets=i.size,n.fileComparableRefs=a.size,n.fileEstimatedPairs=s;let c=Date.now();Be.debug("collect file similarity start localCandidates=%d remoteCandidates=%d buckets=%d comparableRefs=%d estimatedPairs=%d",e.length,t.length,i.size,a.size,s),await this.prefetchStats([...a.values()],o);let l=new Map,p=new Map,u=this.createSimilarityPairCursor(e,i),g=0,m=Array.from({length:Math.min(PO,Math.max(1,a.size))},async()=>{for(;;){let y=u();if(!y)return;let[C,v]=y;g++,n.fileComparedPairs++;let w=await this.compareSimilarityPair(C,v,o);w.score>=yO&&(this.addTopSimilarityCandidate(l,this.getEntryKey(w.left),w,lw),this.addTopSimilarityCandidate(p,this.getEntryKey(w.right),w,lw))}});await Promise.all(m),n.fileTopByLeft=l.size,n.fileTopByRight=p.size,Be.debug("collect file similarity compared elapsed=%dms comparedPairs=%d topByLeft=%d topByRight=%d",Date.now()-c,g,l.size,p.size);let h=new Set;for(let y of[l,p])for(let C of y.values())for(let v of C)h.add(v);return{candidates:[...h].sort((y,C)=>C.score-y.score).map(y=>({localEntry:y.left,remoteEntry:y.right,score:y.score,reason:y.score===1?"sameContentHash":"contentSimilarity"})),stats:n}}getEntryLocalPath(e){return ce(e.side==="workspace"?this.options.workspaceRoot:this.options.remoteMirrorRoot,e.metaPath)}getEntryKey(e){return e.side+"\0"+e.metaPath}async areEntriesEqual(e,t){let n=this.createOperationCache(),o=await this.compareByStat(e,t,n);if(o!=="unknown")return o;let[i,a]=await Promise.all([this.getContentDigest(e,n),this.getContentDigest(t,n)]);return!i||!a?"unknown":i.value===a.value?"same":"different"}async compareByStat(e,t,n){let[o,i]=await Promise.all([this.getStatCached(e,n),this.getStatCached(t,n)]);return!o||!i?"unknown":o.size!==i.size?"different":this.isSameInode(o,i)?"same":"unknown"}isSameInode(e,t){return!!e.dev&&!!t.dev&&!!e.ino&&!!t.ino&&e.dev===t.dev&&e.ino===t.ino}async getStatCached(e,t){if(e.stat)return e.stat;let n=this.getEntryKey(e),o=t.stats.get(n);if(o)return o;let i=this.readStat(e);return t.stats.set(n,i),i}async readStat(e){try{let t=await ms.promises.stat(this.getEntryLocalPath(e));return t.isFile()?$l(t):void 0}catch(t){if(!Ta(t))throw t;Be.debug("skip unreadable file stat: %s",this.getEntryLocalPath(e),t);return}}getContentDigest(e,t){let n=this.getEntryKey(e),o=t.digests.get(n);if(o)return o;let i=this.getContentDigestWithContext(e,t);return t.digests.set(n,i),i}async getContentDigestWithContext(e,t){let n=await this.getStatCached(e,t);if(!n)return;let o=this.getEntryKey(e),i=this.pendingDigests.get(o);if(i)return i;let a=this.getContentDigestNow(e,n,t).finally(()=>this.pendingDigests.delete(o));return this.pendingDigests.set(o,a),a}async getContentDigestNow(e,t,n){let o=this.getInodeKey(t);if(o){let a=this.getInodeCache(e.side).get(o);if(this.isMatchingInodeCacheEntry(a,t))return{algorithm:Gm,value:a.sha256,size:t.size,mtimeMs:t.mtimeMs,ctimeMs:t.ctimeMs,updatedAt:Date.now()}}try{let i={algorithm:Gm,value:await this.computeContentHash(e,t,n),size:t.size,mtimeMs:t.mtimeMs,ctimeMs:t.ctimeMs,updatedAt:Date.now()};if(o){let a=this.getInodeCache(e.side).get(o);this.rememberInodeCacheEntry(e,o,{sha256:i.value,tlsh:this.getReusableCachedTlsh(a,i.value),size:t.size,mtimeMs:t.mtimeMs,ctimeMs:t.ctimeMs})}return i}catch(i){if(!Ta(i))throw i;Be.debug("skip unreadable file digest: %s",this.getEntryLocalPath(e),i);return}}isMatchingInodeCacheEntry(e,t){return this.isCompleteInodeCacheEntry(e)&&this.isMatchingInodeCacheStat(e,t)}isMatchingInodeCacheStat(e,t){return e.size===t.size&&e.mtimeMs===t.mtimeMs&&e.ctimeMs===t.ctimeMs}isCompleteInodeCacheEntry(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.sha256=="string"&&t.sha256.length>0&&Number.isFinite(t.size)&&Number.isFinite(t.mtimeMs)&&Number.isFinite(t.ctimeMs)}getCachedTlsh(e){return typeof e.tlsh=="string"&&e.tlsh.length>0?e.tlsh:void 0}getReusableCachedTlsh(e,t){return e?.sha256===t?this.getCachedTlsh(e):void 0}async computeContentHash(e,t,n){let o=await this.getSmallFileContent(e,t,n);return o?o.contentHash:el(this.getEntryLocalPath(e))}async compareSimilarityPair(e,t,n){if(await this.compareByStat(e,t,n)==="same")return{left:e,right:t,score:1};let[i,a]=await Promise.all([this.getContentDigest(e,n),this.getContentDigest(t,n)]);if(i&&a&&i.value===a.value)return{left:e,right:t,score:1};let[s,c]=await Promise.all([this.getTlshProfile(e,n),this.getTlshProfile(t,n)]);if(!s||!c)return{left:e,right:t,score:0};let l=s.digest.calculateDifference(c.digest,!0);return l>vO?{left:e,right:t,score:0}:{left:e,right:t,score:Math.max(0,1-l/kO)}}getTlshProfile(e,t){let n=this.getEntryKey(e),o=t.profiles.get(n);if(o)return o;let i=this.getTlshProfileWithContext(e,t);return t.profiles.set(n,i),i}async getTlshProfileWithContext(e,t){let n=await this.getSimilarityDigest(e,t);if(!n)return;let o=this.buildTlshProfile(n);if(o)return o;Be.debug("repair invalid TLSH profile side=%s path=%s",e.side,e.metaPath);let i=await this.getStatCached(e,t);i&&await this.invalidateStat(e,i),await this.invalidateSimilarityDigest(e,t);let a=await this.getSimilarityDigest(e,t);if(a)return this.buildTlshProfile(a)}buildTlshProfile(e){try{let t=new mw.default().withHash(e).build();return t.calculateDifference(t,!0),{digest:t}}catch(t){Be.debug("skip invalid TLSH digest: %s",e,t);return}}async getSimilarityDigest(e,t){let n=await this.getStatCached(e,t);if(!n)return;let o=await this.getContentDigest(e,t);if(!o||o.size>pw)return;let i=ze(e.metaPath)??"/",a=i+"\0"+o.value,s=this.pendingSimilarity.get(a);if(s)return s;let c=this.getSimilarityDigestNow(i,e,o,n,t).finally(()=>this.pendingSimilarity.delete(a));return this.pendingSimilarity.set(a,c),c}async getSimilarityDigestNow(e,t,n,o,i){let a=await this.withProjectCache(e,async l=>l.similarity.get(n.value));if(a)return a.updatedAt=Date.now(),a.unsupported?void 0:a.tlsh;let s=this.getInodeKey(o);if(s){let p=this.getInodeCache(t.side).get(s);if(this.isMatchingInodeCacheEntry(p,o)){let u=this.getCachedTlsh(p);if(u){if(this.buildTlshProfile(u))return await this.withProjectCache(e,async g=>{g.similarity.set(n.value,{tlsh:u,size:n.size,updatedAt:Date.now()}),this.pruneState(g)}),u;Be.debug("drop invalid inode cached TLSH side=%s path=%s inode=%s",t.side,t.metaPath,s),this.invalidateStat(t,o)}}}let c=await this.computeTlshHash(t,o,i);if(await this.withProjectCache(e,async l=>{l.similarity.set(n.value,{tlsh:c.hash,unsupported:!c.hash,size:n.size,updatedAt:Date.now()}),this.pruneState(l)}),s){let l=this.getInodeCache(t.side).get(s);this.rememberInodeCacheEntry(t,s,{sha256:n.value,tlsh:c.hash,size:o.size,mtimeMs:o.mtimeMs,ctimeMs:o.ctimeMs})}return c.hash}async computeTlshHash(e,t,n){let o=await this.getSmallFileContent(e,t,n);if(o)return o.similarity;let i=await this.readTlshBuffer(e);return i?this.computeTlshHashFromBuffer(i):{cacheUnsupported:!1}}computeTlshHashFromBuffer(e){try{return{hash:(0,uw.default)(e.toString("latin1")),cacheUnsupported:!1}}catch(t){let n=t instanceof Error?t.message:String(t);return Be.debug("skip TLSH digest because hash library rejected buffer: %s",n),{cacheUnsupported:!1}}}async readTlshBuffer(e){try{return await ms.promises.readFile(this.getEntryLocalPath(e))}catch(t){if(!Ta(t))throw t;Be.debug("skip tlsh file read: %s",e.metaPath,t);return}}getSmallFileContent(e,t,n){if(!n.preferSmallFileBuffer||t.size>pw)return Promise.resolve(void 0);let o=this.getEntryKey(e),i=n.smallFiles.get(o);if(i)return i;let a=this.readSmallFileContent(e);return n.smallFiles.set(o,a),this.pruneOperationSmallFiles(n),a}pruneOperationSmallFiles(e){for(;e.smallFiles.size>RO;){let t=e.smallFiles.keys().next().value;if(t===void 0)return;e.smallFiles.delete(t)}}async readSmallFileContent(e){try{let t=await ms.promises.readFile(this.getEntryLocalPath(e));return{contentHash:(0,dw.createHash)(Gm).update(t).digest("hex"),similarity:this.computeTlshHashFromBuffer(t)}}catch(t){if(!Ta(t))throw t;Be.debug("skip unreadable small file: %s",this.getEntryLocalPath(e),t);return}}createOperationCache(e=!1){return{preferSmallFileBuffer:e,stats:new Map,digests:new Map,profiles:new Map,smallFiles:new Map}}async prefetchStats(e,t){let n=new it(wO);await Promise.all(e.map(o=>n.addTask(async()=>{await this.getStatCached(o,t)})))}async groupFilesBySize(e,t){let n=new Map;for(let o of e){let i=await this.getStatCached(o,t);if(!i)continue;let a=n.get(i.size);a||(a=[],n.set(i.size,a)),a.push(o)}return n}async groupFilesByInode(e,t){let n=new Map;for(let o of e){let i=await this.getStatCached(o,t),a=i?this.getInodeKey(i):void 0;if(!a)continue;let s=n.get(a);s||(s=[],n.set(a,s)),s.push(o)}return n}getInodeKey(e){return this.getInodeKeyString(e.dev,e.ino)}groupSimilarityRightFiles(e){let t=new Map;for(let n of e){let o=this.getSimilarityBucketKey(n),i=t.get(o);i?i.push(n):t.set(o,[n])}return t}getSimilarityBucketKey(e){return fs.posix.extname(e.metaPath).toLowerCase()}collectComparableEntries(e,t){let n=new Map,o=new Set;for(let i of e){let a=this.getSimilarityBucketKey(i),s=t.get(a);if(s?.length&&(n.set(this.getEntryKey(i),i),!o.has(a))){o.add(a);for(let c of s)n.set(this.getEntryKey(c),c)}}return n}createSimilarityPairCursor(e,t){let n=0,o=0,i,a=[];return()=>{for(;;){if(i&&o<a.length){let s=a[o++];if(i.metaPath!==s.metaPath)return[i,s];continue}if(n>=e.length)return;i=e[n++],o=0,a=t.get(this.getSimilarityBucketKey(i))??[]}}}addTopSimilarityCandidate(e,t,n,o){let i=e.get(t)??[];i.push(n),e.set(t,this.sortSimilarityCandidates(i).slice(0,o))}sortSimilarityCandidates(e){return[...e].sort((t,n)=>{let o=n.score-t.score;return o!==0?o:this.getEntryKey(t.left).localeCompare(this.getEntryKey(n.left))})}async withProjectCache(e,t){let n=this.pinProjectCache(e);try{return await t(n)}finally{n.activeCount--,this.enforceProjectCacheLimit()}}pinProjectCache(e){let t=this.projectCaches.get(e);return t||(t={lastAccessAt:Date.now(),activeCount:0,similarity:new Map},this.projectCaches.set(e,t)),t.lastAccessAt=Date.now(),t.activeCount++,this.enforceProjectCacheLimit(),t}enforceProjectCacheLimit(){for(;this.projectCaches.size>SO;)if(!this.evictOldestProjectCache())return}evictOldestProjectCache(){let e=[...this.projectCaches.entries()].filter(([,o])=>o.activeCount===0).sort((o,i)=>o[1].lastAccessAt-i[1].lastAccessAt)[0];if(!e)return!1;let[t,n]=e;return n.activeCount>0?!1:(this.projectCaches.delete(t),!0)}pruneState(e){return this.pruneMap(e.similarity,CO)}pruneMap(e,t){if(e.size<=t)return!1;let n=[...e.entries()].sort((o,i)=>i[1].updatedAt-o[1].updatedAt).slice(0,t);e.clear();for(let[o,i]of n)e.set(o,i);return!0}getInodeCache(e){return e==="workspace"?this.workspaceInodeCache:this.mirrorInodeCache}getPathToInode(e){return e==="workspace"?this.workspacePathToInode:this.mirrorPathToInode}markInodeCacheDirty(e){e==="workspace"?this.workspaceInodeCacheDirty=!0:this.mirrorInodeCacheDirty=!0}clearInodeCacheDirty(){this.workspaceInodeCacheDirty=!1,this.mirrorInodeCacheDirty=!1}rememberInodeCacheEntry(e,t,n){this.getInodeCache(e.side).set(t,n),this.getPathToInode(e.side).set(this.getEntryKey(e),t),this.markInodeCacheDirty(e.side)}async load(){await Promise.all([this.loadInodeCacheSide(this.workspaceCachePath,this.workspaceInodeCache,"workspace"),this.loadInodeCacheSide(this.mirrorCachePath,this.mirrorInodeCache,"mirror")])}recordFullScanEntries(e,t){this.workspaceFullScanInodeKeys.clear(),this.mirrorFullScanInodeKeys.clear(),this.collectFullScanInodeKeys(e,this.workspaceFullScanInodeKeys),this.collectFullScanInodeKeys(t,this.mirrorFullScanInodeKeys),this.workspaceFullScanRecorded=!0,this.mirrorFullScanRecorded=!0}collectFullScanInodeKeys(e,t){for(let n of e){if(n.isFolder||!n.stat)continue;let o=this.getInodeKey(n.stat);o&&t.add(o)}}async loadInodeCacheSide(e,t,n){try{let o=await this.readInodeCacheFile(e);if(!o)return;for(let[i,a]of Object.entries(o.files))t.set(i,a)}catch(o){Be.debug("skip %s inode cache: %s",n,e,o)}}async readInodeCacheFile(e){let t=await dn(e);if(!(!t||t.version!==1))return t}async flush(){if(Be.debug("workspace change detector flush inode caches called"),await Promise.all([this.pruneStaleEntries("workspace",this.workspacePathToInode,this.workspaceInodeCache,this.options.workspaceRoot),this.pruneStaleEntries("mirror",this.mirrorPathToInode,this.mirrorInodeCache,this.options.remoteMirrorRoot)]),this.pruneFullScanEntries("workspace",this.workspaceInodeCache,this.workspaceFullScanInodeKeys,this.workspaceFullScanRecorded),this.pruneFullScanEntries("mirror",this.mirrorInodeCache,this.mirrorFullScanInodeKeys,this.mirrorFullScanRecorded),!this.workspaceInodeCacheDirty&&!this.mirrorInodeCacheDirty)return;Be.debug("flush inode caches workspaceDirty=%s workspaceEntries=%d mirrorDirty=%s mirrorEntries=%d",this.workspaceInodeCacheDirty,this.workspaceInodeCache.size,this.mirrorInodeCacheDirty,this.mirrorInodeCache.size),await this.withInodeCacheWriteLock(async()=>{let t=[];this.workspaceInodeCacheDirty&&t.push(this.writeInodeCache(this.workspaceCachePath,this.workspaceInodeCache)),this.mirrorInodeCacheDirty&&t.push(this.writeInodeCache(this.mirrorCachePath,this.mirrorInodeCache)),await Promise.all(t)})?(this.clearInodeCacheDirty(),Be.debug("flushed inode caches workspaceEntries=%d mirrorEntries=%d",this.workspaceInodeCache.size,this.mirrorInodeCache.size)):Be.debug("skipped inode cache flush workspaceDirty=%s workspaceEntries=%d mirrorDirty=%s mirrorEntries=%d",this.workspaceInodeCacheDirty,this.workspaceInodeCache.size,this.mirrorInodeCacheDirty,this.mirrorInodeCache.size)}async withInodeCacheWriteLock(e){let t=this.options.lockManager;if(!t||t.isHeldLocally("inode-cache"))return await e(),!0;try{return await t.withLock({scopes:["inode-cache"],command:"flush-inode-cache",wait:1},async()=>e()),!0}catch(n){return n instanceof Co||n instanceof sn?(Be.debug("skip inode cache flush because cache lock is unavailable",n),!1):(Be.warn("skip inode cache flush because cache lock failed unexpectedly",n),!1)}}async pruneStaleEntries(e,t,n,o){if(t.size===0)return;let i=[];for(let[a,s]of t){let c=a.indexOf("\0"),l=a.slice(c+1),p=ce(o,l);try{let u=await ms.promises.stat(p);if(!u.isFile()){i.push(a);continue}let g=this.getInodeKeyString(u.dev,u.ino);(!g||g!==s)&&i.push(a)}catch(u){if(x(u)){Be.debug("mark stale inode cache entry: %s",a),i.push(a);continue}throw u}}if(i.length!==0){for(let a of i){let s=t.get(a);s&&n.delete(s),t.delete(a)}i.length>0&&this.markInodeCacheDirty(e)}}pruneFullScanEntries(e,t,n,o){if(!o)return;let i=0;for(let[s,c]of t)this.isCompleteInodeCacheEntry(c)||(t.delete(s),i++);if(i>0&&(this.markInodeCacheDirty(e),Be.debug("inode cache invalid cleanup side=%s removed=%d after=%d",e,i,t.size)),!this.shouldCleanupFullScanEntries(t,n))return;let a=0;for(let s of t.keys())n.has(s)||(t.delete(s),a++);a>0&&(this.markInodeCacheDirty(e),Be.debug("inode cache cleanup side=%s actual=%d removed=%d after=%d",e,n.size,a,t.size))}shouldCleanupFullScanEntries(e,t){let n=Math.max(t.size*bO,t.size+EO,TO);return e.size>n}getInodeKeyString(e,t){if(!(!e||!t))return`${e}:${t}`}invalidateStat(e,t){let n=this.getInodeKey(t);if(!n)return;let o=this.getInodeCache(e.side),i=this.getPathToInode(e.side);o.delete(n)&&this.markInodeCacheDirty(e.side),i.delete(this.getEntryKey(e))}async invalidateSimilarityDigest(e,t){let n=await this.getContentDigest(e,t);if(!n)return;let o=ze(e.metaPath)??"/";await this.withProjectCache(o,async i=>{i.similarity.delete(n.value)&&Be.debug("drop project similarity cache project=%s path=%s sha256=%s",o,e.metaPath,n.value.slice(0,12))})}async writeInodeCache(e,t){let n={version:1,files:Object.fromEntries(t)};try{await It(e,JSON.stringify(n))}catch(o){Be.debug("failed to write inode cache: %s",e,o)}}estimateSimilarityPairs(e,t){let n=0;for(let o of e)for(let i of t.get(this.getSimilarityBucketKey(o))??[])o.metaPath!==i.metaPath&&n++;return n}};var MO=.6,xO=.15,IO=8,FO=8,DO=8,fw=4096,AO=8,OO=64,_O=20,we=T("sync.detector.workspace"),Gl=class{detectRuns=0;durationMs=0;records=0;filteredRecords=0;resultChanges=0;suspectMetaPaths=0;changes=0;matchedLocal=0;matchedRemote=0;matchedLocalFiles=0;matchedRemoteFiles=0;availableLocalFiles=0;availableRemoteFiles=0;pendingSamePath=0;local={entries:0,files:0,folders:0,trackedFiles:0,trackedFolders:0};remote={entries:0,files:0,folders:0,trackedFiles:0,trackedFolders:0};stages={};similarity={fileLocalCandidates:0,fileRemoteCandidates:0,fileCandidateBuckets:0,fileComparableRefs:0,fileEstimatedPairs:0,fileComparedPairs:0,pendingSamePathPairs:0,skippedPendingSamePathLocalCandidates:0,skippedPendingSamePathRemoteCandidates:0,fileTopByLeft:0,fileTopByRight:0,stableFileCandidates:0,acceptedFileCandidates:0};startRun(){return this.detectRuns++,Date.now()}finishRun(e){this.durationMs+=Date.now()-e}createSnapshot(){return{detectRuns:this.detectRuns,durationMs:this.durationMs,records:this.records,filteredRecords:this.filteredRecords,resultChanges:this.resultChanges,suspectMetaPaths:this.suspectMetaPaths,changes:this.changes,matchedLocal:this.matchedLocal,matchedRemote:this.matchedRemote,matchedLocalFiles:this.matchedLocalFiles,matchedRemoteFiles:this.matchedRemoteFiles,availableLocalFiles:this.availableLocalFiles,availableRemoteFiles:this.availableRemoteFiles,pendingSamePath:this.pendingSamePath,local:{...this.local},remote:{...this.remote},stages:Object.fromEntries(Object.entries(this.stages).map(([e,t])=>[e,{...t}])),similarity:{...this.similarity}}}describeForLog(){return`
|
|
67
|
-
`+JSON.stringify(this.createSnapshot(),null,2).replace(/^\{\n/,"").replace(/\n\}$/,"")}},Kl=class{constructor(e){this.options=e;let t=e.workspace;this.workspaceRoot=t.root,this.remoteMirrorRoot=t.getMirrorRoot(),this.task=e.task??nt.INSTANCE,this.mirror=new Rt(this.remoteMirrorRoot),this.workspaceStore=new pr(this.workspaceRoot,this.mirror),this.fingerprint=new Hl({workspaceRoot:this.workspaceRoot,remoteMirrorRoot:this.remoteMirrorRoot,lockManager:t.lockManager}),this.rootRemotePath=this.normalizeRootRemotePath(e.rootRemotePath)}task;fingerprint;rootRemotePath;mirror;workspaceStore;workspaceRoot;remoteMirrorRoot;diagnostics=new Gl;currentMatchPhase="idle";mirrorProjectPresence=new Map;reportedProblemKeys=new Set;reportedProblemEventCount=0;baselineProblems=[];throwIfAborted(){this.options.signal?.throwIfAborted(),this.task.throwIfAborted()}normalizeRootRemotePath(e){if(!e)return"";let t=pe(e);return t==="/"?"":t}async detect(){let e=Date.now();this.resetProblemReports();let t=this.diagnostics.startRun();we.debug(`detect start workspace=${this.workspaceRoot} mirror=${this.remoteMirrorRoot}`),this.throwIfAborted();let n=Date.now();await this.fingerprint.load(),we.debug(`load inode cache done elapsed=${Date.now()-n}ms`);let o=new Set;n=Date.now();let i=await this.detectRecords(o);this.diagnostics.records=i.length,this.diagnostics.suspectMetaPaths=o.size,we.debug(`detect records done elapsed=${Date.now()-n}ms records=${i.length} suspectMeta=${o.size}`),this.throwIfAborted(),n=Date.now(),await this.fingerprint.flush(),we.debug(`flush inode cache done elapsed=${Date.now()-n}ms`);let a=i.filter(c=>c.kind!=="localOnly"||!this.isIgnoredUntrackedLocal(c));this.diagnostics.filteredRecords=a.length;let s=new Array(a.length);return n=Date.now(),await qa(a.map((c,l)=>({change:c,index:l})),DO,async c=>{s[c.index]=await this.toSyncFileChange(c.change)}),this.diagnostics.resultChanges=s.length,we.debug(`create sync changes done elapsed=${Date.now()-n}ms filteredRecords=${a.length} changes=${s.length}`),this.finishRunDiagnostics(t),we.debug(`detect diagnostics ${this.diagnostics.describeForLog()}`),we.debug(`detect done elapsed=${Date.now()-e}ms changes=${s.length} suspectMeta=${o.size}`),{changes:s,suspectMetaPaths:[...o].sort(),baselineProblems:[...this.baselineProblems]}}resetProblemReports(){this.reportedProblemKeys.clear(),this.reportedProblemEventCount=0,this.baselineProblems.length=0}getDiagnostics(e={}){let t=this.diagnostics.createSnapshot();return e.reset&&this.resetDiagnostics(),t}finishRunDiagnostics(e){this.diagnostics.finishRun(e)}resetDiagnostics(){this.diagnostics=new Gl}async withMatchPhase(e,t){let n=this.currentMatchPhase;this.currentMatchPhase=e;try{return await t()}finally{this.currentMatchPhase=n}}withMatchPhaseSync(e,t){let n=this.currentMatchPhase;this.currentMatchPhase=e;try{return t()}finally{this.currentMatchPhase=n}}async flush(){await this.fingerprint.flush()}async detectRecords(e){let t=Date.now(),[n,o]=await Promise.all([this.scan(this.workspaceRoot,"workspace",e),this.scan(this.remoteMirrorRoot,"mirror",new Set)]);this.rootRemotePath===""&&this.fingerprint.recordFullScanEntries(n.values(),o.values()),we.debug(`scan both sides done elapsed=${Date.now()-t}ms localEntries=${this.diagnostics.local.entries} localFiles=${this.diagnostics.local.files} localFolders=${this.diagnostics.local.folders} localTrackedFiles=${this.diagnostics.local.trackedFiles} localTrackedFolders=${this.diagnostics.local.trackedFolders} remoteEntries=${this.diagnostics.remote.entries} remoteFiles=${this.diagnostics.remote.files} remoteFolders=${this.diagnostics.remote.folders} remoteTrackedFiles=${this.diagnostics.remote.trackedFiles} remoteTrackedFolders=${this.diagnostics.remote.trackedFolders} suspectMeta=${e.size}`),this.throwIfAborted();let i=new Map,a=this.filterOutIgnoredMirrorResidues(o,this.indexIgnoredMirrorResidues(n,o)),s=this.rootRemotePath===""?this.collectBaselineMissingLocalEntries(n,a):[],l={local:this.filterOutBaselineMissingLocalEntries(n,s),remote:a,matchedLocal:new Set,matchedRemote:new Set,changes:[]},p=Date.now(),u=this.getPipelineStats();await this.withMatchPhase("matchById",()=>this.matchById(l,i)),this.logDetectPhase("matchById",p,u),this.throwIfAborted(),p=Date.now(),u=this.getPipelineStats(),await this.withMatchPhase("matchByPath",()=>this.matchByPath(l,i)),this.logDetectPhase("matchByPath",p,u),this.throwIfAborted(),p=Date.now(),u=this.getPipelineStats(),await this.withMatchPhase("matchRenamesByInode",()=>this.matchRenamesByInode(l,i)),this.logDetectPhase("matchRenamesByInode",p,u),this.throwIfAborted(),p=Date.now(),u=this.getPipelineStats(),await this.withMatchPhase("matchRenamesByHash",()=>this.matchRenamesByHash(l,i)),this.logDetectPhase("matchRenamesByHash",p,u),this.throwIfAborted(),p=Date.now(),u=this.getPipelineStats(),await this.withMatchPhase("matchRenamesBySimilarity",()=>this.matchRenamesBySimilarity(l,i)),this.logDetectPhase("matchRenamesBySimilarity",p,u),this.throwIfAborted(),p=Date.now(),u=this.getPipelineStats(),this.withMatchPhaseSync("flushPendingSamePathChanges",()=>this.flushPendingSamePathChanges(l,i)),this.logDetectPhase("flushPendingSamePathChanges",p,u),p=Date.now(),await this.addBaselineMissingLocalChanges(l,s);for(let g of l.local.values())if(!l.matchedLocal.has(g.metaPath)){if(g.isFolder&&!g.hasMeta||!await this.isScannedEntryStillPresent(this.workspaceRoot,g))continue;this.addChange(l,{kind:"localOnly",metaPath:g.metaPath,localPath:g.metaPath,fileId:g.meta?.id,isFolder:g.isFolder,hasMeta:g.hasMeta})}for(let g of l.remote.values())if(!l.matchedRemote.has(g.metaPath)){if(!g.hasMeta)continue;this.addChange(l,{kind:"remoteOnly",metaPath:g.metaPath,remotePath:g.metaPath,fileId:g.meta?.id,isFolder:g.isFolder,hasMeta:g.hasMeta})}return we.debug(`collect unmatched entries done elapsed=${Date.now()-p}ms changes=${this.diagnostics.changes} matchedLocal=${this.diagnostics.matchedLocal} matchedRemote=${this.diagnostics.matchedRemote} availableLocalFiles=${this.diagnostics.availableLocalFiles} availableRemoteFiles=${this.diagnostics.availableRemoteFiles} totalLocalFiles=${this.diagnostics.local.files} totalRemoteFiles=${this.diagnostics.remote.files}`),l.changes}logDetectPhase(e,t,n){let o=this.getPipelineStats(),i={...o,elapsedMs:Date.now()-t,changeDelta:o.changes-n.changes,matchedLocalDelta:o.matchedLocal-n.matchedLocal,matchedRemoteDelta:o.matchedRemote-n.matchedRemote,matchedLocalFileDelta:o.matchedLocalFiles-n.matchedLocalFiles,matchedRemoteFileDelta:o.matchedRemoteFiles-n.matchedRemoteFiles,pendingDelta:o.pendingSamePath-n.pendingSamePath};this.diagnostics.stages[e]=i,we.debug(`${e} done elapsed=${i.elapsedMs}ms inputLocalFiles=${n.availableLocalFiles} inputRemoteFiles=${n.availableRemoteFiles} matchedLocalFileDelta=${i.matchedLocalFileDelta} matchedRemoteFileDelta=${i.matchedRemoteFileDelta} changeDelta=${i.changeDelta} pendingDelta=${i.pendingDelta} remainingLocalFiles=${i.availableLocalFiles} remainingRemoteFiles=${i.availableRemoteFiles}`)}getPipelineStats(){return{changes:this.diagnostics.changes,matchedLocal:this.diagnostics.matchedLocal,matchedRemote:this.diagnostics.matchedRemote,matchedLocalFiles:this.diagnostics.matchedLocalFiles,matchedRemoteFiles:this.diagnostics.matchedRemoteFiles,availableLocalFiles:this.diagnostics.availableLocalFiles,availableRemoteFiles:this.diagnostics.availableRemoteFiles,pendingSamePath:this.diagnostics.pendingSamePath}}async isScannedEntryStillPresent(e,t){let n=ce(e,t.metaPath);try{let o=await hs.promises.stat(n);return t.isFolder?o.isDirectory():o.isFile()}catch(o){if(x(o))return we.debug(`skip disappeared sync scan entry: ${n}`),!1;throw o}}async scan(e,t,n){let o=Date.now();we.debug(`scan start side=${t} root=${e} scope=${this.rootRemotePath||"/"}`);let i=new Map;if(!await this.shouldScanScopedProject(t))return we.warn(`skip sync scan scope because baseline project is missing: side=${t} scope=${this.rootRemotePath}`),i;let a=new it(IO),s=new it(FO),c=0,l=!1;return await new Promise((p,u)=>{let g=()=>{c--,c===0&&p()},m=y=>{l||(l=!0,a.cancel(y),s.cancel(y),u(y))},h=(y,C=!1,v=!1)=>{this.throwIfAborted(),c++,a.addTask(async()=>{await this.walk(e,t,y,i,n,h,s,C,v)}).then(g,m)};h(this.rootRemotePath)}),await Promise.all([a.waitAll(),s.waitAll()]),we.debug(`scan done side=${t} elapsed=${Date.now()-o}ms entries=${this.getSideStats(t).entries} files=${this.getSideStats(t).files} folders=${this.getSideStats(t).folders} trackedFiles=${this.getSideStats(t).trackedFiles} trackedFolders=${this.getSideStats(t).trackedFolders} suspectMeta=${n.size}`),new Map([...i].sort(([p],[u])=>p.localeCompare(u)))}async shouldScanScopedProject(e){if(this.rootRemotePath==="")return!0;let t=ze(this.rootRemotePath);return t?this.shouldScanProject(e,t):!0}async shouldScanTopLevelProject(e,t){return this.shouldScanProject(e,t)}async shouldScanProject(e,t){return await this.isCloneInProgressProject(t)?(we.debug(`skip clone in-progress project during workspace scan: side=${e} project=${t}`),!1):e==="workspace"?this.hasMirrorProject(t):!0}async isCloneInProgressProject(e){return(await Promise.all([this.workspaceStore.isCloneInProgress(e),this.mirror.isCloneInProgress(e)])).some(Boolean)}async hasMirrorProject(e){let t=this.mirrorProjectPresence.get(e);if(t!==void 0)return t;let n=ce(this.remoteMirrorRoot,e),o=!1;try{o=(await hs.promises.stat(n)).isDirectory()}catch(i){if(!x(i))throw i}return this.mirrorProjectPresence.set(e,o),o||this.reportProblemOnce(new Ea(this.workspaceRoot,"sync.missingBaselineProject",{projectPaths:[e],count:1})),o}reportProblemOnce(e){let t=[e.code,...e.projectPaths??[]].join("|");if(!this.reportedProblemKeys.has(t)){if(this.reportedProblemEventCount>=AO){we.warn(`skip workspace problem event because limit reached: ${e.message}`);return}this.reportedProblemKeys.add(t),this.reportedProblemEventCount++,this.baselineProblems.push(e),we.warn(`workspace problem reported code=${e.code} root=${e.root} projects=${e.projectPaths?.join(",")??""} count=${e.count??""}`),this.options.workspace.eventBus.fireAsync(new et("workspace.problem.reported",e,this)).catch(n=>we.warn(`workspace problem event listener failed: ${n instanceof Error?n.message:String(n)}`))}}async walk(e,t,n,o,i,a,s,c,l){let p;try{p=await hs.promises.readdir(ce(e,n||"/"),{withFileTypes:!0})}catch(h){if(x(h)){we.debug(`skip unreadable sync scan directory: ${e}:${n||"/"}`);return}throw h}let u=await this.readDirectoryDotMeta(e,n,i),g=new Set,m=[];for(let h of p){if(this.throwIfAborted(),n===""&&h.name.startsWith(".")||h.name===X)continue;g.add(h.name);let y=n+"/"+h.name,C=ce(e,y);if(!(n===""&&!h.isDirectory())){if(n===""&&h.isDirectory()&&await this.isCloneInProgressProject(y)){we.debug(`skip clone in-progress root project during workspace scan: side=${t} project=${y}`);continue}if(n===""&&h.isDirectory()&&u.dotMeta[h.name]&&!await this.shouldScanTopLevelProject(t,y)){we.warn(`skip sync scan project without opposite side baseline: side=${t} project=${y}`);continue}if(n===""&&!u.dotMeta[h.name]){a(y,!0,t==="mirror");continue}if(h.isDirectory()){let v=u.dotMeta[h.name];if(!v){if(c){a(y,!0,l||t==="mirror");continue}i.add(u.metaPath)}this.addSnapshotEntry(o,{metaPath:y,side:t,isFolder:!0,meta:v,hasMeta:!!v,underUnregisteredMirrorDirectory:l}),a(y,!1,l||t==="mirror"&&!v)}else h.isFile()&&m.push(s.addTask(async()=>{let v;try{v=await hs.promises.stat(C)}catch(w){if(x(w)){we.debug(`skip unreadable sync scan file stat: ${C}`);return}throw w}c&&!u.dotMeta[h.name]||(this.addSnapshotEntry(o,{metaPath:y,side:t,isFolder:!1,contentSize:v?.size,stat:v?$l(v):void 0,meta:u.dotMeta[h.name],hasMeta:!!u.dotMeta[h.name],underUnregisteredMirrorDirectory:l}),u.dotMeta[h.name]||i.add(u.metaPath))}))}}await Promise.all(m);for(let h of Object.keys(u.dotMeta))g.has(h)||i.add(u.metaPath)}addSnapshotEntry(e,t){if(e.has(t.metaPath)){e.set(t.metaPath,t);return}e.set(t.metaPath,t);let n=this.getSideStats(t.side);n.entries++,t.isFolder?(n.folders++,t.hasMeta&&n.trackedFolders++):(n.files++,t.hasMeta&&n.trackedFiles++),this.refreshAvailableFileStats()}getSideStats(e){return e==="workspace"?this.diagnostics.local:this.diagnostics.remote}async readDirectoryDotMeta(e,t,n){let o=this.getDotMetaMetaPath(t),i=await br(e,o);return(!i.exists||!i.readable||i.damaged)&&n.add(o),{metaPath:o,parentPath:t||"/",exists:i.exists,readable:i.readable,damaged:i.damaged,dotMeta:i.dotMeta}}getDotMetaMetaPath(e){return!e||e==="/"?"/"+X:e+"/"+X}getAvailableFiles(e,t){return[...e.values()].filter(n=>!n.isFolder&&!t.has(n.metaPath))}isIgnoredUntrackedLocal(e){if(e.hasMeta)return!1;let t=De(e.metaPath);return this.options.workspace.isGitIgnored(e.metaPath)||qc(t,this.options.ignore??bt.syncIgnore)}async matchById(e,t){let n=this.indexById(e.local),o=this.indexRemoteByIdForWorkspaceRename(e.remote,e.local),i=[];for(let a of n.values()){let s=a.meta?.id;if(!s)continue;let c=o.get(s);if(!(!c||e.matchedRemote.has(c.metaPath))){if(!a.isFolder&&!c.isFolder){i.push({localEntry:a,remoteEntry:c});continue}await this.addComparisonOrPending(e,a,c,t),await this.matchChildrenAfterFolderRename(e,a,c)}}await this.addComparisonsOrPending(e,i,t)}async matchByPath(e,t){let n=[];for(let o of e.local.values()){if(e.matchedLocal.has(o.metaPath))continue;let i=e.remote.get(o.metaPath);if(!(!i||e.matchedRemote.has(i.metaPath))){if(!o.isFolder&&!i.isFolder){n.push({localEntry:o,remoteEntry:i});continue}await this.addComparisonOrPending(e,o,i,t)}}await this.addComparisonsOrPending(e,n,t)}async matchRenamesByInode(e,t){let n=this.pickStableSimilarityCandidates(await this.collectFileInodeCandidates(e));for(let o of n)e.matchedLocal.has(o.localEntry.metaPath)||e.matchedRemote.has(o.remoteEntry.metaPath)||this.isUnsafePendingSamePathRenameSteal(o,t,n)||await this.addRename(e,o,t)}async matchRenamesByHash(e,t){let n=this.pickStableSimilarityCandidates(await this.collectFolderExactCandidates(e)).sort((i,a)=>i.localEntry.metaPath.length-a.localEntry.metaPath.length);for(let i of n)e.matchedLocal.has(i.localEntry.metaPath)||e.matchedRemote.has(i.remoteEntry.metaPath)||this.isUnsafePendingSamePathRenameSteal(i,t,n)||(await this.addRename(e,i,t),await this.matchChildrenAfterFolderRename(e,i.localEntry,i.remoteEntry));let o=this.pickStableSimilarityCandidates(await this.collectFileEqualCandidates(e));for(let i of o)e.matchedLocal.has(i.localEntry.metaPath)||e.matchedRemote.has(i.remoteEntry.metaPath)||this.isUnsafePendingSamePathRenameSteal(i,t,o)||(await this.addRename(e,i,t),await this.matchChildrenAfterFolderRename(e,i.localEntry,i.remoteEntry))}async matchRenamesBySimilarity(e,t){let n=Date.now(),o=this.pickStableSimilarityCandidates(await this.collectFolderSimilarityCandidates(e));we.debug(`similarity folder candidates done elapsed=${Date.now()-n}ms candidates=${o.length}`);for(let c of o)e.matchedLocal.has(c.localEntry.metaPath)||e.matchedRemote.has(c.remoteEntry.metaPath)||this.isUnsafePendingSamePathRenameSteal(c,t,o)||(await this.addRename(e,c,t),await this.matchChildrenAfterFolderRename(e,c.localEntry,c.remoteEntry));n=Date.now();let i=this.pickStableSimilarityCandidates(await this.collectFileSimilarityCandidates(e,t));if(this.diagnostics.similarity.stableFileCandidates=i.length,we.debug(`similarity file candidates done elapsed=${Date.now()-n}ms candidates=${i.length}`),i.length===0)return;n=Date.now();let a=await this.collectFileEqualCandidates(e);we.debug(`similarity equal candidates done elapsed=${Date.now()-n}ms candidates=${a.length}`);let s=0;for(let c of i)e.matchedLocal.has(c.localEntry.metaPath)||e.matchedRemote.has(c.remoteEntry.metaPath)||this.isUnsafePendingSamePathRenameSteal(c,t,i)||this.isSafeFileSimilarityPair(a,c)&&(await this.addRename(e,c,t),s++);we.debug(`similarity apply file candidates done accepted=${s} changes=${e.changes.length}`),this.diagnostics.similarity.acceptedFileCandidates=s}async collectFileInodeCandidates(e){let{localEntries:t,remoteEntries:n}=this.getContentCandidateFiles(e);return this.fingerprint.findInodeFileCandidates(t,n)}async collectFileEqualCandidates(e){let{localEntries:t,remoteEntries:n}=this.getContentCandidateFiles(e);return this.fingerprint.findEqualFileCandidates(t,n)}async collectFolderExactCandidates(e){let t=[];for(let n of e.local.values())if(!(!n.isFolder||e.matchedLocal.has(n.metaPath)||this.isIgnoredUntrackedLocal(n)))for(let o of e.remote.values())!o.isFolder||e.matchedRemote.has(o.metaPath)||n.metaPath!==o.metaPath&&await this.areFolderSubtreesEqual(e.local,e.remote,n,o)&&t.push({localEntry:n,remoteEntry:o,score:1,reason:"folderContentHash"});return t}async areFolderSubtreesEqual(e,t,n,o){let i=this.getFolderDescendantsByRelativePath(e,n),a=this.getFolderDescendantsByRelativePath(t,o);if(i.size!==a.size)return!1;for(let[s,c]of i){let l=a.get(s);if(!l||c.isFolder!==l.isFolder)return!1;if(c.isFolder)continue;if(await this.fingerprint.areEntriesEqual(c,l)!=="same")return!1}return!0}getFolderDescendantsByRelativePath(e,t){let n=new Map;for(let o of e.values())o.metaPath===t.metaPath||!re(o.metaPath,t.metaPath)||n.set(o.metaPath.slice(t.metaPath.length+1),o);return n}async collectFileSimilarityCandidates(e,t){let{localEntries:n,remoteEntries:o}=this.getContentCandidateFiles(e),i=0;if(t?.size&&(i=this.estimatePendingSamePathSimilarityPairs(n,o,t),this.diagnostics.similarity.pendingSamePathPairs=i,t.size<2||i>fw)){let c=n.length,l=o.length;n=n.filter(u=>!t.has(u.metaPath)),o=o.filter(u=>!t.has(u.metaPath)),this.diagnostics.similarity.skippedPendingSamePathLocalCandidates=c-n.length,this.diagnostics.similarity.skippedPendingSamePathRemoteCandidates=l-o.length;let p=t.size<2?"singlePendingSamePath":"pendingPairBudget";we.debug(`skip pending same-path similarity candidates pendingSamePath=${t.size} pendingPairs=${i} maxPairs=${fw} skippedLocal=${c-n.length} skippedRemote=${l-o.length}`);for(let u of t.values())this.logFileFlow("skip similarity",{path:u.localEntry.metaPath,remotePath:u.remoteEntry.metaPath,fileId:this.getEntryFileId(u.localEntry,u.remoteEntry),reason:p,pendingPairs:i})}if(this.diagnostics.similarity.fileLocalCandidates=n.length,this.diagnostics.similarity.fileRemoteCandidates=o.length,n.length===0||o.length===0)return[];let{candidates:a,stats:s}=await this.fingerprint.findSimilarFileCandidates(n,o);return Object.assign(this.diagnostics.similarity,s),a}estimatePendingSamePathSimilarityPairs(e,t,n){let o=new Map,i=new Set,a=c=>{let l=this.getSimilarityBucketKey(c),p=o.get(l);return p||(p={leftTotal:0,rightTotal:0,leftPending:0,rightPending:0,samePathPending:0},o.set(l,p)),p};for(let c of e){let l=a(c);l.leftTotal++,n.has(c.metaPath)&&(l.leftPending++,i.add(c.metaPath))}for(let c of t){let l=a(c);l.rightTotal++,n.has(c.metaPath)&&(l.rightPending++,i.has(c.metaPath)&&l.samePathPending++)}let s=0;for(let c of o.values())s+=c.leftPending*c.rightTotal-c.samePathPending+(c.leftTotal-c.leftPending)*c.rightPending;return s}getSimilarityBucketKey(e){return zl.posix.extname(e.metaPath).toLowerCase()}async collectFolderSimilarityCandidates(e){let t=[];for(let n of e.local.values())if(!(!n.isFolder||e.matchedLocal.has(n.metaPath)||this.isIgnoredUntrackedLocal(n)))for(let o of e.remote.values()){if(!o.isFolder||e.matchedRemote.has(o.metaPath)||n.metaPath===o.metaPath)continue;let i=await this.getFolderSimilarity(e.local,e.remote,n,o);i>=MO&&t.push({localEntry:n,remoteEntry:o,score:i,reason:"folderSimilarity"})}return t}async getFolderSimilarity(e,t,n,o){let i=this.getFolderFileDescendants(e,n),a=this.getFolderFileDescendants(t,o),s=Math.max(i.length,a.length);if(s===0)return 1;let c=new Map(a.map(m=>[m.metaPath.slice(o.metaPath.length+1),m])),l=new Set,p=0,u=await this.fingerprint.findEqualFileCandidates(i,a),g=new Map;for(let m of u){let h=g.get(m.localEntry.metaPath);h||(h=[],g.set(m.localEntry.metaPath,h)),h.push(m.remoteEntry.metaPath)}for(let m of i){let h=m.metaPath.slice(n.metaPath.length+1),y=c.get(h);if(y){l.add(y.metaPath),p++;continue}for(let C of g.get(m.metaPath)??[])if(!l.has(C)){l.add(C),p++;break}}return p/s}getFolderFileDescendants(e,t){return[...e.values()].filter(n=>!n.isFolder&&n.metaPath!==t.metaPath&&re(n.metaPath,t.metaPath))}pickStableSimilarityCandidates(e){let t=[];for(let n of e)this.isUniqueBestCandidate(n,e,!0)&&this.isUniqueBestCandidate(n,e,!1)&&t.push(n);return t}isUniqueBestCandidate(e,t,n){let o=t.filter(a=>n?a.localEntry.metaPath===e.localEntry.metaPath:a.remoteEntry.metaPath===e.remoteEntry.metaPath).sort((a,s)=>s.score-a.score);if(o[0]!==e)return!1;let i=o[1];return i?e.score-i.score>=xO:!0}isSafeFileSimilarityPair(e,t){let n=[...e];return n.some(o=>o.localEntry.metaPath===t.localEntry.metaPath&&o.remoteEntry.metaPath===t.remoteEntry.metaPath)||n.push(t),this.pickStableSimilarityCandidates(n).some(o=>o.localEntry.metaPath===t.localEntry.metaPath&&o.remoteEntry.metaPath===t.remoteEntry.metaPath)}isUnsafePendingSamePathRenameSteal(e,t,n){if(!t.has(e.localEntry.metaPath)&&!t.has(e.remoteEntry.metaPath))return!1;let o=!this.hasPendingSamePathSwapCandidate(e,t,n);return o&&this.logFileFlow("reject rename stealing pending same-path",{localPath:e.localEntry.metaPath,remotePath:e.remoteEntry.metaPath,fileId:this.getEntryFileId(e.localEntry,e.remoteEntry),reason:e.reason,score:e.score}),o}hasPendingSamePathSwapCandidate(e,t,n){let o=e.localEntry.metaPath,i=e.remoteEntry.metaPath;return!t.has(o)||!t.has(i)?!1:n.some(a=>a!==e&&a.localEntry.metaPath===i&&a.remoteEntry.metaPath===o&&(a.reason===e.reason||a.score>=1||e.score>=1))}getContentCandidateFiles(e){return this.getContentCandidateFilesFromAvailable(this.getAvailableFiles(e.local,e.matchedLocal).filter(t=>!this.isIgnoredUntrackedLocal(t)),this.getAvailableFiles(e.remote,e.matchedRemote))}getContentCandidateFilesFromAvailable(e,t){return{localEntries:e,remoteEntries:t}}async addRename(e,t,n){let{localEntry:o,remoteEntry:i,score:a,reason:s}=t;if(!this.isAvailableRenamePair(o,i,e.matchedLocal,e.matchedRemote))return;let c=await this.computeContentChanged(o,i);this.markMatched(e,o,i),this.consumePendingSamePathForRename(n,o,i,s,a),this.addChange(e,{kind:"renamed",metaPath:o.metaPath,localPath:o.metaPath,remotePath:i.metaPath,fileId:this.getEntryFileId(o,i),oldMetaPath:i.metaPath,isFolder:o.isFolder,contentChanged:c,metaChanged:!_o(o.meta??{},i.meta??{}),confidence:a,reason:s}),this.logFileFlow("accept rename",{localPath:o.metaPath,remotePath:i.metaPath,fileId:this.getEntryFileId(o,i),reason:s,score:a,contentChanged:c})}isAvailableRenamePair(e,t,n,o){return!n.has(e.metaPath)&&!o.has(t.metaPath)&&e.isFolder===t.isFolder&&e.metaPath!==t.metaPath&&!this.isIgnoredUntrackedLocal(e)}async addComparison(e,t,n){this.applyComparisonOutcome(e,await this.createComparisonOutcome(t,n))}async addComparisonOrPending(e,t,n,o){this.applyComparisonOutcome(e,await this.createComparisonOutcome(t,n),o)}async addComparisonsOrPending(e,t,n){let o=await Promise.all(t.map(i=>this.createComparisonOutcome(i.localEntry,i.remoteEntry)));for(let i of o)e.matchedLocal.has(i.localEntry.metaPath)||e.matchedRemote.has(i.remoteEntry.metaPath)||this.applyComparisonOutcome(e,i,n)}async createComparisonOutcome(e,t){return{localEntry:e,remoteEntry:t,contentChanged:await this.computeContentChanged(e,t),metaChanged:!_o(e.meta??{},t.meta??{})}}applyComparisonOutcome(e,t,n){let{localEntry:o,remoteEntry:i,contentChanged:a,metaChanged:s}=t;if(this.markMatched(e,o,i),o.isFolder!==i.isFolder){this.addChange(e,{kind:"metaIssue",metaPath:o.metaPath,localPath:o.metaPath,remotePath:i.metaPath,fileId:this.getEntryFileId(o,i),isFolder:o.isFolder,reason:"resourceTypeChanged"});return}if(o.metaPath!==i.metaPath){this.addChange(e,{kind:"renamed",metaPath:o.metaPath,localPath:o.metaPath,remotePath:i.metaPath,fileId:this.getEntryFileId(o,i),oldMetaPath:i.metaPath,isFolder:o.isFolder,contentChanged:a,metaChanged:s,confidence:1,reason:"sameId"}),this.logFileFlow("accept rename",{localPath:o.metaPath,remotePath:i.metaPath,fileId:this.getEntryFileId(o,i),reason:"sameId",score:1,contentChanged:a});return}if(!(!a&&!s)){if(n){this.unmarkMatched(e,o,i),this.addPendingSamePath(n,{localEntry:o,remoteEntry:i,contentChanged:a,metaChanged:s});return}this.addChange(e,{kind:a?"contentDifferent":"metaDifferent",metaPath:o.metaPath,localPath:o.metaPath,remotePath:i.metaPath,fileId:this.getEntryFileId(o,i),isFolder:o.isFolder,contentChanged:a,metaChanged:s})}}flushPendingSamePathChanges(e,t){for(let[n,o]of[...t]){if(e.matchedLocal.has(o.localEntry.metaPath)||e.matchedRemote.has(o.remoteEntry.metaPath)){let i=this.removePendingSamePath(t,n);i&&this.logFileFlow("consume pending same-path",{path:i.localEntry.metaPath,remotePath:i.remoteEntry.metaPath,fileId:this.getEntryFileId(i.localEntry,i.remoteEntry),reason:"alreadyMatchedBeforeFlush"});continue}this.markMatched(e,o.localEntry,o.remoteEntry),this.addChange(e,{kind:o.contentChanged?"contentDifferent":"metaDifferent",metaPath:o.localEntry.metaPath,localPath:o.localEntry.metaPath,remotePath:o.remoteEntry.metaPath,fileId:this.getEntryFileId(o.localEntry,o.remoteEntry),isFolder:o.localEntry.isFolder,contentChanged:o.contentChanged,metaChanged:o.metaChanged}),this.removePendingSamePath(t,n),this.logFileFlow("flush pending same-path",{path:o.localEntry.metaPath,remotePath:o.remoteEntry.metaPath,fileId:this.getEntryFileId(o.localEntry,o.remoteEntry),contentChanged:o.contentChanged,metaChanged:o.metaChanged})}}addChange(e,t){e.changes.push(t),this.diagnostics.changes++}logFileFlow(e,t){let n=Object.entries(t).filter(([,o])=>o!==void 0).map(([o,i])=>`${o}=${String(i)}`).join(" ");we.debug(`flow ${e} phase=${this.currentMatchPhase} ${n}`)}addPendingSamePath(e,t){e.has(t.localEntry.metaPath)||this.diagnostics.pendingSamePath++,e.set(t.localEntry.metaPath,t),this.logFileFlow("pending same-path",{path:t.localEntry.metaPath,remotePath:t.remoteEntry.metaPath,fileId:this.getEntryFileId(t.localEntry,t.remoteEntry),contentChanged:t.contentChanged,metaChanged:t.metaChanged})}removePendingSamePath(e,t){let n=e.get(t);if(n)return e.delete(t),this.diagnostics.pendingSamePath--,n}consumePendingSamePathForRename(e,t,n,o,i){if(e?.size)for(let a of new Set([t.metaPath,n.metaPath])){let s=this.removePendingSamePath(e,a);s&&this.logFileFlow("consume pending same-path",{path:s.localEntry.metaPath,remotePath:s.remoteEntry.metaPath,fileId:this.getEntryFileId(s.localEntry,s.remoteEntry),reason:o,score:i,matchedLocalPath:t.metaPath,matchedRemotePath:n.metaPath})}}async computeContentChanged(e,t){return e.isFolder||t.isFolder?!1:await this.fingerprint.areEntriesEqual(e,t)!=="same"}markMatched(e,t,n){e.matchedLocal.has(t.metaPath)||(e.matchedLocal.add(t.metaPath),this.diagnostics.matchedLocal++,t.isFolder||this.diagnostics.matchedLocalFiles++),e.matchedRemote.has(n.metaPath)||(e.matchedRemote.add(n.metaPath),this.diagnostics.matchedRemote++,n.isFolder||this.diagnostics.matchedRemoteFiles++),this.refreshAvailableFileStats()}unmarkMatched(e,t,n){e.matchedLocal.delete(t.metaPath)&&(this.diagnostics.matchedLocal--,t.isFolder||this.diagnostics.matchedLocalFiles--),e.matchedRemote.delete(n.metaPath)&&(this.diagnostics.matchedRemote--,n.isFolder||this.diagnostics.matchedRemoteFiles--),this.refreshAvailableFileStats()}refreshAvailableFileStats(){this.diagnostics.availableLocalFiles=this.diagnostics.local.files-this.diagnostics.matchedLocalFiles,this.diagnostics.availableRemoteFiles=this.diagnostics.remote.files-this.diagnostics.matchedRemoteFiles}async matchChildrenAfterFolderRename(e,t,n){!t.isFolder||!n.isFolder||t.metaPath===n.metaPath||(await this.matchChildrenByRelativePath(e,t,n),await this.matchChildrenByContent(e,t,n))}async matchChildrenByRelativePath(e,t,n){for(let o of e.local.values()){if(e.matchedLocal.has(o.metaPath)||!re(o.metaPath,t.metaPath))continue;let i=o.metaPath.slice(t.metaPath.length+1),a=e.remote.get(n.metaPath+"/"+i);!a||e.matchedRemote.has(a.metaPath)||await this.addComparison(e,o,a)}}async matchChildrenByContent(e,t,n){let{localEntries:o,remoteEntries:i}=this.getContentCandidateFilesFromAvailable(this.getAvailableFolderFiles(e.local,t,e.matchedLocal).filter(s=>!this.isIgnoredUntrackedLocal(s)),this.getAvailableFolderFiles(e.remote,n,e.matchedRemote)),a=this.pickStableSimilarityCandidates(await this.fingerprint.findEqualFileCandidates(o,i));for(let s of a)!re(s.localEntry.metaPath,t.metaPath)||!re(s.remoteEntry.metaPath,n.metaPath)||await this.addRename(e,s)}getAvailableFolderFiles(e,t,n){return this.getFolderFileDescendants(e,t).filter(o=>!n.has(o.metaPath))}indexById(e){let t=new Map,n=new Set;for(let o of e.values()){let i=o.meta?.id;if(i){if(t.has(i)){n.add(i);continue}t.set(i,o)}}for(let o of n)t.delete(o);return t}indexRemoteByIdForWorkspaceRename(e,t){let n=new Map;for(let[o,i]of this.groupRemoteEntriesByMetaId(e)){if(i.length===1){n.set(o,i[0]);continue}let a=i.filter(s=>!t.has(s.metaPath));a.length===1&&n.set(o,a[0])}return n}indexIgnoredMirrorResidues(e,t){let n=this.groupRemoteEntriesByMetaId(t),o=this.collectParentsWithTrackedChild(t),i=new Set;for(let a of t.values()){if(!e.has(a.metaPath))continue;if(!a.hasMeta){o.has(zl.posix.dirname(a.metaPath))&&i.add(a.metaPath);continue}let s=a.meta?.id;if(!s)continue;let c=n.get(s);!c||c.length<2||(a.underUnregisteredMirrorDirectory||this.hasUnmatchedSibling(c,a.metaPath,e))&&i.add(a.metaPath)}return i}filterOutIgnoredMirrorResidues(e,t){if(t.size===0)return e;let n=new Map;for(let[o,i]of e)t.has(o)||n.set(o,i);return n}filterOutBaselineMissingLocalEntries(e,t){if(t.length===0)return e;let n=new Set(t.map(i=>i.metaPath)),o=new Map;for(let[i,a]of e)n.has(i)||o.set(i,a);return o}async addBaselineMissingLocalChanges(e,t){for(let n of t)n.isFolder&&!n.hasMeta||await this.isScannedEntryStillPresent(this.workspaceRoot,n)&&this.addChange(e,{kind:"localOnly",metaPath:n.metaPath,localPath:n.metaPath,fileId:n.meta?.id,isFolder:n.isFolder,hasMeta:n.hasMeta})}collectBaselineMissingLocalEntries(e,t){let n=new Set,o=new Set;for(let s of t.values()){let c=s.meta?.id;c&&n.add(c);let l=ze(s.metaPath);l&&o.add(l)}let i=new Map;for(let s of e.values()){if(!s.hasMeta||t.has(s.metaPath))continue;let c=s.meta?.id;if(!c||n.has(c))continue;let l=ze(s.metaPath);if(!l)continue;let p=i.get(l);p?p.push(s):i.set(l,[s])}let a=[];for(let[s,c]of i)if(!(o.has(s)&&c.length<OO)){for(let l of c)l.baselineMissing=!0,a.push(l);this.reportProblemOnce(new Ea(this.workspaceRoot,"sync.incompleteBaselineFiles",{projectPaths:[s],remotePaths:c.slice(0,_O).map(l=>l.metaPath),count:c.length}))}return a}groupRemoteEntriesByMetaId(e){let t=new Map;for(let n of e.values()){let o=n.meta?.id;if(!o)continue;let i=t.get(o);i?i.push(n):t.set(o,[n])}return t}collectParentsWithTrackedChild(e){let t=new Set;for(let n of e.values())n.hasMeta&&t.add(zl.posix.dirname(n.metaPath));return t}hasUnmatchedSibling(e,t,n){for(let o of e)if(o.metaPath!==t&&!n.has(o.metaPath))return!0;return!1}getEntryFileId(e,t){return t.meta?.id??e.meta?.id}async toSyncFileChange(e){return{path:De(e.localPath??e.remotePath??e.metaPath),remotePath:e.localPath??e.remotePath??e.metaPath,...e.fileId!==void 0?{fileId:e.fileId}:{},oldPath:e.oldMetaPath?De(e.oldMetaPath):void 0,oldRemotePath:e.oldMetaPath,type:this.toScmChangeType(e.kind),isFolder:e.isFolder,contentChanged:e.contentChanged,metaChanged:e.metaChanged}}toScmChangeType(e){return e==="localOnly"?"added":e==="remoteOnly"?"deleted":e==="contentDifferent"||e==="metaDifferent"?"modified":e==="renamed"?"renamed":"conflict"}};var LO=T("workspace.sync-status.refresh"),Xr=class{constructor(e,t={}){this.id=e;this.scope=t.scope??"both",this.source=t.source??"manual",this.task=t.task??nt.INSTANCE,this.forceRefresh=t.forceRefresh===!0,this.rootRemotePath=t.rootRemotePath,this.refreshLocal=this.scope==="local"||this.scope==="both",this.refreshRemote=this.scope==="remote"||this.scope==="both",this.workspace=t.workspace,this.accepted=t.onAccepted??(()=>{}),this.publishResult=t.publish??(()=>{})}kind="refresh";scope;source;task;forceRefresh;rootRemotePath;refreshLocal;refreshRemote;accepted;workspace;publishResult;localController=new AbortController;remoteController=new AbortController;refreshResult={warnings:[]};localCancelled=!1;remoteCancelled=!1;onAccepted(){this.accepted()}abort(){this.cancelLocal(),this.cancelRemote()}cancelConflictingSubTasks(e){this.cancelSubTasks({local:e.refreshLocal,remote:e.refreshRemote})}cancelSubTasks(e){e.local&&this.refreshLocal&&this.cancelLocal(),e.remote&&this.refreshRemote&&this.cancelRemote()}isLocalCancelled(){return this.localCancelled}isRemoteCancelled(){return this.remoteCancelled}canRunSubTask(e){return e==="local"?this.refreshLocal&&!this.localCancelled:this.refreshRemote&&!this.remoteCancelled}hasRunnableSubTask(){return this.canRunSubTask("local")||this.canRunSubTask("remote")}getRefreshResult(){return this.refreshResult}canRunBackgroundRefresh(){let e=this.workspace;return!!e&&e.isConnected&&!!e.activeServerUrl}async run(){if(!this.workspace||!this.hasRunnableSubTask())return{kind:"noop"};this.task.start(Number(this.canRunSubTask("local"))+Number(this.canRunSubTask("remote")),{message:d("workspace.sync.progress.refresh.running")});let e=this.canRunSubTask("local")?this.task.subTaskMonitor(1):void 0,t=this.canRunSubTask("remote")?this.task.subTaskMonitor(1):void 0;try{let n=e?this.runLocalRefresh(e):Promise.resolve(void 0),o=t?this.runRemoteRefresh(t):Promise.resolve(void 0),[i,a]=await Promise.all([n,o]);return this.canPublish(i,a)?{kind:"replaceRefreshScope",localChanges:this.localCancelled?void 0:i,...this.localCancelled||!this.rootRemotePath?{}:{localRootRemotePath:this.rootRemotePath},remoteChanges:this.remoteCancelled?void 0:a,...a!==void 0&&this.refreshResult.warnings.length>0?{warnings:this.refreshResult.warnings}:{}}:{kind:"noop"}}catch(n){if(n instanceof Error&&n.name==="AbortError")return{kind:"noop"};throw n}}createPublishableResult(e){if(e.kind!=="replaceRefreshScope")return e;let t=this.localCancelled?void 0:e.localChanges,n=this.remoteCancelled?void 0:e.remoteChanges;return t===void 0&&n===void 0?{kind:"noop"}:{kind:"replaceRefreshScope",localChanges:t,...t===void 0||!e.localRootRemotePath?{}:{localRootRemotePath:e.localRootRemotePath},remoteChanges:n,...n!==void 0&&e.warnings?.length?{warnings:e.warnings}:{}}}publish(e){let t=this.createPublishableResult(e);return this.refreshResult=this.createRefreshResult(t),this.publishResult(t)}async runLocalRefresh(e){e.start(1);let t=this.workspace,n=await new Kl({workspace:t,task:e,signal:this.localController.signal,rootRemotePath:this.rootRemotePath}).detect();return e.step(1),n.changes}async runRemoteRefresh(e){e.start(1);let t=await this.detectRemoteChanges(e);return e.step(1),t}async detectRemoteChanges(e){let t=this.workspace;if(!t)return[];try{return this.remoteController.signal.aborted?[]:await new Kr({workspace:t,task:e,forceRefresh:this.forceRefresh,signal:this.remoteController.signal}).detect()}catch(n){return ky(n)?(this.refreshResult={warnings:[{errorCode:"err.login.notlogin",properties:{serverUrl:t.activeServerUrl}}]},[]):(LO.warn(`remote sync status detection failed: ${t.root}`,n),[])}}createRefreshResult(e){return e.kind!=="replaceRefreshScope"?{warnings:[]}:{warnings:e.warnings??[]}}canPublish(e,t){return this.refreshLocal&&!this.localCancelled&&!e||this.refreshRemote&&!this.remoteCancelled&&!t?!1:!this.localCancelled&&!!e||!this.remoteCancelled&&!!t}cancelLocal(){this.localCancelled=!0,this.localController.abort()}cancelRemote(){this.remoteCancelled=!0,this.remoteController.abort()}};var Jl=class{taskQueue=[];scheduling=!1;dispose(){this.cancelAllStateTasks(),this.scheduleTaskQueue()}hasRemoteRefreshTask(){return this.getRefreshTasks().some(e=>e.refreshRemote)}enqueue(e){let t=this.mergePendingFileWatchTask(e);return t?{accepted:!0,promise:t.promise}:this.prepareTask(e)?(e instanceof Xr&&e.refreshLocal&&this.cancelLocalStateTasks(),e.onAccepted?.(),{accepted:!0,promise:this.enqueueTask(e)}):{accepted:!1,promise:Promise.resolve()}}submitImmediate(e,t={}){t.cancel==="local"?this.cancelLocalStateTasks():this.cancelAllStateTasks();let n=e.publish(e.toResult());this.enqueueFollowUpTask(n),this.scheduleTaskQueue()}prepareTask(e){return e instanceof Xr?this.prepareRefreshTask(e):!0}prepareRefreshTask(e){if(e.source==="background")return this.taskQueue.length===0&&e.canRunBackgroundRefresh();for(let t of this.getRefreshTasks())t.cancelConflictingSubTasks(e);return!0}enqueueTask(e){let t=this.createScheduledTask(e);return this.taskQueue.push(t),this.scheduleTaskQueue(),t.promise}createScheduledTask(e){let t,n,o=new Promise((i,a)=>{t=i,n=a});return{task:e,state:"pending",promise:o,resolve:t,reject:n}}scheduleTaskQueue(){if(!this.scheduling){this.scheduling=!0;try{for(let e of[...this.taskQueue])if(e.state==="pending"){if(this.shouldDiscardScheduledTask(e.task)){this.finishScheduledTask(e);continue}this.canStartScheduledTask(e)&&this.startScheduledTask(e)}}finally{this.scheduling=!1}}}shouldDiscardScheduledTask(e){return e instanceof dr?e.isCancelled():e instanceof Xr?!e.hasRunnableSubTask():!1}canStartScheduledTask(e){return e.task instanceof dr?!this.hasEarlierPendingFileWatchTask(e)&&!this.hasRunningFileWatchTask()&&!this.hasRunningLocalRefreshTask():!0}startScheduledTask(e){e.state="running",this.runScheduledTask(e)}async runScheduledTask(e){let t;try{let n=await e.task.run();t=await e.task.publish(n)}catch(n){this.finishScheduledTask(e,n);return}this.removeScheduledTask(e);try{t?await this.enqueue(t).promise:this.scheduleTaskQueue(),e.resolve()}catch(n){e.reject(n)}}finishScheduledTask(e,t){this.removeScheduledTask(e),t?e.reject(t):e.resolve(),this.scheduleTaskQueue()}removeScheduledTask(e){let t=this.taskQueue.indexOf(e);t>=0&&this.taskQueue.splice(t,1)}enqueueFollowUpTask(e){e&&this.enqueue(e).promise}cancelAllStateTasks(){this.cancelFileWatchTasks(),this.cancelRefreshTasks({local:!0,remote:!0})}cancelLocalStateTasks(){this.cancelFileWatchTasks(),this.cancelRefreshTasks({local:!0})}cancelRefreshTasks(e){for(let t of this.getRefreshTasks())t.cancelSubTasks(e)}cancelFileWatchTasks(){for(let e of this.taskQueue)e.task instanceof dr&&e.task.abort()}mergePendingFileWatchTask(e){if(!(e instanceof dr))return;let t=this.findMergeableFileWatchTask();if(t)return t.task.mergeTask(e),t}findMergeableFileWatchTask(){for(let e=this.taskQueue.length-1;e>=0;e--){let t=this.taskQueue[e];if(t.state==="pending"&&t.task instanceof dr&&!t.task.isCancelled())return t}}getRefreshTasks(){return this.taskQueue.map(e=>e.task).filter(e=>e instanceof Xr)}hasRunningFileWatchTask(){return this.taskQueue.some(e=>e.state==="running"&&e.task instanceof dr)}hasEarlierPendingFileWatchTask(e){for(let t of this.taskQueue){if(t===e)return!1;if(t.state==="pending"&&t.task instanceof dr)return!0}return!1}hasRunningLocalRefreshTask(){return this.taskQueue.some(e=>e.state==="running"&&e.task instanceof Xr&&e.task.canRunSubTask("local"))}};var Km=T("workspace.sync-status"),Ql=class{constructor(e){this.workspace=e;this.coordinator=new Jl}changes=new Map;fullRefreshCount=0;taskId=0;coordinator;backgroundRemoteDiscoveryTimer;dispose(){this.stopBackgroundRemoteDiscovery(),this.coordinator.dispose()}startBackgroundRemoteDiscovery(e){this.stopBackgroundRemoteDiscovery(),!(e.intervalMs<=0)&&this.scheduleBackgroundRemoteDiscovery(e.intervalMs,e.runImmediately?0:e.intervalMs)}stopBackgroundRemoteDiscovery(){this.backgroundRemoteDiscoveryTimer&&(clearTimeout(this.backgroundRemoteDiscoveryTimer),this.backgroundRemoteDiscoveryTimer=void 0)}async refreshAll(e={}){let t=this.createRefreshTask(e),n=this.coordinator.enqueue(t);return n.accepted&&this.workspace?.notifySyncStatusRefreshing?.(n.promise,!!e.task),await n.promise,t.getRefreshResult()}scheduleBackgroundRemoteDiscovery(e,t=e){this.backgroundRemoteDiscoveryTimer=setTimeout(()=>{this.backgroundRemoteDiscoveryTimer=void 0,this.runBackgroundRemoteDiscovery(e)},t)}async runBackgroundRemoteDiscovery(e){if(this.scheduleBackgroundRemoteDiscovery(e),await this.hasSyncLock()){Km.debug("background remote discovery skipped because sync lock is held");return}if(this.coordinator.hasRemoteRefreshTask()){Km.debug("background remote discovery skipped because remote refresh is already queued");return}this.refreshAll({scope:"remote",source:"background"}).catch(t=>{Km.warn("background remote discovery failed",t)})}async hasSyncLock(){let e=this.workspace?.lockManager;return e?await e.isHeldLock("sync"):!1}createRefreshTask(e={}){return new Xr(this.nextTaskId(),{...e,workspace:this.workspace,onAccepted:()=>{this.fullRefreshCount++},publish:t=>this.publishTaskResult(t)})}replaceAllByRefreshScope(e,t,n){let o=e?[...e]:[],i=t??[];if(!e||!t)for(let s of this.changes.values()){let c=ht(s),l=Er(s);!e&&c&&!l||e&&n&&c&&!l&&!cm(s,[n])?o.push(s):!t&&l&&!c&&i.push(s)}let a=zv(o,i);this.replaceAllWithoutVersionChange([...o,...i,...a])}async consumeFileChanges(e,t={}){await this.coordinator.enqueue(this.createFileWatchTask(e,t)).promise}createFileWatchTask(e,t){return new dr(this.nextTaskId(),{fileChanges:e,bulk:t.bulk,workspace:this.workspace,getChanges:()=>this.getChanges(),publish:n=>this.publishTaskResult(n)})}applyOperationResult(e,t=[]){this.coordinator.submitImmediate(new Vl(this.nextTaskId(),e,t,n=>this.publishTaskResult(n)))}applyFileWatchResult(e,t){this.coordinator.submitImmediate(this.createReplaceTargetsTask("fileWatch",t,e,"fileWatch"),{cancel:"local"})}clearTargets(e){this.coordinator.submitImmediate(this.createClearTask({kind:"paths",remotePaths:e}))}clear(){this.coordinator.submitImmediate(this.createClearTask({kind:"all"}))}createReplaceTargetsTask(e,t,n,o="normal"){return new Bl(this.nextTaskId(),{source:e,targetRemotePaths:t,changes:n,mode:o,publish:i=>this.publishTaskResult(i)})}createClearTask(e){return new jl(this.nextTaskId(),e,t=>this.publishTaskResult(t))}publishTaskResult(e){if(e.kind!=="noop"){if(e.kind==="requestRefresh")return this.createRefreshTask({scope:e.scope,source:e.source,task:e.task,rootRemotePath:e.rootRemotePath});if(e.kind==="replaceRefreshScope"){this.replaceAllByRefreshScope(e.localChanges,e.remoteChanges,e.localRootRemotePath);return}if(e.kind==="replaceTargets"){this.replaceTargetsByMode(e.targetRemotePaths,e.changes,e.mode??"normal");return}this.publishClearResult(e.target)}}publishClearResult(e){if(e.kind==="all"){this.clearWithoutVersionChange();return}this.clearTargetsWithoutVersionChange(e.remotePaths)}nextTaskId(){return this.taskId++,this.taskId}getChanges(){return[...this.changes.values()]}getSummary(){let e=0,t=0;for(let n of this.changes.values())ht(n)?e++:Er(n)&&t++;return{pushCount:e,pullCount:t}}getLocalChanges(){return this.getChanges().filter(e=>ht(e))}getRemoteChanges(){return this.getChanges().filter(e=>Er(e))}getFullRefreshCount(){return this.fullRefreshCount}replaceTargets(e,t){if(e.length===0)return;let n=Ni(e);for(let[o,i]of this.changes)n(i)&&this.changes.delete(o);this.addChanges(t)}replaceFileWatchTargets(e,t){if(e.length===0)return;let n=t.filter(sl).flatMap(i=>[i.remotePath,i.oldRemotePath]).filter(i=>!!i),o=new Set;for(let[i,a]of this.changes)if(Hv(a,e)||cm(a,n)){if(a.type==="renamed"&&t.some(s=>s.type==="added"&&s.remotePath===a.remotePath)){o.add(a.remotePath);continue}this.changes.delete(i)}this.addChanges(t.filter(i=>i.type!=="added"||!o.has(i.remotePath)))}addChanges(e){for(let t of e)t.type!=="clean"&&this.addMergedChange(t)}addMergedChange(e){let t=this.createMoveChangeByExistingState(e);if(!t){this.changes.set(pl(e),e);return}this.changes.set(pl(t),t)}createMoveChangeByExistingState(e){let t=this.findMoveCounterpart(e);if(t)return this.changes.delete(pl(t)),this.createMoveChange(e,t)}findMoveCounterpart(e){let t;for(let n of this.changes.values())if(this.canMergeMoveChanges(e,n)){if(t)return;t=n}return t}canMergeMoveChanges(e,t){return!!e.fileId&&e.fileId===t.fileId&&(this.isLocalAdded(e)&&this.isLocalDeleted(t)||this.isLocalDeleted(e)&&this.isLocalAdded(t)||this.isRemoteAdded(e)&&this.isRemoteDeleted(t)||this.isRemoteDeleted(e)&&this.isRemoteAdded(t))}createMoveChange(e,t){let n=this.isAddedChange(e)?e:t,o=this.isDeletedChange(e)?e:t,i=this.isRemoteAdded(n)||this.isRemoteDeleted(o);return{path:n.path,remotePath:n.remotePath,fileId:n.fileId??o.fileId,oldPath:o.path,oldRemotePath:o.remotePath,type:i?"remoteRenamed":"renamed",isFolder:n.isFolder??o.isFolder,contentChanged:n.contentChanged??o.contentChanged,metaChanged:n.metaChanged??o.metaChanged}}isAddedChange(e){return this.isLocalAdded(e)||this.isRemoteAdded(e)}isDeletedChange(e){return this.isLocalDeleted(e)||this.isRemoteDeleted(e)}isLocalAdded(e){return e.type==="added"}isLocalDeleted(e){return e.type==="deleted"}isRemoteAdded(e){return e.type==="remoteAdded"}isRemoteDeleted(e){return e.type==="remoteDeleted"}replaceAllWithoutVersionChange(e){this.changes.clear(),this.addChanges(e),this.notifyChanged()}replaceTargetsByMode(e,t,n="normal"){n==="fileWatch"?this.replaceFileWatchTargets(e,t):this.replaceTargets(e,t),this.notifyChanged()}clearTargetsWithoutVersionChange(e){this.replaceTargets(e,[]),this.notifyChanged()}clearWithoutVersionChange(){this.changes.clear(),this.notifyChanged()}notifyChanged(){this.workspace?.notifySyncStatusChanged()}};var Xl=E(require("path"));J();$();var NO=T("workspace.file-watch"),WO="**/*",UO=1e3,hw=5e3,jO=200,VO=50,gw="refreshAfterFileChange",Yl=class{constructor(e,t,n,o={},i){this.workspace=e;this.eventBus=t;this.fileWatcherProvider=n;this.options=o;this.lockManager=i;let a=this.disposables.add(this.fileWatcherProvider.createFileWatcher(e.root,WO));this.disposables.add(a.onFileChanged(s=>this.onFileChanged(s))),this.lockManager&&this.disposables.add(this.eventBus.on("workspace.lock.changed",s=>{s.payload.root!==this.workspace.root||s.payload.scope!=="sync"||s.payload.held||this.onSyncLockReleased()}))}disposables=new to;pendingChanges=new Map;lockReleaseTime=0;deferred=!1;deferredRecheckTimer;cancelPendingRefresh(){this.clearRefreshTimer(),this.clearDeferredRecheckTimer(),this.pendingChanges.clear(),this.deferred=!1}async flushPendingRefresh(){this.clearRefreshTimer(),this.clearDeferredRecheckTimer(),await this.refreshPendingChanges()}onFileChanged(e){let{filePath:t,type:n}=e;this.isWorkspaceSystemFile(t)||Date.now()-this.lockReleaseTime<(this.options.lockReleaseCooldown??VO)||(this.pendingChanges.set(`${n}\0${t}`,e),this.scheduleRefresh())}scheduleRefresh(){ki(this,gw,this.options.refreshDelay??UO,()=>this.refreshPendingChanges(),{maxWaitMs:this.options.maxRefreshDelay??hw})}takePendingChanges(){let e=[...this.pendingChanges.values()];return this.pendingChanges.clear(),e}async refreshPendingChanges(e=!1){if(this.pendingChanges.size===0){this.deferred=!1;return}if(await this.isSyncLockHeld()){this.deferred=!0,this.scheduleDeferredRecheck();return}let t=this.deferred;this.deferred=!1,this.clearDeferredRecheckTimer();let n=this.takePendingChanges();await this.refresh(n,e||t)}async refresh(e,t){if(e.length!==0){this.fireWorkspaceFileChanged(e[0]);try{await this.workspace.consumeFileChanges(e,{bulk:t||e.length>=this.getBulkThreshold()})}catch(n){NO.debug(`refresh sync status after file change failed: ${this.workspace.root}`,n)}}}fireWorkspaceFileChanged(e){this.eventBus.fire(new et("workspace.file.changed",{root:this.workspace.root,filePath:e.filePath,type:e.type},this))}getBulkThreshold(){return Math.max(1,this.options.bulkThreshold??jO)}async isSyncLockHeld(){return this.lockManager?await this.lockManager.isHeldLock("sync"):!1}onSyncLockReleased(){this.lockReleaseTime=Date.now(),this.deferred&&(this.clearRefreshTimer(),this.clearDeferredRecheckTimer(),this.refreshPendingChanges(!0))}scheduleDeferredRecheck(){this.deferredRecheckTimer||(this.deferredRecheckTimer=setTimeout(()=>{this.deferredRecheckTimer=void 0,this.refreshPendingChanges()},this.options.maxRefreshDelay??hw),this.deferredRecheckTimer.unref?.())}clearDeferredRecheckTimer(){this.deferredRecheckTimer&&(clearTimeout(this.deferredRecheckTimer),this.deferredRecheckTimer=void 0)}clearRefreshTimer(){wi(this,gw)}isWorkspaceSystemFile(e){let t=Xl.relative(this.workspace.root,e);return Xd.some(n=>t===n||t.startsWith(`${n}${Xl.sep}`))}dispose(){this.clearRefreshTimer(),this.clearDeferredRecheckTimer(),this.pendingChanges.clear(),this.disposables.dispose()}};J();var Mr=E(require("fs")),Ps=E(require("path"));tt();J();Z();$();_();F();function Tt(){return{status:"planned",dryRun:!0,applied:!1}}function gt(){return{status:"applied",dryRun:!1,applied:!0}}function Zr(r=!1){return{status:"blocked",dryRun:r,applied:!1}}function ro(r,e){return{status:"skipped",dryRun:r,applied:!1,properties:{skipCause:e}}}function gs(r=!1){return{status:"failed",dryRun:r,applied:!1}}var Ss=E(require("path"));tt();Ie();var ys=class r{constructor(e,t){this.filePath=e;this.content=t}content;changed=!1;static async read(e){return new r(e,await Re(e))}hasChanges(){return this.changed}getContent(){return this.content}upsertMarkedBlock(e){let t=BO(this.content,e);return this.updateContent(t)}removeMarkedBlock(e){let t=Cw(e),n=Sw(t);if(!n.test(this.content))return!1;let o=this.content.replace(n,"").replace(/\s*$/,"");return this.updateContent(o?`${o}
|
|
68
|
-
`:"")}async save(){return this.changed?(await
|
|
74
|
+
`}function V$(r,e){if(YR(r))return!0;let t=e.trimStart();return t.startsWith("{")||t.startsWith("[")}function Bg(r){try{return JSON.stringify(JSON.parse(r),null,2)}catch(e){return CE.debug("skip JSON normalization because content is not valid JSON",e),r}}function yE(r){return r===void 0||r===""||r===!1||typeof r=="object"&&r!==null&&Object.keys(r).length===0}var Hd=class{serverControlledKeys;constructor(e=["id","revision","creator","createTime","modifier","modifyTime"]){this.serverControlledKeys=new Set(e)}async merge(e){let t=await this.mergeContent(e),n=this.mergeMetaInfo(e.workspaceMeta,e.baseMeta,e.remoteMeta);return{hasConflict:t.hasConflict,mergedMeta:n.merged,hasMetaConflict:n.hasConflict}}async mergeContent(e){let[t,n,o]=[];try{[t,n,o]=await Promise.all([al.promises.readFile(e.workspaceFile,"utf-8"),al.promises.readFile(e.baseFile,"utf-8"),al.promises.readFile(e.remoteFile,"utf-8")])}catch(g){return CE.debug(`treat merge content as conflicted because inputs cannot be read: ${e.workspaceFile}`,g),{hasConflict:!0}}V$(e.workspaceFile,t)&&(t=Bg(t),n=Bg(n),o=Bg(o));let i=qg(t),a=qg(n),s=qg(o),c=gE(i,a,s),l=j$(t),u=c.some(g=>"conflict"in g),p=c.flatMap(g=>{if("ok"in g)return g.ok;let m=g.conflict;return["<<<<<<< Local",...m.a,"=======",...m.b,">>>>>>> Remote"]}).join(l);return await al.promises.writeFile(e.workspaceFile,p,"utf-8"),{hasConflict:u}}mergeMetaInfo(e,t,n){if(!e&&!t&&!n)return{hasConflict:!1};let o=t??{},i=n??{},a=e??{},s={...o},c=!1,l=new Set([...Object.keys(o),...Object.keys(i),...Object.keys(a)]);for(let u of l){if(this.serverControlledKeys.has(u)){u in a?s[u]=a[u]:u in i&&(s[u]=i[u]);continue}let p=u in o,g=u in i,m=u in a,f=p!==g||p&&g&&this.isMetaFieldDifferent(o[u],i[u]),y=p!==m||p&&m&&this.isMetaFieldDifferent(o[u],a[u]);if(!(!f&&!y)){if(f&&!y){g?s[u]=i[u]:delete s[u];continue}if(!f&&y){m?s[u]=a[u]:delete s[u];continue}if(!g&&!m){delete s[u];continue}if(!g&&m){c=!0,s[u]=a[u];continue}if(g&&!m){delete s[u];continue}c=!0,s[u]=a[u]}}return{merged:Object.keys(s).length>0?s:void 0,hasConflict:c}}isMetaFieldDifferent(e,t){if(e===t)return!1;let n=yE(e),o=yE(t);return n&&o?!1:e!==t}};var Gd=class{input;constructor(e){this.input=e}async execute(){let e;try{e=await this.normalizeMergeFiles();let t={workspaceFile:e.workspaceFile,baseFile:e.baseFile,remoteFile:e.remoteFile,workspaceMeta:this.input.workspaceMeta,baseMeta:this.input.baseMeta,remoteMeta:this.input.remoteMeta},n=await(this.input.threeWayMerge??new Hd).merge(t);return e.workspaceFile!==this.input.workspaceFile&&await sl.promises.copyFile(e.workspaceFile,this.input.workspaceFile),{merged:!n.hasConflict,hasConflict:n.hasConflict,conflictReason:n.hasConflict?"contentConflict":void 0,threeWayResult:n}}catch(t){if(t instanceof zi)return{merged:!1,hasConflict:!0,conflictReason:t.conflictReason,metadataUpgradeReason:t.reason,errorInfo:t.errorInfo};throw t}finally{e?.tempDir&&await zr(e.tempDir)}}async normalizeMergeFiles(){if(!this.input.versionInfo?.upgradeSupported)return this.createOriginalMergeFiles();if(!this.input.client)return this.createOriginalMergeFiles();let t=await this.readMergeContentVersions();if(this.areMergeContentVersionsSame(t))return this.createOriginalMergeFiles();let n=await sl.promises.mkdtemp(Hg.join(SE.tmpdir(),"succapp-single-file-merge-"));try{let o=new os({client:this.input.client}),i=await Promise.all([this.readAndNormalizeContent(o,"workspace",this.input.workspaceFile),this.readAndNormalizeContent(o,"base",this.input.baseFile),this.readAndNormalizeContent(o,"remote",this.input.remoteFile)]),[a,s,c]=await Promise.all([this.writeTempContent(n,"workspace",i[0]),this.writeTempContent(n,"base",i[1]),this.writeTempContent(n,"remote",i[2])]);return{workspaceFile:a,baseFile:s,remoteFile:c,tempDir:n}}catch(o){throw await zr(n),o}}createOriginalMergeFiles(){return{workspaceFile:this.input.workspaceFile,baseFile:this.input.baseFile,remoteFile:this.input.remoteFile}}async readMergeContentVersions(){let[e,t,n]=await Promise.all([this.readMergeContentVersion("workspace",this.input.workspaceFile),this.readMergeContentVersion("base",this.input.baseFile),this.readMergeContentVersion("remote",this.input.remoteFile)]);return{workspace:e,base:t,remote:n}}async readMergeContentVersion(e,t){try{return await bd(t)}catch(n){throw new zi("metadataVersionUpgradeFailed",n instanceof SyntaxError?"invalidContent":"readFailed",`metadata ${e} version normalize input cannot be read`,n)}}areMergeContentVersionsSame(e){return e.workspace===e.base&&e.workspace===e.remote}async readAndNormalizeContent(e,t,n){let o;try{o=await sl.promises.readFile(n,"utf-8")}catch(a){throw new zi("metadataVersionUpgradeFailed","readFailed",`metadata ${t} version normalize input cannot be read`,a)}let i=await e.upgradeContent({path:this.input.remotePath,content:o,versionInfo:this.input.versionInfo});if(i.reason==="newerVersion")throw new zi("metadataVersionNewerThanServer",i.reason,`metadata ${t} version is newer than server target version`,i.errorInfo);if(i.reason&&i.reason!=="upToDate")throw new zi("metadataVersionUpgradeFailed",i.reason,`metadata ${t} version normalize failed`,i.errorInfo);return i.content}async writeTempContent(e,t,n){let o=Hg.join(e,t);return await sl.promises.writeFile(o,n,"utf-8"),o}},zi=class extends Error{conflictReason;reason;errorInfo;constructor(e,t,n,o){super(n),this.name="MetadataVersionNormalizeError",this.conflictReason=e,this.reason=t,this.errorInfo=o}};Ft();var Ki=M("sync.apply-remote"),zd=class extends at{mirror=this.createMirrorStore();workspace=this.createWorkspaceStore(this.mirror);updated=[];deleted=[];conflicts=[];currentChangeTask;async execute(){this.updated=[],this.deleted=[],this.conflicts=[],this.currentChangeTask=void 0;let e=this.sortRemoteChanges(this.options.remoteChanges);Ki.info("apply remote changes start: changes={0}",e.length);let t=new Set;if(e.length===0)return this.task.start(1),this.task.step(1),this.finishApplyRemoteChanges({updated:this.updated,deleted:this.deleted,conflicts:this.conflicts});let n=await this.createProgressItems(e);Ki.info("apply remote changes prepared: changes={0} resources={1}",e.length,n.reduce((i,a)=>i+a.total,0)),this.task.start(Math.max(n.reduce((i,a)=>i+a.total,0),1));let o=n.map(i=>({change:i.change,total:i.total,task:this.task.subTaskMonitor(i.total)}));for(let{change:i,total:a,task:s}of o){this.task.throwIfAborted(),s.start(a),this.currentChangeTask=s;try{if(this.isCoveredByAppliedFolderCheckout(i,t)){s.progress(a);continue}let c=this.findLocalOverlaps(i);if(c.length>0&&!this.options.force){if(await this.tryApplyRemoteChangeWithLocalOverlaps(i,c))continue;this.conflicts.push(i),s.step(1);continue}i.type==="remoteDeleted"?(await this.workspace.deletePath(i.remotePath,s),this.deleted.push(i.remotePath)):i.type==="remoteRenamed"?(i.oldRemotePath&&(await this.workspace.deletePath(i.oldRemotePath,s),this.deleted.push(i.oldRemotePath)),await this.workspace.checkoutFromMirror(i.remotePath,s),this.updated.push(i.remotePath)):i.isFolder&&i.type==="remoteModified"?(await this.workspace.copyMirrorMetaInfo(i.remotePath,!0,s),this.updated.push(i.remotePath),s.step(1)):(await this.workspace.checkoutFromMirror(i.remotePath,s),this.updated.push(i.remotePath),i.isFolder&&t.add(i.remotePath))}finally{this.currentChangeTask=void 0}}return await this.cleanupEmptyOrphanParents(this.deleted,this.mirror,this.workspace),this.finishApplyRemoteChanges({updated:this.updated,deleted:this.deleted,conflicts:this.conflicts})}finishApplyRemoteChanges(e){Ki.info("apply remote changes done: updated={0} deleted={1} conflicts={2}",e.updated.length,e.deleted.length,e.conflicts.length);for(let t of e.updated)Ki.info("apply remote change item: status=updated path={0}",t);for(let t of e.deleted)Ki.info("apply remote change item: status=deleted path={0}",t);for(let t of e.conflicts)Ki.info("apply remote change item: status=conflict path={0}",t.remotePath);return e}isCoveredByAppliedFolderCheckout(e,t){for(let n of t)if(e.remotePath!==n&&le(e.remotePath,n))return!0;return!1}async createProgressItems(e){return Promise.all(e.map(async t=>({change:t,total:await this.countChangeProgress(t)})))}async countChangeProgress(e){if(e.type==="remoteDeleted")return this.countWorkspaceProgress(e.remotePath);if(e.type==="remoteRenamed"){let[t,n]=await Promise.all([e.oldRemotePath?this.countWorkspaceProgress(e.oldRemotePath):Promise.resolve(0),this.countCheckoutProgress(e.remotePath)]);return t+n}return e.isFolder&&e.type==="remoteModified"?1:this.countCheckoutProgress(e.remotePath)}async countCheckoutProgress(e){return Math.max(await this.workspace.countCheckoutResources(e),1)}async countWorkspaceProgress(e){return Math.max(await this.workspace.countResources([e]),1)}async tryApplyRemoteChangeWithLocalOverlaps(e,t){return await this.tryApplyRemoteRenamePreservingLocalModification(e,t)||await this.tryMergeSeparatedMetaAndContentChanges(e,t)?!0:this.canApplyFolderMetaOnly(e,t)?(await this.workspace.copyMirrorMetaInfo(e.remotePath,!0,this.getCurrentChangeTask()),this.updated.push(e.remotePath),this.getCurrentChangeTask().step(1),!0):this.tryThreeWayMergeSameFileContentChange(e,t)}async tryMergeSeparatedMetaAndContentChanges(e,t){if(e.type!=="remoteModified"||t.length!==1)return!1;let n=t[0];return n.remotePath!==e.remotePath||n.type!=="modified"?!1:e.metaChanged&&!e.contentChanged&&n.contentChanged&&!n.metaChanged?(await this.workspace.copyMirrorMetaInfo(e.remotePath,!!e.isFolder,this.getCurrentChangeTask()),this.updated.push(e.remotePath),this.getCurrentChangeTask().step(1),!0):e.contentChanged&&!e.metaChanged&&n.metaChanged&&!n.contentChanged?(await this.workspace.copyMirrorContent(e.remotePath,this.getCurrentChangeTask()),this.updated.push(e.remotePath),this.getCurrentChangeTask().step(1),!0):!1}async tryApplyRemoteRenamePreservingLocalModification(e,t){if(e.type!=="remoteRenamed"||!e.oldRemotePath||t.length!==1)return!1;let n=t[0];return n.type!=="modified"||n.remotePath!==e.oldRemotePath||!await this.applyRemoteRenameContent(e,n)?!1:(await this.applyRemoteRenameMeta(e,n),await this.workspace.deletePath(e.oldRemotePath,this.getCurrentChangeTask()),this.updated.push(e.remotePath),this.deleted.push(e.oldRemotePath),e.isFolder||this.getCurrentChangeTask().step(1),!0)}async applyRemoteRenameContent(e,t){if(e.isFolder)return await this.workspace.checkoutFromMirror(e.remotePath,this.getCurrentChangeTask()),!0;let n=this.workspace.toLocalPath(e.remotePath);return this.task.throwIfAborted(),await ls.promises.mkdir(Hn.dirname(n),{recursive:!0}),e.contentChanged&&t.contentChanged?this.mergeRemoteRenameContent(e,n):t.contentChanged&&e.oldRemotePath?(this.options.mergeBaseDir&&await this.mergeRemoteRenameContent(e,n)||(this.task.throwIfAborted(),await ls.promises.copyFile(this.workspace.toLocalPath(e.oldRemotePath),n)),!0):(await this.workspace.copyMirrorContent(e.remotePath,this.getCurrentChangeTask()),!0)}async mergeRemoteRenameContent(e,t){if(!e.oldRemotePath)return!1;let n;try{if(!this.options.mergeBaseDir||!e.oldRemotePath)return!1;n=await ls.promises.mkdtemp(Hn.join(vE.tmpdir(),"succapp-remote-rename-merge-"));let o=Hn.join(n,"workspace");this.task.throwIfAborted(),await ls.promises.copyFile(this.workspace.toLocalPath(e.oldRemotePath),o);let i=Hn.join(this.options.mergeBaseDir,Ee(e.oldRemotePath)),a=this.mirror.toLocalPath(e.remotePath),s=await this.mergeSingleFileContent({remotePath:e.remotePath,workspaceFile:o,baseFile:i,remoteFile:a});return s.threeWayResult&&(this.task.throwIfAborted(),await ls.promises.copyFile(o,t)),s.merged}catch(o){return Ki.debug(`merge remote rename content failed: ${e.remotePath}`,o),!1}finally{n&&await zr(n)}}async applyRemoteRenameMeta(e,t){let n=await ot(this.mirror.root,e.remotePath);if(!n)return;let o=n;if(t.metaChanged&&e.oldRemotePath){let[i,a]=await Promise.all([ot(this.workspaceRoot,e.oldRemotePath),this.options.mergeBaseDir?ot(this.options.mergeBaseDir,e.oldRemotePath):Promise.resolve(void 0)]);o=this.mergeMetaWithLocalDelta(n,i,a)}await this.workspace.patchMeta(Hn.posix.dirname(e.remotePath),{[Hn.posix.basename(e.remotePath)]:o},this.getCurrentChangeTask())}mergeMetaWithLocalDelta(e,t,n){let o={...e},i=Bi(t),a=Bi(n),s=new Set([...Object.keys(i),...Object.keys(a)]);for(let c of s)(0,kE.isDeepStrictEqual)(i[c],a[c])||(c in i?o[c]=i[c]:delete o[c]);return o}canApplyFolderMetaOnly(e,t){return e.type==="remoteModified"&&!!e.isFolder&&!!e.metaChanged&&!e.contentChanged&&t.every(n=>n.remotePath!==e.remotePath&&n.oldRemotePath!==e.remotePath)}findLocalOverlaps(e){return this.options.localChanges.filter(t=>Vo(t.remotePath,t.oldRemotePath,e.remotePath,e.oldRemotePath))}sortRemoteChanges(e){return[...e].sort((t,n)=>{let o=this.getApplyOrderRank(t),i=this.getApplyOrderRank(n);return o!==i?o-i:t.type==="remoteDeleted"&&n.type==="remoteDeleted"?Ln(n.remotePath)-Ln(t.remotePath)||t.remotePath.localeCompare(n.remotePath):t.type==="remoteRenamed"&&n.type==="remoteRenamed"?this.getRemoteRenameDeleteDepth(n)-this.getRemoteRenameDeleteDepth(t)||this.getRemoteRenameDeletePath(t).localeCompare(this.getRemoteRenameDeletePath(n)):t.remotePath.localeCompare(n.remotePath)})}getApplyOrderRank(e){return e.type==="remoteDeleted"?0:e.type==="remoteRenamed"?1:2}getRemoteRenameDeleteDepth(e){return Ln(this.getRemoteRenameDeletePath(e))}getRemoteRenameDeletePath(e){return e.oldRemotePath??e.remotePath}async tryThreeWayMergeSameFileContentChange(e,t){if(e.type!=="remoteModified"||!e.contentChanged||t.length!==1)return!1;let n=t[0];if(n.type!=="modified"||!n.contentChanged||n.remotePath!==e.remotePath||!this.options.mergeBaseDir)return!1;let o=this.workspace.toLocalPath(e.remotePath),i=Hn.join(this.options.mergeBaseDir,Ee(e.remotePath)),a=this.mirror.toLocalPath(e.remotePath),s=await this.mergeSingleFileContent({remotePath:e.remotePath,workspaceFile:o,baseFile:i,remoteFile:a});return s.threeWayResult&&(await this.workspace.copyMirrorMetaInfo(e.remotePath,!!e.isFolder,this.getCurrentChangeTask()),this.updated.push(e.remotePath)),s.merged?(this.getCurrentChangeTask().step(1),!0):!1}async mergeSingleFileContent(e){let t=(await this.context.getMetadataVersionCatalog()).getInfoByPath(e.remotePath),n=t?.upgradeSupported?await this.getApiClient():void 0;return new Gd({...e,versionInfo:t,client:n}).execute()}getCurrentChangeTask(){return K(this.currentChangeTask,"current apply remote change task is missing."),this.currentChangeTask}};Wr();V();Y();I();it();var wE="merge-base",Ji="merge-backup";wn();var Et=M("sync.pull"),Kd=class extends at{async execute(){Et.info("pull start: {0}",this.createPullScopeLog()),this.task.start(100,{message:d("workspace.sync.progress.pull.running"),retainOnFinish:!0});let e=this.task.subTaskMonitor(8),t=this.task.subTaskMonitor(55),n=this.task.subTaskMonitor(3),o=this.task.subTaskMonitor(22),i=this.task.subTaskMonitor(8),a=this.task.subTaskMonitor(2),s=this.task.subTaskMonitor(2);e.start(4),Et.info("pull prepare start");let c=e.subTaskMonitor(1),l=e.subTaskMonitor(1),u=e.subTaskMonitor(1),p=e.subTaskMonitor(1);c.start(1),this.assertNoRemoteProjectUnavailableChanges(this.options.changes,"pull"),this.assertNoProjectRootRenameChanges(this.options.changes,"pull");let g=this.getKnownRemoteChanges(),m=g?this.getKnownChangeTargets(g):await this.resolveTargetRemotePaths(this.options.paths);c.step(1),Et.info("pull targets resolved: {0}",this.formatTargetsForLog(m)),!this.options.paths&&!g?(Et.info("pull refresh status start"),await this.context.refreshSyncStatus(l),Et.info("pull refresh status done")):l.finish();let f,y,C=[],S;if(g?(f=this.getTargetLocalChanges(m),y=g,C=this.options.force===!0?this.getTargetCachedPullChanges(m):[],u.finish()):this.options.paths?(f=this.getTargetLocalChanges(m),C=this.options.force===!0?this.getTargetCachedPullChanges(m):[],S=this.expandTargetsForRenameChanges(m,[...f,...C]),u.start(1),y=this.filterChangesByTargets(await this.detectRemoteChanges(S,u),S),u.step(1)):(f=this.getLocalSyncChanges().filter(b=>b.type!=="conflict"),y=this.getRemoteSyncChanges(),u.finish()),Et.info("pull changes prepared: local={0} remote={1}",f.length,y.length),y.length===0&&this.options.force!==!0)return Et.info("pull skipped: no applicable remote changes"),p.finish(),t.finish(),n.finish(),o.finish(),i.finish(),a.finish(),s.finish(),this.task.setMessage(d("workspace.sync.progress.pull.done",0,0,0)),this.task.finish(),{updated:[],deleted:[],conflicts:[],oldFiles:[]};p.start(1),Et.info("pull merge base capture start");let w=await this.captureMergeBaseDir(f,y);p.step(1),Et.info("pull merge base capture done");let h,k=!1,v;try{await new Zo(this.context,{task:t,...this.createFetchOptions(y,m,g)}).execute(),Et.info("pull reconcile local changes start");let b=await this.reconcileLocalChangesAfterFetch(f,y,m,n);Et.info("pull reconcile local changes done: local={0}",b.length);let R=this.options.force?await this.includeForceTargetChanges(y,b,m,C):y;h=await new zd(this.context,{remoteChanges:R,localChanges:b,force:!!this.options.force,mergeBaseDir:w,task:o}).execute(),this.applyPullOperationResult(R,h),Et.info("pull metadata version check start: paths={0}",h.updated.length);let Q=await this.detectOldFiles(i,h.updated);Et.info("pull metadata version check done: oldFiles={0}",Q.length);let x={...h,oldFiles:Q};return k=!0,v=d("workspace.sync.progress.pull.done",x.updated.length,x.deleted.length,x.conflicts.length),Et.info("pull done: updated={0} deleted={1} conflicts={2} oldFiles={3}",x.updated.length,x.deleted.length,x.conflicts.length,Q.length),x}finally{await this.cleanupPullState(a,w,h),k&&(s.finish(),this.task.setMessage(v),this.task.finish())}}createPullScopeLog(){return this.hasKnownChanges(this.options.changes)?`changes=${this.options.changes.length}`:this.options.paths?.join(", ")??"<all>"}getKnownRemoteChanges(){if(this.hasKnownChanges(this.options.changes))return ol(this.options.changes)}getTargetLocalChanges(e){return this.filterChangesByTargets(this.context.getSyncChanges().filter(t=>At(t)&&t.type!=="conflict"),e)}getTargetCachedPullChanges(e){return this.filterChangesByTargets(ol(this.context.getSyncChanges()),e)}async detectRemoteChanges(e,t){return new qn({targets:e,task:t,workspace:this.context}).detect()}async detectOldFiles(e,t){return t.length===0?(e.finish(),[]):Ld(this.context,e,t.map(n=>ge(this.workspaceRoot,n)))}async cleanupPullState(e,t,n){if(!t){e.finish();return}let o=!n||n.conflicts.length===0;Et.info("pull cleanup start"),e.start(o?2:1),await zr(t),e.step(1),o&&(await zr(gr.join(this.workspaceRoot,".succapp",Ji)),e.step(1)),Et.info("pull cleanup done")}formatTargetsForLog(e){return e?`targets=${e.size}`:"<all>"}getFetchPaths(e,t){if(!this.options.paths)return;if(e.length===0)return[...t||new Set(this.options.paths)];let n=new Set;for(let o of e)n.add(o.remotePath),o.oldRemotePath&&n.add(o.oldRemotePath);return[...n]}createFetchOptions(e,t,n){return n?{changes:e}:{paths:this.getFetchPaths(e,t)}}async reconcileLocalChangesAfterFetch(e,t,n,o){if(o.start(1),e.length===0||t.length===0||!e.some(s=>t.some(c=>this.isOverlappedChange(s,c)))||n)return o.step(1),e;await this.context.refreshSyncStatus(o);let i=this.filterChangesByTargets(this.getLocalSyncChanges().filter(s=>s.type!=="conflict"),n),a=e.filter(s=>t.some(c=>this.isOverlappedChange(s,c))?i.some(c=>this.isOverlappedChange(s,c)):!0);for(let s of i){let c=t.find(l=>this.isOverlappedChange(s,l));c&&(a.some(l=>this.isSameChange(l,s))||this.isFetchIntroducedRemoteMetaOnlyChange(s,c)||a.push(s))}return a}applyPullOperationResult(e,t){for(let n of e)this.context.applySyncOperationResult(n,t.conflicts.filter(o=>this.isOverlappedChange(n,o)))}isFetchIntroducedRemoteMetaOnlyChange(e,t){return e.remotePath===t.remotePath&&e.type==="modified"&&t.type==="remoteModified"&&!!e.metaChanged&&!e.contentChanged&&!!t.metaChanged&&!t.contentChanged}isOverlappedChange(e,t){return Vo(e.remotePath,e.oldRemotePath,t.remotePath,t.oldRemotePath)}isSameChange(e,t){return e.type===t.type&&e.remotePath===t.remotePath&&e.oldRemotePath===t.oldRemotePath}async includeForceTargetChanges(e,t,n,o=[]){if(!n)return e;let i=[...e],a=new Set(e.map(c=>c.remotePath)),s=this.createMirrorStore();for(let c of o)if(!a.has(c.remotePath)){if(c.type==="conflict"){await this.addForceMirrorChange(i,a,s,c);continue}i.push(c),a.add(c.remotePath)}for(let c of t){if(c.type==="renamed"&&c.oldRemotePath){if(!n.has(c.remotePath)&&!n.has(c.oldRemotePath))continue;await this.addForceMirrorChange(i,a,s,{path:c.oldPath??Ee(c.oldRemotePath),remotePath:c.oldRemotePath,isFolder:c.isFolder,contentChanged:c.contentChanged,metaChanged:c.metaChanged}),await this.addForceMirrorChange(i,a,s,c);continue}a.has(c.remotePath)||n.has(c.remotePath)&&await this.addForceMirrorChange(i,a,s,c)}return i}async addForceMirrorChange(e,t,n,o){if(t.has(o.remotePath))return;let i=await n.exists(o.remotePath);e.push({path:o.path,remotePath:o.remotePath,...o.fileId!==void 0?{fileId:o.fileId}:{},type:i?"remoteModified":"remoteDeleted",isFolder:i?await n.isFolder(o.remotePath):o.isFolder,contentChanged:i?o.contentChanged:!1,metaChanged:i?o.metaChanged:!1}),t.add(o.remotePath)}async captureMergeBaseDir(e,t){let n=e.filter(p=>p.type==="modified"&&p.contentChanged),o=e.filter(p=>p.type==="modified"&&(p.contentChanged||p.metaChanged));if(o.length===0)return;let i=t.filter(p=>p.type==="remoteModified"?!!p.contentChanged&&n.some(g=>this.isOverlappedChange(g,p)):p.type==="remoteRenamed"?o.some(g=>this.isOverlappedChange(g,p)):!1);if(i.length===0)return;let a=gr.join(this.workspaceRoot,".succapp"),s=gr.join(a,wE),c=gr.join(a,Ji);await Promise.all([zr(s),zr(c)]),this.task.throwIfAborted(),await Promise.all([mo.promises.mkdir(s,{recursive:!0}),mo.promises.mkdir(c,{recursive:!0})]);let l=this.createMirrorStore(),u=this.createWorkspaceStore(l);return await Promise.all(i.map(async p=>{let g=p.type==="remoteRenamed"&&p.oldRemotePath?p.oldRemotePath:p.remotePath,m=Ee(g),f=gr.join(s,m),y=gr.join(c,m);await Promise.all([(async()=>{try{this.task.throwIfAborted(),await mo.promises.mkdir(gr.dirname(f),{recursive:!0}),await mo.promises.copyFile(l.toLocalPath(g),f),await this.copyBaseMetaFile(l.root,s,m,g)}catch(C){Et.debug(`capture merge base failed for ${g}`,C)}})(),(async()=>{try{this.task.throwIfAborted(),await mo.promises.mkdir(gr.dirname(y),{recursive:!0}),await mo.promises.copyFile(u.toLocalPath(g),y)}catch(C){Et.debug(`backup workspace file failed for ${g}`,C)}})()])})),s}async copyBaseMetaFile(e,t,n,o){let i=gr.dirname(n),a=gr.join(e,i,te),s=gr.join(t,i,te);try{this.task.throwIfAborted(),await mo.promises.mkdir(gr.dirname(s),{recursive:!0}),await mo.promises.copyFile(a,s)}catch(c){Et.debug(`capture merge base meta failed for ${o}`,c)}}};var ep=E(require("fs")),Jg=E(require("path"));F();ze();O();wi();O();wi();function PE(r,e={}){return Jd(r,e)!==void 0}function cl(r,e={}){let t=Jd(r,e);if(!t||!r||typeof r!="object")return r;let n={...dr(r),suggestedAction:t,retryable:!1},o=jt(r);return t==="fixMeta"&&typeof n.backendErrorCode!="string"&&typeof o=="string"&&(n.backendErrorCode=o),(typeof n.path!="string"||n.path.length===0)&&(n.path=e.targetPath??e.path),r.properties=n,un(r)==null&&(r.errorType=B$(r)),r}function Jd(r,e={}){let t=dr(r)?.suggestedAction;if(H$(t))return t;let n=jt(r);if(n==="err.meta.fileExists"||n==="err.meta.file.notfound"||n==="err.meta.saveConcurrent")return"pull";if(n==="err.meta.filefolder.notfound")return"fixMeta";if(n==="err.meta.fileExistsIgnoreCase")return"rename";if(n==="err.meta.delete.project")return"refresh";if(n==="err.permission.denied")return e.action==="delete"&&G$(e.path)?"refresh":"contactAdmin"}function B$(r){let e=jt(r);return e==="err.permission.denied"||e==="err.meta.delete.project"?"error":"warn"}function H$(r){return r==="pull"||r==="rename"||r==="refresh"||r==="fixMeta"||r==="contactAdmin"}function G$(r){return typeof r=="string"&&/^\/[^/]+$/.test(r)}V();it();Wr();var z$;function Gg(){return z$}Y();I();$i();Ft();wn();var zg=E(require("path"));it();Y();F();Wr();var K$=M("sync.meta-repair"),RE="unreadableMeta",bE="blockedMetaPath",Qd=class{constructor(e){this.workspace=e}async repair(e){let t=new Set(e.suspectMetaPaths),n=new Map,o=[],i=new Set;for(let s of t)await this.getWorkItem(s,n,o);for(let s of e.localChanges)await this.repairChange(s,t,n,o,i);let a=[];for(let s of n.values())!s.changed||s.blocked||(await Ed(this.workspace.root,s.metaPath,s.dotMeta),a.push(s.metaPath));return{repairedMetaPaths:a,affectedRemotePaths:[...i].sort(),failures:o}}async repairChange(e,t,n,o,i){if(e.type==="deleted"){await this.repairDeleted(e,t,n,o,i);return}if(e.type==="modified"){await this.repairModified(e,t,n,o,i);return}e.type==="renamed"&&e.oldRemotePath&&await this.repairRenamed(e,t,n,o,i)}async repairDeleted(e,t,n,o,i){let a=this.getDotMetaMetaPath(e.remotePath);if(!t.has(a))return;let s=await this.getWorkItem(a,n,o);if(!s||s.blocked)return;let c=this.getDotMetaKey(e.remotePath);s.dotMeta[c]&&(delete s.dotMeta[c],s.changed=!0,i.add(e.remotePath))}async repairModified(e,t,n,o,i){let a=this.getDotMetaMetaPath(e.remotePath);if(!t.has(a))return;let s=await this.getWorkItem(a,n,o);if(!s||s.blocked)return;let c=this.getDotMetaKey(e.remotePath);if(s.dotMeta[c])return;let l=await this.readMirrorMeta(e.remotePath);l&&(s.dotMeta[c]=this.cloneMetaInfo(l),s.changed=!0,i.add(e.remotePath))}async repairRenamed(e,t,n,o,i){let a=this.getDotMetaMetaPath(e.oldRemotePath),s=this.getDotMetaMetaPath(e.remotePath);if(!t.has(a)&&!t.has(s))return;let c=await this.getWorkItem(a,n,o),l=await this.getWorkItem(s,n,o);if(!c||!l||c.blocked||l.blocked)return;let u=this.getDotMetaKey(e.oldRemotePath),p=this.getDotMetaKey(e.remotePath),g=c.dotMeta[u]??await this.readMirrorMeta(e.oldRemotePath);!l.dotMeta[p]&&g&&(l.dotMeta[p]=this.cloneMetaInfo(g),l.changed=!0),c.dotMeta[u]&&(delete c.dotMeta[u],c.changed=!0),i.add(e.remotePath),i.add(e.oldRemotePath)}async getWorkItem(e,t,n){let o=t.get(e);if(o)return o;let i;try{i=await vn(this.workspace.root,e)}catch(c){if(!this.isBlockedMetaPathError(c))throw c;let l={metaPath:e,dotMeta:{},changed:!1,blocked:!0};return n.push({path:e,errorInfo:bE}),this.logRepairFailure(e,bE),t.set(e,l),l}let a=this.normalizeDotMeta(i.dotMeta),s={metaPath:e,dotMeta:a.dotMeta,changed:!!i.damaged||a.changed,blocked:i.repairable===!1};return s.blocked&&(n.push({path:e,errorInfo:RE}),this.logRepairFailure(e,RE)),t.set(e,s),s}isBlockedMetaPathError(e){let t=No(e);return t==="ENOTDIR"||t==="EISDIR"}logRepairFailure(e,t){K$.warn(["workspace meta repair failed",`workspaceRoot=${this.workspace.root}`,`mirrorRoot=${this.workspace.getMirrorRoot()}`,`path=${e}`,`errorInfo=${String(t)}`].join(`
|
|
75
|
+
`))}normalizeDotMeta(e){let t={},n=!1;for(let o of Object.keys(e)){let i=e[o];if(typeof i=="object"&&i!==null&&!Array.isArray(i)){t[o]=i;continue}n=!0}return{dotMeta:t,changed:n}}async readMirrorMeta(e){let t=this.getDotMetaMetaPath(e);return(await vn(this.workspace.getMirrorRoot(),t)).dotMeta[this.getDotMetaKey(e)]}cloneMetaInfo(e){return{...e,option:e.option?{...e.option}:void 0,customOption:e.customOption?{...e.customOption}:void 0}}getDotMetaMetaPath(e){let t=zg.posix.dirname(e);return t==="/"?"/"+te:t+"/"+te}getDotMetaKey(e){return zg.posix.basename(e)}};Hi();tl();Tg();var EE="10Mb";var J$=/^\s*(\d+(?:\.\d+)?)\s*(b|kb|mb|gb)?\s*$/i,Q$={b:1,kb:1024,mb:1048576,gb:1073741824};function Y$(r,e=10485760){let t=J$.exec(r);if(!t)return e;let n=Number(t[1]),o=(t[2]??"b").toLowerCase(),i=Q$[o]??1;return Math.floor(n*i)}var Kg=class{reader;writer;autoPushValue=!1;autoPushDelayValue=2e3;autoPullValue=!1;autoPullIntervalValue=60;syncIgnoreValue=[];maxPushFileSizeValue=EE;configure(e,t){this.reader=e,this.writer=t,this.load()}load(){let e=this.reader;e&&(this.autoPushValue=e("sync.autoPush",!1),this.autoPushDelayValue=e("sync.autoPushDelay",2e3),this.autoPullValue=e("sync.autoPull",!1),this.autoPullIntervalValue=e("sync.autoPullInterval",60),this.syncIgnoreValue=e("sync.ignore",[]),this.maxPushFileSizeValue=e("sync.maxPushFileSize",EE))}get autoPush(){return this.autoPushValue}get autoPushDelay(){return this.autoPushDelayValue}get autoPull(){return this.autoPullValue}get autoPullInterval(){return this.autoPullIntervalValue}get conflictStrategy(){return"ask"}get syncIgnore(){return[...this.syncIgnoreValue]}get maxPushFileSizeBytes(){return Y$(this.maxPushFileSizeValue,10485760)}async setAutoPush(e){this.autoPushValue=e,await this.writer?.("sync.autoPush",e),this.load()}},Kt=new Kg;var qe=M("sync.push"),Yd=class extends ss{targets;localChanges=0;remoteChanges=0;requests=0;missingParentCreates=0;workspaceMetaRepairCandidates=0;workspaceMetaRepairRepaired=0;workspaceMetaRepairFailures=0;requestsByType={};preflightFailures=0;preflightFailuresByReason={};pushed=0;rejected=0;failures=0;remoteDetector;recordRequests(e){this.requests=e.length,this.requestsByType={};for(let t of e)this.incrementCounter(this.requestsByType,t.action)}recordPreflightFailures(e){this.preflightFailures+=e.length;for(let t of e)this.incrementCounter(this.preflightFailuresByReason,this.getFailureReason(t))}recordResult(e){this.pushed=e.pushed.length,this.rejected=e.rejected.length,this.failures=e.failures.length}createSnapshot(){return{runs:this.runs,durationMs:this.durationMs,...this.targets!==void 0?{targets:this.targets}:{},localChanges:this.localChanges,remoteChanges:this.remoteChanges,requests:this.requests,missingParentCreates:this.missingParentCreates,workspaceMetaRepairCandidates:this.workspaceMetaRepairCandidates,workspaceMetaRepairRepaired:this.workspaceMetaRepairRepaired,workspaceMetaRepairFailures:this.workspaceMetaRepairFailures,requestsByType:{...this.requestsByType},preflightFailures:this.preflightFailures,preflightFailuresByReason:{...this.preflightFailuresByReason},pushed:this.pushed,rejected:this.rejected,failures:this.failures,...this.remoteDetector?{remoteDetector:this.remoteDetector}:{},api:this.api}}getFailureReason(e){let t=e.errorInfo;if(!t||typeof t!="object")return"unknown";let n=t.reason;if(n!=null)return String(n);let o=t.errorCode;if(typeof o=="string"&&o.length>0)return o;let i=t.errorType;return typeof i=="string"&&i.length>0?i:"unknown"}incrementCounter(e,t){e[t]=(e[t]??0)+1}},Xd=class extends at{constructor(e,t){super(e,t)}diagnostics=new Yd;apiClient;pushContext=this.context;pushOptions=this.options;workspaceRootPath=this.workspaceRoot;mirrorRootPath=this.mirrorRoot;pushResult=this.createEmptyPushResult();run=this.createEmptyRunState();async execute(){this.beginPushRun();for(let e of this.createPushStageTasks())await e.run();return this.finishPush(this.run.startedAt)}beginPushRun(){this.assertNoRemoteProjectUnavailableChanges(this.options.changes,"push"),this.assertNoProjectRootRenameChanges(this.options.changes,"push"),this.pushResult=this.createEmptyPushResult(),this.run={...this.createEmptyRunState(),startedAt:this.diagnostics.startRun()},qe.info("push start: {0}",this.createPushScopeLog()),this.task.start(100,{message:d("workspace.sync.progress.push.running"),retainOnFinish:!0})}createPushScopeLog(){return this.hasKnownChanges(this.options.changes)?`changes=${this.options.changes.length}`:this.options.paths?.join(", ")??"<all>"}getDiagnostics(e={}){if(this.apiClient){let n=this.apiClient.getDiagnostics();n&&this.diagnostics.captureApiDiagnostics(n)}let t=this.diagnostics.createSnapshot();return e.reset&&(this.diagnostics=new Yd,this.apiClient=void 0),t}finishPush(e){if(this.diagnostics.recordResult(this.pushResult),this.apiClient){let t=this.apiClient.getDiagnostics();t&&this.diagnostics.captureApiDiagnostics(t)}return this.diagnostics.finishRun(e),qe.info("push done: pushed={0} rejected={1} failures={2}",this.pushResult.pushed.length,this.pushResult.rejected.length,this.pushResult.failures.length),qe.debug(`push diagnostics ${this.diagnostics.describeForLog()}`),this.task.setMessage(d("workspace.sync.progress.push.done",this.pushResult.pushed.length,this.pushResult.rejected.length,this.pushResult.failures.length)),this.task.finish(),this.pushResult}createEmptyRunState(){return{startedAt:0,localChanges:[],workspaceMetaRepairPaths:[],missingParentFolderCreates:[],remoteChanges:[],requests:[]}}createPushStageTasks(){let e=this.task.subTaskMonitor(20),t=this.task.subTaskMonitor(20),n=this.task.subTaskMonitor(54),o=this.task.subTaskMonitor(3),i=this.task.subTaskMonitor(3);return e.start(5),[new Qg(this,e),new Yg(this,e),new Xg(this,e),new Zg(this,e),new ey(this,e),new ty(this,t),new ry(this,n,o,i)]}canContinuePushPipeline(){return this.pushResult.rejected.length===0&&this.pushResult.failures.length===0}hasPushRequests(){return this.run.requests.length>0}finishTask(){this.task.setMessage(d("workspace.sync.progress.push.stopped")),this.task.finish()}isForcePush(){return!!this.options.force}expandPushTargetsForRenameChanges(e,t){return this.expandTargetsForRenameChanges(e,t)}async getApiClientForPush(){let e=await this.getApiClient();return this.apiClient=e,e}async uploadFileMutation(e,t){return await this.notifySyncPushFileRequest(t),t.action==="create"?e.createFile(this.toApiFileMutationRequest(t)):t.action==="modify"?e.modifyFile(this.toApiModifyFileRequest(t)):t.action==="move"?(K(t.targetPath,`targetPath is required when moving file: ${t.path}`),e.moveFile(this.toApiMoveFileRequest(t,t.targetPath))):e.deleteFile(t.path,{expectedRevision:t.expectedRevision===null?void 0:t.expectedRevision,expectedModifyTime:t.expectedModifyTime===null?void 0:t.expectedModifyTime})}notifySyncPushFileRequest(e){return this.options.onSyncPushFileRequest?.(e)}toApiFileMutationRequest(e){let{action:t,contentValidated:n,...o}=e;return o}toApiModifyFileRequest(e){let t=this.toApiFileMutationRequest(e);return{...t,expectedRevision:this.toWriteExpectedRevision(t.expectedRevision)}}toApiMoveFileRequest(e,t){let n=this.toApiFileMutationRequest(e);return{...n,targetPath:t,expectedRevision:this.toWriteExpectedRevision(n.expectedRevision)}}toWriteExpectedRevision(e){return e===null?void 0:e}reportPushDiagnostic(e,t,n){this.reportDiagnostic({path:e,message:t,errorInfo:n})}createEmptyPushResult(){return{pushed:[],rejected:[],failures:[]}}formatTargetsForLog(e){return e?`${e.size}`:"<all>"}reportPushFailure(e,t){this.reportDiagnostic({path:e.path,message:t,errorInfo:e.errorInfo})}},ll=class{constructor(e,t){this.command=e;this.task=t}async run(){this.shouldRun()&&await this.doRun()}shouldRun(){return!0}async isFolderPath(e,t){try{return(await ep.promises.stat(ge(e,t))).isDirectory()}catch(n){if(_(n))return qe.debug(`sync folder path does not exist: ${e}:${t}`),!1;throw n}}getParentPaths(e){let t=Ee(ie(e)).split("/").filter(Boolean),n=[];for(let o=0;o<t.length-1;o++)n.push("/"+t.slice(0,o+1).join("/"));return n}},Qg=class extends ll{constructor(e,t){super(e,t.subTaskMonitor(1))}doRun(){return this.collectLocalChanges()}async collectLocalChanges(){qe.info("push prepare start");let{targets:e,localChanges:t}=await this.getLocalChangesForPush();this.command.run.targets=e,this.command.run.localChanges=t,this.command.diagnostics.targets=e?.size,this.command.diagnostics.localChanges=t.length,qe.info("push local changes prepared: targets={0} local={1}",this.command.formatTargetsForLog(e),t.length)}async getLocalChangesForPush(){let e=this.command.pushOptions;if(this.command.hasKnownChanges(e.changes))return this.task.finish(),{targets:new Set(this.command.getKnownChangeTargetRemotePaths(e.changes)),localChanges:e.changes};this.task.start(2);let t=this.task.subTaskMonitor(1),n=this.task.subTaskMonitor(1);t.start(1);let o=this.normalizeDotMetaTargets(await this.command.resolveTargetRemotePaths(e.paths)),i=o?new Set(Ht(o)):void 0;return t.step(1),await this.refreshTargetChangesForPush(i,n),{targets:i,localChanges:this.command.filterChangesByTargets(this.command.pushContext.getSyncChanges().filter(a=>At(a)),i)}}async refreshTargetChangesForPush(e,t){if(!e){await this.command.pushContext.refreshSyncStatus(t);return}if(e.size===0){t.finish();return}if(await this.hasDirectoryTarget(e)){await this.command.pushContext.refreshSyncStatus(t);return}t.start(1),await this.command.pushContext.consumeFileChanges([...e].map(n=>({filePath:ge(this.command.workspaceRootPath,n),type:"changed"}))),t.step(1)}async hasDirectoryTarget(e){return(await Promise.all([...e].map(async n=>await this.isDirectoryTarget(this.command.workspaceRootPath,n)||await this.isDirectoryTarget(this.command.mirrorRootPath,n)))).some(Boolean)}async isDirectoryTarget(e,t){try{return(await ep.promises.stat(ge(e,t))).isDirectory()}catch(n){return _(n)?(qe.debug(`push target is not a directory: ${e}:${t}`),!1):(qe.debug(`push target stat failed, fallback to full status: ${e}:${t}`,n),!0)}}normalizeDotMetaTargets(e){if(!e)return;let t=new Set;for(let n of e){if(Jg.posix.basename(n)===te){t.add(Jg.posix.dirname(n));continue}t.add(n)}return t}},Yg=class extends ll{constructor(e,t){super(e,t.subTaskMonitor(1))}doRun(){return this.repairWorkspaceMeta()}async repairWorkspaceMeta(){this.task.start(1),this.command.run.workspaceMetaRepairPaths=rE(this.command.run.localChanges),this.command.diagnostics.workspaceMetaRepairCandidates=this.command.run.workspaceMetaRepairPaths.length,qe.info("push workspace metadata repair start: candidates={0}",this.command.run.workspaceMetaRepairPaths.length);let e=await new Qd(this.command.pushContext).repair({suspectMetaPaths:this.command.run.workspaceMetaRepairPaths,localChanges:this.command.run.localChanges});this.command.diagnostics.workspaceMetaRepairRepaired=e.repairedMetaPaths.length,this.command.diagnostics.workspaceMetaRepairFailures=e.failures.length,this.task.step(1),qe.info("push workspace metadata repair done: failures={0}",e.failures.length),e.failures.length>0&&(this.command.finishTask(),this.command.pushResult.failures.push(...e.failures))}},us=class extends ll{shouldRun(){return this.command.canContinuePushPipeline()}},Xg=class extends us{constructor(e,t){super(e,t.subTaskMonitor(1))}doRun(){return this.analyzeParentFolders()}async analyzeParentFolders(){if(this.task.start(1),qe.info("push parent folder analysis start"),this.command.run.missingParentFolderCreates=await this.collectMissingParentFolderCreates(this.command.run.localChanges),this.command.diagnostics.missingParentCreates=this.command.run.missingParentFolderCreates.length,this.command.run.operationTargets=this.command.expandPushTargetsForRenameChanges(this.command.run.targets,this.command.run.localChanges),this.command.run.operationTargets)for(let e of this.command.run.missingParentFolderCreates)this.command.run.operationTargets.add(e);this.task.step(1),qe.info("push parent folder analysis done: missingParents={0}",this.command.run.missingParentFolderCreates.length)}async collectMissingParentFolderCreates(e){let t=new Set,n=new Set;for(let o of e)o.isFolder&&(o.type==="added"||o.type==="renamed")&&n.add(o.remotePath);for(let o of e)if(!(o.type!=="added"&&o.type!=="modified"&&o.type!=="renamed"))for(let i of this.getParentPaths(o.remotePath))n.has(i)||t.has(i)||await this.isFolderPath(this.command.mirrorRootPath,i)||!await this.isFolderPath(this.command.workspaceRootPath,i)||t.add(i);return[...t].sort((o,i)=>{let a=Ln(o)-Ln(i);return a!==0?a:o.localeCompare(i)})}},Zg=class extends us{constructor(e,t){super(e,t.subTaskMonitor(1))}doRun(){return this.checkRemoteChanges()}async checkRemoteChanges(){if(this.task.start(1),qe.info("push remote change check start: {0}",this.command.formatTargetsForLog(this.command.run.operationTargets)),this.command.run.remoteChanges=await this.getRemoteChangesForPush(this.command.run.operationTargets),this.command.diagnostics.remoteChanges=this.command.run.remoteChanges.length,this.task.step(1),qe.info("push remote change check done: remote={0}",this.command.run.remoteChanges.length),this.command.run.remoteChanges.length>0&&!this.command.isForcePush()){this.command.finishTask(),this.command.pushResult.rejected.push(...this.command.run.remoteChanges);for(let e of this.command.run.remoteChanges)qe.info("push item done: status=rejected path={0}",e.remotePath)}}async getRemoteChangesForPush(e){if(this.command.hasKnownChanges(this.command.pushOptions.changes)||!e)return this.command.filterChangesByTargets(this.command.pushContext.getSyncChanges().filter(o=>kn(o)),e);if(e.size===0)return[];let t=new qn({workspace:this.command.pushContext,targets:e,task:this.task}),n=await t.detect();return this.command.diagnostics.remoteDetector=t.getDiagnostics(),this.command.filterChangesByTargets(n,e)}},ey=class extends us{constructor(e,t){super(e,t.subTaskMonitor(1))}doRun(){return this.buildPushRequests()}async buildPushRequests(){this.task.start(1),qe.info("push request build start: local={0}",this.command.run.localChanges.length),this.command.run.requests=await this.createPushRequests(this.command.run.localChanges,this.command.run.missingParentFolderCreates),this.command.diagnostics.recordRequests(this.command.run.requests),this.task.step(1),qe.info("push request build done: requests={0}",this.command.run.requests.length),this.command.run.requests.length===0&&this.command.finishTask()}async createPushRequests(e,t=[]){let n=[],o=[],i=new Set,a=new Set,s=new Set(t);for(let c of this.sortChangesForPush(this.filterDerivedFolderRenameChanges(e))){if(c.type==="renamed"&&c.oldRemotePath){await this.appendMissingParentFolderCreates(c.remotePath,s,a,i,n);let l=this.getMovedFolderChildSource(c.oldRemotePath,o);if(l===c.remotePath){(c.contentChanged||c.metaChanged)&&n.push(await this.createModifyRequest(c,c.oldRemotePath,!0));continue}n.push(await this.createMoveRequest(c,l)),c.isFolder&&(o.push({oldRemotePath:c.oldRemotePath,newRemotePath:c.remotePath}),a.add(c.remotePath));continue}if(c.type==="added"){await this.appendMissingParentFolderCreates(c.remotePath,s,a,i,n),n.push(await this.createCreateRequest(c.remotePath,c.isFolder)),c.isFolder&&a.add(c.remotePath);continue}if(c.type==="modified"){await this.appendMissingParentFolderCreates(c.remotePath,s,a,i,n),n.push(await this.createModifyRequest(c));continue}c.type==="deleted"&&n.push(await this.createDeleteRequest(c.remotePath,c.isFolder))}return n}async appendMissingParentFolderCreates(e,t,n,o,i){for(let a of this.getParentPaths(e))if(!(o.has(a)||!t.has(a)||a==="/"||n.has(a))){if(await this.isFolderPath(this.command.mirrorRootPath,a)){n.add(a);continue}i.push(await this.createCreateRequest(a,!0)),o.add(a),n.add(a)}}filterDerivedFolderRenameChanges(e){let t=e.filter(n=>n.type==="renamed"&&n.isFolder&&!!n.oldRemotePath);return t.length===0?e:e.filter(n=>n.type!=="renamed"||!n.oldRemotePath?!0:!t.some(o=>{if(o===n)return!1;let i=o.oldRemotePath,a=o.remotePath;if(!le(n.oldRemotePath,i)||!le(n.remotePath,a))return!1;let s=n.oldRemotePath.slice(i.length),c=n.remotePath.slice(a.length);return s===c&&!n.contentChanged&&!n.metaChanged}))}async createCreateRequest(e,t){let n=this.command.workspaceRootPath,o={path:e,action:"create",isFolder:t,expectedRevision:null,expectedModifyTime:null,metaInfo:Bi(await ot(n,e,{strict:!0})),metaInfoChanged:!0};return t||(o.localContentPath=ge(n,e),o.contentChanged=!0),o}async createModifyRequest(e,t=e.remotePath,n=!1){let o=this.command.workspaceRootPath,i=await ot(this.command.mirrorRootPath,t);if(!i)throw new xr("err.sync.conflict",{remotePath:e.remotePath,reason:"remoteVersionChanged"});let a=!e.isFolder&&!!e.contentChanged,s={path:e.remotePath,action:"modify",isFolder:e.isFolder,expectedRevision:this.command.isForcePush()||e.isFolder?void 0:i.revision??0,expectedModifyTime:this.command.isForcePush()||n?void 0:i.modifyTime??0,metaInfo:Bi(await ot(o,e.remotePath,{strict:!0})),metaInfoChanged:!!e.metaChanged};return a&&(s.localContentPath=ge(o,e.remotePath),s.contentChanged=!0),s}async createMoveRequest(e,t){if(!e.oldRemotePath)throw new xr("err.sync.conflict",{remotePath:e.remotePath,reason:"remoteVersionChanged"});let n=this.command.workspaceRootPath,o=await ot(this.command.mirrorRootPath,e.oldRemotePath);if(!o)throw new xr("err.sync.conflict",{remotePath:e.oldRemotePath,reason:"remoteVersionChanged"});let i=Bi(await ot(n,e.remotePath,{strict:!0})),a={path:t??e.oldRemotePath,targetPath:e.remotePath,action:"move",isFolder:e.isFolder,expectedRevision:this.command.isForcePush()||e.isFolder?void 0:o.revision??0,expectedModifyTime:this.command.isForcePush()||e.isFolder||t?void 0:o.modifyTime??0,metaInfo:i,metaInfoChanged:!!e.metaChanged};return!e.isFolder&&e.contentChanged&&(a.localContentPath=ge(n,e.remotePath),a.contentChanged=!0),a}getMovedFolderChildSource(e,t){for(let n of[...t].reverse())if(!(e===n.oldRemotePath||!le(e,n.oldRemotePath)))return n.newRemotePath+e.slice(n.oldRemotePath.length)}async createDeleteRequest(e,t){let n=await ot(this.command.mirrorRootPath,e);if(!n)throw new xr("err.sync.conflict",{remotePath:e,reason:"remoteVersionChanged"});return{path:e,action:"delete",expectedRevision:this.command.isForcePush()||t?void 0:n.revision??0,expectedModifyTime:this.command.isForcePush()||t?void 0:n.modifyTime??0}}sortChangesForPush(e){let t=n=>n.type==="deleted"?-Ln(n.remotePath):n.type==="renamed"?10:n.type==="added"?20+Ln(n.remotePath):30+Ln(n.remotePath);return[...e].sort((n,o)=>{let i=t(n),a=t(o);return i!==a?i-a:n.remotePath.localeCompare(o.remotePath)})}},Zd=class extends us{shouldRun(){return super.shouldRun()&&this.command.hasPushRequests()}async validatePushRequest(e){let t=Kt.maxPushFileSizeBytes;if(e.localContentPath)try{let n=await ep.promises.stat(e.localContentPath);if(t>0&&n.size>t){let o={path:e.path,errorInfo:{reason:"fileTooLarge",message:`File is larger than configured push limit: ${e.path}`,size:n.size,limit:t}};return this.command.reportPushFailure(o,"push validation failed"),o}if(await eE(e.localContentPath)){let o={path:e.path,errorInfo:{reason:"conflictMarkers",message:`File contains unresolved conflict markers: ${e.path}`}};return this.command.reportPushFailure(o,"push validation failed"),o}}catch(n){let o={path:e.path,errorInfo:{reason:"fileReadFailed",message:`Failed to validate push file content: ${e.path}`,cause:n instanceof Error?n.message:String(n)}};return this.command.reportPushFailure(o,"push validation failed"),o}}},ty=class extends Zd{doRun(){return this.preflightPushRequests()}async preflightPushRequests(){qe.info("push preflight start: requests={0}",this.command.run.requests.length);let e=await this.validatePushRequestsBeforePush(this.command.run.requests);this.command.diagnostics.recordPreflightFailures(e),qe.info("push preflight done: failures={0}",e.length),e.length>0&&(this.command.finishTask(),this.command.pushResult.failures.push(...e))}async validatePushRequestsBeforePush(e){let t=[];if(this.task.start(Math.max(e.length,1)),e.length===0)return this.task.step(1),t;let n=e.map(o=>({request:o,task:this.task.subTaskMonitor(1)}));for(let{request:o,task:i}of n){this.task.throwIfAborted(),i.start(1);let a=await this.validatePushRequest(o);if(a){t.push(a),i.progress(1);continue}o.contentValidated=!0,i.step(1)}return t}},ry=class extends Zd{constructor(t,n,o,i){super(t,n);this.resultTask=o;this.doneTask=i}doRun(){return this.uploadPushRequests()}async uploadPushRequests(){qe.info("push upload start: requests={0}",this.command.run.requests.length);let t=await this.pushRequests(this.command.run.requests);this.command.pushResult={pushed:[...t.pushed],rejected:[...t.rejected],failures:[...t.failures],...t.metadataVersionSuggestions?{metadataVersionSuggestions:[...t.metadataVersionSuggestions]}:{}},qe.info("push upload done: pushed={0} failures={1}",this.command.pushResult.pushed.length,this.command.pushResult.failures.length),this.doneTask.finish()}async pushRequests(t){let n=await this.command.getApiClientForPush(),o=[],i=[];this.task.start(Math.max(t.length,1)),t.length===0&&this.task.step(1);try{for(let l of t){this.task.throwIfAborted();let u=await this.preparePushRequestForUpload(l);if(u){i.push(u),qe.info("push item done: status=failed path={0}",u.path),this.task.step(1);continue}try{let p=await this.command.uploadFileMutation(n,l);if(!p.success){let g={path:p.path,errorInfo:p.errorInfo};this.command.reportPushFailure(g,"push item failed")}o.push(p),qe.info("push item done: status={0} path={1}",p.success?"pushed":"failed",p.path)}catch(p){let g=this.createPushFailureFromMutationError(l,p);if(!g)throw p;i.push(g),this.command.reportPushFailure(g,"push item failed"),qe.info("push item done: status=failed path={0}",g.path)}this.task.step(1)}}catch(l){throw await this.applyPushResponsesWithProgress(o),l}let a=await this.applyPushResponsesWithProgress(o),s=await this.createMetadataVersionSuggestions(t,o),c=s.length>0?{...a,metadataVersionSuggestions:s}:a;return i.length===0?c:{...c,failures:[...c.failures,...i]}}createPushFailureFromMutationError(t,n){if(!(n instanceof jr))return;let o=n.remoteError?this.toMutationErrorInfo(cl(Lo(n.remoteError),{action:t.action,path:t.path,targetPath:t.targetPath}),n):void 0;if(!(!o||!this.isMutationBlockedErrorInfo(o,t)))return{path:this.getMutationFailurePath(t,o),errorInfo:o}}toMutationErrorInfo(t,n){let o=n.remoteError;return{errorCode:t.errorCode??o?.errorCode??n.errorCode,errorType:t.errorType??o?.errorType??n.errorType,message:t.message??o?.message??n.message,properties:dr(t)}}isMutationBlockedErrorInfo(t,n){return PE(t,{action:n.action,path:n.path,targetPath:n.targetPath})}getMutationFailurePath(t,n){let o=dr(n)?.path;return typeof o=="string"&&o.length>0?o:this.getRequestTargetPath(t)}async applyPushResponsesWithProgress(t){this.resultTask.start(Math.max(t.length,1));let n=await this.applyPushResponses(t);return this.resultTask.step(Math.max(t.length,1)),n}async applyPushResponses(t){let n=new zt(this.command.mirrorRootPath),o=new Qr(this.command.workspaceRootPath,n);await new rs({workspace:o,mirror:n,getApiClient:()=>this.command.getApiClientForPush()}).apply(t);let i=t.filter(s=>s.success).map(s=>s.path);return i.length>0&&this.command.pushContext.clearSyncStatusTargets(i),{pushed:i,rejected:[],failures:t.filter(s=>!s.success).map(s=>({path:s.path,errorInfo:s.errorInfo}))}}async preparePushRequestForUpload(t){return t.contentValidated?void 0:this.validatePushRequest(t)}async createMetadataVersionSuggestions(t,n){let o=new Set(n.filter(s=>s.success).map(s=>s.path));if(o.size===0)return[];let i=[],a=new Set;for(let s of t){if(!this.shouldCheckMetadataVersionSuggestion(s,o))continue;let c=this.getRequestTargetPath(s);if(a.has(c))continue;let l=await this.createMetadataVersionSuggestion(s,c);l&&(a.add(c),i.push(l))}return i}shouldCheckMetadataVersionSuggestion(t,n){if(!t.localContentPath||!t.contentChanged||t.isFolder||t.action==="delete")return!1;let o=this.getRequestTargetPath(t);return n.has(o)||n.has(t.path)}async createMetadataVersionSuggestion(t,n){try{let o=t.localContentPath;if(!o)return;let i=(await this.command.pushContext.getMetadataVersionCatalog()).getInfoByPath(n),a=i?.contentVersion;if(!i?.upgradeSupported||!a)return;let s=await bd(o),c=this.getMetadataVersionSuggestionKind(s,a);return c?{path:n,currentVersion:s,targetVersion:a,metaType:i.metaType,kind:c}:void 0}catch(o){qe.debug(`push metadata suggestion check failed: ${n}`,o);return}}getMetadataVersionSuggestionKind(t,n){return Xa(t,n)?"newer":Ya(t,n)?"older":void 0}getRequestTargetPath(t){return t.targetPath??t.path}};Dg();Ft();F();O();V();Y();I();wn();var ir=M("sync.reset"),tp=class extends at{mirror=this.createMirrorStore();workspace=this.createWorkspaceStore(this.mirror);async execute(){ir.info("reset start: {0}",this.createResetScopeLog()),this.task.start(100,{message:d("workspace.sync.progress.reset.running"),retainOnFinish:!0});let e=this.task.subTaskMonitor(8),t=this.task.subTaskMonitor(87),n=this.task.subTaskMonitor(3),o=this.task.subTaskMonitor(2);e.start(4),ir.info("reset prepare start");let{targets:i,localChanges:a}=await this.prepareResetScope();e.step(1),ir.info("reset targets resolved: {0}",this.formatTargetsForLog(i)),ir.info("reset local changes checked: local={0}",a.length),a.length>0&&!this.options.force&&this.throwFirstConflict(a,"requiresOverwrite"),e.step(1);let s=this.expandTargetsForRenameChanges(i,a),c=s?this.sortRemotePathsForCheckout(Ht(s)):this.sortRemotePathsForCheckout(await this.workspace.listProjectPaths());e.step(1),ir.info("reset checkout target paths prepared: paths={0}",c.length),ir.debug(`reset checkout target paths: ${c.join("|")}`);let l=await this.createCheckoutItems(c);e.step(1),ir.info("reset checkout items prepared: items={0} resources={1}",l.length,l.reduce((g,m)=>g+m.total,0));for(let g of l)ir.debug(`reset checkout item: remotePath=${g.remotePath} existsInMirror=${g.existsInMirror} total=${g.total}`);ir.info("reset checkout start: items={0}",l.length);let u=await this.checkoutMirrorToWorkspace(l,t);ir.info("reset checkout done: updated={0} deleted={1}",u.updated.length,u.deleted.length);let p=[...u.updated,...u.deleted];return n.start(1),ir.info("reset cleanup status start"),await this.cleanupEmptyOrphanParents(u.deleted,this.mirror,this.workspace),p.length>0&&this.clearSyncStatusTargets(p),n.step(1),ir.info("reset cleanup status done"),o.finish(),ir.info("reset done: updated={0} deleted={1}",u.updated.length,u.deleted.length),this.task.setMessage(d("workspace.sync.progress.reset.done",u.updated.length,u.deleted.length)),this.task.finish(),u}createResetScopeLog(){return this.hasKnownChanges(this.options.changes)?`changes=${this.options.changes.length}`:this.options.paths?.join(", ")??"<all>"}async prepareResetScope(){if(this.hasKnownChanges(this.options.changes)){let t=this.options.changes.filter(At);return{targets:this.getKnownChangeTargets(t),localChanges:t}}let e=await this.resolveTargetRemotePaths(this.options.paths,"mirror-only");return{targets:e,localChanges:this.filterChangesByTargets(this.getLocalSyncChanges(),e)}}formatTargetsForLog(e){return e?`targets=${e.size}`:"<all>"}async checkoutMirrorToWorkspace(e,t){let n=[],o=[];if(e.length===0)return t.finish(),{updated:n,deleted:o};t.start(e.reduce((a,s)=>a+s.total,0));let i=e.map(a=>({...a,task:t.subTaskMonitor(a.total)}));for(let a of i){t.throwIfAborted(),a.task.start(a.total);let s=Date.now();ir.debug(`reset item start: remotePath=${a.remotePath} existsInMirror=${a.existsInMirror} total=${a.total}`),a.existsInMirror?(await this.workspace.checkoutFromMirror(a.remotePath,a.task),t.throwIfAborted(),n.push(a.remotePath)):(await this.workspace.deletePath(a.remotePath,a.task),t.throwIfAborted(),o.push(a.remotePath)),ir.debug(`reset item done: remotePath=${a.remotePath} elapsed=${Date.now()-s}ms`)}return t.finish(),{updated:n,deleted:o}}async createCheckoutItems(e){return Promise.all(e.map(async t=>{let n=await this.mirror.exists(t);return{remotePath:t,existsInMirror:n,total:await this.countCheckoutTotal(t,n)}}))}async countCheckoutTotal(e,t){let n=await(t?this.workspace.countCheckoutResources(e):this.workspace.countResources([e]));return Math.max(n,1)}throwFirstConflict(e,t){let n=e[0];throw new xr("err.sync.conflict",{remotePath:n.remotePath,reason:t})}sortRemotePathsForCheckout(e){return e.sort((t,n)=>t.localeCompare(n))}};var ny=E(require("fs")),ul=E(require("path"));V();F();Y();I();Ft();var Z$=M("sync.restore-local"),rp=class extends cs{constructor(e,t){super(e,t)}async execute(){this.task.start(1,{message:d("workspace.sync.progress.restore.running")});let e=this.options.change,t=ul.join(this.workspaceRoot,".succapp",Ji,Ee(e.remotePath)),n=ul.join(this.workspaceRoot,e.path);try{this.task.throwIfAborted(),await ny.promises.mkdir(ul.dirname(n),{recursive:!0}),await ny.promises.copyFile(t,n)}catch(o){if(_(o))return Z$.debug(`pull backup file does not exist: ${t}`),this.task.step(1),{restored:!1};throw o}return this.context.applySyncOperationResult(e,[{path:e.path,remotePath:e.remotePath,...e.fileId!==void 0?{fileId:e.fileId}:{},type:"modified",contentChanged:!0,metaChanged:!1}]),this.task.step(1),{restored:!0}}};var Qi=E(require("fs")),Gn=E(require("path"));F();I();V();Ft();var dl=class extends hr{async execute(){this.task.start(1,{message:d("workspace.sync.progress.backupList.running")});let e=await this.listEntries();return this.task.step(1),{workspaceRootPath:this.workspaceRoot,entries:e}}async listEntries(){let e=this.resolveFilterTargets(),t=await TE(this.workspaceRoot);return e.length===0?t:t.filter(n=>e.some(o=>le(n.path,o)))}resolveFilterTargets(){return(this.options.paths??[]).map(e=>ej(this.workspaceRoot,e))}},np=class extends at{async execute(){this.task.start(1,{message:d("workspace.sync.progress.backupClear.running")});let e=await new dl(this.context,this.options).listEntries(),t=xE(this.workspaceRoot);if(!this.options.paths||this.options.paths.length===0)return await Qi.promises.rm(t,{recursive:!0,force:!0}),this.task.step(1),{workspaceRootPath:this.workspaceRoot,cleared:e,remaining:[]};for(let n of e)this.task.throwIfAborted(),await Qi.promises.rm(n.backupPath,{force:!0}),await tj(Gn.dirname(n.backupPath),t);return this.task.step(1),{workspaceRootPath:this.workspaceRoot,cleared:e,remaining:await TE(this.workspaceRoot)}}};async function TE(r){let e=xE(r);return(await ME(e,e)).sort((n,o)=>n.path.localeCompare(o.path))}async function ME(r,e){let t=await Qi.promises.readdir(e,{withFileTypes:!0}).catch(o=>{if(_(o))return[];throw o}),n=[];for(let o of t){let i=Gn.join(e,o.name);if(o.isDirectory()){n.push(...await ME(r,i));continue}if(!o.isFile())continue;let a=await Qi.promises.stat(i),s=ht(Gn.relative(r,i));n.push({path:ie(s),backupPath:i,size:a.size,mtime:a.mtime.toISOString()})}return n}function ej(r,e){return ie(On(r,e)??e)}function xE(r){return Gn.join(r,".succapp",Ji)}async function tj(r,e){let t=r;for(;t!==e&&t.startsWith(e+Gn.sep);){if((await Qi.promises.readdir(t).catch(o=>{if(_(o))return[];throw o})).length>0)return;await Qi.promises.rmdir(t),t=Gn.dirname(t)}}Y();I();O();F();V();Ft();var ei=M("sync.remove-project"),op=class extends at{mirror=this.createMirrorStore();workspace=this.createWorkspaceStore(this.mirror);async execute(){let e=[...new Set(this.options.projectNames.map(l=>Bt(l)))];ei.info("remove local project start: {0}",e.join(", "));let[t,n]=await Promise.all([this.workspace.listProjectPaths(),this.mirror.listProjectPaths()]),o=new Set([...t,...n]),i=e.filter(l=>!o.has(l)).map(l=>l.slice(1));if(i.length>0)throw new _t("err.sync.projectNotFound",{projectNames:i.join(", ")});ei.info("remove local project resource count start: projects={0}",e.length);let a=await this.createRemoveItems(e);ei.info("remove local project resource count done: resources={0}",a.reduce((l,u)=>l+u.total,0)),this.task.start(Math.max(a.reduce((l,u)=>l+u.total,0),1),{message:d("workspace.sync.progress.removeProject.running"),retainOnFinish:!0}),a.length===0&&this.task.step(1),ei.info("remove local project files start: projects={0}",a.length);let s=a.map(l=>({...l,task:this.task.subTaskMonitor(l.total)}));for(let l of s)this.task.throwIfAborted(),l.task.start(l.total),await this.workspace.deletePath(l.projectPath,l.task),this.task.throwIfAborted(),await this.mirror.removePath(l.projectPath,l.task),this.task.throwIfAborted(),await this.mirror.removeMeta(l.projectPath);ei.info("remove local project files done: projects={0}",a.length);let c=e.map(l=>l.slice(1));return ei.info("remove local project cleanup status start"),this.clearSyncStatusTargets(e),ei.info("remove local project cleanup status done"),c.length>0&&this.context.notifyLocalProjectsChanged?.(),ei.info("remove local project done: {0}",c.join(", ")),this.task.setMessage(d("workspace.sync.progress.removeProject.done",c.length)),this.task.finish(),{projectNames:c}}async createRemoveItems(e){return Promise.all(e.map(async t=>{let[n,o]=await Promise.all([this.workspace.countResources([t]),this.mirror.countMetaResources([t])]);return{projectPath:t,total:Math.max(n+o,1)}}))}};var IE=E(require("fs")),_E=E(require("path"));Ft();I();var ip=class extends hr{async execute(){this.task.start(1,{message:d("workspace.sync.progress.show.running")});let e=this.options.source??"server",t=await this.resolveRemotePath(this.options.path,e==="mirror"?"mirror-only":"server-backed"),n;if(e==="mirror"){let o=this.createMirrorStore();n=await IE.promises.readFile(o.toLocalPath(t))}else n=(await(await this.getApiClient()).getFileContent(t,{revision:this.options.revision})).buffer;return this.task.step(1),{path:this.options.path,remotePath:t,fileName:_E.basename(t),source:e,buffer:n}}};var oy=E(require("fs"));Ft();I();var ap=3,rj=/\r\n|\n|\r/,cp=class extends hr{async execute(){let e=this.options.source??"server";this.task.start(Math.max(this.options.paths.length,1),{message:d("workspace.sync.progress.diff.running")});let t=await Promise.all(this.options.paths.map(async n=>{try{return this.task.throwIfAborted(),await this.diffFile(n,e)}finally{this.task.step()}}));return this.options.paths.length===0&&this.task.step(1),{source:e,items:t}}async diffFile(e,t){let n=await this.resolveRemotePath(e,t==="mirror"?"mirror-only":"server-backed"),o=this.createMirrorStore(),a=this.createWorkspaceStore(o).toLocalPath(n),[s,c]=await Promise.all([this.readSourceBuffer(n,t,o),oy.promises.readFile(a)]),l=nj({sourceBuffer:s,workspaceBuffer:c,sourceLabel:`${t}:${n}`,workspaceLabel:`workspace:${n}`});return{path:e,remotePath:n,localPath:a,source:t,sourceSize:s.length,workspaceSize:c.length,changed:l.changed,binary:l.binary,patch:l.text}}async readSourceBuffer(e,t,n){return t==="mirror"?oy.promises.readFile(n.toLocalPath(e)):(await(await this.getApiClient()).getFileContent(e)).buffer}};function nj(r){if(r.sourceBuffer.equals(r.workspaceBuffer))return{changed:!1,binary:sp(r.sourceBuffer)||sp(r.workspaceBuffer),text:""};if(sp(r.sourceBuffer)||sp(r.workspaceBuffer))return{changed:!0,binary:!0,text:[`diff --succapp ${r.sourceLabel} ${r.workspaceLabel}`,`Binary files ${r.sourceLabel} and ${r.workspaceLabel} differ`,""].join(`
|
|
76
|
+
`)};let e=FE(r.sourceBuffer),t=FE(r.workspaceBuffer),n=hE(e,t);return{changed:n.length>0,binary:!1,text:n.length===0?"":oj(r,e,t,n)}}function oj(r,e,t,n){let o=[`diff --succapp ${r.sourceLabel} ${r.workspaceLabel}`,`--- ${r.sourceLabel}`,`+++ ${r.workspaceLabel}`];for(let i of ij(e,t,n))o.push(...sj(i,e));return o.push(""),o.join(`
|
|
77
|
+
`)}function ij(r,e,t){let n=[];for(let o of t){let i=aj(r,e,o),a=n.at(-1);if(a&&i.oldStart<=a.oldEnd&&i.newStart<=a.newEnd){a.oldEnd=Math.max(a.oldEnd,i.oldEnd),a.newEnd=Math.max(a.newEnd,i.newEnd),a.patches.push(o);continue}n.push(i)}return n}function aj(r,e,t){let n=Math.max(0,t.buffer1.offset-ap),o=Math.max(0,t.buffer2.offset-ap);return{oldStart:n,oldEnd:Math.min(r.length,t.buffer1.offset+t.buffer1.length+ap),newStart:o,newEnd:Math.min(e.length,t.buffer2.offset+t.buffer2.length+ap),patches:[t]}}function sj(r,e){let t=[`@@ -${DE(r.oldStart,r.oldEnd-r.oldStart)} +${DE(r.newStart,r.newEnd-r.newStart)} @@`],n=r.oldStart;for(let o of r.patches){for(let i=n;i<o.buffer1.offset;i++)t.push(` ${e[i]}`);t.push(...o.buffer1.chunk.map(i=>`-${i}`)),t.push(...o.buffer2.chunk.map(i=>`+${i}`)),n=o.buffer1.offset+o.buffer1.length}for(let o=n;o<r.oldEnd;o++)t.push(` ${e[o]}`);return t}function DE(r,e){return e===0?`${r}`:e===1?`${r+1}`:`${r+1},${e}`}function FE(r){let e=r.toString("utf8");if(e.length===0)return[];let t=e.split(rj);return t.at(-1)===""&&t.pop(),t}function sp(r){return r.includes(0)}Ft();I();var lp=class extends hr{async execute(){this.task.start(1,{message:d("workspace.sync.progress.history.running")});let e=await this.resolveRemotePath(this.options.path,"server-backed"),n=await(await this.getApiClient()).getFileHistory(e,{limit:this.options.limit});return this.task.step(1),{path:this.options.path,remotePath:e,histories:n}}};Ft();var up=class extends hr{async execute(){return(await this.getApiClient()).getProjects()}};var AE=["workspace-settings","workspace-gitignore","workspace-agent-files"],OE=["typescript-support","json-schema-support"],LE=["succapp-docs-skill"],dp=[...AE,...OE],cj=["workspace-config",...dp,...LE],NE=["workspace-config",...dp,"sync-baseline"],iy={base:["workspace-config",...AE],dev:OE,"agent-docs":LE,all:cj};function cy(r,e){return new sy(r,e)}var ay=class{constructor(e,t){this.context=e;this.activeServerUrl=t}get root(){return this.context.root}get isConnected(){return this.context.isConnected}get eventBus(){return this.context.eventBus}get lockManager(){return this.context.lockManager}get lockWait(){return this.context.lockWait}get config(){return this.context.config}ensureConfigLoaded(){return this.context.ensureConfigLoaded()}async ensureActiveServerReady(){return this.activeServerUrl?this.activeServerUrl:this.context.ensureActiveServerReady()}startIdeRuntime(){return this.context.startIdeRuntime()}waitInitialized(){return this.context.waitInitialized()}addServer(e){return this.context.addServer(e)}verifyServerReachable(e){return this.context.verifyServerReachable(e)}removeServer(e){return this.context.removeServer(e)}changeServerUrl(e,t,n){return this.context.changeServerUrl(e,t,n)}switchActiveServer(e){return this.context.switchActiveServer(e)}listWorkspaceProjects(){return this.context.listWorkspaceProjects()}listBaselineProjects(e){return this.context.listBaselineProjects(e)}getMetaProjectLocalPath(e){return this.context.getMetaProjectLocalPath(e)}getMetaFileLocalPath(e){return this.context.getMetaFileLocalPath(e)}countWorkspaceFiles(e,t){return this.context.countWorkspaceFiles(e,t)}runMaintenance(e){return this.context.runMaintenance(e)}connect(e,t){return this.context.connect(e,t)}disconnect(){this.context.disconnect()}requireClient(){return this.context.requireServerClient()}requireServerClient(e){return this.context.requireServerClient(e)}resolveRemoteFilePath(e){return this.context.resolveRemoteFilePath(e)}getMirrorRoot(e=this.activeServerUrl){return this.context.getMirrorRoot(e)}createSyncService(){return cy(this)}getMetadataVersionCatalog(){return this.context.getMetadataVersionCatalog()}getSyncChanges(){return this.context.getSyncChanges()}getSyncSummary(){return this.context.getSyncSummary()}refreshSyncStatus(e){return this.context.refreshSyncStatus(e)}refreshSyncStatusState(e){return this.context.refreshSyncStatusState(e)}clearSyncStatusTargets(e){this.context.clearSyncStatusTargets(e)}notifyLocalProjectsChanged(){this.context.notifyLocalProjectsChanged?.()}applySyncOperationResult(e,t){this.context.applySyncOperationResult(e,t)}consumeFileChanges(e,t){return this.context.consumeFileChanges(e,t)}clearSyncStatus(){this.context.clearSyncStatus()}readTargetStatusSnapshot(e){return this.context.readTargetStatusSnapshot(e)}notifySyncStatusChanged(){this.context.notifySyncStatusChanged()}notifySyncStatusRefreshing(e,t){this.context.notifySyncStatusRefreshing(e,t)}isGitIgnored(e){return this.context.isGitIgnored(e)}dispose(){}};function Jt(r,e){return new ay(r,e)}var sy=class{constructor(e,t){this.context=e;this.agentSource=t?.agentSource??Fo().source}agentSource;get config(){return{root:this.context.root}}async status(e={}){let t=Jt(this.context,await this.context.ensureActiveServerReady());return new Ud(t,e).execute()}async clone(e={}){let t=Jt(this.context,await this.context.ensureActiveServerReady());return this.withWriteLock("clone",e.task,n=>new Bd(t,{...e,task:n}).execute())}async pull(e={}){let t=Jt(this.context,await this.context.ensureActiveServerReady());return this.withWriteLock("pull",e.task,n=>new Kd(t,{...e,task:n}).execute())}async push(e={}){let t=Jt(this.context,await this.context.ensureActiveServerReady());return this.withWriteLock("push",e.task,n=>new Xd(t,{...e,task:n}).execute())}async upgradeMetadata(e={}){let t=Jt(this.context,await this.context.ensureActiveServerReady());return this.withWriteLock("upgradeMetadata",e.task,n=>new rl(t,{...e,task:n}).execute())}async reset(e={}){let t=Jt(this.context,await this.context.ensureActiveServerReady());return this.withWriteLock("reset",e.task,n=>new tp(t,{...e,task:n}).execute())}async restoreLocalChange(e){await this.context.ensureConfigLoaded();let t=Jt(this.context,this.context.activeServerUrl);return this.withWriteLock("restoreLocalChange",e.task,n=>new rp(t,{...e,task:n}).execute())}async listMergeBackups(e={}){await this.context.ensureConfigLoaded();let t=Jt(this.context,this.context.activeServerUrl);return new dl(t,e).execute()}async clearMergeBackups(e={}){await this.context.ensureConfigLoaded();let t=Jt(this.context,this.context.activeServerUrl);return this.withWriteLock("merge-backup clear",e.task,n=>new np(t,{...e,task:n}).execute())}async removeProject(e){let t=Jt(this.context,await this.context.ensureActiveServerReady());return this.withWriteLock("removeProject",e.task,n=>new op(t,{...e,task:n}).execute())}async repairWorkspace(e={}){return this.context.runMaintenance({taskIds:e.checks??NE,explicitTaskIds:e.checks,dryRun:e.dryRun===!0,task:e.task})}async listWorkspaceProjects(){return await this.context.ensureConfigLoaded(),Jt(this.context,this.context.activeServerUrl).listWorkspaceProjects()}async listBaselineProjects(){await this.context.ensureConfigLoaded();let e=Jt(this.context,this.context.activeServerUrl);return e.listBaselineProjects(e.activeServerUrl)}async lsRemote(){let e=Jt(this.context,await this.context.ensureActiveServerReady());return new up(e,{}).execute()}async show(e){let t=Jt(this.context,await this.context.ensureActiveServerReady());return new ip(t,e).execute()}async history(e){let t=Jt(this.context,await this.context.ensureActiveServerReady());return new lp(t,e).execute()}async diff(e){let t=Jt(this.context,await this.context.ensureActiveServerReady());return new cp(t,e).execute()}localToMetaPath(e){return On(this.context.root,e)}isTrackedFile(e){return this.localToMetaPath(e)!==void 0}async withWriteLock(e,t,n,o=["sync"]){let i=t&&t!==Pt.INSTANCE?t:new Bo;return this.context.lockManager.withLock({scopes:o,command:e,source:this.agentSource,wait:this.context.lockWait},async a=>(i.setAbortSignal(ed(i.getAbortSignal(),a)),n(i)))}};Mg();var uy=E(require("fs")),Yi=E(require("path"));Y();var ti=class{disposables=[];_disposed=!1;get disposed(){return this._disposed}add(e){return this.disposables.push(e),e}dispose(){if(!this._disposed){this._disposed=!0;for(let e of this.disposables.splice(0))e.dispose()}}};F();O();re();$i();var ly=M("workspace.config"),lj=".succapp/config.json",WE="reloadConfigAfterFileChange";function pl(){return{version:2,servers:[],activeServerUrl:""}}function uj(r,e,t){let n=_e(e),o=_e(t);if(o===n)throw new P("err.workspace.sameServerUrl",{server:o});let i=r.find(a=>!gt(a,n)&>(a,o));if(i)throw new P("err.workspace.serverAlreadyExists",{duplicatedServer:i,server:o});return o}var pp=class{constructor(e,t,n){this.workspaceRoot=e;this.eventBus=t;if(this.configPath=Yi.join(e,".succapp","config.json"),t&&n){let o=this.disposables.add(n.createFileWatcher(e,lj));this.disposables.add(o.onFileChanged(i=>{this.isConfigFilePath(i.filePath)&&Va(this,WE,50,async()=>{await this.reloadAfterFileChange().catch(a=>{ly.warn(`reload workspace config after file change failed: ${this.configPath}`,a)})})}))}}disposables=new ti;data=null;loaded=!1;configPath;get path(){return this.configPath}get(){return this.data??void 0}async load(){return fn(this,"load",()=>this.doLoad())}async ensureLoaded(){this.loaded||await this.load()}async reloadIfChanged(){return await fn(this,"reload",()=>this.doReloadIfChanged())===!0}async doReloadIfChanged(e=!1){let t=this.data!==null,n=Da(this.get()),o=await this.readConfigData(!e,e);if(o===void 0&&e){this.loaded=!0;return}this.data=o,this.loaded=!0;let i=t!==(this.data!==null)||!Xn(n??null,this.get()??null);return i&&this.fireConfigChanged(),i}async doLoad(){this.data=await this.readConfigData(),this.loaded=!0}async readConfigData(e=!0,t=!1){try{let n=await _R(this.configPath,{attempts:t?3:1,delayMs:50,ignoreParseError:e});return n?this.normalizeLoadedData(n):void 0}catch(n){if(_(n))return null;let o=n instanceof Error?n.message:String(n);e?ly.warn(".succapp/config.json is corrupted, ignoring",o):ly.debug(".succapp/config.json is not ready, will retry",o);return}}normalizeLoadedData(e){if(Array.isArray(e.servers)&&typeof e.activeServerUrl=="string"){let t=[];for(let s of e.servers){let c=_e(s);t.some(l=>gt(l,c))||t.push(c)}let n=e.activeServerUrl?_e(e.activeServerUrl):"",o=n?t.find(s=>gt(s,n)):void 0,i={version:e.version??2,servers:t,activeServerUrl:o??t[0]??""},a=Or(e.serverVersion);return a&&(i.serverVersion=a),i}return pl()}async save(){if(!this.data)return;let e=Yi.dirname(this.configPath);await uy.promises.mkdir(e,{recursive:!0}),await uy.promises.writeFile(this.configPath,JSON.stringify(this.data,null,2),"utf-8"),this.loaded=!0}async mutateAndSave(e){let t=this.data!==null,n=Da(this.get()),o=this.data?Da(this.data):this.data;e();try{await this.save()}catch(i){throw this.data=o,i}(t!==(this.data!==null)||!Xn(n??null,this.get()??null))&&this.fireConfigChanged()}async initialize(e){let t=_e(e);await this.mutateAndSave(()=>{this.data={version:2,servers:[t],activeServerUrl:t}})}async ensureFile(){return await this.ensureLoaded(),this.data===null&&await this.mutateAndSave(()=>{this.data=pl()}),this.configPath}getServers(){return this.data?.servers??[]}getActiveServerUrl(){return this.data?.activeServerUrl??""}getServerVersion(){return this.data?.serverVersion}async setServerVersion(e){await this.ensureLoaded();let t=Or(e);!t||this.data?.serverVersion===t||await this.mutateAndSave(()=>{let n=this.data??pl();n.serverVersion=t,this.data=n})}hasServer(e){return!!this.resolveServerUrl(e)}resolveServerUrl(e){let t=_e(e);return this.getServers().find(n=>gt(n,t))}validateServerUrlChange(e,t){return uj(this.getServers(),e,t)}async addServer(e){await this.ensureLoaded();let t=_e(e);await this.mutateAndSave(()=>{let n=this.data??pl();n.servers=n.servers??[];let o=n.servers.find(i=>gt(i,t));o||n.servers.push(t),n.activeServerUrl=o??t,this.data=n})}async removeServer(e){if(await this.ensureLoaded(),!this.data)return;let t=_e(e);await this.mutateAndSave(()=>{let n=this.data;n.servers=n.servers.filter(o=>!gt(o,t)),gt(n.activeServerUrl,t)&&(n.activeServerUrl=n.servers[0]??"")})}async changeServerUrl(e,t){await this.ensureLoaded();let n=this.data;if(!n)throw new Error(`server not configured: ${e}`);let o=this.resolveServerUrl(e);if(!o)throw new Error(`server not configured: ${e}`);let i=this.validateServerUrlChange(o,t);return await this.mutateAndSave(()=>{n.servers=n.servers.map(a=>gt(a,o)?i:a),gt(n.activeServerUrl,o)&&(n.activeServerUrl=i),this.data=n}),i}async setActiveServerUrl(e){await this.ensureLoaded();let t=_e(e);await this.mutateAndSave(()=>{let n=this.data??pl();n.servers=n.servers??[];let o=n.servers.find(i=>gt(i,t));o||n.servers.push(t),n.activeServerUrl=o??t,this.data=n})}get root(){return this.workspaceRoot}dispose(){qa(this,WE),this.disposables.dispose()}fireConfigChanged(){this.eventBus?.fire(new kt("workspace.config.changed",{root:this.workspaceRoot},this))}async reloadAfterFileChange(){await fn(this,"reload",()=>this.doReloadIfChanged(!0))===void 0&&await this.reloadIfChanged()}isConfigFilePath(e){return Yi.resolve(e)===Yi.resolve(this.configPath)}};F();Y();I();Hi();tl();Y();var UE=M("sync.auto"),$E="autoPush",mp=class{constructor(e,t,n){this.workspaceRoot=e;this.callbacks=n;this.disposables.push(t.on("workspace.file.changed",o=>{o.payload.root===this.workspaceRoot&&Kt.autoPush&&this.scheduleAutoPush()}))}autoPullTimer;disposables=[];scheduleAutoPush(){Kt.autoPush&&Va(this,$E,Kt.autoPushDelay,async()=>{Kt.autoPush&&await this.callbacks.onAutoPush().catch(e=>UE.error("auto push failed",e))})}cancelPendingAutoPush(){qa(this,$E)}refreshAutoSync(){Kt.autoPush||this.cancelPendingAutoPush(),this.startAutoPull()}startAutoPull(){this.stopAutoPull(),Kt.autoPull&&(this.autoPullTimer=setInterval(()=>{this.callbacks.onAutoPull().catch(e=>UE.error("auto pull failed",e))},Kt.autoPullInterval*1e3))}stopAutoPull(){this.autoPullTimer&&(clearInterval(this.autoPullTimer),this.autoPullTimer=void 0)}dispose(){this.stopAutoPull(),this.cancelPendingAutoPush(),this.disposables.forEach(e=>e.dispose())}};V();it();wn();Y();var fp=class{constructor(e,t,n=()=>{}){this.id=e;this.target=t;this.publishResult=n;this.scope=t.kind==="all"?"all":"targets"}kind="clear";source="clear";scope;toResult(){return{kind:"clear",target:this.target}}async run(){return this.toResult()}publish(e){return this.publishResult(e)}};var ml=E(require("path"));it();V();wn();var Yr=class{constructor(e,t){this.id=e;this.fileChanges=[...t.fileChanges],this.workspace=t.workspace,this.bulk=!!t.bulk,this.getChanges=t.getChanges,this.publishResult=t.publish??(()=>{})}kind="fileWatch";source="fileWatch";scope="targets";cancelled=!1;fileChanges;workspace;bulk;getChanges;publishResult;abort(){this.cancelled=!0}isCancelled(){return this.cancelled}merge(e){this.cancelled||e.length===0||this.fileChanges.push(...e)}mergeTask(e){this.merge(e.fileChanges),this.bulk=this.bulk||e.bulk}async run(){let e=this.workspace;if(this.cancelled||!e||this.fileChanges.length===0)return{kind:"noop"};if(this.bulk)return this.requestBulkLocalRefresh();let t=this.createFileChangeStatusTargets(e);if(this.cancelled||t.length===0)return{kind:"noop"};if(t.some(i=>i.isDotMeta))return this.requestLocalRefresh(t);let n=await Promise.all(t.map(i=>e.readTargetStatusSnapshot(i)));if(this.cancelled)return{kind:"noop"};if(this.shouldRefreshAllForFolderRenameRelatedTargets(t,n))return this.requestLocalRefresh(t);let o=this.createFastFileWatchChanges(e,n);return!o||this.shouldRefreshAllForFolderSubtreeBoundary(o)?this.requestLocalRefresh(t):{kind:"replaceTargets",targetRemotePaths:[...new Set(t.map(i=>i.remotePath))],changes:o,mode:"fileWatch"}}publish(e){if(!this.cancelled)return this.publishResult(e)}createFileChangeStatusTargets(e){let t=new Map;for(let n of this.fileChanges){let o=this.resolveFileChangeStatusTarget(e,n);o&&t.set(`${o.type}\0${o.remotePath}`,o)}return[...t.values()]}requestLocalRefresh(e){return{kind:"requestRefresh",scope:"local",source:"manual",rootRemotePath:this.createRefreshRootRemotePath(e)}}requestBulkLocalRefresh(){return{kind:"requestRefresh",scope:"local",source:"manual",rootRemotePath:void 0}}createRefreshRootRemotePath(e){let t=[...e.map(o=>o.remotePath),...this.getChanges().filter(At).flatMap(o=>[o.remotePath,o.oldRemotePath])].filter(o=>!!o),n=TP(t);return n==="/"?void 0:n}resolveFileChangeStatusTarget(e,t){let n=On(e.root,t.filePath);if(!n)return;let o=ml.posix.basename(n)===te,i=o?ml.posix.dirname(n):n;return{filePath:o?ml.dirname(t.filePath):t.filePath,remotePath:i,type:t.type,isDotMeta:o}}shouldRefreshAllForFolderRenameRelatedTargets(e,t){let n=this.getChanges().filter(i=>i.type==="renamed"&&!!i.isFolder&&!!i.oldRemotePath);if(n.length===0)return!1;let o=new Map(t.map(i=>[i.remotePath,i]));for(let i of e){let a=o.get(i.remotePath),s=a?.workspace.kind==="folder"||a?.mirror.kind==="folder";for(let c of n){let l=c.oldRemotePath;if(s&&(i.remotePath!==c.remotePath&&le(c.remotePath,i.remotePath)||i.remotePath!==l&&le(l,i.remotePath))||i.remotePath!==l&&le(i.remotePath,l))return!0;if(!(i.remotePath===c.remotePath||!le(i.remotePath,c.remotePath))&&(i.type==="deleted"||a?.workspace.fileId!==void 0||a?.mirror.fileId!==void 0))return!0}}return!1}createFastFileWatchChanges(e,t){if(t.some(s=>s.workspace.kind==="unknown"||s.mirror.kind==="unknown"))return;let n=this.createFastRenameChanges(t);if(!n)return;let o=new Set;for(let s of n)o.add(s.remotePath),s.oldRemotePath&&o.add(s.oldRemotePath);let i=[...n];for(let s of t){if(o.has(s.remotePath))continue;if(this.shouldRefreshForUnpairedIdentitySnapshot(s))return;let c=this.createFastChange(s);c&&i.push(c)}let a=new Map(t.map(s=>[s.remotePath,s]));return i.filter(s=>{if(s.type!=="added")return!0;let c=a.get(s.remotePath);return!c||c.workspace.fileId||c.mirror.fileId?!0:!e.isGitIgnored(s.remotePath)&&!Ni(Je(s.remotePath),Kt.syncIgnore)})}shouldRefreshForUnpairedIdentitySnapshot(e){return e.workspace.kind!=="missing"&&e.mirror.kind==="missing"&&!e.workspace.fileId&&!!e.workspace.identity||e.workspace.kind==="missing"&&e.mirror.kind!=="missing"&&!e.mirror.fileId&&!!e.mirror.identity}shouldRefreshAllForFolderSubtreeBoundary(e){return e.some(t=>t.isFolder&&(t.type==="added"||t.type==="deleted"))}createFastRenameChanges(e){let t=e.filter(a=>a.workspace.kind==="missing"&&a.mirror.kind!=="missing"),n=e.filter(a=>a.workspace.kind!=="missing"&&a.mirror.kind==="missing");if(t.length===0||n.length===0)return[];if(t.length!==n.length)return;let o=[],i=new Set;for(let a of t){let s=a.mirror.identity;if(!s)return;let c=n.filter(u=>!i.has(u)&&u.workspace.identity===s);if(c.length!==1||a.mirror.kind==="folder"||c[0].workspace.kind==="folder")return;let l=c[0];i.add(l),o.push({path:this.toRelativePath(l.remotePath),remotePath:l.remotePath,...this.getFileIdProperty(l.workspace.fileId??a.mirror.fileId),oldPath:this.toRelativePath(a.remotePath),oldRemotePath:a.remotePath,type:"renamed",isFolder:!1,contentChanged:l.contentChanged,metaChanged:l.metaChanged})}if(!(i.size!==n.length||o.length!==t.length))return o}createFastChange(e){let t=e.workspace.kind,n=e.mirror.kind;if(!(t==="missing"&&n==="missing")){if(t!=="missing"&&n==="missing")return{path:this.toRelativePath(e.remotePath),remotePath:e.remotePath,...this.getFileIdProperty(e.workspace.fileId),type:"added",isFolder:t==="folder"};if(t==="missing"&&n!=="missing")return{path:this.toRelativePath(e.remotePath),remotePath:e.remotePath,...this.getFileIdProperty(e.mirror.fileId),type:"deleted",isFolder:n==="folder"};if(!(!e.contentChanged&&!e.metaChanged))return{path:this.toRelativePath(e.remotePath),remotePath:e.remotePath,...this.getFileIdProperty(e.workspace.fileId??e.mirror.fileId),type:"modified",isFolder:t==="folder",contentChanged:e.contentChanged,metaChanged:e.metaChanged}}}getFileIdProperty(e){return e===void 0?{}:{fileId:e}}toRelativePath(e){return Je(e)}};wn();var hp=class{constructor(e,t,n=[],o=()=>{}){this.id=e;this.handledChange=t;this.remainingChanges=n;this.publishResult=o}kind="operationResult";source="operation";scope="targets";toResult(){return{kind:"replaceTargets",targetRemotePaths:nl(this.handledChange),changes:this.remainingChanges}}async run(){return this.toResult()}publish(e){return this.publishResult(e)}};var gp=class{constructor(e,t){this.id=e;this.source=t.source,this.targetRemotePaths=[...t.targetRemotePaths],this.changes=[...t.changes],this.mode=t.mode,this.publishResult=t.publish??(()=>{})}kind="replaceTargets";source;scope="targets";targetRemotePaths;changes;mode;publishResult;toResult(){return{kind:"replaceTargets",targetRemotePaths:this.targetRemotePaths,changes:this.changes,mode:this.mode}}async run(){return this.toResult()}publish(e){return this.publishResult(e)}};Nn();Y();I();F();O();var gl=E(require("fs")),vp=E(require("path"));it();V();F();Y();$n();Nn();Hi();tl();Wr();var fl=E(require("fs")),hl=E(require("path")),PT=require("crypto"),RT=E(yT()),bT=E(ST());it();nt();V();F();$n();Y();function Cp(r){return{dev:r.dev,ino:r.ino,size:r.size,mtimeMs:r.mtimeMs,ctimeMs:r.ctimeMs}}var vy="sha256",vT=".succapp/cache/inode-index.json",Gj=.6,kT=2,zj=1e4,Kj=20,wT=5*1024*1024,Jj=80,Qj=200,Yj=8,Xj=4,Zj=64,eV=2,tV=500,rV=1e4,st=M("sync.detector.workspace"),Sp=class{constructor(e){this.options=e;this.workspaceCachePath=hl.join(e.workspaceRoot,vT),this.mirrorCachePath=hl.join(e.remoteMirrorRoot,vT)}workspaceInodeCache=new Map;mirrorInodeCache=new Map;workspacePathToInode=new Map;mirrorPathToInode=new Map;workspaceCachePath;mirrorCachePath;workspaceInodeCacheDirty=!1;mirrorInodeCacheDirty=!1;workspaceFullScanInodeKeys=new Set;mirrorFullScanInodeKeys=new Set;workspaceFullScanRecorded=!1;mirrorFullScanRecorded=!1;projectCaches=new Map;pendingDigests=new Map;pendingSimilarity=new Map;async findInodeFileCandidates(e,t){let n=this.createOperationCache();await this.prefetchStats([...e,...t],n);let o=await this.groupFilesByInode(t,n),i=[];for(let a of e){let s=await this.getStatCached(a,n),c=s?this.getInodeKey(s):void 0;if(c)for(let l of o.get(c)??[])a.metaPath!==l.metaPath&&i.push({localEntry:a,remoteEntry:l,score:1,reason:"sameInode"})}return i}async findEqualFileCandidates(e,t){let n=this.createOperationCache();await this.prefetchStats([...e,...t],n);let o=await this.groupFilesBySize(t,n),i=[];for(let a of e){let s=await this.getStatCached(a,n);if(!s)continue;let c=o.get(s.size);if(!c)continue;let l;for(let u of c){let p=await this.compareByStat(a,u,n);if(p==="different")continue;if(p==="same"){i.push({localEntry:a,remoteEntry:u,score:1,reason:"sameContentHash"});continue}if(l??=await this.getContentDigest(a,n),!l)continue;(await this.getContentDigest(u,n))?.value===l.value&&i.push({localEntry:a,remoteEntry:u,score:1,reason:"sameContentHash"})}}return i}async findSimilarFileCandidates(e,t){let n={fileCandidateBuckets:0,fileComparableRefs:0,fileEstimatedPairs:0,fileComparedPairs:0,fileTopByLeft:0,fileTopByRight:0};if(e.length===0||t.length===0)return{candidates:[],stats:n};let o=this.createOperationCache(!0),i=this.groupSimilarityRightFiles(t),a=this.collectComparableEntries(e,i),s=this.estimateSimilarityPairs(e,i);n.fileCandidateBuckets=i.size,n.fileComparableRefs=a.size,n.fileEstimatedPairs=s;let c=Date.now();st.debug("collect file similarity start localCandidates=%d remoteCandidates=%d buckets=%d comparableRefs=%d estimatedPairs=%d",e.length,t.length,i.size,a.size,s),await this.prefetchStats([...a.values()],o);let l=new Map,u=new Map,p=this.createSimilarityPairCursor(e,i),g=0,m=Array.from({length:Math.min(Xj,Math.max(1,a.size))},async()=>{for(;;){let y=p();if(!y)return;let[C,S]=y;g++,n.fileComparedPairs++;let w=await this.compareSimilarityPair(C,S,o);w.score>=Gj&&(this.addTopSimilarityCandidate(l,this.getEntryKey(w.left),w,kT),this.addTopSimilarityCandidate(u,this.getEntryKey(w.right),w,kT))}});await Promise.all(m),n.fileTopByLeft=l.size,n.fileTopByRight=u.size,st.debug("collect file similarity compared elapsed=%dms comparedPairs=%d topByLeft=%d topByRight=%d",Date.now()-c,g,l.size,u.size);let f=new Set;for(let y of[l,u])for(let C of y.values())for(let S of C)f.add(S);return{candidates:[...f].sort((y,C)=>C.score-y.score).map(y=>({localEntry:y.left,remoteEntry:y.right,score:y.score,reason:y.score===1?"sameContentHash":"contentSimilarity"})),stats:n}}getEntryLocalPath(e){return ge(e.side==="workspace"?this.options.workspaceRoot:this.options.remoteMirrorRoot,e.metaPath)}getEntryKey(e){return e.side+"\0"+e.metaPath}async areEntriesEqual(e,t){let n=this.createOperationCache(),o=await this.compareByStat(e,t,n);if(o!=="unknown")return o;let[i,a]=await Promise.all([this.getContentDigest(e,n),this.getContentDigest(t,n)]);return!i||!a?"unknown":i.value===a.value?"same":"different"}async compareByStat(e,t,n){let[o,i]=await Promise.all([this.getStatCached(e,n),this.getStatCached(t,n)]);return!o||!i?"unknown":o.size!==i.size?"different":this.isSameInode(o,i)?"same":"unknown"}isSameInode(e,t){return!!e.dev&&!!t.dev&&!!e.ino&&!!t.ino&&e.dev===t.dev&&e.ino===t.ino}async getStatCached(e,t){if(e.stat)return e.stat;let n=this.getEntryKey(e),o=t.stats.get(n);if(o)return o;let i=this.readStat(e);return t.stats.set(n,i),i}async readStat(e){try{let t=await fl.promises.stat(this.getEntryLocalPath(e));return t.isFile()?Cp(t):void 0}catch(t){if(!Pc(t))throw t;st.debug("skip unreadable file stat: %s",this.getEntryLocalPath(e),t);return}}getContentDigest(e,t){let n=this.getEntryKey(e),o=t.digests.get(n);if(o)return o;let i=this.getContentDigestWithContext(e,t);return t.digests.set(n,i),i}async getContentDigestWithContext(e,t){let n=await this.getStatCached(e,t);if(!n)return;let o=this.getEntryKey(e),i=this.pendingDigests.get(o);if(i)return i;let a=this.getContentDigestNow(e,n,t).finally(()=>this.pendingDigests.delete(o));return this.pendingDigests.set(o,a),a}async getContentDigestNow(e,t,n){let o=this.getInodeKey(t);if(o){let a=this.getInodeCache(e.side).get(o);if(this.isMatchingInodeCacheEntry(a,t))return{algorithm:vy,value:a.sha256,size:t.size,mtimeMs:t.mtimeMs,ctimeMs:t.ctimeMs,updatedAt:Date.now()}}try{let i={algorithm:vy,value:await this.computeContentHash(e,t,n),size:t.size,mtimeMs:t.mtimeMs,ctimeMs:t.ctimeMs,updatedAt:Date.now()};if(o){let a=this.getInodeCache(e.side).get(o);this.rememberInodeCacheEntry(e,o,{sha256:i.value,tlsh:this.getReusableCachedTlsh(a,i.value),size:t.size,mtimeMs:t.mtimeMs,ctimeMs:t.ctimeMs})}return i}catch(i){if(!Pc(i))throw i;st.debug("skip unreadable file digest: %s",this.getEntryLocalPath(e),i);return}}isMatchingInodeCacheEntry(e,t){return this.isCompleteInodeCacheEntry(e)&&this.isMatchingInodeCacheStat(e,t)}isMatchingInodeCacheStat(e,t){return e.size===t.size&&e.mtimeMs===t.mtimeMs&&e.ctimeMs===t.ctimeMs}isCompleteInodeCacheEntry(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.sha256=="string"&&t.sha256.length>0&&Number.isFinite(t.size)&&Number.isFinite(t.mtimeMs)&&Number.isFinite(t.ctimeMs)}getCachedTlsh(e){return typeof e.tlsh=="string"&&e.tlsh.length>0?e.tlsh:void 0}getReusableCachedTlsh(e,t){return e?.sha256===t?this.getCachedTlsh(e):void 0}async computeContentHash(e,t,n){let o=await this.getSmallFileContent(e,t,n);return o?o.contentHash:Md(this.getEntryLocalPath(e))}async compareSimilarityPair(e,t,n){if(await this.compareByStat(e,t,n)==="same")return{left:e,right:t,score:1};let[i,a]=await Promise.all([this.getContentDigest(e,n),this.getContentDigest(t,n)]);if(i&&a&&i.value===a.value)return{left:e,right:t,score:1};let[s,c]=await Promise.all([this.getTlshProfile(e,n),this.getTlshProfile(t,n)]);if(!s||!c)return{left:e,right:t,score:0};let l=s.digest.calculateDifference(c.digest,!0);return l>Jj?{left:e,right:t,score:0}:{left:e,right:t,score:Math.max(0,1-l/Qj)}}getTlshProfile(e,t){let n=this.getEntryKey(e),o=t.profiles.get(n);if(o)return o;let i=this.getTlshProfileWithContext(e,t);return t.profiles.set(n,i),i}async getTlshProfileWithContext(e,t){let n=await this.getSimilarityDigest(e,t);if(!n)return;let o=this.buildTlshProfile(n);if(o)return o;st.debug("repair invalid TLSH profile side=%s path=%s",e.side,e.metaPath);let i=await this.getStatCached(e,t);i&&await this.invalidateStat(e,i),await this.invalidateSimilarityDigest(e,t);let a=await this.getSimilarityDigest(e,t);if(a)return this.buildTlshProfile(a)}buildTlshProfile(e){try{let t=new bT.default().withHash(e).build();return t.calculateDifference(t,!0),{digest:t}}catch(t){st.debug("skip invalid TLSH digest: %s",e,t);return}}async getSimilarityDigest(e,t){let n=await this.getStatCached(e,t);if(!n)return;let o=await this.getContentDigest(e,t);if(!o||o.size>wT)return;let i=dt(e.metaPath)??"/",a=i+"\0"+o.value,s=this.pendingSimilarity.get(a);if(s)return s;let c=this.getSimilarityDigestNow(i,e,o,n,t).finally(()=>this.pendingSimilarity.delete(a));return this.pendingSimilarity.set(a,c),c}async getSimilarityDigestNow(e,t,n,o,i){let a=await this.withProjectCache(e,async l=>l.similarity.get(n.value));if(a)return a.updatedAt=Date.now(),a.unsupported?void 0:a.tlsh;let s=this.getInodeKey(o);if(s){let u=this.getInodeCache(t.side).get(s);if(this.isMatchingInodeCacheEntry(u,o)){let p=this.getCachedTlsh(u);if(p){if(this.buildTlshProfile(p))return await this.withProjectCache(e,async g=>{g.similarity.set(n.value,{tlsh:p,size:n.size,updatedAt:Date.now()}),this.pruneState(g)}),p;st.debug("drop invalid inode cached TLSH side=%s path=%s inode=%s",t.side,t.metaPath,s),this.invalidateStat(t,o)}}}let c=await this.computeTlshHash(t,o,i);if(await this.withProjectCache(e,async l=>{l.similarity.set(n.value,{tlsh:c.hash,unsupported:!c.hash,size:n.size,updatedAt:Date.now()}),this.pruneState(l)}),s){let l=this.getInodeCache(t.side).get(s);this.rememberInodeCacheEntry(t,s,{sha256:n.value,tlsh:c.hash,size:o.size,mtimeMs:o.mtimeMs,ctimeMs:o.ctimeMs})}return c.hash}async computeTlshHash(e,t,n){let o=await this.getSmallFileContent(e,t,n);if(o)return o.similarity;let i=await this.readTlshBuffer(e);return i?this.computeTlshHashFromBuffer(i):{cacheUnsupported:!1}}computeTlshHashFromBuffer(e){try{return{hash:(0,RT.default)(e.toString("latin1")),cacheUnsupported:!1}}catch(t){let n=t instanceof Error?t.message:String(t);return st.debug("skip TLSH digest because hash library rejected buffer: %s",n),{cacheUnsupported:!1}}}async readTlshBuffer(e){try{return await fl.promises.readFile(this.getEntryLocalPath(e))}catch(t){if(!Pc(t))throw t;st.debug("skip tlsh file read: %s",e.metaPath,t);return}}getSmallFileContent(e,t,n){if(!n.preferSmallFileBuffer||t.size>wT)return Promise.resolve(void 0);let o=this.getEntryKey(e),i=n.smallFiles.get(o);if(i)return i;let a=this.readSmallFileContent(e);return n.smallFiles.set(o,a),this.pruneOperationSmallFiles(n),a}pruneOperationSmallFiles(e){for(;e.smallFiles.size>Zj;){let t=e.smallFiles.keys().next().value;if(t===void 0)return;e.smallFiles.delete(t)}}async readSmallFileContent(e){try{let t=await fl.promises.readFile(this.getEntryLocalPath(e));return{contentHash:(0,PT.createHash)(vy).update(t).digest("hex"),similarity:this.computeTlshHashFromBuffer(t)}}catch(t){if(!Pc(t))throw t;st.debug("skip unreadable small file: %s",this.getEntryLocalPath(e),t);return}}createOperationCache(e=!1){return{preferSmallFileBuffer:e,stats:new Map,digests:new Map,profiles:new Map,smallFiles:new Map}}async prefetchStats(e,t){let n=new bt(Yj);await Promise.all(e.map(o=>n.addTask(async()=>{await this.getStatCached(o,t)})))}async groupFilesBySize(e,t){let n=new Map;for(let o of e){let i=await this.getStatCached(o,t);if(!i)continue;let a=n.get(i.size);a||(a=[],n.set(i.size,a)),a.push(o)}return n}async groupFilesByInode(e,t){let n=new Map;for(let o of e){let i=await this.getStatCached(o,t),a=i?this.getInodeKey(i):void 0;if(!a)continue;let s=n.get(a);s||(s=[],n.set(a,s)),s.push(o)}return n}getInodeKey(e){return this.getInodeKeyString(e.dev,e.ino)}groupSimilarityRightFiles(e){let t=new Map;for(let n of e){let o=this.getSimilarityBucketKey(n),i=t.get(o);i?i.push(n):t.set(o,[n])}return t}getSimilarityBucketKey(e){return hl.posix.extname(e.metaPath).toLowerCase()}collectComparableEntries(e,t){let n=new Map,o=new Set;for(let i of e){let a=this.getSimilarityBucketKey(i),s=t.get(a);if(s?.length&&(n.set(this.getEntryKey(i),i),!o.has(a))){o.add(a);for(let c of s)n.set(this.getEntryKey(c),c)}}return n}createSimilarityPairCursor(e,t){let n=0,o=0,i,a=[];return()=>{for(;;){if(i&&o<a.length){let s=a[o++];if(i.metaPath!==s.metaPath)return[i,s];continue}if(n>=e.length)return;i=e[n++],o=0,a=t.get(this.getSimilarityBucketKey(i))??[]}}}addTopSimilarityCandidate(e,t,n,o){let i=e.get(t)??[];i.push(n),e.set(t,this.sortSimilarityCandidates(i).slice(0,o))}sortSimilarityCandidates(e){return[...e].sort((t,n)=>{let o=n.score-t.score;return o!==0?o:this.getEntryKey(t.left).localeCompare(this.getEntryKey(n.left))})}async withProjectCache(e,t){let n=this.pinProjectCache(e);try{return await t(n)}finally{n.activeCount--,this.enforceProjectCacheLimit()}}pinProjectCache(e){let t=this.projectCaches.get(e);return t||(t={lastAccessAt:Date.now(),activeCount:0,similarity:new Map},this.projectCaches.set(e,t)),t.lastAccessAt=Date.now(),t.activeCount++,this.enforceProjectCacheLimit(),t}enforceProjectCacheLimit(){for(;this.projectCaches.size>Kj;)if(!this.evictOldestProjectCache())return}evictOldestProjectCache(){let e=[...this.projectCaches.entries()].filter(([,o])=>o.activeCount===0).sort((o,i)=>o[1].lastAccessAt-i[1].lastAccessAt)[0];if(!e)return!1;let[t,n]=e;return n.activeCount>0?!1:(this.projectCaches.delete(t),!0)}pruneState(e){return this.pruneMap(e.similarity,zj)}pruneMap(e,t){if(e.size<=t)return!1;let n=[...e.entries()].sort((o,i)=>i[1].updatedAt-o[1].updatedAt).slice(0,t);e.clear();for(let[o,i]of n)e.set(o,i);return!0}getInodeCache(e){return e==="workspace"?this.workspaceInodeCache:this.mirrorInodeCache}getPathToInode(e){return e==="workspace"?this.workspacePathToInode:this.mirrorPathToInode}markInodeCacheDirty(e){e==="workspace"?this.workspaceInodeCacheDirty=!0:this.mirrorInodeCacheDirty=!0}clearInodeCacheDirty(){this.workspaceInodeCacheDirty=!1,this.mirrorInodeCacheDirty=!1}rememberInodeCacheEntry(e,t,n){this.getInodeCache(e.side).set(t,n),this.getPathToInode(e.side).set(this.getEntryKey(e),t),this.markInodeCacheDirty(e.side)}async load(){await Promise.all([this.loadInodeCacheSide(this.workspaceCachePath,this.workspaceInodeCache,"workspace"),this.loadInodeCacheSide(this.mirrorCachePath,this.mirrorInodeCache,"mirror")])}recordFullScanEntries(e,t){this.workspaceFullScanInodeKeys.clear(),this.mirrorFullScanInodeKeys.clear(),this.collectFullScanInodeKeys(e,this.workspaceFullScanInodeKeys),this.collectFullScanInodeKeys(t,this.mirrorFullScanInodeKeys),this.workspaceFullScanRecorded=!0,this.mirrorFullScanRecorded=!0}collectFullScanInodeKeys(e,t){for(let n of e){if(n.isFolder||!n.stat)continue;let o=this.getInodeKey(n.stat);o&&t.add(o)}}async loadInodeCacheSide(e,t,n){try{let o=await this.readInodeCacheFile(e);if(!o)return;for(let[i,a]of Object.entries(o.files))t.set(i,a)}catch(o){st.debug("skip %s inode cache: %s",n,e,o)}}async readInodeCacheFile(e){let t=await hn(e);if(!(!t||t.version!==1))return t}async flush(){if(st.debug("workspace change detector flush inode caches called"),await Promise.all([this.pruneStaleEntries("workspace",this.workspacePathToInode,this.workspaceInodeCache,this.options.workspaceRoot),this.pruneStaleEntries("mirror",this.mirrorPathToInode,this.mirrorInodeCache,this.options.remoteMirrorRoot)]),this.pruneFullScanEntries("workspace",this.workspaceInodeCache,this.workspaceFullScanInodeKeys,this.workspaceFullScanRecorded),this.pruneFullScanEntries("mirror",this.mirrorInodeCache,this.mirrorFullScanInodeKeys,this.mirrorFullScanRecorded),!this.workspaceInodeCacheDirty&&!this.mirrorInodeCacheDirty)return;st.debug("flush inode caches workspaceDirty=%s workspaceEntries=%d mirrorDirty=%s mirrorEntries=%d",this.workspaceInodeCacheDirty,this.workspaceInodeCache.size,this.mirrorInodeCacheDirty,this.mirrorInodeCache.size),await this.withInodeCacheWriteLock(async()=>{let t=[];this.workspaceInodeCacheDirty&&t.push(this.writeInodeCache(this.workspaceCachePath,this.workspaceInodeCache)),this.mirrorInodeCacheDirty&&t.push(this.writeInodeCache(this.mirrorCachePath,this.mirrorInodeCache)),await Promise.all(t)})?(this.clearInodeCacheDirty(),st.debug("flushed inode caches workspaceEntries=%d mirrorEntries=%d",this.workspaceInodeCache.size,this.mirrorInodeCache.size)):st.debug("skipped inode cache flush workspaceDirty=%s workspaceEntries=%d mirrorDirty=%s mirrorEntries=%d",this.workspaceInodeCacheDirty,this.workspaceInodeCache.size,this.mirrorInodeCacheDirty,this.mirrorInodeCache.size)}async withInodeCacheWriteLock(e){let t=this.options.lockManager;if(!t||t.isHeldLocally("inode-cache"))return await e(),!0;try{return await t.withLock({scopes:["inode-cache"],command:"flush-inode-cache",wait:1},async()=>e()),!0}catch(n){return n instanceof Pi||n instanceof eo?(st.debug("skip inode cache flush because cache lock is unavailable",n),!1):(st.warn("skip inode cache flush because cache lock failed unexpectedly",n),!1)}}async pruneStaleEntries(e,t,n,o){if(t.size===0)return;let i=[];for(let[a,s]of t){let c=a.indexOf("\0"),l=a.slice(c+1),u=ge(o,l);try{let p=await fl.promises.stat(u);if(!p.isFile()){i.push(a);continue}let g=this.getInodeKeyString(p.dev,p.ino);(!g||g!==s)&&i.push(a)}catch(p){if(_(p)){st.debug("mark stale inode cache entry: %s",a),i.push(a);continue}throw p}}if(i.length!==0){for(let a of i){let s=t.get(a);s&&n.delete(s),t.delete(a)}i.length>0&&this.markInodeCacheDirty(e)}}pruneFullScanEntries(e,t,n,o){if(!o)return;let i=0;for(let[s,c]of t)this.isCompleteInodeCacheEntry(c)||(t.delete(s),i++);if(i>0&&(this.markInodeCacheDirty(e),st.debug("inode cache invalid cleanup side=%s removed=%d after=%d",e,i,t.size)),!this.shouldCleanupFullScanEntries(t,n))return;let a=0;for(let s of t.keys())n.has(s)||(t.delete(s),a++);a>0&&(this.markInodeCacheDirty(e),st.debug("inode cache cleanup side=%s actual=%d removed=%d after=%d",e,n.size,a,t.size))}shouldCleanupFullScanEntries(e,t){let n=Math.max(t.size*eV,t.size+tV,rV);return e.size>n}getInodeKeyString(e,t){if(!(!e||!t))return`${e}:${t}`}invalidateStat(e,t){let n=this.getInodeKey(t);if(!n)return;let o=this.getInodeCache(e.side),i=this.getPathToInode(e.side);o.delete(n)&&this.markInodeCacheDirty(e.side),i.delete(this.getEntryKey(e))}async invalidateSimilarityDigest(e,t){let n=await this.getContentDigest(e,t);if(!n)return;let o=dt(e.metaPath)??"/";await this.withProjectCache(o,async i=>{i.similarity.delete(n.value)&&st.debug("drop project similarity cache project=%s path=%s sha256=%s",o,e.metaPath,n.value.slice(0,12))})}async writeInodeCache(e,t){let n={version:1,files:Object.fromEntries(t)};try{await rr(e,JSON.stringify(n))}catch(o){st.debug("failed to write inode cache: %s",e,o)}}estimateSimilarityPairs(e,t){let n=0;for(let o of e)for(let i of t.get(this.getSimilarityBucketKey(o))??[])o.metaPath!==i.metaPath&&n++;return n}};var nV=.6,oV=.15,iV=8,aV=8,sV=8,ET=4096,cV=8,lV=64,uV=20,Oe=M("sync.detector.workspace"),kp=class{detectRuns=0;durationMs=0;records=0;filteredRecords=0;resultChanges=0;suspectMetaPaths=0;changes=0;matchedLocal=0;matchedRemote=0;matchedLocalFiles=0;matchedRemoteFiles=0;availableLocalFiles=0;availableRemoteFiles=0;pendingSamePath=0;local={entries:0,files:0,folders:0,trackedFiles:0,trackedFolders:0};remote={entries:0,files:0,folders:0,trackedFiles:0,trackedFolders:0};stages={};similarity={fileLocalCandidates:0,fileRemoteCandidates:0,fileCandidateBuckets:0,fileComparableRefs:0,fileEstimatedPairs:0,fileComparedPairs:0,pendingSamePathPairs:0,skippedPendingSamePathLocalCandidates:0,skippedPendingSamePathRemoteCandidates:0,fileTopByLeft:0,fileTopByRight:0,stableFileCandidates:0,acceptedFileCandidates:0};startRun(){return this.detectRuns++,Date.now()}finishRun(e){this.durationMs+=Date.now()-e}createSnapshot(){return{detectRuns:this.detectRuns,durationMs:this.durationMs,records:this.records,filteredRecords:this.filteredRecords,resultChanges:this.resultChanges,suspectMetaPaths:this.suspectMetaPaths,changes:this.changes,matchedLocal:this.matchedLocal,matchedRemote:this.matchedRemote,matchedLocalFiles:this.matchedLocalFiles,matchedRemoteFiles:this.matchedRemoteFiles,availableLocalFiles:this.availableLocalFiles,availableRemoteFiles:this.availableRemoteFiles,pendingSamePath:this.pendingSamePath,local:{...this.local},remote:{...this.remote},stages:Object.fromEntries(Object.entries(this.stages).map(([e,t])=>[e,{...t}])),similarity:{...this.similarity}}}describeForLog(){return`
|
|
78
|
+
`+JSON.stringify(this.createSnapshot(),null,2).replace(/^\{\n/,"").replace(/\n\}$/,"")}},wp=class{constructor(e){this.options=e;let t=e.workspace;this.workspaceRoot=t.root,this.remoteMirrorRoot=t.getMirrorRoot(),this.task=e.task??Pt.INSTANCE,this.mirror=new zt(this.remoteMirrorRoot),this.workspaceStore=new Qr(this.workspaceRoot,this.mirror),this.fingerprint=new Sp({workspaceRoot:this.workspaceRoot,remoteMirrorRoot:this.remoteMirrorRoot,lockManager:t.lockManager}),this.rootRemotePath=this.normalizeRootRemotePath(e.rootRemotePath)}task;fingerprint;rootRemotePath;mirror;workspaceStore;workspaceRoot;remoteMirrorRoot;diagnostics=new kp;currentMatchPhase="idle";mirrorProjectPresence=new Map;reportedProblemKeys=new Set;reportedProblemEventCount=0;baselineProblems=[];throwIfAborted(){this.options.signal?.throwIfAborted(),this.task.throwIfAborted()}normalizeRootRemotePath(e){if(!e)return"";let t=ie(e);return t==="/"?"":t}async detect(){let e=Date.now();this.resetProblemReports();let t=this.diagnostics.startRun();Oe.debug(`detect start workspace=${this.workspaceRoot} mirror=${this.remoteMirrorRoot}`),this.throwIfAborted();let n=Date.now();await this.fingerprint.load(),Oe.debug(`load inode cache done elapsed=${Date.now()-n}ms`);let o=new Set;n=Date.now();let i=await this.detectRecords(o);this.diagnostics.records=i.length,this.diagnostics.suspectMetaPaths=o.size,Oe.debug(`detect records done elapsed=${Date.now()-n}ms records=${i.length} suspectMeta=${o.size}`),this.throwIfAborted(),n=Date.now(),await this.fingerprint.flush(),Oe.debug(`flush inode cache done elapsed=${Date.now()-n}ms`);let a=i.filter(c=>c.kind!=="localOnly"||!this.isIgnoredUntrackedLocal(c));this.diagnostics.filteredRecords=a.length;let s=new Array(a.length);return n=Date.now(),await Oi(a.map((c,l)=>({change:c,index:l})),sV,async c=>{s[c.index]=await this.toSyncFileChange(c.change)}),this.diagnostics.resultChanges=s.length,Oe.debug(`create sync changes done elapsed=${Date.now()-n}ms filteredRecords=${a.length} changes=${s.length}`),this.finishRunDiagnostics(t),Oe.debug(`detect diagnostics ${this.diagnostics.describeForLog()}`),Oe.debug(`detect done elapsed=${Date.now()-e}ms changes=${s.length} suspectMeta=${o.size}`),{changes:s,suspectMetaPaths:[...o].sort(),baselineProblems:[...this.baselineProblems]}}resetProblemReports(){this.reportedProblemKeys.clear(),this.reportedProblemEventCount=0,this.baselineProblems.length=0}getDiagnostics(e={}){let t=this.diagnostics.createSnapshot();return e.reset&&this.resetDiagnostics(),t}finishRunDiagnostics(e){this.diagnostics.finishRun(e)}resetDiagnostics(){this.diagnostics=new kp}async withMatchPhase(e,t){let n=this.currentMatchPhase;this.currentMatchPhase=e;try{return await t()}finally{this.currentMatchPhase=n}}withMatchPhaseSync(e,t){let n=this.currentMatchPhase;this.currentMatchPhase=e;try{return t()}finally{this.currentMatchPhase=n}}async flush(){await this.fingerprint.flush()}async detectRecords(e){let t=Date.now(),[n,o]=await Promise.all([this.scan(this.workspaceRoot,"workspace",e),this.scan(this.remoteMirrorRoot,"mirror",new Set)]);this.rootRemotePath===""&&this.fingerprint.recordFullScanEntries(n.values(),o.values()),Oe.debug(`scan both sides done elapsed=${Date.now()-t}ms localEntries=${this.diagnostics.local.entries} localFiles=${this.diagnostics.local.files} localFolders=${this.diagnostics.local.folders} localTrackedFiles=${this.diagnostics.local.trackedFiles} localTrackedFolders=${this.diagnostics.local.trackedFolders} remoteEntries=${this.diagnostics.remote.entries} remoteFiles=${this.diagnostics.remote.files} remoteFolders=${this.diagnostics.remote.folders} remoteTrackedFiles=${this.diagnostics.remote.trackedFiles} remoteTrackedFolders=${this.diagnostics.remote.trackedFolders} suspectMeta=${e.size}`),this.throwIfAborted();let i=new Map,a=this.filterOutIgnoredMirrorResidues(o,this.indexIgnoredMirrorResidues(n,o)),s=this.rootRemotePath===""?this.collectBaselineMissingLocalEntries(n,a):[],l={local:this.filterOutBaselineMissingLocalEntries(n,s),remote:a,matchedLocal:new Set,matchedRemote:new Set,changes:[]},u=Date.now(),p=this.getPipelineStats();await this.withMatchPhase("matchById",()=>this.matchById(l,i)),this.logDetectPhase("matchById",u,p),this.throwIfAborted(),u=Date.now(),p=this.getPipelineStats(),await this.withMatchPhase("matchByPath",()=>this.matchByPath(l,i)),this.logDetectPhase("matchByPath",u,p),this.throwIfAborted(),u=Date.now(),p=this.getPipelineStats(),await this.withMatchPhase("matchRenamesByInode",()=>this.matchRenamesByInode(l,i)),this.logDetectPhase("matchRenamesByInode",u,p),this.throwIfAborted(),u=Date.now(),p=this.getPipelineStats(),await this.withMatchPhase("matchRenamesByHash",()=>this.matchRenamesByHash(l,i)),this.logDetectPhase("matchRenamesByHash",u,p),this.throwIfAborted(),u=Date.now(),p=this.getPipelineStats(),await this.withMatchPhase("matchRenamesBySimilarity",()=>this.matchRenamesBySimilarity(l,i)),this.logDetectPhase("matchRenamesBySimilarity",u,p),this.throwIfAborted(),u=Date.now(),p=this.getPipelineStats(),this.withMatchPhaseSync("flushPendingSamePathChanges",()=>this.flushPendingSamePathChanges(l,i)),this.logDetectPhase("flushPendingSamePathChanges",u,p),u=Date.now(),await this.addBaselineMissingLocalChanges(l,s);for(let g of l.local.values())if(!l.matchedLocal.has(g.metaPath)){if(g.isFolder&&!g.hasMeta||!await this.isScannedEntryStillPresent(this.workspaceRoot,g))continue;this.addChange(l,{kind:"localOnly",metaPath:g.metaPath,localPath:g.metaPath,fileId:g.meta?.id,isFolder:g.isFolder,hasMeta:g.hasMeta})}for(let g of l.remote.values())if(!l.matchedRemote.has(g.metaPath)){if(!g.hasMeta)continue;this.addChange(l,{kind:"remoteOnly",metaPath:g.metaPath,remotePath:g.metaPath,fileId:g.meta?.id,isFolder:g.isFolder,hasMeta:g.hasMeta})}return Oe.debug(`collect unmatched entries done elapsed=${Date.now()-u}ms changes=${this.diagnostics.changes} matchedLocal=${this.diagnostics.matchedLocal} matchedRemote=${this.diagnostics.matchedRemote} availableLocalFiles=${this.diagnostics.availableLocalFiles} availableRemoteFiles=${this.diagnostics.availableRemoteFiles} totalLocalFiles=${this.diagnostics.local.files} totalRemoteFiles=${this.diagnostics.remote.files}`),l.changes}logDetectPhase(e,t,n){let o=this.getPipelineStats(),i={...o,elapsedMs:Date.now()-t,changeDelta:o.changes-n.changes,matchedLocalDelta:o.matchedLocal-n.matchedLocal,matchedRemoteDelta:o.matchedRemote-n.matchedRemote,matchedLocalFileDelta:o.matchedLocalFiles-n.matchedLocalFiles,matchedRemoteFileDelta:o.matchedRemoteFiles-n.matchedRemoteFiles,pendingDelta:o.pendingSamePath-n.pendingSamePath};this.diagnostics.stages[e]=i,Oe.debug(`${e} done elapsed=${i.elapsedMs}ms inputLocalFiles=${n.availableLocalFiles} inputRemoteFiles=${n.availableRemoteFiles} matchedLocalFileDelta=${i.matchedLocalFileDelta} matchedRemoteFileDelta=${i.matchedRemoteFileDelta} changeDelta=${i.changeDelta} pendingDelta=${i.pendingDelta} remainingLocalFiles=${i.availableLocalFiles} remainingRemoteFiles=${i.availableRemoteFiles}`)}getPipelineStats(){return{changes:this.diagnostics.changes,matchedLocal:this.diagnostics.matchedLocal,matchedRemote:this.diagnostics.matchedRemote,matchedLocalFiles:this.diagnostics.matchedLocalFiles,matchedRemoteFiles:this.diagnostics.matchedRemoteFiles,availableLocalFiles:this.diagnostics.availableLocalFiles,availableRemoteFiles:this.diagnostics.availableRemoteFiles,pendingSamePath:this.diagnostics.pendingSamePath}}async isScannedEntryStillPresent(e,t){let n=ge(e,t.metaPath);try{let o=await gl.promises.stat(n);return t.isFolder?o.isDirectory():o.isFile()}catch(o){if(_(o))return Oe.debug(`skip disappeared sync scan entry: ${n}`),!1;throw o}}async scan(e,t,n){let o=Date.now();Oe.debug(`scan start side=${t} root=${e} scope=${this.rootRemotePath||"/"}`);let i=new Map;if(!await this.shouldScanScopedProject(t))return Oe.warn(`skip sync scan scope because baseline project is missing: side=${t} scope=${this.rootRemotePath}`),i;let a=new bt(iV),s=new bt(aV),c=0,l=!1;return await new Promise((u,p)=>{let g=()=>{c--,c===0&&u()},m=y=>{l||(l=!0,a.cancel(y),s.cancel(y),p(y))},f=(y,C=!1,S=!1)=>{this.throwIfAborted(),c++,a.addTask(async()=>{await this.walk(e,t,y,i,n,f,s,C,S)}).then(g,m)};f(this.rootRemotePath)}),await Promise.all([a.waitAll(),s.waitAll()]),Oe.debug(`scan done side=${t} elapsed=${Date.now()-o}ms entries=${this.getSideStats(t).entries} files=${this.getSideStats(t).files} folders=${this.getSideStats(t).folders} trackedFiles=${this.getSideStats(t).trackedFiles} trackedFolders=${this.getSideStats(t).trackedFolders} suspectMeta=${n.size}`),new Map([...i].sort(([u],[p])=>u.localeCompare(p)))}async shouldScanScopedProject(e){if(this.rootRemotePath==="")return!0;let t=dt(this.rootRemotePath);return t?this.shouldScanProject(e,t):!0}async shouldScanTopLevelProject(e,t){return this.shouldScanProject(e,t)}async shouldScanProject(e,t){return await this.isCloneInProgressProject(t)?(Oe.debug(`skip clone in-progress project during workspace scan: side=${e} project=${t}`),!1):e==="workspace"?this.hasMirrorProject(t):!0}async isCloneInProgressProject(e){return(await Promise.all([this.workspaceStore.isCloneInProgress(e),this.mirror.isCloneInProgress(e)])).some(Boolean)}async hasMirrorProject(e){let t=this.mirrorProjectPresence.get(e);if(t!==void 0)return t;let n=ge(this.remoteMirrorRoot,e),o=!1;try{o=(await gl.promises.stat(n)).isDirectory()}catch(i){if(!_(i))throw i}return this.mirrorProjectPresence.set(e,o),o||this.reportProblemOnce(new wc(this.workspaceRoot,"sync.missingBaselineProject",{projectPaths:[e],count:1})),o}reportProblemOnce(e){let t=[e.code,...e.projectPaths??[]].join("|");if(!this.reportedProblemKeys.has(t)){if(this.reportedProblemEventCount>=cV){Oe.warn(`skip workspace problem event because limit reached: ${e.message}`);return}this.reportedProblemKeys.add(t),this.reportedProblemEventCount++,this.baselineProblems.push(e),Oe.warn(`workspace problem reported code=${e.code} root=${e.root} projects=${e.projectPaths?.join(",")??""} count=${e.count??""}`),this.options.workspace.eventBus.fireAsync(new kt("workspace.problem.reported",e,this)).catch(n=>Oe.warn(`workspace problem event listener failed: ${n instanceof Error?n.message:String(n)}`))}}async walk(e,t,n,o,i,a,s,c,l){let u;try{u=await gl.promises.readdir(ge(e,n||"/"),{withFileTypes:!0})}catch(f){if(_(f)){Oe.debug(`skip unreadable sync scan directory: ${e}:${n||"/"}`);return}throw f}let p=await this.readDirectoryDotMeta(e,n,i),g=new Set,m=[];for(let f of u){if(this.throwIfAborted(),n===""&&f.name.startsWith(".")||f.name===te)continue;g.add(f.name);let y=n+"/"+f.name,C=ge(e,y);if(!(n===""&&!f.isDirectory())){if(n===""&&f.isDirectory()&&await this.isCloneInProgressProject(y)){Oe.debug(`skip clone in-progress root project during workspace scan: side=${t} project=${y}`);continue}if(n===""&&f.isDirectory()&&p.dotMeta[f.name]&&!await this.shouldScanTopLevelProject(t,y)){Oe.warn(`skip sync scan project without opposite side baseline: side=${t} project=${y}`);continue}if(n===""&&!p.dotMeta[f.name]){a(y,!0,t==="mirror");continue}if(f.isDirectory()){let S=p.dotMeta[f.name];if(!S){if(c){a(y,!0,l||t==="mirror");continue}i.add(p.metaPath)}this.addSnapshotEntry(o,{metaPath:y,side:t,isFolder:!0,meta:S,hasMeta:!!S,underUnregisteredMirrorDirectory:l}),a(y,!1,l||t==="mirror"&&!S)}else f.isFile()&&m.push(s.addTask(async()=>{let S;try{S=await gl.promises.stat(C)}catch(w){if(_(w)){Oe.debug(`skip unreadable sync scan file stat: ${C}`);return}throw w}c&&!p.dotMeta[f.name]||(this.addSnapshotEntry(o,{metaPath:y,side:t,isFolder:!1,contentSize:S?.size,stat:S?Cp(S):void 0,meta:p.dotMeta[f.name],hasMeta:!!p.dotMeta[f.name],underUnregisteredMirrorDirectory:l}),p.dotMeta[f.name]||i.add(p.metaPath))}))}}await Promise.all(m);for(let f of Object.keys(p.dotMeta))g.has(f)||i.add(p.metaPath)}addSnapshotEntry(e,t){if(e.has(t.metaPath)){e.set(t.metaPath,t);return}e.set(t.metaPath,t);let n=this.getSideStats(t.side);n.entries++,t.isFolder?(n.folders++,t.hasMeta&&n.trackedFolders++):(n.files++,t.hasMeta&&n.trackedFiles++),this.refreshAvailableFileStats()}getSideStats(e){return e==="workspace"?this.diagnostics.local:this.diagnostics.remote}async readDirectoryDotMeta(e,t,n){let o=this.getDotMetaMetaPath(t),i=await vn(e,o);return(!i.exists||!i.readable||i.damaged)&&n.add(o),{metaPath:o,parentPath:t||"/",exists:i.exists,readable:i.readable,damaged:i.damaged,dotMeta:i.dotMeta}}getDotMetaMetaPath(e){return!e||e==="/"?"/"+te:e+"/"+te}getAvailableFiles(e,t){return[...e.values()].filter(n=>!n.isFolder&&!t.has(n.metaPath))}isIgnoredUntrackedLocal(e){if(e.hasMeta)return!1;let t=Ee(e.metaPath);return this.options.workspace.isGitIgnored(e.metaPath)||Ni(t,this.options.ignore??Kt.syncIgnore)}async matchById(e,t){let n=this.indexById(e.local),o=this.indexRemoteByIdForWorkspaceRename(e.remote,e.local),i=[];for(let a of n.values()){let s=a.meta?.id;if(!s)continue;let c=o.get(s);if(!(!c||e.matchedRemote.has(c.metaPath))){if(!a.isFolder&&!c.isFolder){i.push({localEntry:a,remoteEntry:c});continue}await this.addComparisonOrPending(e,a,c,t),await this.matchChildrenAfterFolderRename(e,a,c)}}await this.addComparisonsOrPending(e,i,t)}async matchByPath(e,t){let n=[];for(let o of e.local.values()){if(e.matchedLocal.has(o.metaPath))continue;let i=e.remote.get(o.metaPath);if(!(!i||e.matchedRemote.has(i.metaPath))){if(!o.isFolder&&!i.isFolder){n.push({localEntry:o,remoteEntry:i});continue}await this.addComparisonOrPending(e,o,i,t)}}await this.addComparisonsOrPending(e,n,t)}async matchRenamesByInode(e,t){let n=this.pickStableSimilarityCandidates(await this.collectFileInodeCandidates(e));for(let o of n)e.matchedLocal.has(o.localEntry.metaPath)||e.matchedRemote.has(o.remoteEntry.metaPath)||this.isUnsafePendingSamePathRenameSteal(o,t,n)||await this.addRename(e,o,t)}async matchRenamesByHash(e,t){let n=this.pickStableSimilarityCandidates(await this.collectFolderExactCandidates(e)).sort((i,a)=>i.localEntry.metaPath.length-a.localEntry.metaPath.length);for(let i of n)e.matchedLocal.has(i.localEntry.metaPath)||e.matchedRemote.has(i.remoteEntry.metaPath)||this.isUnsafePendingSamePathRenameSteal(i,t,n)||(await this.addRename(e,i,t),await this.matchChildrenAfterFolderRename(e,i.localEntry,i.remoteEntry));let o=this.pickStableSimilarityCandidates(await this.collectFileEqualCandidates(e));for(let i of o)e.matchedLocal.has(i.localEntry.metaPath)||e.matchedRemote.has(i.remoteEntry.metaPath)||this.isUnsafePendingSamePathRenameSteal(i,t,o)||(await this.addRename(e,i,t),await this.matchChildrenAfterFolderRename(e,i.localEntry,i.remoteEntry))}async matchRenamesBySimilarity(e,t){let n=Date.now(),o=this.pickStableSimilarityCandidates(await this.collectFolderSimilarityCandidates(e));Oe.debug(`similarity folder candidates done elapsed=${Date.now()-n}ms candidates=${o.length}`);for(let c of o)e.matchedLocal.has(c.localEntry.metaPath)||e.matchedRemote.has(c.remoteEntry.metaPath)||this.isUnsafePendingSamePathRenameSteal(c,t,o)||(await this.addRename(e,c,t),await this.matchChildrenAfterFolderRename(e,c.localEntry,c.remoteEntry));n=Date.now();let i=this.pickStableSimilarityCandidates(await this.collectFileSimilarityCandidates(e,t));if(this.diagnostics.similarity.stableFileCandidates=i.length,Oe.debug(`similarity file candidates done elapsed=${Date.now()-n}ms candidates=${i.length}`),i.length===0)return;n=Date.now();let a=await this.collectFileEqualCandidates(e);Oe.debug(`similarity equal candidates done elapsed=${Date.now()-n}ms candidates=${a.length}`);let s=0;for(let c of i)e.matchedLocal.has(c.localEntry.metaPath)||e.matchedRemote.has(c.remoteEntry.metaPath)||this.isUnsafePendingSamePathRenameSteal(c,t,i)||this.isSafeFileSimilarityPair(a,c)&&(await this.addRename(e,c,t),s++);Oe.debug(`similarity apply file candidates done accepted=${s} changes=${e.changes.length}`),this.diagnostics.similarity.acceptedFileCandidates=s}async collectFileInodeCandidates(e){let{localEntries:t,remoteEntries:n}=this.getContentCandidateFiles(e);return this.fingerprint.findInodeFileCandidates(t,n)}async collectFileEqualCandidates(e){let{localEntries:t,remoteEntries:n}=this.getContentCandidateFiles(e);return this.fingerprint.findEqualFileCandidates(t,n)}async collectFolderExactCandidates(e){let t=[];for(let n of e.local.values())if(!(!n.isFolder||e.matchedLocal.has(n.metaPath)||this.isIgnoredUntrackedLocal(n)))for(let o of e.remote.values())!o.isFolder||e.matchedRemote.has(o.metaPath)||n.metaPath!==o.metaPath&&await this.areFolderSubtreesEqual(e.local,e.remote,n,o)&&t.push({localEntry:n,remoteEntry:o,score:1,reason:"folderContentHash"});return t}async areFolderSubtreesEqual(e,t,n,o){let i=this.getFolderDescendantsByRelativePath(e,n),a=this.getFolderDescendantsByRelativePath(t,o);if(i.size!==a.size)return!1;for(let[s,c]of i){let l=a.get(s);if(!l||c.isFolder!==l.isFolder)return!1;if(c.isFolder)continue;if(await this.fingerprint.areEntriesEqual(c,l)!=="same")return!1}return!0}getFolderDescendantsByRelativePath(e,t){let n=new Map;for(let o of e.values())o.metaPath===t.metaPath||!le(o.metaPath,t.metaPath)||n.set(o.metaPath.slice(t.metaPath.length+1),o);return n}async collectFileSimilarityCandidates(e,t){let{localEntries:n,remoteEntries:o}=this.getContentCandidateFiles(e),i=0;if(t?.size&&(i=this.estimatePendingSamePathSimilarityPairs(n,o,t),this.diagnostics.similarity.pendingSamePathPairs=i,t.size<2||i>ET)){let c=n.length,l=o.length;n=n.filter(p=>!t.has(p.metaPath)),o=o.filter(p=>!t.has(p.metaPath)),this.diagnostics.similarity.skippedPendingSamePathLocalCandidates=c-n.length,this.diagnostics.similarity.skippedPendingSamePathRemoteCandidates=l-o.length;let u=t.size<2?"singlePendingSamePath":"pendingPairBudget";Oe.debug(`skip pending same-path similarity candidates pendingSamePath=${t.size} pendingPairs=${i} maxPairs=${ET} skippedLocal=${c-n.length} skippedRemote=${l-o.length}`);for(let p of t.values())this.logFileFlow("skip similarity",{path:p.localEntry.metaPath,remotePath:p.remoteEntry.metaPath,fileId:this.getEntryFileId(p.localEntry,p.remoteEntry),reason:u,pendingPairs:i})}if(this.diagnostics.similarity.fileLocalCandidates=n.length,this.diagnostics.similarity.fileRemoteCandidates=o.length,n.length===0||o.length===0)return[];let{candidates:a,stats:s}=await this.fingerprint.findSimilarFileCandidates(n,o);return Object.assign(this.diagnostics.similarity,s),a}estimatePendingSamePathSimilarityPairs(e,t,n){let o=new Map,i=new Set,a=c=>{let l=this.getSimilarityBucketKey(c),u=o.get(l);return u||(u={leftTotal:0,rightTotal:0,leftPending:0,rightPending:0,samePathPending:0},o.set(l,u)),u};for(let c of e){let l=a(c);l.leftTotal++,n.has(c.metaPath)&&(l.leftPending++,i.add(c.metaPath))}for(let c of t){let l=a(c);l.rightTotal++,n.has(c.metaPath)&&(l.rightPending++,i.has(c.metaPath)&&l.samePathPending++)}let s=0;for(let c of o.values())s+=c.leftPending*c.rightTotal-c.samePathPending+(c.leftTotal-c.leftPending)*c.rightPending;return s}getSimilarityBucketKey(e){return vp.posix.extname(e.metaPath).toLowerCase()}async collectFolderSimilarityCandidates(e){let t=[];for(let n of e.local.values())if(!(!n.isFolder||e.matchedLocal.has(n.metaPath)||this.isIgnoredUntrackedLocal(n)))for(let o of e.remote.values()){if(!o.isFolder||e.matchedRemote.has(o.metaPath)||n.metaPath===o.metaPath)continue;let i=await this.getFolderSimilarity(e.local,e.remote,n,o);i>=nV&&t.push({localEntry:n,remoteEntry:o,score:i,reason:"folderSimilarity"})}return t}async getFolderSimilarity(e,t,n,o){let i=this.getFolderFileDescendants(e,n),a=this.getFolderFileDescendants(t,o),s=Math.max(i.length,a.length);if(s===0)return 1;let c=new Map(a.map(m=>[m.metaPath.slice(o.metaPath.length+1),m])),l=new Set,u=0,p=await this.fingerprint.findEqualFileCandidates(i,a),g=new Map;for(let m of p){let f=g.get(m.localEntry.metaPath);f||(f=[],g.set(m.localEntry.metaPath,f)),f.push(m.remoteEntry.metaPath)}for(let m of i){let f=m.metaPath.slice(n.metaPath.length+1),y=c.get(f);if(y){l.add(y.metaPath),u++;continue}for(let C of g.get(m.metaPath)??[])if(!l.has(C)){l.add(C),u++;break}}return u/s}getFolderFileDescendants(e,t){return[...e.values()].filter(n=>!n.isFolder&&n.metaPath!==t.metaPath&&le(n.metaPath,t.metaPath))}pickStableSimilarityCandidates(e){let t=[];for(let n of e)this.isUniqueBestCandidate(n,e,!0)&&this.isUniqueBestCandidate(n,e,!1)&&t.push(n);return t}isUniqueBestCandidate(e,t,n){let o=t.filter(a=>n?a.localEntry.metaPath===e.localEntry.metaPath:a.remoteEntry.metaPath===e.remoteEntry.metaPath).sort((a,s)=>s.score-a.score);if(o[0]!==e)return!1;let i=o[1];return i?e.score-i.score>=oV:!0}isSafeFileSimilarityPair(e,t){let n=[...e];return n.some(o=>o.localEntry.metaPath===t.localEntry.metaPath&&o.remoteEntry.metaPath===t.remoteEntry.metaPath)||n.push(t),this.pickStableSimilarityCandidates(n).some(o=>o.localEntry.metaPath===t.localEntry.metaPath&&o.remoteEntry.metaPath===t.remoteEntry.metaPath)}isUnsafePendingSamePathRenameSteal(e,t,n){if(!t.has(e.localEntry.metaPath)&&!t.has(e.remoteEntry.metaPath))return!1;let o=!this.hasPendingSamePathSwapCandidate(e,t,n);return o&&this.logFileFlow("reject rename stealing pending same-path",{localPath:e.localEntry.metaPath,remotePath:e.remoteEntry.metaPath,fileId:this.getEntryFileId(e.localEntry,e.remoteEntry),reason:e.reason,score:e.score}),o}hasPendingSamePathSwapCandidate(e,t,n){let o=e.localEntry.metaPath,i=e.remoteEntry.metaPath;return!t.has(o)||!t.has(i)?!1:n.some(a=>a!==e&&a.localEntry.metaPath===i&&a.remoteEntry.metaPath===o&&(a.reason===e.reason||a.score>=1||e.score>=1))}getContentCandidateFiles(e){return this.getContentCandidateFilesFromAvailable(this.getAvailableFiles(e.local,e.matchedLocal).filter(t=>!this.isIgnoredUntrackedLocal(t)),this.getAvailableFiles(e.remote,e.matchedRemote))}getContentCandidateFilesFromAvailable(e,t){return{localEntries:e,remoteEntries:t}}async addRename(e,t,n){let{localEntry:o,remoteEntry:i,score:a,reason:s}=t;if(!this.isAvailableRenamePair(o,i,e.matchedLocal,e.matchedRemote))return;let c=await this.computeContentChanged(o,i);this.markMatched(e,o,i),this.consumePendingSamePathForRename(n,o,i,s,a),this.addChange(e,{kind:"renamed",metaPath:o.metaPath,localPath:o.metaPath,remotePath:i.metaPath,fileId:this.getEntryFileId(o,i),oldMetaPath:i.metaPath,isFolder:o.isFolder,contentChanged:c,metaChanged:!qi(o.meta??{},i.meta??{}),confidence:a,reason:s}),this.logFileFlow("accept rename",{localPath:o.metaPath,remotePath:i.metaPath,fileId:this.getEntryFileId(o,i),reason:s,score:a,contentChanged:c})}isAvailableRenamePair(e,t,n,o){return!n.has(e.metaPath)&&!o.has(t.metaPath)&&e.isFolder===t.isFolder&&e.metaPath!==t.metaPath&&!this.isIgnoredUntrackedLocal(e)}async addComparison(e,t,n){this.applyComparisonOutcome(e,await this.createComparisonOutcome(t,n))}async addComparisonOrPending(e,t,n,o){this.applyComparisonOutcome(e,await this.createComparisonOutcome(t,n),o)}async addComparisonsOrPending(e,t,n){let o=await Promise.all(t.map(i=>this.createComparisonOutcome(i.localEntry,i.remoteEntry)));for(let i of o)e.matchedLocal.has(i.localEntry.metaPath)||e.matchedRemote.has(i.remoteEntry.metaPath)||this.applyComparisonOutcome(e,i,n)}async createComparisonOutcome(e,t){return{localEntry:e,remoteEntry:t,contentChanged:await this.computeContentChanged(e,t),metaChanged:!qi(e.meta??{},t.meta??{})}}applyComparisonOutcome(e,t,n){let{localEntry:o,remoteEntry:i,contentChanged:a,metaChanged:s}=t;if(this.markMatched(e,o,i),o.isFolder!==i.isFolder){this.addChange(e,{kind:"metaIssue",metaPath:o.metaPath,localPath:o.metaPath,remotePath:i.metaPath,fileId:this.getEntryFileId(o,i),isFolder:o.isFolder,reason:"resourceTypeChanged"});return}if(o.metaPath!==i.metaPath){this.addChange(e,{kind:"renamed",metaPath:o.metaPath,localPath:o.metaPath,remotePath:i.metaPath,fileId:this.getEntryFileId(o,i),oldMetaPath:i.metaPath,isFolder:o.isFolder,contentChanged:a,metaChanged:s,confidence:1,reason:"sameId"}),this.logFileFlow("accept rename",{localPath:o.metaPath,remotePath:i.metaPath,fileId:this.getEntryFileId(o,i),reason:"sameId",score:1,contentChanged:a});return}if(!(!a&&!s)){if(n){this.unmarkMatched(e,o,i),this.addPendingSamePath(n,{localEntry:o,remoteEntry:i,contentChanged:a,metaChanged:s});return}this.addChange(e,{kind:a?"contentDifferent":"metaDifferent",metaPath:o.metaPath,localPath:o.metaPath,remotePath:i.metaPath,fileId:this.getEntryFileId(o,i),isFolder:o.isFolder,contentChanged:a,metaChanged:s})}}flushPendingSamePathChanges(e,t){for(let[n,o]of[...t]){if(e.matchedLocal.has(o.localEntry.metaPath)||e.matchedRemote.has(o.remoteEntry.metaPath)){let i=this.removePendingSamePath(t,n);i&&this.logFileFlow("consume pending same-path",{path:i.localEntry.metaPath,remotePath:i.remoteEntry.metaPath,fileId:this.getEntryFileId(i.localEntry,i.remoteEntry),reason:"alreadyMatchedBeforeFlush"});continue}this.markMatched(e,o.localEntry,o.remoteEntry),this.addChange(e,{kind:o.contentChanged?"contentDifferent":"metaDifferent",metaPath:o.localEntry.metaPath,localPath:o.localEntry.metaPath,remotePath:o.remoteEntry.metaPath,fileId:this.getEntryFileId(o.localEntry,o.remoteEntry),isFolder:o.localEntry.isFolder,contentChanged:o.contentChanged,metaChanged:o.metaChanged}),this.removePendingSamePath(t,n),this.logFileFlow("flush pending same-path",{path:o.localEntry.metaPath,remotePath:o.remoteEntry.metaPath,fileId:this.getEntryFileId(o.localEntry,o.remoteEntry),contentChanged:o.contentChanged,metaChanged:o.metaChanged})}}addChange(e,t){e.changes.push(t),this.diagnostics.changes++}logFileFlow(e,t){let n=Object.entries(t).filter(([,o])=>o!==void 0).map(([o,i])=>`${o}=${String(i)}`).join(" ");Oe.debug(`flow ${e} phase=${this.currentMatchPhase} ${n}`)}addPendingSamePath(e,t){e.has(t.localEntry.metaPath)||this.diagnostics.pendingSamePath++,e.set(t.localEntry.metaPath,t),this.logFileFlow("pending same-path",{path:t.localEntry.metaPath,remotePath:t.remoteEntry.metaPath,fileId:this.getEntryFileId(t.localEntry,t.remoteEntry),contentChanged:t.contentChanged,metaChanged:t.metaChanged})}removePendingSamePath(e,t){let n=e.get(t);if(n)return e.delete(t),this.diagnostics.pendingSamePath--,n}consumePendingSamePathForRename(e,t,n,o,i){if(e?.size)for(let a of new Set([t.metaPath,n.metaPath])){let s=this.removePendingSamePath(e,a);s&&this.logFileFlow("consume pending same-path",{path:s.localEntry.metaPath,remotePath:s.remoteEntry.metaPath,fileId:this.getEntryFileId(s.localEntry,s.remoteEntry),reason:o,score:i,matchedLocalPath:t.metaPath,matchedRemotePath:n.metaPath})}}async computeContentChanged(e,t){return e.isFolder||t.isFolder?!1:await this.fingerprint.areEntriesEqual(e,t)!=="same"}markMatched(e,t,n){e.matchedLocal.has(t.metaPath)||(e.matchedLocal.add(t.metaPath),this.diagnostics.matchedLocal++,t.isFolder||this.diagnostics.matchedLocalFiles++),e.matchedRemote.has(n.metaPath)||(e.matchedRemote.add(n.metaPath),this.diagnostics.matchedRemote++,n.isFolder||this.diagnostics.matchedRemoteFiles++),this.refreshAvailableFileStats()}unmarkMatched(e,t,n){e.matchedLocal.delete(t.metaPath)&&(this.diagnostics.matchedLocal--,t.isFolder||this.diagnostics.matchedLocalFiles--),e.matchedRemote.delete(n.metaPath)&&(this.diagnostics.matchedRemote--,n.isFolder||this.diagnostics.matchedRemoteFiles--),this.refreshAvailableFileStats()}refreshAvailableFileStats(){this.diagnostics.availableLocalFiles=this.diagnostics.local.files-this.diagnostics.matchedLocalFiles,this.diagnostics.availableRemoteFiles=this.diagnostics.remote.files-this.diagnostics.matchedRemoteFiles}async matchChildrenAfterFolderRename(e,t,n){!t.isFolder||!n.isFolder||t.metaPath===n.metaPath||(await this.matchChildrenByRelativePath(e,t,n),await this.matchChildrenByContent(e,t,n))}async matchChildrenByRelativePath(e,t,n){for(let o of e.local.values()){if(e.matchedLocal.has(o.metaPath)||!le(o.metaPath,t.metaPath))continue;let i=o.metaPath.slice(t.metaPath.length+1),a=e.remote.get(n.metaPath+"/"+i);!a||e.matchedRemote.has(a.metaPath)||await this.addComparison(e,o,a)}}async matchChildrenByContent(e,t,n){let{localEntries:o,remoteEntries:i}=this.getContentCandidateFilesFromAvailable(this.getAvailableFolderFiles(e.local,t,e.matchedLocal).filter(s=>!this.isIgnoredUntrackedLocal(s)),this.getAvailableFolderFiles(e.remote,n,e.matchedRemote)),a=this.pickStableSimilarityCandidates(await this.fingerprint.findEqualFileCandidates(o,i));for(let s of a)!le(s.localEntry.metaPath,t.metaPath)||!le(s.remoteEntry.metaPath,n.metaPath)||await this.addRename(e,s)}getAvailableFolderFiles(e,t,n){return this.getFolderFileDescendants(e,t).filter(o=>!n.has(o.metaPath))}indexById(e){let t=new Map,n=new Set;for(let o of e.values()){let i=o.meta?.id;if(i){if(t.has(i)){n.add(i);continue}t.set(i,o)}}for(let o of n)t.delete(o);return t}indexRemoteByIdForWorkspaceRename(e,t){let n=new Map;for(let[o,i]of this.groupRemoteEntriesByMetaId(e)){if(i.length===1){n.set(o,i[0]);continue}let a=i.filter(s=>!t.has(s.metaPath));a.length===1&&n.set(o,a[0])}return n}indexIgnoredMirrorResidues(e,t){let n=this.groupRemoteEntriesByMetaId(t),o=this.collectParentsWithTrackedChild(t),i=new Set;for(let a of t.values()){if(!e.has(a.metaPath))continue;if(!a.hasMeta){o.has(vp.posix.dirname(a.metaPath))&&i.add(a.metaPath);continue}let s=a.meta?.id;if(!s)continue;let c=n.get(s);!c||c.length<2||(a.underUnregisteredMirrorDirectory||this.hasUnmatchedSibling(c,a.metaPath,e))&&i.add(a.metaPath)}return i}filterOutIgnoredMirrorResidues(e,t){if(t.size===0)return e;let n=new Map;for(let[o,i]of e)t.has(o)||n.set(o,i);return n}filterOutBaselineMissingLocalEntries(e,t){if(t.length===0)return e;let n=new Set(t.map(i=>i.metaPath)),o=new Map;for(let[i,a]of e)n.has(i)||o.set(i,a);return o}async addBaselineMissingLocalChanges(e,t){for(let n of t)n.isFolder&&!n.hasMeta||await this.isScannedEntryStillPresent(this.workspaceRoot,n)&&this.addChange(e,{kind:"localOnly",metaPath:n.metaPath,localPath:n.metaPath,fileId:n.meta?.id,isFolder:n.isFolder,hasMeta:n.hasMeta})}collectBaselineMissingLocalEntries(e,t){let n=new Set,o=new Set;for(let s of t.values()){let c=s.meta?.id;c&&n.add(c);let l=dt(s.metaPath);l&&o.add(l)}let i=new Map;for(let s of e.values()){if(!s.hasMeta||t.has(s.metaPath))continue;let c=s.meta?.id;if(!c||n.has(c))continue;let l=dt(s.metaPath);if(!l)continue;let u=i.get(l);u?u.push(s):i.set(l,[s])}let a=[];for(let[s,c]of i)if(!(o.has(s)&&c.length<lV)){for(let l of c)l.baselineMissing=!0,a.push(l);this.reportProblemOnce(new wc(this.workspaceRoot,"sync.incompleteBaselineFiles",{projectPaths:[s],remotePaths:c.slice(0,uV).map(l=>l.metaPath),count:c.length}))}return a}groupRemoteEntriesByMetaId(e){let t=new Map;for(let n of e.values()){let o=n.meta?.id;if(!o)continue;let i=t.get(o);i?i.push(n):t.set(o,[n])}return t}collectParentsWithTrackedChild(e){let t=new Set;for(let n of e.values())n.hasMeta&&t.add(vp.posix.dirname(n.metaPath));return t}hasUnmatchedSibling(e,t,n){for(let o of e)if(o.metaPath!==t&&!n.has(o.metaPath))return!0;return!1}getEntryFileId(e,t){return t.meta?.id??e.meta?.id}async toSyncFileChange(e){return{path:Ee(e.localPath??e.remotePath??e.metaPath),remotePath:e.localPath??e.remotePath??e.metaPath,...e.fileId!==void 0?{fileId:e.fileId}:{},oldPath:e.oldMetaPath?Ee(e.oldMetaPath):void 0,oldRemotePath:e.oldMetaPath,type:this.toScmChangeType(e.kind),isFolder:e.isFolder,contentChanged:e.contentChanged,metaChanged:e.metaChanged}}toScmChangeType(e){return e==="localOnly"?"added":e==="remoteOnly"?"deleted":e==="contentDifferent"||e==="metaDifferent"?"modified":e==="renamed"?"renamed":"conflict"}};var dV=M("workspace.sync-status.refresh"),zn=class{constructor(e,t={}){this.id=e;this.scope=t.scope??"both",this.source=t.source??"manual",this.task=t.task??Pt.INSTANCE,this.forceRefresh=t.forceRefresh===!0,this.rootRemotePath=t.rootRemotePath,this.refreshLocal=this.scope==="local"||this.scope==="both",this.refreshRemote=this.scope==="remote"||this.scope==="both",this.workspace=t.workspace,this.accepted=t.onAccepted??(()=>{}),this.publishResult=t.publish??(()=>{})}kind="refresh";scope;source;task;forceRefresh;rootRemotePath;refreshLocal;refreshRemote;accepted;workspace;publishResult;localController=new AbortController;remoteController=new AbortController;refreshResult={warnings:[]};localCancelled=!1;remoteCancelled=!1;onAccepted(){this.accepted()}abort(){this.cancelLocal(),this.cancelRemote()}cancelConflictingSubTasks(e){this.cancelSubTasks({local:e.refreshLocal,remote:e.refreshRemote})}cancelSubTasks(e){e.local&&this.refreshLocal&&this.cancelLocal(),e.remote&&this.refreshRemote&&this.cancelRemote()}isLocalCancelled(){return this.localCancelled}isRemoteCancelled(){return this.remoteCancelled}canRunSubTask(e){return e==="local"?this.refreshLocal&&!this.localCancelled:this.refreshRemote&&!this.remoteCancelled}hasRunnableSubTask(){return this.canRunSubTask("local")||this.canRunSubTask("remote")}getRefreshResult(){return this.refreshResult}canRunBackgroundRefresh(){let e=this.workspace;return!!e&&e.isConnected&&!!e.activeServerUrl}async run(){if(!this.workspace||!this.hasRunnableSubTask())return{kind:"noop"};this.task.start(Number(this.canRunSubTask("local"))+Number(this.canRunSubTask("remote")),{message:d("workspace.sync.progress.refresh.running")});let e=this.canRunSubTask("local")?this.task.subTaskMonitor(1):void 0,t=this.canRunSubTask("remote")?this.task.subTaskMonitor(1):void 0;try{let n=e?this.runLocalRefresh(e):Promise.resolve(void 0),o=t?this.runRemoteRefresh(t):Promise.resolve(void 0),[i,a]=await Promise.all([n,o]);return this.canPublish(i,a)?{kind:"replaceRefreshScope",localChanges:this.localCancelled?void 0:i,...this.localCancelled||!this.rootRemotePath?{}:{localRootRemotePath:this.rootRemotePath},remoteChanges:this.remoteCancelled?void 0:a,...a!==void 0&&this.refreshResult.warnings.length>0?{warnings:this.refreshResult.warnings}:{}}:{kind:"noop"}}catch(n){if(n instanceof Error&&n.name==="AbortError")return{kind:"noop"};throw n}}createPublishableResult(e){if(e.kind!=="replaceRefreshScope")return e;let t=this.localCancelled?void 0:e.localChanges,n=this.remoteCancelled?void 0:e.remoteChanges;return t===void 0&&n===void 0?{kind:"noop"}:{kind:"replaceRefreshScope",localChanges:t,...t===void 0||!e.localRootRemotePath?{}:{localRootRemotePath:e.localRootRemotePath},remoteChanges:n,...n!==void 0&&e.warnings?.length?{warnings:e.warnings}:{}}}publish(e){let t=this.createPublishableResult(e);return this.refreshResult=this.createRefreshResult(t),this.publishResult(t)}async runLocalRefresh(e){e.start(1);let t=this.workspace,n=await new wp({workspace:t,task:e,signal:this.localController.signal,rootRemotePath:this.rootRemotePath}).detect();return e.step(1),n.changes}async runRemoteRefresh(e){e.start(1);let t=await this.detectRemoteChanges(e);return e.step(1),t}async detectRemoteChanges(e){let t=this.workspace;if(!t)return[];try{return this.remoteController.signal.aborted?[]:await new qn({workspace:t,task:e,forceRefresh:this.forceRefresh,signal:this.remoteController.signal}).detect()}catch(n){return Uw(n)?(this.refreshResult={warnings:[{errorCode:"err.login.notlogin",properties:{serverUrl:t.activeServerUrl}}]},[]):(dV.warn(`remote sync status detection failed: ${t.root}`,n),[])}}createRefreshResult(e){return e.kind!=="replaceRefreshScope"?{warnings:[]}:{warnings:e.warnings??[]}}canPublish(e,t){return this.refreshLocal&&!this.localCancelled&&!e||this.refreshRemote&&!this.remoteCancelled&&!t?!1:!this.localCancelled&&!!e||!this.remoteCancelled&&!!t}cancelLocal(){this.localCancelled=!0,this.localController.abort()}cancelRemote(){this.remoteCancelled=!0,this.remoteController.abort()}};var Pp=class{taskQueue=[];scheduling=!1;dispose(){this.cancelAllStateTasks(),this.scheduleTaskQueue()}hasRemoteRefreshTask(){return this.getRefreshTasks().some(e=>e.refreshRemote)}enqueue(e){let t=this.mergePendingFileWatchTask(e);return t?{accepted:!0,promise:t.promise}:this.prepareTask(e)?(e instanceof zn&&e.refreshLocal&&this.cancelLocalStateTasks(),e.onAccepted?.(),{accepted:!0,promise:this.enqueueTask(e)}):{accepted:!1,promise:Promise.resolve()}}submitImmediate(e,t={}){t.cancel==="local"?this.cancelLocalStateTasks():this.cancelAllStateTasks();let n=e.publish(e.toResult());this.enqueueFollowUpTask(n),this.scheduleTaskQueue()}prepareTask(e){return e instanceof zn?this.prepareRefreshTask(e):!0}prepareRefreshTask(e){if(e.source==="background")return this.taskQueue.length===0&&e.canRunBackgroundRefresh();for(let t of this.getRefreshTasks())t.cancelConflictingSubTasks(e);return!0}enqueueTask(e){let t=this.createScheduledTask(e);return this.taskQueue.push(t),this.scheduleTaskQueue(),t.promise}createScheduledTask(e){let t,n,o=new Promise((i,a)=>{t=i,n=a});return{task:e,state:"pending",promise:o,resolve:t,reject:n}}scheduleTaskQueue(){if(!this.scheduling){this.scheduling=!0;try{for(let e of[...this.taskQueue])if(e.state==="pending"){if(this.shouldDiscardScheduledTask(e.task)){this.finishScheduledTask(e);continue}this.canStartScheduledTask(e)&&this.startScheduledTask(e)}}finally{this.scheduling=!1}}}shouldDiscardScheduledTask(e){return e instanceof Yr?e.isCancelled():e instanceof zn?!e.hasRunnableSubTask():!1}canStartScheduledTask(e){return e.task instanceof Yr?!this.hasEarlierPendingFileWatchTask(e)&&!this.hasRunningFileWatchTask()&&!this.hasRunningLocalRefreshTask():!0}startScheduledTask(e){e.state="running",this.runScheduledTask(e)}async runScheduledTask(e){let t;try{let n=await e.task.run();t=await e.task.publish(n)}catch(n){this.finishScheduledTask(e,n);return}this.removeScheduledTask(e);try{t?await this.enqueue(t).promise:this.scheduleTaskQueue(),e.resolve()}catch(n){e.reject(n)}}finishScheduledTask(e,t){this.removeScheduledTask(e),t?e.reject(t):e.resolve(),this.scheduleTaskQueue()}removeScheduledTask(e){let t=this.taskQueue.indexOf(e);t>=0&&this.taskQueue.splice(t,1)}enqueueFollowUpTask(e){e&&this.enqueue(e).promise}cancelAllStateTasks(){this.cancelFileWatchTasks(),this.cancelRefreshTasks({local:!0,remote:!0})}cancelLocalStateTasks(){this.cancelFileWatchTasks(),this.cancelRefreshTasks({local:!0})}cancelRefreshTasks(e){for(let t of this.getRefreshTasks())t.cancelSubTasks(e)}cancelFileWatchTasks(){for(let e of this.taskQueue)e.task instanceof Yr&&e.task.abort()}mergePendingFileWatchTask(e){if(!(e instanceof Yr))return;let t=this.findMergeableFileWatchTask();if(t)return t.task.mergeTask(e),t}findMergeableFileWatchTask(){for(let e=this.taskQueue.length-1;e>=0;e--){let t=this.taskQueue[e];if(t.state==="pending"&&t.task instanceof Yr&&!t.task.isCancelled())return t}}getRefreshTasks(){return this.taskQueue.map(e=>e.task).filter(e=>e instanceof zn)}hasRunningFileWatchTask(){return this.taskQueue.some(e=>e.state==="running"&&e.task instanceof Yr)}hasEarlierPendingFileWatchTask(e){for(let t of this.taskQueue){if(t===e)return!1;if(t.state==="pending"&&t.task instanceof Yr)return!0}return!1}hasRunningLocalRefreshTask(){return this.taskQueue.some(e=>e.state==="running"&&e.task instanceof zn&&e.task.canRunSubTask("local"))}};var ky=M("workspace.sync-status"),Rp=class{constructor(e){this.workspace=e;this.coordinator=new Pp}changes=new Map;fullRefreshCount=0;taskId=0;coordinator;backgroundRemoteDiscoveryTimer;dispose(){this.stopBackgroundRemoteDiscovery(),this.coordinator.dispose()}startBackgroundRemoteDiscovery(e){this.stopBackgroundRemoteDiscovery(),!(e.intervalMs<=0)&&this.scheduleBackgroundRemoteDiscovery(e.intervalMs,e.runImmediately?0:e.intervalMs)}stopBackgroundRemoteDiscovery(){this.backgroundRemoteDiscoveryTimer&&(clearTimeout(this.backgroundRemoteDiscoveryTimer),this.backgroundRemoteDiscoveryTimer=void 0)}async refreshAll(e={}){let t=this.createRefreshTask(e),n=this.coordinator.enqueue(t);return n.accepted&&this.workspace?.notifySyncStatusRefreshing?.(n.promise,!!e.task),await n.promise,t.getRefreshResult()}scheduleBackgroundRemoteDiscovery(e,t=e){this.backgroundRemoteDiscoveryTimer=setTimeout(()=>{this.backgroundRemoteDiscoveryTimer=void 0,this.runBackgroundRemoteDiscovery(e)},t)}async runBackgroundRemoteDiscovery(e){if(this.scheduleBackgroundRemoteDiscovery(e),await this.hasSyncLock()){ky.debug("background remote discovery skipped because sync lock is held");return}if(this.coordinator.hasRemoteRefreshTask()){ky.debug("background remote discovery skipped because remote refresh is already queued");return}this.refreshAll({scope:"remote",source:"background"}).catch(t=>{ky.warn("background remote discovery failed",t)})}async hasSyncLock(){let e=this.workspace?.lockManager;return e?await e.isHeldLock("sync"):!1}createRefreshTask(e={}){return new zn(this.nextTaskId(),{...e,workspace:this.workspace,onAccepted:()=>{this.fullRefreshCount++},publish:t=>this.publishTaskResult(t)})}replaceAllByRefreshScope(e,t,n){let o=e?[...e]:[],i=t??[];if(!e||!t)for(let s of this.changes.values()){let c=At(s),l=kn(s);!e&&c&&!l||e&&n&&c&&!l&&!Og(s,[n])?o.push(s):!t&&l&&!c&&i.push(s)}let a=oE(o,i);this.replaceAllWithoutVersionChange([...o,...i,...a])}async consumeFileChanges(e,t={}){await this.coordinator.enqueue(this.createFileWatchTask(e,t)).promise}createFileWatchTask(e,t){return new Yr(this.nextTaskId(),{fileChanges:e,bulk:t.bulk,workspace:this.workspace,getChanges:()=>this.getChanges(),publish:n=>this.publishTaskResult(n)})}applyOperationResult(e,t=[]){this.coordinator.submitImmediate(new hp(this.nextTaskId(),e,t,n=>this.publishTaskResult(n)))}applyFileWatchResult(e,t){this.coordinator.submitImmediate(this.createReplaceTargetsTask("fileWatch",t,e,"fileWatch"),{cancel:"local"})}clearTargets(e){this.coordinator.submitImmediate(this.createClearTask({kind:"paths",remotePaths:e}))}clear(){this.coordinator.submitImmediate(this.createClearTask({kind:"all"}))}createReplaceTargetsTask(e,t,n,o="normal"){return new gp(this.nextTaskId(),{source:e,targetRemotePaths:t,changes:n,mode:o,publish:i=>this.publishTaskResult(i)})}createClearTask(e){return new fp(this.nextTaskId(),e,t=>this.publishTaskResult(t))}publishTaskResult(e){if(e.kind!=="noop"){if(e.kind==="requestRefresh")return this.createRefreshTask({scope:e.scope,source:e.source,task:e.task,rootRemotePath:e.rootRemotePath});if(e.kind==="replaceRefreshScope"){this.replaceAllByRefreshScope(e.localChanges,e.remoteChanges,e.localRootRemotePath);return}if(e.kind==="replaceTargets"){this.replaceTargetsByMode(e.targetRemotePaths,e.changes,e.mode??"normal");return}this.publishClearResult(e.target)}}publishClearResult(e){if(e.kind==="all"){this.clearWithoutVersionChange();return}this.clearTargetsWithoutVersionChange(e.remotePaths)}nextTaskId(){return this.taskId++,this.taskId}getChanges(){return[...this.changes.values()]}getSummary(){let e=0,t=0;for(let n of this.changes.values())At(n)?e++:kn(n)&&t++;return{pushCount:e,pullCount:t}}getLocalChanges(){return this.getChanges().filter(e=>At(e))}getRemoteChanges(){return this.getChanges().filter(e=>kn(e))}getFullRefreshCount(){return this.fullRefreshCount}replaceTargets(e,t){if(e.length===0)return;let n=as(e);for(let[o,i]of this.changes)n(i)&&this.changes.delete(o);this.addChanges(t)}replaceFileWatchTargets(e,t){if(e.length===0)return;let n=t.filter(Od).flatMap(i=>[i.remotePath,i.oldRemotePath]).filter(i=>!!i),o=new Set;for(let[i,a]of this.changes)if(nE(a,e)||Og(a,n)){if(a.type==="renamed"&&t.some(s=>s.type==="added"&&s.remotePath===a.remotePath)){o.add(a.remotePath);continue}this.changes.delete(i)}this.addChanges(t.filter(i=>i.type!=="added"||!o.has(i.remotePath)))}addChanges(e){for(let t of e)t.type!=="clean"&&this.addMergedChange(t)}addMergedChange(e){let t=this.createMoveChangeByExistingState(e);if(!t){this.changes.set(Wd(e),e);return}this.changes.set(Wd(t),t)}createMoveChangeByExistingState(e){let t=this.findMoveCounterpart(e);if(t)return this.changes.delete(Wd(t)),this.createMoveChange(e,t)}findMoveCounterpart(e){let t;for(let n of this.changes.values())if(this.canMergeMoveChanges(e,n)){if(t)return;t=n}return t}canMergeMoveChanges(e,t){return!!e.fileId&&e.fileId===t.fileId&&(this.isLocalAdded(e)&&this.isLocalDeleted(t)||this.isLocalDeleted(e)&&this.isLocalAdded(t)||this.isRemoteAdded(e)&&this.isRemoteDeleted(t)||this.isRemoteDeleted(e)&&this.isRemoteAdded(t))}createMoveChange(e,t){let n=this.isAddedChange(e)?e:t,o=this.isDeletedChange(e)?e:t,i=this.isRemoteAdded(n)||this.isRemoteDeleted(o);return{path:n.path,remotePath:n.remotePath,fileId:n.fileId??o.fileId,oldPath:o.path,oldRemotePath:o.remotePath,type:i?"remoteRenamed":"renamed",isFolder:n.isFolder??o.isFolder,contentChanged:n.contentChanged??o.contentChanged,metaChanged:n.metaChanged??o.metaChanged}}isAddedChange(e){return this.isLocalAdded(e)||this.isRemoteAdded(e)}isDeletedChange(e){return this.isLocalDeleted(e)||this.isRemoteDeleted(e)}isLocalAdded(e){return e.type==="added"}isLocalDeleted(e){return e.type==="deleted"}isRemoteAdded(e){return e.type==="remoteAdded"}isRemoteDeleted(e){return e.type==="remoteDeleted"}replaceAllWithoutVersionChange(e){this.changes.clear(),this.addChanges(e),this.notifyChanged()}replaceTargetsByMode(e,t,n="normal"){n==="fileWatch"?this.replaceFileWatchTargets(e,t):this.replaceTargets(e,t),this.notifyChanged()}clearTargetsWithoutVersionChange(e){this.replaceTargets(e,[]),this.notifyChanged()}clearWithoutVersionChange(){this.changes.clear(),this.notifyChanged()}notifyChanged(){this.workspace?.notifySyncStatusChanged()}};var Ep=E(require("path"));Y();V();var pV=M("workspace.file-watch"),mV="**/*",fV=1e3,TT=5e3,hV=200,gV=50,MT="refreshAfterFileChange",bp=class{constructor(e,t,n,o={},i){this.workspace=e;this.eventBus=t;this.fileWatcherProvider=n;this.options=o;this.lockManager=i;let a=this.disposables.add(this.fileWatcherProvider.createFileWatcher(e.root,mV));this.disposables.add(a.onFileChanged(s=>this.onFileChanged(s))),this.lockManager&&this.disposables.add(this.eventBus.on("workspace.lock.changed",s=>{s.payload.root!==this.workspace.root||s.payload.scope!=="sync"||s.payload.held||this.onSyncLockReleased()}))}disposables=new ti;pendingChanges=new Map;lockReleaseTime=0;deferred=!1;deferredRecheckTimer;cancelPendingRefresh(){this.clearRefreshTimer(),this.clearDeferredRecheckTimer(),this.pendingChanges.clear(),this.deferred=!1}async flushPendingRefresh(){this.clearRefreshTimer(),this.clearDeferredRecheckTimer(),await this.refreshPendingChanges()}onFileChanged(e){let{filePath:t,type:n}=e;this.isWorkspaceSystemFile(t)||Date.now()-this.lockReleaseTime<(this.options.lockReleaseCooldown??gV)||(this.pendingChanges.set(`${n}\0${t}`,e),this.scheduleRefresh())}scheduleRefresh(){Va(this,MT,this.options.refreshDelay??fV,()=>this.refreshPendingChanges(),{maxWaitMs:this.options.maxRefreshDelay??TT})}takePendingChanges(){let e=[...this.pendingChanges.values()];return this.pendingChanges.clear(),e}async refreshPendingChanges(e=!1){if(this.pendingChanges.size===0){this.deferred=!1;return}if(await this.isSyncLockHeld()){this.deferred=!0,this.scheduleDeferredRecheck();return}let t=this.deferred;this.deferred=!1,this.clearDeferredRecheckTimer();let n=this.takePendingChanges();await this.refresh(n,e||t)}async refresh(e,t){if(e.length!==0){this.fireWorkspaceFileChanged(e[0]);try{await this.workspace.consumeFileChanges(e,{bulk:t||e.length>=this.getBulkThreshold()})}catch(n){pV.debug(`refresh sync status after file change failed: ${this.workspace.root}`,n)}}}fireWorkspaceFileChanged(e){this.eventBus.fire(new kt("workspace.file.changed",{root:this.workspace.root,filePath:e.filePath,type:e.type},this))}getBulkThreshold(){return Math.max(1,this.options.bulkThreshold??hV)}async isSyncLockHeld(){return this.lockManager?await this.lockManager.isHeldLock("sync"):!1}onSyncLockReleased(){this.lockReleaseTime=Date.now(),this.deferred&&(this.clearRefreshTimer(),this.clearDeferredRecheckTimer(),this.refreshPendingChanges(!0))}scheduleDeferredRecheck(){this.deferredRecheckTimer||(this.deferredRecheckTimer=setTimeout(()=>{this.deferredRecheckTimer=void 0,this.refreshPendingChanges()},this.options.maxRefreshDelay??TT),this.deferredRecheckTimer.unref?.())}clearDeferredRecheckTimer(){this.deferredRecheckTimer&&(clearTimeout(this.deferredRecheckTimer),this.deferredRecheckTimer=void 0)}clearRefreshTimer(){qa(this,MT)}isWorkspaceSystemFile(e){let t=Ep.relative(this.workspace.root,e);return Mh.some(n=>t===n||t.startsWith(`${n}${Ep.sep}`))}dispose(){this.clearRefreshTimer(),this.clearDeferredRecheckTimer(),this.pendingChanges.clear(),this.disposables.dispose()}};Y();var ni=E(require("fs")),Wp=E(require("path"));nt();Y();re();V();O();function Qt(){return{status:"planned",dryRun:!0,applied:!1}}function Ot(){return{status:"applied",dryRun:!1,applied:!0}}function Kn(r=!1){return{status:"blocked",dryRun:r,applied:!1}}function ri(r,e){return{status:"skipped",dryRun:r,applied:!1,properties:{skipCause:e}}}function yl(r=!1){return{status:"failed",dryRun:r,applied:!1}}var vl=E(require("path"));nt();ze();var Cl=class r{constructor(e,t){this.filePath=e;this.content=t}content;changed=!1;static async read(e){return new r(e,await Ue(e))}hasChanges(){return this.changed}getContent(){return this.content}upsertMarkedBlock(e){let t=yV(this.content,e);return this.updateContent(t)}removeMarkedBlock(e){let t=IT(e),n=_T(t);if(!n.test(this.content))return!1;let o=this.content.replace(n,"").replace(/\s*$/,"");return this.updateContent(o?`${o}
|
|
79
|
+
`:"")}async save(){return this.changed?(await qt(this.filePath,this.content),this.changed=!1,!0):!1}updateContent(e){return e===this.content?!1:(this.content=e,this.changed=!0,!0)}};function yV(r,e){let t=IT(e),n=_T(t);if(n.test(r))return r.replace(n,t.content);let o=r.replace(/\s*$/,"");return`${o}${o?`
|
|
69
80
|
|
|
70
81
|
`:""}${t.content}
|
|
71
|
-
`}function
|
|
72
|
-
`),n=t[0],o=t[t.length-1];return
|
|
73
|
-
`),{...
|
|
74
|
-
`)}async function Zl(r){let e=await KO(),t=zO(r),n=Vt.join(e,...t.split("/"));if(await ie(n))return n;let o=GO(e,t);return o&&await ie(o)?o:n}function Cs(r,e){return Array.isArray(r[e])?r[e].filter(t=>typeof t=="string"):[]}function zO(r){let e=pn(r);return H(e,`Unsafe workspace template path: ${r}`),e}function GO(r,e){if(Vt.posix.basename(e)!==".gitignore")return;let t=Vt.posix.dirname(e),n=t==="."?"gitignore.template":Vt.posix.join(t,"gitignore.template");return Vt.join(r,...n.split("/"))}async function KO(){let r=[qO,$O,HO],e=[Vt.resolve(__dirname,"..",...r),Vt.resolve(__dirname,"..","..",...r),Vt.resolve(__dirname,"..","..","..",...r),Vt.resolve(__dirname,"..","..","..","..",...r),Vt.resolve(__dirname,"..","..","..","..","..",...r),Vt.resolve(process.cwd(),...r)];for(let t of e)if(await ie(t))return t;return e[e.length-1]}var JO=T("workspace.maintenance.support"),Ho=".gitignore",QO=Ho,YO=Ss.posix.join(ln,Ho);async function ep(r){try{let e=await r.requireClient();return{client:e,serverInfo:await e.getServerInfo()}}catch(e){JO.debug(`skip server workspace support without server client: ${r.root}`,e);return}}function Qm(r,e){return r.capabilities?.includes(e)===!0}function vw(r,e){return!r.capabilities||Qm(r,e)}function tp(r){return{refreshServerSupport:XO(r,"refreshServerSupport")===!0}}async function kw(r,e){let t=Ss.join(r.root,Ho),n=await ys.read(t);n.upsertMarkedBlock(await kn(QO));let o=Ss.join(Wr(r.root),Ho),i=await ys.read(o);if(i.upsertMarkedBlock(await kn(YO)),e.apply){let a=await n.save(),s=await i.save();return a||s}return n.hasChanges()||i.hasChanges()}function Ot(r){return{code:r.code,taskId:r.taskId,repairable:r.repairable,level:r.level,localPaths:r.localPaths,remotePaths:[],properties:r.properties,execution:r.execution}}function XO(r,e){let t=r?.[e];return typeof t=="boolean"?t:void 0}var ks=E(require("path"));$();var Bi=".agents/skills/succapp-docs",rp="indexes/md-index.json",np="indexes/assets-index.json",op="indexes/metadata-demo-index.json",vs="metadata-examples/DEMO",ZO="guide/dev/ai-building/task-driven.md",Ym=".sync-state.json",e_="SUCCAPP_DOCS_BASE_URL",t_="https://docs.succapp.com";function ww(r=process.env){let e=r_(r[e_]||t_);return new URL("md-index.json",`${e}/`).toString()}function Pw(r,e){return{schemaVersion:1,skill:"succapp-docs",docSet:r.docSet,product:r.product??"SuccApp",generatedAt:r.generatedAt,updatedAt:e,entrypoints:{skill:"SKILL.md",aiBuilding:"guide/dev/ai-building/README.md",workspace:"guide/dev/ai-building/basics/workspace.md",markdownIndex:rp,assetsIndex:np,metadataDemoIndex:op,metadataDemo:vs,taskRoutes:ZO}}}function r_(r){return new URL(r.trim()).toString().replace(/\/+$/,"")}var ip=Bi,ws="dev-types",zo="json-schemas",n_="state.json",Rw=".succapp/succ-types",Xm=".succapp/json-schemas";function ap(r){return jr(r,ip,"workspace dev support path")}function bw(r){return ks.join(ap(r),ws)}function Ew(r){return ks.join(ap(r),zo)}function sp(r){return ks.join(ap(r),n_)}function cp(r,e){return ks.join(ap(r),`${e}.tmp-${process.pid}-${Date.now()}`)}function Tw(r){return`./${ip}/${zo}/${r}`}tt();var Mw=require("crypto");function wn(r){return(0,Mw.createHash)("sha256").update(r).digest("hex")}J();Z();var o_=T("workspace.maintenance.dev-support-state");async function Go(r){let e=sp(r),t=await Re(e);if(!t.trim())return Zm();try{let n=JSON.parse(t);return a_(n)?n:Zm()}catch(n){return o_.debug(`skip workspace dev support state because it cannot be parsed: ${e}`,n),Zm()}}function qi(r,e,t){return r.servers?.[e]?.packages?.[t]}async function lp(r,e,t,n,o,i){let a=await Go(r),s=qi(a,e,n);if(a.materializedServer===e&&s?.updatedAt&&!$i(s,o))return!1;let c=new Date().toISOString(),l={};for(let[g,m]of Object.entries(a.servers??{})){if(g===e)continue;let h={...m.packages??{}};delete h[n],l[g]={...m,packages:Object.keys(h).length>0?h:void 0}}let p=a.servers?.[e];l[e]={...s_(t),packages:{...p?.packages,[n]:{...o,updatedAt:c}}};let u=$r({schemaVersion:1,materializedServer:e,servers:l});return u===await Re(sp(r))?!1:(i&&await vt(sp(r),u),!0)}function i_(r,e,t={}){return I({packageId:[r,e.version,e.productType,e.devToolApiVersion].filter(n=>typeof n=="string"&&n.length>0).join("|"),etag:t.etag,lastModified:t.lastModified})}function pp(r,e,t){let n=i_(r,e);return{...n,packageId:wn(JSON.stringify({fallback:n.packageId,files:t}))}}function Zm(){return{schemaVersion:1}}function a_(r){return typeof r=="object"&&r!==null&&(!("servers"in r)||typeof r.servers=="object"&&r.servers!==null&&!Array.isArray(r.servers))}function s_(r){return I({serverVersion:r.version,productType:r.productType,devToolApiVersion:r.devToolApiVersion})}function $i(r,e){return r?r.packageId!==e.packageId||e.etag!==void 0&&r.etag!==e.etag?!0:e.lastModified!==void 0&&r.lastModified!==e.lastModified:!1}var ef="json-schema-support",xw="err.workspace.issue.E405",c_="jsonSchemaSupport",tf=T("workspace.maintenance.json-schema-support"),Hi=class{capabilities={taskId:ef,writeScopes:["init"],serverRequirement:"optional"};async refreshOnServerVersionChange(e,t,n){if(!this.supportsJsonSchemaSupport(n))return;let o=await Go(e.root),i=qi(o,t.serverUrl,"jsonSchemas");if(!i&&!await this.hasSuccAppWorkspaceSetting(e.root))return;let a=await this.loadJsonSchemaSupportData(t,n);if(o.materializedServer===t.serverUrl&&i?.updatedAt&&!$i(i,a.packageSignature))return;let s=await this.materializeFiles(e.root,a.manifest,t,a.schemaContents);await this.updateWorkspaceSettings(e.root,s,!0),await this.updateState(e.root,t.serverUrl,n,a.packageSignature,!0)}async execute(e){return this.maintainJsonSchemaSupport(e,!e.dryRun)}async maintainJsonSchemaSupport(e,t){let n=this.getMaintenancePaths(e.workspace.root),o=await ep(e.workspace);if(!o)return[this.createSkippedIssue(n,e.dryRun,"server-support-unavailable")];if(!this.supportsJsonSchemaSupport(o.serverInfo))return[this.createSkippedIssue(n,e.dryRun,"server-capability-missing")];let i=this.createMaintenanceRun(e,n,t,o);if(i.applyWorkspaceConfiguration!==!0&&i.forceRefresh!==!0&&!await this.hasSuccAppWorkspaceSetting(i.root))return[];let a;try{a=await this.createMaintenancePlan(i)}catch(s){return tf.warn(`plan JSON Schema support failed: ${i.root}`,s),[this.createIssue(i.localPaths,gs(),["schema-files-outdated"])]}if(!i.apply)return a.causes.length>0?[this.createIssue(i.localPaths,Tt(),a.causes)]:[];if(a.causes.length===0)return[];try{let s=a.manifest??await i.client.getJsonSchemaSupport(),c=a.shouldDownloadSchemas?await this.materializeFiles(i.root,s,i.client,a.schemaContents):s.schemas,l=await this.updateWorkspaceSettings(i.root,c,!0),p=await this.updateState(i.root,i.client.serverUrl,i.serverInfo,a.packageSignature,!0);return a.shouldDownloadSchemas||l||p?[this.createIssue(i.localPaths,gt(),a.causes)]:[]}catch(s){return tf.warn(`apply JSON Schema support failed: ${i.root}`,s),[this.createIssue(i.localPaths,gs(),a.causes)]}}async createMaintenancePlan(e){let t=await this.loadJsonSchemaSupportData(e.client,e.serverInfo),n=t.manifest,o=n.schemas,i=t.schemaContents,a=t.packageSignature,s=await Go(e.root),c=e.forceRefresh===!0||s.materializedServer!==void 0&&s.materializedServer!==e.client.serverUrl||await this.hasSchemaFileChanges(e.root,o,i),l=[];return c&&l.push("schema-files-outdated"),await this.updateWorkspaceSettings(e.root,o,!1)&&l.push("settings-outdated"),await this.updateState(e.root,e.client.serverUrl,e.serverInfo,a,!1)&&l.push("state-outdated"),{causes:l,shouldDownloadSchemas:c,manifest:n,schemaContents:i,packageSignature:a}}createMaintenanceRun(e,t,n,o){return{root:e.workspace.root,localPaths:t,apply:n,...this.createExecutionOptions(e,o)}}createExecutionOptions(e,t){let n=tp(e.taskOptions);return{...t,applyWorkspaceConfiguration:!0,forceRefresh:n.refreshServerSupport}}supportsJsonSchemaSupport(e){return Qm(e,c_)}getMaintenancePaths(e){return[this.getSupportRoot(e),l_(e),Ur(e)]}createIssue(e,t,n=[]){return Ot({code:xw,taskId:ef,repairable:!0,level:"info",localPaths:e,properties:{item:"json-schema-support",causes:n},execution:t})}createSkippedIssue(e,t,n){return Ot({code:xw,taskId:ef,repairable:!1,level:"warning",localPaths:e,properties:{item:"json-schema-support"},execution:ro(t,n)})}async materializeFiles(e,t,n,o){let i=this.getSupportRoot(e),a=cp(e,zo);await Mr.promises.rm(a,{recursive:!0,force:!0});try{await Mr.promises.mkdir(a,{recursive:!0});let s=this.normalizeSchemas(t),c=new Map(s.map(l=>[l.path,l]));return await Promise.all(Array.from(c.values()).map(async l=>{let p=o?.get(l.path),u=p!==void 0?p:await n.downloadJsonSchema(l.source),g=jr(a,l.path,"JSON Schema path");await Mr.promises.mkdir(Ps.dirname(g),{recursive:!0}),await Mr.promises.writeFile(g,u,"utf8")})),await Mr.promises.rm(i,{recursive:!0,force:!0}),await Mr.promises.rename(a,i),s}catch(s){throw await Mr.promises.rm(a,{recursive:!0,force:!0}).catch(c=>{tf.debug(`cleanup temporary JSON Schema support directory failed: ${a}`,c)}),s}}async loadJsonSchemaSupportData(e,t){let n=await e.getJsonSchemaSupport(),o=this.normalizeSchemas(n),i={schemas:o},a=await this.downloadSchemaContents(o,e);return{manifest:i,schemaContents:a,packageSignature:p_(t,o,a)}}normalizeSchemas(e){return e.schemas.map(t=>({...t,path:Un(t.path,"JSON Schema path"),source:Un(t.source,"JSON Schema source")}))}async downloadSchemaContents(e,t){let n=new Map,o=Array.from(new Map(e.map(i=>[i.path,i])).values());return await Promise.all(o.map(async i=>{n.set(i.path,await t.downloadJsonSchema(i.source))})),n}async hasSchemaFileChanges(e,t,n){let o=this.getSupportRoot(e);if(!await ie(o))return!0;let i=new Set(t.map(a=>a.path));for(let a of await this.listSupportFiles(o))if(!i.has(a))return!0;for(let a of t){let s=jr(o,a.path,"JSON Schema path");if(await this.readSupportTextIfFile(s)!==n.get(a.path))return!0}return!1}async readSupportTextIfFile(e){try{return(await Mr.promises.stat(e)).isFile()?await Mr.promises.readFile(e,"utf8"):void 0}catch(t){if(x(t))return;throw t}}async listSupportFiles(e){let t=[];return await this.collectSupportFiles(e,"",t),t}async collectSupportFiles(e,t,n){let o=t?Ps.join(e,...t.split("/")):e,i=await Mr.promises.readdir(o,{withFileTypes:!0});for(let a of i){let s=t?`${t}/${a.name}`:a.name;if(a.isDirectory()){await this.collectSupportFiles(e,s,n);continue}a.isFile()&&n.push(s)}}async updateWorkspaceSettings(e,t,n){let o=Ur(e),i=await Re(o),a=ot(i,{...kr,filePath:o,ignoreParseError:!0});if(!a)return!1;let s=un(i);return s=this.upsertMissingJsonSchemas(s,a,t),s===un(i)?!1:(n&&await vt(o,s),!0)}async hasSuccAppWorkspaceSetting(e){let t=await Re(Ur(e)),n=ot(t,{...kr,filePath:Ur(e),ignoreParseError:!0});return n?(Array.isArray(n["json.schemas"])?n["json.schemas"]:[]).filter(i=>this.isJsonSchemaSetting(i)).some(i=>{let a=i.url.replace(/\\/g,"/");return this.isSuccAppJsonSchemaUrl(this.normalizeSettingUrl(a))}):!1}upsertMissingJsonSchemas(e,t,n){let o=Array.isArray(t["json.schemas"])?t["json.schemas"]:[],i=n.filter(p=>p.fileMatch.length>0).map(p=>({fileMatch:p.fileMatch,url:Tw(p.path)})),a=new Map(i.map(p=>[this.normalizeSettingUrl(p.url),p])),s=new Set,c=[],l=!1;for(let p of o){if(!this.isJsonSchemaSetting(p)){c.push(p);continue}let u=this.normalizeSettingUrl(p.url);if(!this.isSuccAppJsonSchemaUrl(u)){c.push(p);continue}if(s.has(u)){l=!0;continue}let g=a.get(u);if(!g){l=!0;continue}s.add(u),c.push(g),on(p,g)||(l=!0)}for(let p of i){let u=this.normalizeSettingUrl(p.url);s.has(u)||(c.push(p),l=!0)}return l?Qt(e,["json.schemas"],c):e}isJsonSchemaSetting(e){return W(e)&&typeof e.url=="string"}isSuccAppJsonSchemaUrl(e){return e.startsWith(`${Xm}/`)||e.startsWith(`${ip}/${zo}/`)}normalizeSettingUrl(e){return e.replace(/\\/g,"/").replace(/^\.\//,"")}async updateState(e,t,n,o,i){return lp(e,t,n,"jsonSchemas",o,i)}getSupportRoot(e){return Ew(e)}};function l_(r){return Ps.join(r,...Xm.split("/"))}function p_(r,e,t){return pp("jsonSchemas",r,[...e].sort((n,o)=>n.path<o.path?-1:n.path>o.path?1:0).map(n=>({path:n.path,fileMatch:n.fileMatch,content:t.get(n.path)??""})))}var xr=E(require("fs")),Ye=E(require("path"));Ie();F();tt();J();tt();var Rs=class r{constructor(e,t){this.filePath=e;this.content=t}content;changed=!1;static async read(e){return new r(e,await Re(e))}hasChanges(){return this.changed}getContent(){return this.content}upsertProjectReferences(e){let t=ot(this.content,{...kr,filePath:this.filePath,ignoreParseError:!0});if(!t)return{updated:!1,mergeRequired:!0};let n=d_(t,e);return n===t?{updated:!1,mergeRequired:!1}:{updated:this.updateContent(Qt(this.content,["references"],n.references)),mergeRequired:!1}}upsertGeneratedContent(e,t={}){return!this.content.trim()||t.overwrite===!0?{updated:this.updateContent(e),overwriteRequired:!1}:this.content===e?{updated:!1,overwriteRequired:!1}:{updated:!1,overwriteRequired:!0}}replaceContent(e){return this.updateContent(e)}async save(){return this.changed?(await vt(this.filePath,un(this.content)),this.changed=!1,!0):!1}updateContent(e){return e===this.content?!1:(this.content=e,this.changed=!0,!0)}};function d_(r,e){let t=Array.isArray(r.references)?[...r.references]:[],n=!Array.isArray(r.references);for(let o of e)t.some(i=>u_(i,o))||(t.push({path:o}),n=!0);return n?{...r,references:t}:r}function u_(r,e){return m_(r)&&r.path===e}function m_(r){return typeof r=="object"&&r!==null&&"path"in r&&typeof r.path=="string"}$();_();var rf="typescript-support",Iw="err.workspace.issue.E404",f_="typescriptSupport",Es="tsconfig.json",nf="tsconfig.action.json",of="tsconfig.browser.json",h_=Ye.posix.join(".vscode","settings.typescript-support.jsonc"),bs=T("workspace.maintenance.typescript-support"),zi=class{capabilities={taskId:rf,writeScopes:["init"],serverRequirement:"optional"};async refreshOnServerVersionChange(e,t,n){if(!this.supportsTypeScriptSupport(n))return;let o=await Go(e.root),i=qi(o,t.serverUrl,"devTypes"),a=await this.downloadTypeScriptSupportPackage(t,n);o.materializedServer===t.serverUrl&&i?.updatedAt&&!$i(i,a.signature)||(await this.materializeTypeScriptSupportFiles(e.root,a.apiLibs),await this.updateTypeScriptTsConfigs(e.root,{},!0),await this.updateTypeScriptSupportState(e.root,t.serverUrl,n,a.signature,!0))}async execute(e,t){return e.dryRun?this.maintainTypeScriptSupport(e,!1):t!==void 0&&!t.some(n=>n.repairable)?t:this.maintainTypeScriptSupport(e,!0)}async maintainTypeScriptSupport(e,t){let n=await this.getMaintenancePaths(e.workspace.root),o=await ep(e.workspace);if(!o)return[this.createSkippedIssue(n,!t,"server-support-unavailable")];if(!this.supportsTypeScriptSupport(o.serverInfo))return[this.createSkippedIssue(n,!t,"server-capability-missing")];let i=this.createExecutionOptions(e,o),a=await this.createMaintenancePlan(e.workspace.root,i);if(!t)return a.causes.length>0?[this.createIssue(n,Tt(),a.causes)]:[];if(a.causes.length===0)return[];try{let s=await this.updateTypeScriptSyncIgnore(e.workspace.root,!0),c=a.signature;a.shouldDownloadTypes&&(H(a.apiLibs,"TypeScript support package content is required when type files are outdated."),await this.materializeTypeScriptSupportFiles(e.workspace.root,a.apiLibs));let l=await this.updateTypeScriptTsConfigs(e.workspace.root,i,!0),p=await this.updateTypeScriptSupportState(e.workspace.root,i.client.serverUrl,i.serverInfo,c,!0);return s||a.shouldDownloadTypes||l||p?[this.createIssue(n,gt(),a.causes)]:[]}catch(s){return bs.warn(`apply TypeScript support failed: ${e.workspace.root}`,s),[this.createIssue(n,gs(),a.causes)]}}async createMaintenancePlan(e,t){let n=[];await this.updateTypeScriptSyncIgnore(e,!1)&&n.push("sync-ignore-outdated");let o=await Go(e),i=qi(o,t.client.serverUrl,"devTypes"),a=await this.downloadTypeScriptSupportPackage(t.client,t.serverInfo),s=a.signature,c=$i(i,s),l=await this.hasAnyFile(dp(e)),p=await this.hasAnyFile(Fw(e)),u=t.forceRefresh===!0||c||o.materializedServer!==void 0&&o.materializedServer!==t.client.serverUrl||!l||p&&!l;return u&&n.push("type-files-outdated"),await this.updateTypeScriptTsConfigs(e,t,!1)&&n.push("tsconfig-outdated"),await this.updateTypeScriptSupportState(e,t.client.serverUrl,t.serverInfo,s,!1)&&n.push("state-outdated"),{causes:n,shouldDownloadTypes:u,signature:s,apiLibs:a.apiLibs}}createExecutionOptions(e,t){let n=tp(e.taskOptions);return{...t,forceRefresh:n.refreshServerSupport,overwriteGeneratedTsConfig:!0}}supportsTypeScriptSupport(e){return vw(e,f_)}async getMaintenancePaths(e){let t=await g_(e);return t.length>0?t:[dp(e)]}createIssue(e,t,n=[]){return Ot({code:Iw,taskId:rf,repairable:!0,level:"info",localPaths:e,properties:{item:"typescript-support",causes:n},execution:t})}createSkippedIssue(e,t,n){return Ot({code:Iw,taskId:rf,repairable:!1,level:"warning",localPaths:e,properties:{item:"typescript-support"},execution:ro(t,n)})}async hasAnyFile(e){let t=await xr.promises.readdir(e,{withFileTypes:!0}).catch(n=>{if(x(n))return bs.debug(`skip missing TypeScript support directory: ${e}`),[];throw n});for(let n of t)if(n.isFile()||n.isDirectory()&&await this.hasAnyFile(Ye.join(e,n.name)))return!0;return!1}async materializeTypeScriptSupportFiles(e,t){let n=dp(e),o=cp(e,ws);await xr.promises.rm(o,{recursive:!0,force:!0});try{await xr.promises.mkdir(o,{recursive:!0});let i=await Promise.all(Object.entries(t).map(async([a,s])=>{let c=y_(a);if(!c||typeof s!="string")return;let l=Ye.join(o,c);return await xr.promises.mkdir(Ye.dirname(l),{recursive:!0}),await xr.promises.writeFile(l,s,"utf8"),v_(c)}));await C_(o,i.filter(a=>a!==void 0)),await xr.promises.rm(n,{recursive:!0,force:!0}),await xr.promises.rename(o,n)}catch(i){throw await xr.promises.rm(o,{recursive:!0,force:!0}).catch(a=>{bs.debug(`cleanup temporary TypeScript support directory failed: ${o}`,a)}),i}}async updateTypeScriptTsConfigs(e,t,n){let o=Wr(e);n&&await xr.promises.mkdir(o,{recursive:!0});let i=await this.updateRootTsConfig(e,n),a=await this.updateGeneratedOrMissingTsConfig(Ye.join(o,nf),await kn(Ye.posix.join(ln,nf)),t,n),s=await this.updateGeneratedOrMissingTsConfig(Ye.join(o,of),await kn(Ye.posix.join(ln,of)),t,n);return i||a||s}async updateRootTsConfig(e,t){let n=Ye.join(e,Es),o=await kn(Es),i=await Rs.read(n);if(!i.getContent().trim())return i.replaceContent(o),t?i.save():!0;let a=i.upsertProjectReferences(await k_());return a.mergeRequired?(bs.debug(`skip root tsconfig references merge because it cannot be parsed: ${n}`),!1):a.updated?t?i.save():!0:!1}async updateGeneratedOrMissingTsConfig(e,t,n,o){let i=await Rs.read(e),a=i.upsertGeneratedContent(t,{overwrite:n.overwriteGeneratedTsConfig===!0});return a.overwriteRequired?(o&&bs.debug(`skip generated tsconfig overwrite without refresh permission: ${e}`),!1):a.updated?o?i.save():!0:!1}async updateTypeScriptSyncIgnore(e,t){let n=Ur(e),o=await Re(n),i=ot(o,{...kr,filePath:n,ignoreParseError:!0});if(!i)return!1;let a=await $o(h_),s=Cs(a,"succapp.sync.ignore"),c=Array.isArray(i["succapp.sync.ignore"])?i["succapp.sync.ignore"].filter(p=>typeof p=="string"):[],l=s.filter(p=>!c.includes(p));return l.length===0?!1:(t&&(await vt(n,Qt(o,["succapp.sync.ignore"],[...c,...l])),bt.load()),!0)}async updateTypeScriptSupportState(e,t,n,o,i){return lp(e,t,n,"devTypes",o,i)}async downloadTypeScriptSupportPackage(e,t){let n=await e.getTypeScriptSupportApiLibs();return{apiLibs:n,signature:P_(t,n)}}};async function g_(r){let e=[Ye.join(r,Es),Ye.join(Wr(r),nf),Ye.join(Wr(r),of),dp(r),Fw(r)],t=[];for(let n of e)await ie(n)&&t.push(n);return t}function y_(r){return pn(r)?.split("/").join(Ye.sep)}async function C_(r,e){if(e.includes("index.json"))return;let t=e.filter(n=>n.endsWith(".d.ts")).sort();await xr.promises.writeFile(Ye.join(r,"index.json"),$r({schemaVersion:1,entrypoints:S_(t),files:t}),"utf8")}function S_(r){let e=[["metadataFileTypes","types/meta/file-types/index.d.ts"],["succApi","types/api/succ.d.ts"]],t=new Set(r),n={};for(let[o,i]of e)t.has(i)&&(n[o]=i);return n}function v_(r){return r.split(Ye.sep).join("/")}async function k_(){let r=await $o(Es),e=Array.isArray(r.references)?r.references.map(t=>w_(t)?t.path:void 0).filter(t=>typeof t=="string"):[];return H(e.length>0,`Workspace template does not declare TypeScript references: ${await Zl(Es)}`),e}function w_(r){return typeof r=="object"&&r!==null&&"path"in r&&typeof r.path=="string"}function P_(r,e){return pp("devTypes",r,Object.keys(e).sort().map(t=>({path:t,content:e[t]})))}function dp(r){return bw(r)}function Fw(r){return Ye.join(r,...Rw.split("/"))}var Dw=T("workspace.maintenance.support-refresh");async function Aw(r,e,t){await r.lockManager.withLock({scopes:["init"],command:"workspace-support-refresh"},async()=>R_(r,e,t))}async function R_(r,e,t){try{await new zi().refreshOnServerVersionChange(r,e,t)}catch(n){Dw.warn(`refresh TypeScript support after server version change failed: ${r.root}`,n)}try{await new Hi().refreshOnServerVersionChange(r,e,t)}catch(n){Dw.warn(`refresh JSON Schema support after server version change failed: ${r.root}`,n)}}qr();Bn();qr();J();D();_();var _w=E(require("node:path"));Ge();_();J();$();No();var Ow="sync-baseline",af=50,Pn=T("workspace.maintenance.sync-baseline"),up=class{capabilities={taskId:Ow,writeScopes:["sync"],serverRequirement:"required"};async execute(e,t){let n=t!==void 0?[...t]:await this.detectBaselineIssues(e);if(Pn.info("sync-baseline maintenance scan result: issues={0} paths={1}",n.length,this.formatIssuePaths(n)),e.dryRun||n.length===0)return n.map(l=>this.withExecution(l,this.createDryRunExecution(l)));let o=await this.listServerProjectNames(e),{repairableIssues:i,unresolved:a}=this.evaluateRepairability(n,o);Pn.info("sync-baseline maintenance repair plan: repairable={0} unresolved={1} repairablePaths={2} unresolvedPaths={3}",i.length,a.length,this.formatIssuePaths(i),this.formatIssuePaths(a));let s=[],c=[];if(i.length>0){await this.fetchBaselineProjects(e,i);let l=await this.detectBaselineIssues(e);({repaired:s,unresolved:c}=this.evaluateRepairResult(i,l))}return Pn.info("sync-baseline maintenance result: repaired={0} unresolved={1} repairedPaths={2} unresolvedPaths={3}",s.length,a.length+c.length,this.formatIssuePaths(s),this.formatIssuePaths([...a,...c])),[...s.map(l=>this.withExecution(l,gt())),...a.map(l=>this.withExecution(l,Zr())),...c.map(l=>this.withExecution(l,Zr()))]}async detectBaselineIssues(e){e.task.throwIfAborted(),Pn.info("sync-baseline maintenance start: dryRun={0} targets={1}",e.dryRun,this.formatPaths(e.targetRemotePaths));let t=await e.workspace.listWorkspaceProjects(),n=new Set(await e.workspace.listBaselineProjects(e.activeServerUrl)),o=this.resolveTargetProjectNames(e),i=this.resolveTargetRemotePaths(e);Pn.info("sync-baseline project lists: workspaceProjects={0} baselineProjects={1} targetProjects={2}",this.formatProjectNames(t),this.formatProjectNames([...n]),o?this.formatProjectNames([...o]):"<all>");let a=new Rt(e.workspace.getMirrorRoot(e.activeServerUrl)),s=[],c=t.filter(l=>!o||o.has(l));for(let l of c){if(!n.has(l)){s.push(this.createMissingBaselineProjectIssue(l));continue}let p=await this.detectIncompleteBaselineIssues(a,l);s.push(...this.filterIssuesByTargets(p,i))}return s}async detectIncompleteBaselineIssues(e,t){let n=kt(t),o=[];return await this.detectDirectoryBaselineIssues(e,t,n,o),o}async detectDirectoryBaselineIssues(e,t,n,o){let i=_w.posix.join(n,X),a=await br(e.root,i);if(!a.exists){o.push(this.createMissingBaselineMetaIssue(t,n,i));return}if(a.exists&&!a.readable){o.push(this.createUnreadableBaselineMetaIssue(t,n,i));return}let s=Object.keys(a.dotMeta),c=s.find(l=>!this.isValidDotMetaKey(l));if(c){o.push(this.createInvalidBaselineMetaIssue(t,n,i,c));return}for(let l of s){let p=this.joinRemotePath(n,l),u=a.dotMeta[l];if(!await e.exists(p)){o.push(this.createMissingBaselineResourceIssue(t,p));continue}let m=await e.isFolder(p),h=this.getExplicitFolderType(u);if(h!==void 0&&h!==m){o.push(this.createBaselineResourceTypeIssue(t,p,h,m));continue}m&&await this.detectDirectoryBaselineIssues(e,t,p,o)}}resolveTargetProjectNames(e){if(!e.targetRemotePaths||e.targetRemotePaths.length===0)return;let t=e.targetRemotePaths.map(n=>this.getProjectName(pe(n))).filter(n=>!!n);return t.length>0?new Set(t):void 0}resolveTargetRemotePaths(e){if(!(!e.targetRemotePaths||e.targetRemotePaths.length===0))return e.targetRemotePaths.map(t=>pe(t))}filterIssuesByTargets(e,t){return!t||t.length===0?e:e.filter(n=>n.remotePaths.some(o=>t.some(i=>jn(o,void 0,i,void 0))))}getProjectName(e){return ze(e)?.replace(/^\//,"")}createMissingBaselineProjectIssue(e){let t=kt(e);return this.createIssue("err.workspace.issue.E305",!0,[t],{projectName:e,issueCause:"baselineProjectMissing"})}createMissingBaselineResourceIssue(e,t){return this.createIssue("err.workspace.issue.E302",!0,[t],{projectName:e,issueCause:"baselineResourceMissing"})}createBaselineResourceTypeIssue(e,t,n,o){return this.createIssue("err.workspace.issue.E301",!0,[t],{projectName:e,issueCause:"baselineResourceTypeMismatch",expectedType:n?"folder":"file",actualType:o?"folder":"file"})}createMissingBaselineMetaIssue(e,t,n){return this.createIssue("err.workspace.issue.E303",!0,[t],{projectName:e,issueCause:"baselineMetaMissing",dotMetaPath:n})}createUnreadableBaselineMetaIssue(e,t,n){return this.createIssue("err.workspace.issue.E304",!0,[t],{projectName:e,issueCause:"baselineMetaUnreadable",dotMetaPath:n})}createInvalidBaselineMetaIssue(e,t,n,o){return this.createIssue("err.workspace.issue.E304",!0,[t],{projectName:e,issueCause:"baselineMetaInvalidKey",dotMetaPath:n,invalidKey:o})}createIssue(e,t,n,o){return{code:e,taskId:Ow,repairable:t,level:t?"warning":"error",localPaths:[],remotePaths:n,properties:o}}async listServerProjectNames(e){let n=await(await e.workspace.requireServerClient(e.activeServerUrl)).getProjects();return Pn.info("sync-baseline server projects loaded: count={0} projects={1}",n.length,this.formatProjectNames(n.map(o=>o.name))),new Set(n.map(o=>o.name))}canRepairIssue(e,t){let n=this.getSingleProjectName(e);return!!n&&t.has(n)}evaluateRepairability(e,t){let n=[],o=[];for(let i of e)this.canRepairIssue(i,t)?n.push(i):o.push(this.createServerMissingIssue(i));return{repairableIssues:n,unresolved:o}}createServerMissingIssue(e){let t=this.getSingleProjectName(e);return{...e,code:"err.workspace.issue.E307",repairable:!1,level:"error",properties:{...e.properties,projectName:t??"",issueCause:"serverProjectMissing"}}}evaluateRepairResult(e,t){let n=new Set(t.map(s=>this.getIssueKey(s))),o=new Set(e.map(s=>this.getIssueKey(s))),i=[],a=[];for(let s of e)n.has(this.getIssueKey(s))?a.push(this.createBaselineStillMissingIssue(s)):i.push(s);for(let s of t)o.has(this.getIssueKey(s))||a.push(s);return{repaired:i,unresolved:a}}createBaselineStillMissingIssue(e){return{...e,code:"err.workspace.issue.E306",repairable:!1,level:"error",properties:{...e.properties,originalIssueCause:this.getIssueCause(e),issueCause:"baselineStillMissingAfterFetch"}}}async fetchBaselineProjects(e,t){let n=[...new Set(t.map(o=>this.getSingleProjectName(o)).filter(o=>!!o))];if(n.length===0){Pn.info("sync-baseline fetch skipped: no repairable project names");return}Pn.info("sync-baseline fetch start: projects={0}",this.formatProjectNames(n)),await new Zn(e.workspace,{projectNames:n,forceRefresh:!0,task:e.task}).execute(),Pn.info("sync-baseline fetch done: projects={0}",this.formatProjectNames(n))}createDryRunExecution(e){return e.repairable?Tt():Zr(!0)}withExecution(e,t){return{...e,execution:t}}getIssueKey(e){return[e.code,this.getIssueCause(e),...e.remotePaths].join("|")}getIssueCause(e){let t=e.properties?.issueCause;return typeof t=="string"?t:""}getSingleProjectName(e){let t=e.properties?.projectName;if(typeof t=="string"&&t)return t;let n=e.remotePaths[0];return n?this.getProjectName(n):void 0}getExplicitFolderType(e){if(e.type==="file"||e.hash!==void 0||e.size!==void 0&&e.size>0)return!1;if(e.type)return!0}joinRemotePath(e,t){return e==="/"?"/"+t:e+"/"+t}isValidDotMetaKey(e){return pn(e)===e&&!e.includes("/")&&e!==X}formatIssuePaths(e){return this.formatPaths(e.flatMap(t=>t.remotePaths))}formatProjectNames(e){return this.formatPaths(e.map(t=>kt(t)))}formatPaths(e){if(!e||e.length===0)return"<none>";let t=e.slice(0,af),n=e.length>af?` ...(+${e.length-af})`:"";return t.join(",")+n}};_();J();$();var Ki=E(require("fs")),Ir=E(require("path"));fn();tt();D();qr();J();Z();F();$();var Gi=T("workspace.maintenance.agent-docs-skill"),Lw=5e3,b_=1024*1024,E_=/\.gif$/i,T_=/\.mp4$/i,M_=/\.expected\.md$/i,x_=/\.(?:avif|bmp|jpe?g|png|svg|webp)$/i,jw=["README.md"],Nw=/!?\[[^\]]*]\(([^)\n]+)\)|^[ \t]{0,3}\[[^\]]+]:[ \t]*(\S+)|\b(?:href|src)=["']([^"']+)["']/gm,mp=class{constructor(e=D_,t=A_){this.fetchText=e;this.fetchFile=t}async sync(e,t){let n=t.indexUrl??ww(),o=t.task??nt.INSTANCE;o.start(100,{message:d("workspace.maintenance.agentDocs.progress.indexes")});let i=o.subTaskMonitor(8),a=o.subTaskMonitor(36),s=o.subTaskMonitor(50),c=o.subTaskMonitor(6);i.start(3,{message:d("workspace.maintenance.agentDocs.progress.indexes")});let l=H_(await this.fetchText(n));i.step();let p=await this.fetchAssetsIndex(n);i.step();let u=p?.index,g=p?.text,m=g===void 0?void 0:wn(g),h=await this.fetchMetadataDemoIndex(n);i.step();let y=h?.index,C=h?.text,v=C===void 0?void 0:wn(C),w=oL(e),f=Ir.join(w,Ym),S=await O_(f),k=$r(l),b=wn(k),P=await Re(_t(w,rp)),Q=await Re(_t(w,np)),M=await Re(_t(w,op)),z=g===void 0||Q===g,j=C===void 0||M===C,ee=j_(u,y);if(y||V_(ee,S),!t.force&&!U_(S)&&N_(l,S)&&W_(ee,S)&&P===k&&z&&j)return a.finish(),s.finish(),c.finish(),o.finish(),L_(l,S);let V={added:0,changed:0,removed:0,skipped:0,unavailable:0,resourcesAdded:0,resourcesChanged:0,resourcesRemoved:0,resourcesSkipped:0,resourcesUnavailable:0},q={},K={},oe=new Set(l.files.map(Te=>Te.path));a.start(Math.max(l.files.length,1),{message:d("workspace.maintenance.agentDocs.progress.markdown")}),await qa([...l.files],async Te=>{try{let le=_t(w,Te.path),Ze=await __(le),Ca=Ze===Te.sha256,Ht;if(Ca)V.skipped++,Ht=await Re(le);else{let go=await this.downloadMarkdown(n,Te);if(go===void 0){V.unavailable++;return}Ht=go,t.apply&&await It(le,Ht),Ze===void 0?V.added++:V.changed++}if(q[Te.path]={sha256:Te.sha256,bytes:Te.bytes},!u){let go=X_(Te.path,Ht);for(let bd of go)cf(bd)||ee.set(bd,{path:bd})}}finally{a.step()}}),l.files.length===0&&a.step(),s.start(Math.max(ee.size,1),{message:d("workspace.maintenance.agentDocs.progress.assets")}),await qa([...ee.values()],async Te=>{let le=await this.syncResource(w,n,Te,t.apply);V.resourcesAdded+=le.added,V.resourcesChanged+=le.changed,V.resourcesSkipped+=le.skipped,V.resourcesUnavailable+=le.unavailable,le.file&&(K[Te.path]=le.file),s.step()}),ee.size===0&&s.step();for(let Te of Object.keys(S.files))oe.has(Te)||(V.removed++,t.apply&&await Ki.promises.rm(_t(w,Te),{force:!0}));for(let Te of Object.keys(S.resources??{}))ee.has(Te)||(V.resourcesRemoved++,t.apply&&!lf(Te)&&await Ki.promises.rm(_t(w,Te),{force:!0}));let ae=V.added+V.changed+V.removed>0,A=V.resourcesAdded+V.resourcesChanged+V.resourcesRemoved>0,B=S.syncedAt||new Date().toISOString();c.start(1,{message:d("workspace.maintenance.agentDocs.progress.metadata")});let se=await Ww(this.fetchText,n,l,k,b,g,m,C,v,B,q,K),xn=await F_(w,se,oe),hr=ae||A||xn?new Date().toISOString():B;return hr!==B&&(se=await Ww(this.fetchText,n,l,k,b,g,m,C,v,hr,q,K),xn=!0),t.apply&&await this.writeGeneratedFiles(w,se,oe),c.step(),o.finish(),{docSet:l.docSet,generatedAt:l.generatedAt,updatedAt:hr,total:l.files.length,added:V.added,changed:V.changed,removed:V.removed,skipped:V.skipped,unavailable:V.unavailable,resourcesAdded:V.resourcesAdded,resourcesChanged:V.resourcesChanged,resourcesRemoved:V.resourcesRemoved,resourcesSkipped:V.resourcesSkipped,resourcesUnavailable:V.resourcesUnavailable,metadataChanged:xn}}async fetchAssetsIndex(e){let t=Ts(e,"assets-index.json");try{let n=await this.fetchText(t),o=B_(z_(n));return{index:o,text:$r(o)}}catch(n){Gi.warn(`skip SuccApp docs assets index: ${t}`,n);return}}async fetchMetadataDemoIndex(e){let t=Ts(e,"metadata-examples/DEMO/index.json");try{let n=await this.fetchText(t),o=q_(K_(n));return{index:o,text:$r(o)}}catch(n){Gi.warn(`skip SuccApp metadata demo index: ${t}`,n);return}}async downloadMarkdown(e,t){let n=Ts(e,t.path);try{let o=await this.fetchText(n);return Y_(t,o),o}catch(o){Gi.warn(`skip SuccApp docs markdown file: ${n}`,o);return}}async syncResource(e,t,n,o){let i=n.path,a=_t(e,i),s=await rL(a),c=nL(n);if(c&&s&&sf(s,c))return{added:0,changed:0,skipped:1,unavailable:0,file:s};let l=Ts(t,n.urlPath??i),p;try{p=await this.fetchFile(l)}catch(g){return Gi.warn(`skip SuccApp docs linked resource: ${l}`,g),{added:0,changed:0,skipped:0,unavailable:1}}let u=qw(p);return c&&!sf(u,c)?(Gi.warn(`skip SuccApp docs linked resource with mismatched checksum: ${l}`),{added:0,changed:0,skipped:0,unavailable:1}):!c&&s&&sf(s,u)?{added:0,changed:0,skipped:1,unavailable:0,file:s}:(o&&await It(a,p),{added:s?0:1,changed:s?1:0,skipped:0,unavailable:0,file:u})}async writeGeneratedFiles(e,t,n){for(let[o,i]of Object.entries(t))await It(_t(e,o),i);for(let o of jw)n.has(o)||await Ki.promises.rm(_t(e,o),{force:!0})}};async function Ww(r,e,t,n,o,i,a,s,c,l,p,u){let g=Pw(t,l),m={"SKILL.md":await I_(r,e),"manifest.json":$r(g),[rp]:n,[Ym]:$r({schemaVersion:1,source:e,syncedAt:l,indexSha256:o,assetsIndexSha256:a,metadataDemoIndexSha256:c,files:p,resources:u})};return i!==void 0&&(m[np]=i),s!==void 0&&(m[op]=s),m}function I_(r,e){return r(Ts(e,"SKILL.md"))}async function F_(r,e,t){for(let[n,o]of Object.entries(e))if(await Re(_t(r,n))!==o)return!0;for(let n of jw)if(!t.has(n)&&(await Re(_t(r,n))).trim())return!0;return!1}async function D_(r){let e=await $w(r,{headers:{Accept:"text/markdown, application/json, text/plain;q=0.9","Accept-Encoding":"gzip"}});if(!e.ok)throw new Error(`download failed: ${r} (${e.status})`);return e.text()}async function A_(r){let e=await $w(r,{headers:{Accept:"*/*","Accept-Encoding":"gzip"}});if(!e.ok)throw new Error(`download failed: ${r} (${e.status})`);return Buffer.from(await e.arrayBuffer())}async function O_(r){let e=await Re(r);if(!e.trim())return{schemaVersion:1,source:"",syncedAt:"",files:{}};try{let t=ot(e);return{schemaVersion:1,source:typeof t.source=="string"?t.source:"",syncedAt:typeof t.syncedAt=="string"?t.syncedAt:"",indexSha256:typeof t.indexSha256=="string"?t.indexSha256:void 0,assetsIndexSha256:typeof t.assetsIndexSha256=="string"?t.assetsIndexSha256:void 0,metadataDemoIndexSha256:typeof t.metadataDemoIndexSha256=="string"?t.metadataDemoIndexSha256:void 0,files:W(t.files)?Uw(t.files):{},resources:W(t.resources)?Uw(t.resources):{}}}catch(t){return Gi.warn(`ignore invalid SuccApp docs sync state: ${r}`,t),{schemaVersion:1,source:"",syncedAt:"",files:{},resources:{}}}}async function __(r){try{return wn(await Ki.promises.readFile(r))}catch(e){if(x(e))return;throw e}}function Uw(r){let e={};for(let[t,n]of Object.entries(r)){if(!W(n))continue;let o=n.sha256,i=n.bytes;typeof o=="string"&&typeof i=="number"&&(e[t]={sha256:o,bytes:i})}return e}function L_(r,e){return{docSet:r.docSet,generatedAt:r.generatedAt,updatedAt:e.syncedAt,total:r.files.length,added:0,changed:0,removed:0,skipped:r.files.length,unavailable:0,resourcesAdded:0,resourcesChanged:0,resourcesRemoved:0,resourcesSkipped:Object.keys(e.resources??{}).length,resourcesUnavailable:0,metadataChanged:!1}}function N_(r,e){return r.files.every(t=>e.files[t.path]?.sha256===t.sha256)}function W_(r,e){for(let t of r.values())if(e.resources?.[t.path]?.sha256!==t.sha256)return!1;return!0}function U_(r){return Object.keys(r.resources??{}).some(lf)}function j_(r,e){let t=new Map;if(r)for(let n of r.files)Vw(n)||t.set(n.path,n);if(e)for(let n of e.files){let o=tL(n.path);t.set(o,{path:o,urlPath:Bw(n.path),bytes:n.size,sha256:n.sha256})}return t}function V_(r,e){for(let[t,n]of Object.entries(e.resources??{}))t.startsWith(`${vs}/`)&&r.set(t,{path:t,urlPath:Bw(t.slice(vs.length+1)),bytes:n.bytes,sha256:n.sha256})}function B_(r){return{...r,files:r.files.filter(e=>!Vw(e))}}function q_(r){return{...r,files:r.files.filter(e=>!cf(e.path))}}function Vw(r){return cf(r.path)||$_(r)}function cf(r){return E_.test(r)||T_.test(r)||M_.test(r)||lf(r)}function lf(r){let e=Ir.posix.normalize(r.replace(/^\/+/,"").replace(/^\.\//,""));return e.startsWith(`${ws}/`)||e.startsWith(`${zo}/`)}function $_(r){return typeof r.bytes=="number"&&r.bytes>b_&&x_.test(r.path)}function H_(r){let e=ot(r);if(!e||e.schemaVersion!==2||typeof e.docSet!="string"||typeof e.generatedAt!="string"||typeof e.base!="string"||!Array.isArray(e.files))throw new Error("invalid markdown index shape");let t=e.files.map(Q_);return{schemaVersion:2,docSet:e.docSet,product:typeof e.product=="string"?e.product:void 0,generatedAt:e.generatedAt,base:e.base,files:t}}function z_(r){let e=ot(r);if(!e||e.schemaVersion!==1||typeof e.docSet!="string"||typeof e.base!="string"||!Array.isArray(e.files))throw new Error("invalid assets index shape");return{schemaVersion:1,docSet:e.docSet,product:typeof e.product=="string"?e.product:void 0,base:e.base,files:e.files.map(G_)}}function G_(r){if(!W(r)||typeof r.path!="string"||typeof r.bytes!="number"||typeof r.sha256!="string")throw new Error("invalid assets index file entry");return _t("/",r.path),{path:r.path,bytes:r.bytes,sha256:r.sha256}}function K_(r){let e=ot(r);if(!e||e.schemaVersion!==1||e.source!=="metadata-example"||typeof e.example!="string"||typeof e.root!="string"||typeof e.generatedAt!="string"||!Array.isArray(e.files))throw new Error("invalid metadata example index shape");return{schemaVersion:1,source:"metadata-example",example:e.example,root:e.root,generatedAt:e.generatedAt,files:e.files.map(J_)}}function J_(r){if(!W(r)||typeof r.path!="string"||typeof r.size!="number"||typeof r.sha256!="string")throw new Error("invalid metadata example index file entry");return _t("/",r.path),{path:r.path,size:r.size,sha256:r.sha256}}function Q_(r){if(!W(r)||typeof r.path!="string"||typeof r.htmlUrl!="string"||typeof r.title!="string"||typeof r.bytes!="number"||typeof r.sha256!="string")throw new Error("invalid markdown index file entry");return _t("/",r.path),{path:r.path,htmlUrl:r.htmlUrl,title:r.title,bytes:r.bytes,sha256:r.sha256}}function Y_(r,e){let t=Buffer.from(e,"utf8");if(t.byteLength!==r.bytes)throw new Error(`downloaded markdown bytes mismatch: ${r.path}`);if(wn(t)!==r.sha256)throw new Error(`downloaded markdown sha256 mismatch: ${r.path}`)}function X_(r,e){let t=Ir.posix.dirname(r),n=new Set;Nw.lastIndex=0;let o;for(;(o=Nw.exec(e))!==null;){let i=eL(t,Z_(o[1]||o[2]||o[3]||""));i&&n.add(i)}return[...n].sort()}function Z_(r){let e=r.trim();if(e.startsWith("<")){let t=e.indexOf(">");return t>0?e.slice(1,t):e}return e.split(/\s+/)[0]||""}function eL(r,e){if(!e||e.startsWith("#")||e.startsWith("//")||/^[a-z][a-z0-9+.-]*:/i.test(e))return;let t=e.split("#")[0].split("?")[0];if(!t||t.endsWith("/"))return;let n=t.startsWith("/")?Ir.posix.normalize(t.replace(/^\/+/,"")):Ir.posix.normalize(Ir.posix.join(r==="."?"":r,t));if(!n||n==="."||n.startsWith("../")||n==="..")return;let o=Ir.posix.extname(n).toLowerCase();if(!(!o||o===".md"))return _t("/",n),n}function tL(r){return Ir.posix.join(vs,r)}function Bw(r){return Ir.posix.join("metadata-examples/DEMO",r)}function Ts(r,e){let t=new URL(r);return t.pathname=t.pathname.replace(/[^/]*$/,""),new URL(e.replace(/^\/+/,""),t).toString()}async function rL(r){try{return qw(await Ki.promises.readFile(r))}catch(e){if(x(e))return;throw e}}function qw(r){return{sha256:wn(r),bytes:r.byteLength}}function nL(r){if(!(typeof r.bytes!="number"||typeof r.sha256!="string"))return{bytes:r.bytes,sha256:r.sha256}}function sf(r,e){return r.sha256===e.sha256&&r.bytes===e.bytes}async function $w(r,e){let t=new AbortController,n=setTimeout(()=>{t.abort(new Error(`download timeout after ${Lw}ms: ${r}`))},Lw);try{return await fetch(r,{...e,signal:t.signal})}finally{clearTimeout(n)}}function oL(r){return jr(r,Bi,"SuccApp docs skill path")}function _t(r,e){return jr(r,e,"SuccApp docs skill file path")}var pf="succapp-docs-skill",Hw="err.workspace.issue.E407",iL="agentDocsIndexUrl",aL="agentDocsForce",sL=T("workspace.maintenance.agent-docs-skill.task"),hp=class{constructor(e=new mp){this.syncer=e}capabilities={taskId:pf,writeScopes:["init"],serverRequirement:"none"};async execute(e){let t=[jr(e.workspace.root,Bi,"SuccApp docs skill path")];try{let n=await this.syncer.sync(e.workspace.root,{indexUrl:this.readIndexUrl(e),apply:!e.dryRun,force:this.readForce(e),task:e.task});return n.added+n.changed+n.removed+n.resourcesAdded+n.resourcesChanged+n.resourcesRemoved+(n.metadataChanged?1:0)>0?[this.createIssue(t,e.dryRun?Tt():gt(),n)]:[this.createSkippedIssue(t,e.dryRun,"up-to-date",n)]}catch(n){return sL.warn(`sync SuccApp docs skill failed: ${e.workspace.root}`,n),[this.createSkippedIssue(t,e.dryRun,"agent-docs-unavailable")]}}readIndexUrl(e){let t=e.taskOptions?.[iL];return typeof t=="string"&&t.trim()?t.trim():void 0}readForce(e){return e.taskOptions?.[aL]===!0}createIssue(e,t,n){return Ot({code:Hw,taskId:pf,repairable:!0,level:"info",localPaths:e,properties:{item:"succapp-docs-skill",...fp(n)},execution:{...t,properties:fp(n)}})}createSkippedIssue(e,t,n,o){return Ot({code:Hw,taskId:pf,repairable:!1,level:n==="up-to-date"?"info":"warning",localPaths:e,properties:{item:"succapp-docs-skill",...o?fp(o):{}},execution:{...ro(t,n),properties:{skipCause:n,...o?fp(o):{}}}})}};function fp(r){return{docSet:r.docSet,generatedAt:r.generatedAt,updatedAt:r.updatedAt,total:r.total,added:r.added,changed:r.changed,removed:r.removed,skipped:r.skipped,unavailable:r.unavailable,resourcesAdded:r.resourcesAdded,resourcesChanged:r.resourcesChanged,resourcesRemoved:r.resourcesRemoved,resourcesSkipped:r.resourcesSkipped,resourcesUnavailable:r.resourcesUnavailable}}$();_();var Ms="workspace-config",df="err.workspace.issue.E201",cL="err.workspace.issue.E202",zw="err.workspace.issue.E203",lL="err.workspace.issue.E204",gp=class{capabilities={taskId:Ms,writeScopes:["config"],serverRequirement:"none"};async execute(e,t){let n=t??await this.detectIssues(e);if(e.dryRun)return n.map(i=>this.withExecution(i,this.planIssue(i)));let o=[];for(let i of n)o.push(this.withExecution(i,await this.applyIssue(e,i)));return o}async detectIssues(e){await e.workspace.config.ensureLoaded();let t=e.workspace.config.get(),n=await ie(e.workspace.config.path);if(!t&&n)return[this.createInvalidJsonIssue(e.workspace.config.path)];if(!t)return[this.createMissingConfigIssue(e.workspace.config.path,e.server)];if(!e.server)return[];if(this.isEmptyServerConfig(t))return[this.createServerRequiredIssue(e.workspace.config.path,e.server)];let o=t.activeServerUrl||void 0;return!o||!Je(e.server,o)?[this.createServerMismatchIssue(e.workspace.config.path,e.server,o)]:[]}planIssue(e){return e.repairable?Tt():Zr(!0)}async applyIssue(e,t){return t.repairable?e.server&&(t.code===df||t.code===zw)?(await e.workspace.config.initialize(e.server),gt()):t.code===df?(await e.workspace.config.ensureFile(),gt()):Zr():Zr()}createMissingConfigIssue(e,t){return{code:df,taskId:Ms,repairable:!0,level:"warning",localPaths:[e],remotePaths:[],properties:this.removeUndefinedProperties({configPath:e,server:t})}}createInvalidJsonIssue(e){return{code:cL,taskId:Ms,repairable:!1,level:"error",localPaths:[e],remotePaths:[],properties:{configPath:e}}}createServerRequiredIssue(e,t){return{code:zw,taskId:Ms,repairable:!0,level:"warning",localPaths:[e],remotePaths:[],properties:{configPath:e,server:t}}}createServerMismatchIssue(e,t,n){return{code:lL,taskId:Ms,repairable:!1,level:"error",localPaths:[e],remotePaths:[],properties:this.removeUndefinedProperties({configPath:e,server:t,activeServer:n})}}withExecution(e,t){return{...e,execution:t}}isEmptyServerConfig(e){return(e.servers?.length??0)===0&&!e.activeServerUrl}removeUndefinedProperties(e){let t={};for(let[n,o]of Object.entries(e))o!==void 0&&(t[n]=o);return t}};var Kw=E(require("fs")),Jw=E(require("path"));Ie();tt();$();_();var Gw="workspace-agent-files",pL="err.workspace.issue.E403",dL="agent-workspace-template.jsonc",yp=class{capabilities={taskId:Gw,writeScopes:["init"],serverRequirement:"none"};async execute(e){let t=await this.maintainTemplateTargets(e.workspace.root,!e.dryRun);return(e.dryRun?t.missingPaths.length>0:t.updated)?[this.createIssue(t.missingPaths,e.dryRun?Tt():gt())]:[]}async maintainTemplateTargets(e,t){let n=await this.readTemplateTargets(e),o=[],i=!1;for(let a of n.files)await ie(a.targetPath)||(o.push(a.targetPath),t&&(await vt(a.targetPath,await kn(a.relativePath)),i=!0));for(let a of n.directories)await ie(a.targetPath)||(o.push(a.targetPath),t&&(await Kw.promises.mkdir(a.targetPath,{recursive:!0}),i=!0));return{missingPaths:o,updated:i}}async readManifest(){let e=await $o(dL);return{files:Cs(e,"files"),directories:Cs(e,"directories")}}async readTemplateTargets(e){let t=await this.readManifest();return{files:t.files.map(n=>this.toTemplateTarget(e,n)),directories:t.directories.map(n=>this.toTemplateTarget(e,n))}}toTemplateTarget(e,t){let n=uL(t);return{relativePath:n,targetPath:Jw.join(e,...n.split("/"))}}createIssue(e,t){return Ot({code:pL,taskId:Gw,repairable:!0,level:"info",localPaths:e,properties:{item:"agent-files"},execution:t})}};function uL(r){let e=pn(r);return H(e,`Unsafe workspace template path: ${r}`),e}var uf=E(require("path"));_();$();var Qw="workspace-gitignore",mL="err.workspace.issue.E402",Cp=class{capabilities={taskId:Qw,writeScopes:["init"],serverRequirement:"none"};async execute(e){return await kw(e.workspace,{apply:!e.dryRun})?[this.createIssue(e,e.dryRun?Tt():gt())]:[]}createIssue(e,t){return Ot({code:mL,taskId:Qw,repairable:!0,level:"info",localPaths:fL(e.workspace.root),properties:{item:"gitignore"},execution:t})}};function fL(r){return[uf.join(r,Ho),uf.join(Wr(r),Ho)]}var Xw=E(require("path"));tt();Z();$();_();var Yw="workspace-settings",hL="err.workspace.issue.E401",gL=Xw.posix.join(".vscode","settings.recommended.jsonc"),Sp=class{capabilities={taskId:Yw,writeScopes:["init"],serverRequirement:"none"};async execute(e){return await this.updateRecommendedSettings(e.workspace.root,!e.dryRun)?[this.createIssue(e,e.dryRun?Tt():gt())]:[]}async updateRecommendedSettings(e,t){let n=Ur(e),o=await Re(n),i=ot(o,{...kr,filePath:n,ignoreParseError:!0});if(!i)return!1;let a=await $o(gL),s=un(o);return s=yL(s,i,a),s===un(o)?!1:(t&&await vt(n,s),!0)}createIssue(e,t){return Ot({code:hL,taskId:Yw,repairable:!0,level:"info",localPaths:[Ur(e.workspace.root)],properties:{item:"workspace-settings"},execution:t})}};function yL(r,e,t){let n=r;for(let[o,i]of Object.entries(t)){if(W(i)){n=SL(n,e,o,i);continue}if(Array.isArray(i)){n=kL(n,e,o,i);continue}e[o]===void 0&&(n=Qt(n,[o],i))}return n}function CL(r,e){return Object.entries(e).filter(([t])=>r[t]===void 0)}function SL(r,e,t,n){let o=vL(e,t),i=CL(o,n);if(i.length===0)return r;let a=r;if(e[t]!==void 0&&!W(e[t]))return Qt(a,[t],{...o,...Object.fromEntries(i)});for(let[s,c]of i)a=Qt(a,[t,s],c);return a}function vL(r,e){return W(r[e])?r[e]:{}}function kL(r,e,t,n){let o=Array.isArray(e[t])?e[t]:[],i=n.filter(a=>!wL(o,a));return i.length===0?r:Qt(r,[t],[...o,...i])}function wL(r,e){return r.some(t=>on(t,e))}var Ji=class{tasks=new Map;constructor(){this.register(new gp),this.register(new Sp),this.register(new Cp),this.register(new yp),this.register(new zi),this.register(new Hi),this.register(new hp),this.register(new up)}getTask(e){return this.tasks.get(e)}register(e){this.tasks.set(e.capabilities.taskId,e)}};var Qi=T("workspace.maintenance"),vp=class{constructor(e,t,n){this.workspace=e;this.request=t;this.activeServerUrl=n}registry=new Ji;async run(){let e=[],t=this.request.taskIds,n=new Set(this.request.explicitTaskIds??[]);Qi.info("workspace maintenance run start: dryRun={0} tasks={1} workspace={2} server={3}",this.request.dryRun===!0,t.join(","),this.workspace.root,this.activeServerUrl??"");let o=this.request.task??nt.INSTANCE;for(let a=0;a<t.length;a++){let s=t[a],c=d("workspace.maintenance.progress.checking",this.getTaskName(s),a+1,t.length);o.start(100,{message:c,retainOnFinish:!0});let l=new mf(o.subTaskMonitor(1),c),p=this.registry.getTask(s),u;if(!p)u=[this.createUnsupportedTaskIssue(s)],Qi.warn("workspace maintenance task skipped: task={0} reason=notImplemented",s);else if(p.capabilities.serverRequirement==="required"&&!this.activeServerUrl)u=[this.createMissingServerIssue(p,n.has(s))],Qi.info("workspace maintenance task skipped: task={0} reason=noActiveServer",s);else{Qi.info("workspace maintenance task start: task={0}",s);let g=this.request.issues?this.request.issues.filter(m=>m.taskId===s):void 0;u=await p.execute({workspace:this.workspace,dryRun:this.request.dryRun===!0,explicit:n.has(s),server:this.request.server,activeServerUrl:this.activeServerUrl,targetRemotePaths:this.request.targetRemotePaths,taskOptions:this.request.taskOptions,task:l},g),Qi.info("workspace maintenance task done: task={0} issues={1}",s,u.length)}e.push(...u),l.finish(),o.setMessage(this.renderProgressFinishMessage(s,u)),o.finish()}let i=this.createReport(e);return Qi.info("workspace maintenance run done: dryRun={0} issues={1} planned={2} applied={3} blocked={4} failed={5}",i.dryRun,i.summary.issues,i.summary.planned,i.summary.applied,i.summary.blocked,i.summary.failed),i}createUnsupportedTaskIssue(e){return{code:"err.workspace.issue.E206",taskId:e,repairable:!1,level:"info",localPaths:[],remotePaths:[],properties:{},execution:{status:"skipped",dryRun:this.request.dryRun===!0}}}createMissingServerIssue(e,t){let n=e.capabilities.taskId,o=this.request.dryRun===!0,i="no-active-server";return{code:"err.workspace.issue.E205",taskId:n,repairable:!1,level:t?"warning":"info",localPaths:[],remotePaths:[],properties:{skipCause:i},execution:t?Zr(o):ro(o,i)}}renderProgressFinishMessage(e,t){let n=this.getTaskName(e);return t.length===0?d("workspace.maintenance.progress.upToDate",n):t.some(o=>o.execution?.status==="failed")?d("workspace.maintenance.progress.failed",n):t.some(o=>o.execution?.status==="blocked")?d("workspace.maintenance.progress.blocked",n):t.some(o=>o.execution?.status==="applied")?d("workspace.maintenance.progress.updated",n):t.every(o=>o.execution?.status==="skipped")?d("workspace.maintenance.progress.skipped",n,this.getSkipCause(t)):d("workspace.maintenance.progress.checked",n)}getSkipCause(e){for(let t of e){let n=t.execution?.properties?.skipCause??t.properties?.skipCause;if(typeof n=="string")return n}return d("workspace.maintenance.progress.skipReason")}getTaskName(e){return d(`workspace.maint.task.${e.replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}`)}createReport(e){let t=0,n=0,o=0,i=0,a=0,s=0;for(let c of e){c.repairable&&t++;let l=c.execution;if(l)switch(l.status){case"planned":n++;break;case"applied":o++;break;case"skipped":i++;break;case"blocked":a++;break;case"failed":s++;break}}return{workspaceRootPath:this.workspace.root,dryRun:this.request.dryRun===!0,serverUrl:this.activeServerUrl,requestedTaskIds:this.request.taskIds,summary:{issues:e.length,repairable:t,planned:n,applied:o,skipped:i,blocked:a,failed:s},issues:e}}},mf=class r extends Ec{constructor(t,n){super(t);this.prefix=n}start(t,n){this.delegate.start(t,{...n,message:this.withPrefix(n?.message)})}setMessage(t){this.delegate.setMessage(this.withPrefix(t))}subTaskMonitor(t){return new r(this.delegate.subTaskMonitor(t),this.prefix)}withPrefix(t){return t?`${this.prefix}: ${t}`:this.prefix}};var kp=class{constructor(e){this.workspace=e}registry=new Ji;async run(e){await this.workspace.ensureConfigLoaded();let t=this.workspace.activeServerUrl||void 0;if(e.dryRun===!0)return this.createRunner(e,t).run();let n=this.resolveWriteScopes(e);if(n.length===0)return this.createRunner(e,t).run();let o=e.task&&e.task!==nt.INSTANCE?e.task:new qn;return this.workspace.lockManager.withLock({scopes:n,command:"workspace-maintenance",wait:this.workspace.lockWait},async i=>(o.setAbortSignal(bc(o.getAbortSignal(),i)),this.createRunner({...e,task:o},t).run()))}createRunner(e,t){return new vp(this.workspace,e,t)}resolveWriteScopes(e){let t=new Set;for(let n of e.taskIds){let o=this.registry.getTask(n);if(o)for(let i of o.capabilities.writeScopes)t.add(i)}return Array.from(t)}};D();xi();var PL=/^\d+\.\d+\.\d+$/;async function eP(r,e){let t=Zw(e.version);if(!t)return{downgrades:[]};let n=Zw(r),o=Gn(t,n);if(o===-1&&n){let i=[{kind:"server",currentVersion:t,baselineVersion:n}];return{downgrades:i,warningMessage:RL(i)}}return!n||o===void 0||o>0?{downgrades:[],newBaselineVersion:t}:{downgrades:[]}}function Zw(r){let e=Xt(r);if(e)return PL.test(e)?e:void 0}function RL(r){if(r.length===0)return;let e=r.map(t=>d("workspace.compat.serverVersion",t.currentVersion,t.baselineVersion));return[d("workspace.compat.connectedServerAppears"),...e].join(`
|
|
75
|
-
`)}var vf=E(require("fs")),kf=E(require("path")),pP=E(lP());$();J();F();var HL=T("workspace.gitignore"),zL=".gitignore",GL=new Set(Cc),bp=class{constructor(e){this.workspaceRoot=e}matchers=[];async refresh(){let e=[];await this.collectIgnoreMatchers(this.workspaceRoot,"",e),this.matchers=e}matches(e){let t=De(e),n=!1;for(let[o,i]of this.matchers.entries()){if(this.isMatcherBaseIgnored(i,o))continue;let a=this.getScopedIgnoreDecision(i,t);a!==void 0&&(n=a)}return n}async collectIgnoreMatchers(e,t,n){let o;try{o=await vf.promises.readdir(e,{withFileTypes:!0})}catch(a){if(x(a)){HL.debug(`skip unreadable gitignore directory: ${e}`);return}throw a}await this.addDirectoryGitIgnore(e,t,n);let i=o.filter(a=>a.isDirectory()&&!GL.has(a.name)).sort((a,s)=>a.name.localeCompare(s.name));for(let a of i){let s=t?`${t}/${a.name}`:a.name;await this.collectIgnoreMatchers(kf.join(e,a.name),s,n)}}async addDirectoryGitIgnore(e,t,n){let o=kf.join(e,zL),i;try{i=await vf.promises.readFile(o,"utf-8")}catch(a){if(x(a))return;throw a}n.push({baseRelativePath:t,matcher:(0,pP.default)({allowRelativePaths:!0}).add(i)})}getScopedIgnoreDecision(e,t){let n=this.toScopedRelativePath(e.baseRelativePath,t);if(n===void 0||n==="")return;let o=this.testIgnore(e,n);if(o.ignored)return!0;if(o.unignored)return!1}testIgnore(e,t){let n=e.matcher.test(t);return n.ignored||n.unignored||t.endsWith("/")?n:e.matcher.test(`${t}/`)}isMatcherBaseIgnored(e,t){if(!e.baseRelativePath)return!1;let n=!1;for(let o=0;o<t;o++){let i=this.getScopedIgnoreDecision(this.matchers[o],e.baseRelativePath);i!==void 0&&(n=i)}return n}toScopedRelativePath(e,t){if(!e)return t;if(t===e)return"";let n=e+"/";if(t.startsWith(n))return t.slice(n.length)}};var Ke=E(require("fs")),gP=E(require("os")),Ep=E(require("path")),yP=E(Qd());J();Ie();F();function CP(r){return new wf(r)}var KL=10*6e4,JL=".lock.json",QL=".lock",dP=1,yt=T("workspace.lock"),wf=class{root;identity;staleMs;locksDir;hostname;eventBus;listeners=new Set;activeLocks=new Set;eventListenerSubscription;lockWatcher;lockWatcherRequested=!1;lockWatchRefreshTimer;observedScopeHeld=new Map;nextLockId=1;disposed=!1;constructor(e){this.root=e.root,this.identity=e.identity??Fn(),this.staleMs=e.staleMs??KL,this.locksDir=Ep.join(this.root,".succapp","locks"),this.hostname=gP.hostname(),this.eventBus=e.eventBus,this.eventBus&&(this.eventListenerSubscription=this.eventBus.on("event.listener.changed",t=>{t.payload.id==="workspace.lock.changed"&&(t.payload.hasListeners?this.startLockWatcher():this.stopLockWatcher())}))}async withLock(e,t){H(!this.disposed,"WorkspaceLockManager has been disposed"),H(e.scopes&&e.scopes.length>0,"LockRequest.scopes must not be empty"),await Ke.promises.mkdir(this.locksDir,{recursive:!0});let n=[...new Set(e.scopes)].sort(),o=new AbortController,i=this.nextLockId++,a={id:i,ownerId:`${process.pid}-${Date.now()}-${i}`,request:e,acquired:[],abortController:o,heartbeatTimer:void 0,heartbeatInFlight:void 0,releasing:!1};try{await this.acquireAllScopes(a,n)}catch(c){throw await this.releaseAllScopes(a),c}this.activeLocks.add(a);let s=this.buildHolders(a,n);try{for(let[c,l]of s)await this.writeHolderAtomic(this.holderPathFor(c),l)}catch(c){throw this.activeLocks.delete(a),await this.deleteAllHolders(a),await this.releaseAllScopes(a),c}this.startHeartbeat(a);for(let c of a.acquired)this.emitHolderChanged({scope:c.scope,holder:s.get(c.scope),reason:"acquired"});try{let c=await t(o.signal);if(fP(a))throw new sn(e.command);return c}catch(c){throw fP(a)&&!(c instanceof sn)?new sn(e.command,{cause:c}):c}finally{a.releasing=!0,this.stopHeartbeat(a),await this.waitForHeartbeat(a),await this.deleteAllHolders(a),await this.releaseAllScopes(a),this.activeLocks.delete(a);for(let c of a.acquired)c.compromised||this.emitHolderChanged({scope:c.scope,holder:void 0,reason:"released"})}}async peekHolder(e){let t=this.holderPathFor(e),n;try{n=await Ke.promises.readFile(t,"utf-8")}catch(i){if(x(i))return;yt.debug(`peekHolder failed for ${e}`,i);return}let o=this.parseHolderJson(n,e);if(o)try{let i=await Ke.promises.stat(t);return{...o,lastHeartbeat:new Date(i.mtimeMs).toISOString()}}catch(i){return x(i)||yt.debug(`peekHolder stat failed for ${e}`,i),o}}async peekHolders(e=bo){let t=await Promise.all(e.map(async n=>{let o=await this.peekHolder(n);return[n,o]}));return new Map(t)}async isHeldLock(e){return this.isHeldLocally(e)?!0:!!await this.peekHolder(e)}isHeldLocally(e){for(let t of this.activeLocks)if(t.acquired.some(n=>n.scope===e&&!n.compromised))return!0;return!1}onHolderChanged(e){return this.listeners.add(e),{dispose:()=>{this.listeners.delete(e)}}}dispose(){if(!this.disposed){this.disposed=!0,this.eventListenerSubscription?.dispose(),this.eventListenerSubscription=void 0,this.stopLockWatcher();for(let e of[...this.activeLocks])e.releasing=!0,this.stopHeartbeat(e),e.abortController.abort("lock-manager-disposed"),(async()=>{await this.waitForHeartbeat(e),await this.deleteAllHolders(e),await this.releaseAllScopes(e)})().catch(t=>{yt.debug("cleanup lock resources on dispose failed",t)});this.activeLocks.clear(),this.listeners.clear()}}async acquireAllScopes(e,t){for(let n of t){let o=await this.acquireSingleScope(e,n,t);e.acquired.push(o)}}async acquireSingleScope(e,t,n){let o=Date.now()+YL(e.request.wait),i;for(;;){let a=await this.findBlockingExistingLock(t);if(a.blocked){if(i=a.holder,!uP(o))throw new Co(e.request.command,n,t,hP(i));await mP(o);continue}try{let s=await yP.lock(this.lockfilePathFor(t),{lockfilePath:this.lockfilePathFor(t),realpath:!1,stale:this.staleMs,retries:0,onCompromised:c=>this.onScopeCompromised(e,t,c)});return{scope:t,lockfilePath:this.lockfilePathFor(t),holderPath:this.holderPathFor(t),release:s,compromised:!1}}catch(s){if(!rc(s))throw s;if(i=await this.peekHolder(t),uP(o)){await mP(o);continue}throw new Co(e.request.command,n,t,hP(i))}}}async findBlockingExistingLock(e){try{await Ke.promises.stat(this.lockfilePathFor(e))}catch(n){if(x(n))return{blocked:!1};throw n}let t=await this.peekHolder(e);return await this.tryClearStaleLock(e,t)?{blocked:!1}:{blocked:!0,holder:t}}async tryClearStaleLock(e,t){return t?t.hostname!==this.hostname||this.isProcessAlive(t.pid)||!await this.isLockDirStale(e)?!1:(yt.info(`auto-clear stale lock scope=${e} pid=${t.pid} command=${t.command}`),this.removeLockFiles(e,t)):this.tryClearOrphanedLockDir(e)}async tryClearOrphanedLockDir(e){if(!await this.isLockDirStale(e))return!1;let t=this.lockfilePathFor(e),n=`${t}.stale-${process.pid}-${Date.now()}`;try{await Ke.promises.rename(t,n)}catch(o){if(x(o))return!1;throw o}return yt.info(`auto-clear orphan lock dir scope=${e}`),await Ke.promises.rm(n,{recursive:!0,force:!0}).catch(o=>{yt.debug(`delete orphan lock tombstone ${e} failed`,o)}),!0}async releaseAllScopes(e){for(let t of[...e.acquired].reverse())if(!t.compromised)try{await t.release()}catch(n){yt.warn(`release scope ${t.scope} failed`,n)}}buildHolders(e,t){let n=new Date().toISOString(),o=e.request.source??this.identity.source,i=new Map;for(let a of t)i.set(a,{version:dP,ownerId:e.ownerId,pid:process.pid,hostname:this.hostname,source:o,command:e.request.command,scope:a,alsoHolds:t.filter(s=>s!==a),startTime:n,lastHeartbeat:n,agentVersion:this.identity.agentVersion});return i}async deleteAllHolders(e){for(let t of e.acquired)try{let n=await this.peekHolder(t.scope);if(!n||n.ownerId!==e.ownerId)continue;await Ke.promises.unlink(t.holderPath)}catch(n){if(x(n))continue;yt.debug(`delete holder json ${t.scope} failed`,n)}}startHeartbeat(e){let t=Math.max(1e3,Math.floor(this.staleMs/2)),n=setInterval(()=>{this.scheduleHeartbeat(e)},t);n.unref?.(),e.heartbeatTimer=n}stopHeartbeat(e){e.heartbeatTimer&&(clearInterval(e.heartbeatTimer),e.heartbeatTimer=void 0)}scheduleHeartbeat(e){if(e.releasing||e.heartbeatInFlight)return;let t=this.refreshHeartbeat(e).finally(()=>{e.heartbeatInFlight===t&&(e.heartbeatInFlight=void 0)});e.heartbeatInFlight=t}async waitForHeartbeat(e){e.heartbeatInFlight&&await e.heartbeatInFlight}async refreshHeartbeat(e){let t=new Date;for(let n of e.acquired)if(!(e.releasing||n.compromised))try{await Ke.promises.utimes(n.holderPath,t,t)}catch(o){if(x(o))continue;yt.debug(`heartbeat refresh failed for ${n.scope}`,o)}}onScopeCompromised(e,t,n){yt.warn(`lock scope ${t} compromised during ${e.request.command}`,n);let o=e.acquired.find(a=>a.scope===t),i=o?.compromised??!1;o&&(o.compromised=!0),e.abortController.signal.aborted||e.abortController.abort(new sn(e.request.command)),i||this.emitHolderChanged({scope:t,holder:void 0,reason:"compromised"})}async writeHolderAtomic(e,t){let n=`${e}.${process.pid}.${Date.now()}.tmp`;await Ke.promises.writeFile(n,JSON.stringify(t,null,2),"utf-8");try{await Ke.promises.rename(n,e)}catch(o){throw await Ke.promises.unlink(n).catch(()=>{}),o}}parseHolderJson(e,t){try{let n=JSON.parse(e);return typeof n.pid!="number"||typeof n.hostname!="string"||typeof n.command!="string"||typeof n.source!="string"||!ZL(n.source)||typeof n.ownerId!="string"||n.ownerId.length===0||typeof n.startTime!="string"?void 0:{version:dP,ownerId:n.ownerId,pid:n.pid,hostname:n.hostname,source:n.source,command:n.command,scope:n.scope??t,alsoHolds:Array.isArray(n.alsoHolds)?[...n.alsoHolds]:[],startTime:n.startTime,lastHeartbeat:typeof n.lastHeartbeat=="string"&&n.lastHeartbeat.length>0?n.lastHeartbeat:n.startTime,agentVersion:typeof n.agentVersion=="string"?n.agentVersion:""}}catch(n){yt.debug(`parse holder json for ${t} failed`,n);return}}async isLockDirStale(e){try{return(await Ke.promises.stat(this.lockfilePathFor(e))).mtimeMs<Date.now()-this.staleMs}catch(t){if(x(t))return!1;throw t}}async removeLockFiles(e,t){let n=this.lockfilePathFor(e),o=this.holderPathFor(e);if(!await this.isLockDirStale(e))return!1;let i=`${n}.stale-${process.pid}-${Date.now()}`;try{await Ke.promises.rename(n,i)}catch(s){if(x(s))return!1;throw s}let a=!1;try{let s=await this.peekHolder(e);return e0(s,t)?(await Ke.promises.unlink(o).catch(c=>{if(!x(c))throw c}),!0):(a=await this.restoreTombstoneLock(e,i),!1)}finally{a||await Ke.promises.rm(i,{recursive:!0,force:!0}).catch(s=>{yt.debug(`delete stale lock tombstone ${e} failed`,s)})}}async restoreTombstoneLock(e,t){let n=this.lockfilePathFor(e);try{return await Ke.promises.rename(t,n),!0}catch(o){return x(o)||yt.debug(`restore stale lock tombstone ${e} failed`,o),!1}}isProcessAlive(e){if(e<=0||!Number.isFinite(e))return!1;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}emitHolderChanged(e){for(let t of[...this.listeners])try{t(e)}catch(n){yt.warn(`holder changed listener threw for ${e.scope}`,n)}this.fireWorkspaceLockChanged(e.scope,e.reason==="acquired",e.holder)}startLockWatcher(){this.lockWatcherRequested=!0,!(this.disposed||this.lockWatcher)&&Ke.promises.mkdir(this.locksDir,{recursive:!0}).then(()=>{this.disposed||!this.lockWatcherRequested||this.lockWatcher||(this.lockWatcher=Ke.watch(this.locksDir,()=>{this.scheduleLockStateRefresh()}),this.lockWatcher.on("error",e=>{yt.debug(`workspace lock watcher failed: ${this.root}`,e),this.closeLockWatcher(),this.scheduleLockWatcherRestart()}),this.scheduleLockStateRefresh(0))}).catch(e=>{yt.debug(`start workspace lock watcher failed: ${this.root}`,e)})}stopLockWatcher(){this.lockWatcherRequested=!1,this.closeLockWatcher(),this.observedScopeHeld.clear()}closeLockWatcher(){this.lockWatchRefreshTimer&&(clearTimeout(this.lockWatchRefreshTimer),this.lockWatchRefreshTimer=void 0),this.lockWatcher&&(this.lockWatcher.close(),this.lockWatcher=void 0)}scheduleLockWatcherRestart(){if(!this.lockWatcherRequested||this.disposed)return;setTimeout(()=>this.startLockWatcher(),1e3).unref?.(),this.observedScopeHeld.clear()}scheduleLockStateRefresh(e=25){this.lockWatchRefreshTimer&&clearTimeout(this.lockWatchRefreshTimer),this.lockWatchRefreshTimer=setTimeout(()=>{this.lockWatchRefreshTimer=void 0,this.refreshObservedLockStates()},e),this.lockWatchRefreshTimer.unref?.()}async refreshObservedLockStates(){if(!(this.disposed||!this.lockWatcher))for(let e of bo)await this.refreshObservedLockState(e)}async refreshObservedLockState(e){if(this.isHeldLocally(e))return;let t=await this.peekHolder(e);if((t?!0:await this.lockFileExists(e))&&!t){this.scheduleLockStateRefresh(50);return}let o=!!t,i=this.observedScopeHeld.get(e);if(i===void 0&&!o){this.observedScopeHeld.set(e,!1);return}i!==o&&this.fireWorkspaceLockChanged(e,o,t)}async lockFileExists(e){try{return await Ke.promises.stat(this.lockfilePathFor(e)),!0}catch(t){return x(t)||yt.debug(`stat lock file failed for ${e}`,t),!1}}fireWorkspaceLockChanged(e,t,n){this.observedScopeHeld.set(e,t),this.eventBus?.fire(new et("workspace.lock.changed",{root:this.root,scope:e,held:t,holder:n},this))}lockfilePathFor(e){return Ep.join(this.locksDir,`${e}${QL}`)}holderPathFor(e){return Ep.join(this.locksDir,`${e}${JL}`)}};function YL(r){return!r||r<=0?0:r*1e3}function uP(r){return Date.now()<r}async function mP(r){let e=Math.max(0,Math.min(500,r-Date.now()));e>0&&await new Promise(t=>setTimeout(t,e))}var XL=new Set(Object.values(oi));function ZL(r){return XL.has(r)}function fP(r){return r.acquired.some(e=>e.compromised)}function e0(r,e){return r?.ownerId===e.ownerId}function hP(r){if(r)return{pid:r.pid,hostname:r.hostname,source:r.source,command:r.command,scope:r.scope,alsoHolds:r.alsoHolds,startTime:r.startTime,lastHeartbeat:r.lastHeartbeat,agentVersion:r.agentVersion}}var Tp=E(require("fs")),SP=E(require("path"));F();D();J();$();var Pf=T("workspace.connection"),Zi=class{constructor(e){this.workspace=e}async change(e,t,n){return await this.workspace.ensureConfigLoaded(),this.workspace.lockManager.withLock({scopes:["config","sync"],command:"change-server-url",wait:this.workspace.lockWait},()=>this.doChange(e,t,n))}async connect(e,t){await this.workspace.ensureConfigLoaded();let n=this.workspace.config.resolveServerUrl(e);if(!n)throw new Error(`server not configured: ${e}`);if(t){let c=await this.withAuthContext(n,()=>Bc(n,t)),l=await this.withAuthContext(n,()=>this.createVerifiedCredentialConnection(n,c));return await this.storeVerifiedConnectionCredential(n,c,l.client),await this.setActiveServerUrlForConnection(n),{serverUrl:n,connection:l}}if(!await Io(n))throw new Ue({workspaceRoot:this.workspace.root,serverUrl:n});let i=this.createServerClient(n);await i.verify();let a=await i.getServerInfo();Pf.info(`session restored: ${n}`);let s={serverUrl:n,connection:{client:i,serverInfo:a}};return await this.setActiveServerUrlForConnection(n),s}async doChange(e,t,n){let o=this.workspace.config.resolveServerUrl(e);if(!o)throw new Error(d("workspace.server.serverNotConfigured",e));let i=this.workspace.config.validateServerUrlChange(o,t),a=n?await this.withAuthContext(i,()=>Bc(i,n)):void 0,s=a?await this.withAuthContext(i,()=>this.createVerifiedCredentialConnection(i,a)):void 0,c=yr(o),l=yr(i),p=this.workspace.getMirrorRoot(o),u=this.workspace.getMirrorRoot(i),g=!1,m=!1,h="";try{if(c!==l&&await ie(p)){if(await ie(u))throw new Error(d("workspace.server.serverMirrorExists",u));await Tp.promises.mkdir(SP.dirname(u),{recursive:!0}),await Tp.promises.rename(p,u),g=!0}return h=await this.workspace.config.changeServerUrl(o,i),m=!0,a&&s&&await this.storeVerifiedConnectionCredential(h,a,s.client),{oldServerUrl:o,serverUrl:h,connection:s}}catch(y){throw await this.rollbackServerUrlChange({configChanged:m,changedServerUrl:h,oldConfiguredServerUrl:o,mirrorMoved:g,oldMirrorRoot:p,newMirrorRoot:u}),y}}async rollbackServerUrlChange(e){if(e.configChanged)try{await this.workspace.config.changeServerUrl(e.changedServerUrl,e.oldConfiguredServerUrl)}catch(t){Pf.warn(`rollback server config failed: ${e.changedServerUrl} -> ${e.oldConfiguredServerUrl}`,t)}if(e.mirrorMoved)try{await Tp.promises.rename(e.newMirrorRoot,e.oldMirrorRoot)}catch(t){Pf.warn(`rollback server mirror failed: ${e.newMirrorRoot} -> ${e.oldMirrorRoot}`,t)}}async setActiveServerUrlForConnection(e){await this.workspace.lockManager.withLock({scopes:["config","sync"],command:"switch-active-server",wait:this.workspace.lockWait},async()=>{await this.workspace.config.setActiveServerUrl(e)})}async withAuthContext(e,t){try{return await t()}catch(n){throw n instanceof Ue&&n.withContext({workspaceRoot:this.workspace.root,serverUrl:e}),n}}async createVerifiedCredentialConnection(e,t){let n=this.createServerClient(e,{initialCredential:t});await n.verify();let o=await n.getServerInfo();return{client:n,serverInfo:o}}async storeVerifiedConnectionCredential(e,t,n){await Iu(e,t)}createServerClient(e,t={}){return new zr(e,{workspaceRoot:this.workspace.root,...t})}};var Bt=T("workspace"),t0=6e4,Rf=class{constructor(e,t,n,o=Aa){this.root=e;this.eventBus=t;this.lockWait=o;this.connectedServerUrl=n?.connected?n.serverUrl:void 0,this.config=new Wl(e,t,Sm()),this.gitIgnore=new bp(e),this.lockManager=CP({root:e,eventBus:t}),this.disposables.add(this.lockManager),this.syncStatusTracker=new Ql(this),this.disposables.add(this.eventBus.on("workspace.config.changed",i=>{i.payload.root===this.root&&this.onConfigChanged()})),this.startAutoSyncScheduler()}disposables=new to;config;connectedServerUrl;syncStatusTracker;gitIgnore;lockManager;fileChangeRefresh;metadataVersionCatalog=Fo.empty();metadataVersionCatalogLoaded=!1;initialized=!1;connectionInitializing=!1;autoSyncScheduler=null;startAutoSyncScheduler(){if(Fn().source!=="ide")return;let e={onAutoPush:async()=>{let n=this.syncStatusTracker.getLocalChanges();if(n.length===0||await this.shouldYieldAutoSync())return;await this.createSyncService({agentSource:"auto-sync"}).push({changes:n})},onAutoPull:async()=>{if(await this.shouldYieldAutoSync())return;await this.createSyncService({agentSource:"auto-sync"}).pull()}},t=new Ul(this.root,this.eventBus,e);this.autoSyncScheduler=t,this.disposables.add(this.eventBus.on("settings.changed",n=>{n.payload.changedKeys.some(o=>o==="sync.autoPush"||o==="sync.autoPull"||o==="sync.autoPullInterval")&&this.autoSyncScheduler?.refreshAutoSync()})),this.disposables.add(t),t.startAutoPull()}get activeServerUrl(){return this.connectedServerUrl??this.config.getActiveServerUrl()}get isConnected(){return this.connectedServerUrl!==void 0}async ensureConfigLoaded(){await this.config.ensureLoaded()}async ensureActiveServerReady(){await this.ensureConfigLoaded();let e=this.activeServerUrl;if(!e)throw new St(e);return e}async requireClient(){return this.requireServerClient()}async requireServerClient(e){await this.ensureConfigLoaded();let t=e??this.config.getActiveServerUrl();if(!t)throw new St(t);let n=this.resolveConfiguredServerUrl(t),o=await this.createDetachedClient(n);return e===void 0&&(this.connectedServerUrl=o.serverUrl,this.updateConnectionStatus()),this.createDiagnosticClient(o)}async ensureMetadataVersionCatalogLoaded(){this.metadataVersionCatalogLoaded||await vr(this,"metadataVersionCatalog",async()=>{this.metadataVersionCatalogLoaded||(this.metadataVersionCatalog=await(await this.requireServerClient()).getMetadataVersions(),this.metadataVersionCatalogLoaded=!0)})}async resolveRemoteFilePath(e){let t=await this.resolveRemoteFilePathServerUrl(e.serverUrl),n=e.serverUrl?await this.requireServerClient(t):await this.requireServerClient(),o=await this.resolveWorkspaceRemoteFilePath(e.path,t,n);return{path:e.path,remotePath:o,serverUrl:t}}async resolveRemoteFilePathServerUrl(e){return e?(await this.ensureConfigLoaded(),this.resolveConfiguredServerUrl(e)):this.ensureActiveServerReady()}async resolveWorkspaceRemoteFilePath(e,t,n){let o=new Rt(this.getMirrorRoot(t));return new Oi({workspaceRoot:this.root,mirror:o,workspace:new pr(this.root,o),getServerProjects:()=>n.getProjects()}).resolve(e,"server-backed")}disconnectServers(...e){let t=new Set(e.map(n=>yr(n)));this.connectedServerUrl&&t.has(yr(this.connectedServerUrl))&&(this.connectedServerUrl=void 0)}applyServerConnection(e,t={}){this.connectedServerUrl=e.client.serverUrl,this.updateMetadataVersions(e.serverInfo),this.updateConnectionStatus(),this.refreshSyncStatusAfterConnection(t),t.refreshWorkspaceSupport!==!1&&this.refreshWorkspaceSupportIfNeeded(e.serverInfo)}createDiagnosticClient(e){return tv(e)}async createDetachedClient(e){if(await this.ensureConfigLoaded(),!this.config.hasServer(e))throw new St(e);let t=new zr(e,{workspaceRoot:this.root});if(await t.verify(),!this.config.hasServer(e))throw new St(e);return t}resolveConfiguredServerUrl(e){let t=this.config.resolveServerUrl(e);if(!t)throw new St(e);return t}async listWorkspaceProjects(){await this.ensureConfigLoaded();let e=new pr(this.root,this.createWorkspaceListingMirror());return this.toProjectNames(await e.listProjectPaths())}async listBaselineProjects(e){await this.ensureConfigLoaded();let t=e??this.activeServerUrl;if(!t)return[];let n=new Rt(this.getMirrorRoot(t));return this.toProjectNames(await n.listProjectPaths())}getMetaProjectLocalPath(e){let t=e.trim();if(!t||t.includes("/")||t.includes("\\"))throw new Error(`invalid metadata project name: ${e}`);return this.getMetaFileLocalPath("/"+t)}getMetaFileLocalPath(e){return pC(this.root,e)}async countWorkspaceFiles(e,t){return await this.ensureConfigLoaded(),new pr(this.root,this.createWorkspaceListingMirror()).countFiles(e,t)}async startIdeRuntime(){this.initialized||await vr(this,"startIdeRuntime",async()=>{await this.doStartIdeRuntime(),this.initialized=!0})}async waitInitialized(){this.initialized||await yu(this,"startIdeRuntime")?.catch(()=>{})}async doStartIdeRuntime(){let e=!1;this.connectionInitializing=!0;try{await this.config.load(),this.syncStatusTracker.startBackgroundRemoteDiscovery({intervalMs:t0}),this.fireConnectionStateChanged(!0),await this.refreshGitIgnore(),this.initializeFileWatcher(),await this.tryAutoConnect({refreshSyncStatus:!1}),e=!0}finally{this.connectionInitializing=!1,this.fireConnectionStateChanged()}e&&this.refreshSyncStatus().catch(t=>{Bt.warn(`refresh sync status after IDE runtime start failed: ${this.root}`,t)})}applySyncOperationResult(e,t=[]){this.syncStatusTracker.applyOperationResult(e,t)}applyFileWatchSyncStatus(e,t){this.syncStatusTracker.applyFileWatchResult(e,t)}clearSyncStatus(){this.syncStatusTracker.clear()}async refreshSyncStatus(e){await this.refreshSyncStatusState({task:e})}async refreshSyncStatusState(e={}){await this.ensureConfigLoaded();let t=["refreshSyncStatus",e.scope??"both",e.forceRefresh===!0?"force":"normal"].join(":"),n=e.task,o=!!yu(this,t),i=vr(this,t,()=>(Bt.info("refresh sync status start: {0}",this.root),this.onSyncStatusRefreshing(),this.syncStatusTracker.refreshAll(e)));o&&n&&n.start(1,{message:d("workspace.sync.progress.refresh.running")});let a=await i;return n&&o&&n.step(1),o||Bt.info("refresh sync status done: {0}",this.root),a}getSyncChanges(){return this.syncStatusTracker.getChanges()}getSyncSummary(){return this.syncStatusTracker.getSummary()}refreshGitIgnore(){return this.gitIgnore.refresh()}isGitIgnored(e){return this.gitIgnore.matches(e)}getSyncStatusTracker(){return this.syncStatusTracker}async consumeFileChanges(e,t={}){if(e.some(o=>{if(Fr.basename(o.filePath)!==".gitignore")return!1;let i=Fr.relative(this.root,Fr.resolve(o.filePath));return!!i&&!i.startsWith("..")&&!Fr.isAbsolute(i)})){await this.refreshGitIgnore(),await this.refreshSyncStatus();return}return this.syncStatusTracker.consumeFileChanges(e,t)}clearSyncStatusTargets(e){this.syncStatusTracker.clearTargets(e)}notifySyncStatusChanged(){this.fireSyncStatusChanged()}initializeFileWatcher(){if(this.fileChangeRefresh)return;let e=Sm();e&&(this.fileChangeRefresh=new Yl(this,this.eventBus,e,{},this.lockManager))}cancelPendingSyncStatusRefresh(){this.fileChangeRefresh?.cancelPendingRefresh()}async flushPendingFileChangeRefresh(){await this.fileChangeRefresh?.flushPendingRefresh()}onSyncStatusRefreshing(){this.cancelPendingSyncStatusRefresh()}async addServer(e){return this.lockManager.withLock({scopes:["config","sync"],command:"add-server",wait:this.lockWait},async()=>(await this.config.addServer(e),this.config.getActiveServerUrl()))}async verifyServerReachable(e){let t=Ce(e);return await Oc(t),t}async removeServer(e){return await this.ensureConfigLoaded(),this.lockManager.withLock({scopes:["config","sync"],command:"remove-server",wait:this.lockWait},async()=>{let t=this.config.getActiveServerUrl(),n=this.config.resolveServerUrl(e)??e;await this.config.removeServer(e),this.disconnectServers(n);let o=t!==this.config.getActiveServerUrl();return o&&(this.updateMetadataVersions(),this.updateConnectionStatus()),o})}async changeServerUrl(e,t,n){let o=await new Zi(this).change(e,t,n);return this.disconnectServers(o.oldServerUrl,o.serverUrl),o.connection&&(this.applyServerConnection(o.connection),Bt.info(`login succeeded: ${o.serverUrl}`)),o.serverUrl}async switchActiveServer(e){await this.ensureConfigLoaded();let t=this.config.resolveServerUrl(e);if(!t)throw new Error(d("workspace.server.serverNotConfigured",e));return await this.lockManager.withLock({scopes:["config","sync"],command:"switch-active-server",wait:this.lockWait},async()=>{await this.config.setActiveServerUrl(t)}),this.config.getActiveServerUrl()}async readTargetStatusSnapshot(e){await this.ensureConfigLoaded();try{let[t,n,o,i]=await Promise.all([this.readTargetSideSnapshot(this.root,e.remotePath,{returnStat:!0}),this.readTargetSideSnapshot(this.getMirrorRoot(),e.remotePath,{returnStat:!0}),je(this.root,e.remotePath),je(this.getMirrorRoot(),e.remotePath)]),a=await this.isTargetContentChanged(e.remotePath,t,n);return a===void 0?this.unknownTargetStatusSnapshot(e.remotePath):{remotePath:e.remotePath,workspace:{...t,fileId:o?.id,identity:t.identity??o?.id},mirror:{...n,fileId:i?.id,identity:n.identity??i?.id},contentChanged:a,metaChanged:!this.isMetaInfoEqual(o,i)}}catch(t){return Bt.debug(`read target status snapshot failed: ${e.remotePath}`,t),this.unknownTargetStatusSnapshot(e.remotePath)}}async readTargetSideSnapshot(e,t,n={}){try{let o=await Mp.promises.stat(ce(e,t)),i=o.isFile()?"file":o.isDirectory()?"folder":"unknown",a=n.returnStat&&o.isFile()?{size:o.size,mtimeMs:o.mtimeMs}:void 0;return{kind:i,contentStat:a}}catch(o){if(x(o))return Bt.debug(`target side path does not exist: ${e}:${t}`),{kind:"missing"};throw o}}async isTargetContentChanged(e,t,n){if(t.kind!=="file"||n.kind!=="file")return!1;let o=t.contentStat,i=n.contentStat;if(o&&i)return this.compareFileContentStats(o,i);try{let[a,s]=await Promise.all([Mp.promises.stat(ce(this.root,e)),Mp.promises.stat(ce(this.getMirrorRoot(),e))]);return this.compareFileContentStats(a,s)}catch(a){Bt.debug(`cannot compare target stat cache for ${e}`,a);return}}compareFileContentStats(e,t){if(e.size!==t.size)return!0;if(e.mtimeMs===t.mtimeMs)return!1}isMetaInfoEqual(e,t){return!e&&!t?!0:!e||!t?!1:_o(e,t)}unknownTargetStatusSnapshot(e){return{remotePath:e,workspace:{kind:"unknown"},mirror:{kind:"unknown"}}}async tryAutoConnect(e={}){await this.ensureConfigLoaded();let t=this.config.getActiveServerUrl();if(t){if(this.connectedServerUrl&&yr(this.connectedServerUrl)===yr(t)){this.updateConnectionStatus();return}try{let n=await new Zi(this).connect(t);this.applyServerConnection(n.connection,e)}catch(n){if(!(n instanceof Ue))throw n;Bt.debug(`stored credential invalid for ${t}`,n),this.updateConnectionStatus()}}}async connect(e,t){let n=await new Zi(this).connect(e,t);return this.applyServerConnection(n.connection),t&&Bt.info(`login succeeded: ${n.connection.client.serverUrl}`),!0}disconnect(){this.connectedServerUrl=void 0,this.updateMetadataVersions(),this.updateConnectionStatus(),Bt.info("disconnected")}updateConnectionStatus(){this.connectionInitializing||this.fireConnectionStateChanged()}onConfigChanged(){let e=this.connectedServerUrl;e&&yr(e)!==yr(this.config.getActiveServerUrl())&&(this.cancelPendingSyncStatusRefresh(),this.clearSyncStatus(),this.disconnectServers(e),this.updateMetadataVersions(),this.updateConnectionStatus())}refreshSyncStatusAfterConnection(e={}){e.refreshSyncStatus!==!1&&this.refreshSyncStatus().catch(t=>{Bt.warn(`refresh sync status after connection failed: ${this.root}`,t)})}async refreshWorkspaceSupportIfNeeded(e){let t=this.connectedServerUrl;if(t)try{let n=await this.createDetachedClient(t),o=this.createDiagnosticClient(n),i=e??await o.getServerInfo();this.updateMetadataVersions(i),await this.warnIfServerLooksOlder(i),await Aw(this,o,i)}catch(n){Bt.warn(`refresh workspace support after server version change failed: ${this.root}`,n)}finally{this.updateConnectionStatus()}}async warnIfServerLooksOlder(e){try{let t=this.config.getServerVersion(),n=await eP(t,e);if(n.newBaselineVersion&&await this.lockManager.withLock({scopes:["config"],command:"set-server-version",wait:this.lockWait},async()=>{await this.config.setServerVersion(n.newBaselineVersion)}),!n.warningMessage)return;this.eventBus.fire(new et("user.notification.requested",{level:"warning",message:n.warningMessage},this))}catch(t){Bt.warn(`check server compatibility baseline failed: ${this.root}`,t)}}fireConnectionStateChanged(e=!1){this.eventBus.fire(new et("workspace.connection.changed",{root:this.root,connected:this.isConnected,serverUrl:this.activeServerUrl,initializing:e},this))}notifySyncStatusRefreshing(e,t){this.eventBus.fire(new et("workspace.sync.status.refreshing",{root:this.root,refreshTask:e,progressVisible:t},this))}fireSyncStatusChanged(){this.eventBus.fire(new et("workspace.sync.status.changed",{root:this.root},this))}createSyncService(e){return _m(this,e)}runMaintenance(e){return new kp(this).run(e)}notifyLocalProjectsChanged(){this.eventBus.fire(new et("workspace.local.projects.changed",{root:this.root,serverUrl:this.activeServerUrl},this))}async getMetadataVersionCatalog(){return await this.ensureMetadataVersionCatalogLoaded(),this.metadataVersionCatalog}updateMetadataVersions(e){this.metadataVersionCatalog=Fo.fromServerVersions(e?.metadataVersions),this.metadataVersionCatalogLoaded=e!==void 0}dispose(){this.disposables.dispose(),this.config.dispose(),this.syncStatusTracker.dispose(),this.fileChangeRefresh?.dispose(),this.fileChangeRefresh=void 0}async shouldYieldAutoSync(){let e=await this.lockManager.peekHolders(["config","sync"]),t=this.lockManager.staleMs;for(let n of e.values()){if(!n)continue;if(Date.now()-new Date(n.lastHeartbeat).getTime()<t&&(n.source==="ide"||n.source==="cli"))return Bt.info(`auto-sync yield to ${n.command}`),!0}return!1}getMirrorRoot(e=this.activeServerUrl){return Fr.join(this.root,".succapp","remote",yr(e))}createWorkspaceListingMirror(){let e=this.activeServerUrl?this.getMirrorRoot(this.activeServerUrl):Fr.join(this.root,".succapp","remote","__workspace__");return new Rt(e)}toProjectNames(e){return e.map(t=>t.replace(/^\//,"")).sort((t,n)=>t.localeCompare(n))}},r0=Rf;function ea(r){return new r0(r.root,r.eventBus,r.client,r.lockWait)}var Dr=T("cli.versionUpdate"),n0="version-check.json",o0="server-version-check.json",ta=1,i0="@succsoft/succapp",a0="https://registry.npmjs.org/",s0=24*60*60,c0=2e3;async function l0(r){let e=bP(r);if(TP(e))return;let t=g0(r,e);try{switch(r.trigger){case"version":return await RP(r.context,t)??await t.checkLatestFromRegistry()??await t.checkLatestFromAnyCache();case"auth-login":return await f0(r,t);case"command":return await m0(r,t)}}catch(n){Dr.debug("skip cli version update check: %s",n);return}}async function ra(r){let e=(r.includeCheckingProgress??p0(r))&&!TP(bP(r));e&&d0(r.output);let t;try{t=await l0(r)}finally{e&&u0(r.output)}let n=y0(t);if(n){r.output.warning(n);return}if(!(r.includeUpToDateInfo??r.trigger==="version"))return;let i=C0(t);i&&r.output.info(i)}function p0(r){return r.trigger==="version"||r.trigger==="auth-login"||!!r.command&&EP(r.command)}function d0(r){r.progress({task:"cli-version-check",status:"checking"},()=>d("cli.out.version.checking"))}function u0(r){r.progress({task:"cli-version-check",status:"done"},()=>"")}async function m0(r,e){let t=r.command;if(t){if(EP(t))return await RP(r.context,e)??await e.checkLatestFromRegistry()??await e.checkLatestFromAnyCache();if(t.serverTarget==="none")return await e.checkLatestFromCache()}}async function f0(r,e){if(!(!r.context||!r.serverUrl||!await e.hasPackageVersionCache()))try{let t=await za(r.context,r.serverUrl),n=await e.runWithTimeout(t.getServerInfo(),"auth login server info");return n.version?await e.checkServerCompatibilityFromCache({serverUrl:t.serverUrl,serverVersion:n.version,devToolApiVersion:n.devToolApiVersion}):void 0}catch(t){Dr.debug("skip auth login cli server compatibility check: %s",t);return}}async function RP(r,e){if(!r)return;let t,n=!1;try{r.workspace?t=r.workspace:(t=await h0(r),n=t!==void 0);let o={cwd:r.cwd,env:r.env,config:r.config,output:r.output,task:r.task,eventBus:r.eventBus,workspace:t,abortSignal:r.abortSignal},i=await Ei(o,{serverTarget:"optional"}),a=await za(o,i),s=await e.runWithTimeout(a.getServerInfo(),"current server info");return s.version?await e.checkServerCompatibility({serverUrl:a.serverUrl,serverVersion:s.version,devToolApiVersion:s.devToolApiVersion}):void 0}catch(o){Dr.debug("skip cli current server version check: %s",o);return}finally{n&&t?.dispose()}}async function h0(r){let e=await $c({cwd:r.cwd,workspace:r.config.workspace,env:r.env,required:!1});if(e)return ea({root:e,eventBus:r.eventBus,lockWait:r.config.lockTimeout})}function g0(r,e){return new Tf({env:e,cacheDir:r.cacheDir,currentVersion:r.currentVersion,packageName:r.packageName,fetch:r.fetch,now:r.now,timeoutMs:r.timeoutMs})}function bP(r){return r.env??r.context?.env??process.env}function EP(r){return r.path.length===2&&r.path[0]==="workspace"&&r.path[1]==="init"}function TP(r){return Ys(r[Gt.noUpdateCheck],!1)===!0}var Tf=class{env;cacheDir;currentVersion;packageName;fetchImpl;now;timeoutMs;constructor(e){this.env=e.env,this.cacheDir=e.cacheDir??kc(this.env),this.currentVersion=e.currentVersion??In,this.packageName=e.packageName??i0,this.fetchImpl=e.fetch??fetch,this.now=e.now??(()=>new Date),this.timeoutMs=e.timeoutMs??c0}async checkLatestFromRegistry(){try{let e=await this.fetchPackageVersionCacheData();return await this.writeCache(e),this.toLatestStatus(e)}catch(e){Dr.debug("skip cli latest version check: %s",e);return}}async checkLatestFromCache(){let e=await this.readCache();if(!(!e||!this.matchesCurrentSource(e)||this.isExpired(e)))return this.toLatestStatus(e)}async checkLatestFromAnyCache(){let e=await this.readCache();return e&&this.matchesCurrentSource(e)?this.toLatestStatus(e):void 0}async hasPackageVersionCache(){let e=await this.readCache();return!!e&&this.matchesCurrentSource(e)&&bf(e)}async runWithTimeout(e,t){let n,o=new Promise((i,a)=>{n=setTimeout(()=>a(new Error(`${t} timed out after ${this.timeoutMs}ms`)),this.timeoutMs)});try{return await Promise.race([e,o])}finally{n&&clearTimeout(n),e.catch(i=>Dr.debug("ignored late cli version check operation failure: %s",i))}}async checkServerCompatibility(e){try{let t=await this.readServerCacheEntry(e);if(t&&!this.isServerCacheExpired(t))return this.toServerStatus(e,t);let n=await this.fetchPackageVersionCacheData();await this.writeCache(n);let o=this.createServerCompatibilityCacheData(e,n);return o?(await this.writeServerCacheEntry(e,o),this.toServerStatus(e,o)):this.toServerNoCompatibleStatus(e,n.checkedAt)}catch(t){Dr.debug("skip cli server compatibility check: %s",t);let n=await this.readServerCacheEntry(e);return n?this.toServerStatus(e,n):this.toServerUnknownStatus(e)}}async checkServerCompatibilityFromCache(e){let t=await this.readServerCacheEntry(e);if(t)return this.toServerStatus(e,t);let n=await this.readCache();if(!n||!this.matchesCurrentSource(n)||!bf(n))return;let o=this.createServerCompatibilityCacheData(e,n);return o?(await this.writeServerCacheEntry(e,o),this.toServerStatus(e,o)):this.toServerNoCompatibleStatus(e,n.checkedAt)}async fetchPackageVersionCacheData(){let{registryUrl:e,packageUrl:t,metadata:n}=await this.fetchPackageMetadata(),o=Xt(n["dist-tags"]?.latest);if(!o)throw new Error(`npm registry response has no latest dist-tag: ${t}`);return{version:ta,packageName:this.packageName,registryUrl:e,latestVersion:o,packageVersions:P0(n),checkedAt:this.now().toISOString(),upgradeCommand:kP(this.packageName,"latest")}}createServerCompatibilityCacheData(e,t){if(!bf(t))return;let n=w0(e.serverVersion,t.packageVersions);if(n)return{serverVersion:e.serverVersion,devToolApiVersion:e.devToolApiVersion,recommendedVersion:n.version,checkedAt:t.checkedAt,upgradeCommand:kP(this.packageName,n.installTag)}}async fetchPackageMetadata(){let e=this.resolveRegistryUrl(),t=new URL(encodeURIComponent(this.packageName),e).toString(),n=await this.fetchWithTimeout(t);if(!n.ok)throw new Error(`npm registry responded with HTTP ${n.status}: ${t}`);return{registryUrl:e,packageUrl:t,metadata:await n.json()}}async fetchWithTimeout(e){let t=new AbortController,n=setTimeout(()=>t.abort(),this.timeoutMs);try{return await this.fetchImpl(e,{headers:{Accept:"application/json"},signal:t.signal})}finally{clearTimeout(n)}}resolveRegistryUrl(){let e=Pe(this.env[Gt.updateCheckRegistry])??Pe(this.env.npm_config_registry)??Pe(this.env.NPM_CONFIG_REGISTRY)??a0;return e.endsWith("/")?e:`${e}/`}async readCache(){try{return S0(await dn(this.getCachePath()))}catch(e){Dr.debug("skip cli version update cache read: %s",e);return}}async writeCache(e){try{await It(this.getCachePath(),`${JSON.stringify(e,void 0," ")}
|
|
76
|
-
`)}catch(t){
|
|
77
|
-
`)}catch(n){
|
|
78
|
-
`))}calculateColumnWidths(){return this.model.columns.map((e,t)=>{let n=this.model.rows.map(o=>Lr(this.getCellText(o,t)));return Math.max(Lr(e),...n)})}renderRow(e){return this.getColumnWidths().map((t,n)=>this.padCell(this.getCellText(e,n),t)).join(this.getColumnSeparator()).trimEnd()}padCell(e,t){return li(e,t)}getCellText(e,t){return e[t]??""}getColumnSeparator(){return" ".repeat(this.columnGap)}getColumnWidths(){return this.columnWidths===void 0&&(this.columnWidths=this.calculateColumnWidths()),this.columnWidths}};function de(r,e){return new Ff(r,e).render()}function F0(r){return r===void 0||!Number.isFinite(r)?I0:Math.max(0,Math.floor(r))}_n();D();Z();function no(r){return I({type:r.type,path:r.path,remotePath:r.remotePath,oldPath:r.oldPath,oldRemotePath:r.oldRemotePath,fileId:r.fileId,isFolder:r.isFolder,contentChanged:r.contentChanged,metaChanged:r.metaChanged,modifier:r.modifier,modifierName:r.modifierName,modifyTime:r.modifyTime})}function xp(r){return I({name:r.name,id:r.id,desc:r.desc})}function bn(r){return I({remotePath:r.remotePath,localPath:r.localPath,currentVersion:r.currentVersion,targetVersion:r.targetVersion,changed:r.changed,reason:r.reason,...AP(r.errorInfo)})}function Ip(r){return I({path:r.path,...AP(r.errorInfo)})}function Fp(r){return I({path:r.path,currentVersion:r.currentVersion,targetVersion:r.targetVersion,metaType:r.metaType,kind:r.kind})}function Dp(r){switch(r){case"older":return d("cli.out.value.older");case"newer":return d("cli.out.value.newer");default:return r}}function Ar(r){return r==null?"":Array.isArray(r)?r.map(Ar).join(", "):typeof r=="object"?JSON.stringify(r):String(r)}function ur(r){return r==null?"":r?d("cli.out.value.yes"):d("cli.out.value.no")}function oo(r){return de({columns:[d("cli.out.header.type"),d("cli.out.header.path"),d("cli.out.header.remote")],rows:r.map(e=>[e.type,e.path,e.remotePath])})}function Is(r){return de({columns:[d("cli.out.header.remote"),d("cli.out.common.version"),d("cli.out.common.targetVersion")],rows:r.map(e=>[e.remotePath,e.currentVersion??"",e.targetVersion??""])})}function AP(r){if(r===void 0)return{};let e=D0(r);return e||(r instanceof Error?I({errorName:r.name||"Error",errorMessage:r.message}):typeof r=="object"&&r!==null?I({errorName:er(r,"name"),errorCode:er(r,"code")??er(r,"errorCode"),errorMessage:er(r,"message")??er(r,"reason")}):{errorMessage:String(r)})}function en(r){if(r===void 0)return"";let e=A0(r);if(e)return e;if(r instanceof Error)return r.message||r.name;if(typeof r=="object"&&r!==null){let t=er(r,"code")??er(r,"errorCode"),n=er(r,"message")??er(r,"reason");return[t,n].filter(o=>o&&o.length>0).join(": ")}return String(r)}function D0(r){let e=lt(r),t=gr(r),n=Lt(r);if(!(e===void 0&&t===void 0&&n===void 0))return I({errorName:O0(r),errorCode:e,errorType:t==null?void 0:String(t),errorMessage:OP(r),errorProperties:n})}function A0(r){let e=lt(r),t=OP(r);return[e,t].filter(n=>n&&n.length>0).join(": ")}function O0(r){if(r instanceof Error)return r.name||"Error";if(!(typeof r!="object"||r===null))return er(r,"name")??er(r,"className")}function OP(r){if(r instanceof Error)return r.message;if(!(typeof r!="object"||r===null))return er(r,"message")??er(r,"reason")}function er(r,e){if(!Object.hasOwn(r,e))return;let t=r[e];return typeof t=="string"?t:void 0}D();Z();$();F();_();var na="file",Af="input",Of="mode",_f="dry-run",Lf="output",qt="force",Df="config",oa="test",mr="timeout",Nf="catalog",$t="schema",Wf="table-name-contains",ia="max-rows",Jo="query",Qo="query-file",ao=30,_e=class extends te{async executeCommand(e,t){let n=await this.prepareDbCommand(e,t),o=await this.resolveServerUrl(e),i=await this.createServerApiClient(e,o);return this.executeDbCommand(e,o,i,n)}prepareDbCommand(e,t){return Promise.resolve(t)}readDbInputTextFile(e,t){return zn(He(e.cwd,t))}readDbStdinText(){return Nt()}isDbStdinInteractive(){return process.stdin.isTTY}createDbParamInputReader(e){return{hasInteractiveStdin:()=>this.isDbStdinInteractive(),readFileText:t=>this.readDbInputTextFile(e,t),readStdin:()=>this.readDbStdinText()}}readDbParamText(e,t){return vc(e,t,this.createDbParamInputReader(e))}async readDbSqlText(e,t){let n=await this.readDbParamText(e,t);if(Pe(n))return n;let o=gi(e).resolveInput(t);throw new R("err.cli.missingInput",{inputId:o.inputId,sources:o.sources})}readDbImportContent(e){return this.readDbParamText(e,`--${Af}`)}},io=class extends _e{async readConfig(e){let t=gi(e).resolveInput(`--${Df}`),n=await this.readDbParamText(e,`--${Df}`);return _0(n,t.label,t.inputId)}};function aa(r){return[{name:Df,takesValue:!0,valueHint:"json-file|-",param:{source:"file-or-stdin",required:!0,inputId:"dataSourceConfig"}},...r]}function _0(r,e,t="dataSourceConfig"){let n;try{n=JSON.parse(r)}catch(o){throw new R("err.cli.invalidJsonObject",{inputId:t,source:e},{cause:o})}if(!W(n))throw new R("err.cli.invalidJsonObject",{inputId:t,source:e});return n}function _P(r){return I({name:r.name,desc:r.desc,defaultSchema:r.defaultSchema,defaultCatalog:r.defaultCatalog,readonly:r.readonly})}function Ap(r){return I({schema:r.schema,tableName:r.tableName,tableType:r.tableType,tableComment:r.tableComment})}function LP(r){return I({name:r.name,primaryKey:r.primaryKey,unique:r.unique,dataType:r.dataType,dbType:r.dbType,length:r.length,scale:r.scale,defaultValue:r.defaultValue,autoInc:r.autoInc,nullable:r.nullable,comment:r.comment})}function NP(r){return I({result:r.result})}function WP(r){return I({dataSource:r.dataSource,resultType:r.resultType,force:r.force,updateCount:r.updateCount,results:r.results,sqlInfos:r.sqlInfos?.map(L0),fields:r.fields,data:r.data,columns:r.columns,rowCount:r.rowCount,maxRows:r.maxRows,truncated:r.truncated,elapsedMs:r.elapsedMs,timeoutMs:r.timeoutMs})}function UP(r){return I({dataSource:r.dataSource,schema:r.schema,tableName:r.tableName,mode:r.mode,dryRun:r.dryRun,importedRows:r.importedRows,skippedRows:r.skippedRows,elapsedMs:r.elapsedMs,timeoutMs:r.timeoutMs})}function L0(r){return I({datasource:r.datasource,schema:r.schema,sql:r.sql,sqlType:r.sqlType,tableName:r.tableName,dataMutation:r.dataMutation,schemaMutation:r.schemaMutation,manipulateAllRows:r.manipulateAllRows,dangerous:r.dangerous})}function so(r){let e=r;return I({result:r.result,dataSource:r.dataSource,originalDataSource:e.originalDataSource,config:e.config?Op(e.config):void 0})}function Op(r){let e=I({...r});return delete e.password,e}function jP(r){return{columns:[d("cli.cmd.db.dataSource"),d("cli.out.header.description"),d("cli.cmd.db.defaultSchema"),d("cli.cmd.db.readonly")],rows:r.map(e=>[e.name??"",e.desc??"",e.defaultSchema??e.defaultCatalog??"",ur(e.readonly)])}}function VP(r){let e=Op(r);return{columns:[d("cli.out.header.field"),d("cli.out.header.value")],rows:Object.keys(e).sort().map(t=>[t,Ar(e[t])])}}function BP(r){return{columns:[d("cli.out.header.schema"),d("cli.out.header.table"),d("cli.out.header.type"),d("cli.out.header.comment")],rows:r.map(e=>[e.schema??"",e.tableName,e.tableType??"",e.tableComment??""])}}function qP(r){let e=r.table.columns??[],t=j0(r.table);return{columns:[d("cli.out.header.field"),d("cli.out.header.type"),d("cli.out.header.null"),d("cli.out.header.key"),d("cli.out.header.default"),d("cli.out.header.extra"),d("cli.out.header.comment")],rows:e.map(n=>[n.name,N0(n),W0(n),U0(n,t),q0(n),$0(n),n.comment??""])}}function N0(r){let e=r.dbType??r.dataType??"";return!e||r.length===void 0||r.length<=0||e.includes("(")?e:r.scale!==void 0&&r.scale>0?`${e}(${r.length},${r.scale})`:`${e}(${r.length})`}function W0(r){return r.nullable===void 0?"":r.nullable?"YES":"NO"}function U0(r,e){return r.primaryKey?"PRI":r.unique?"UNI":e.get(Uf(r.name))??""}function j0(r){let e=new Map;for(let t of r.primaryKeys??[])e.set(Uf(t),"PRI");for(let t of r.indexes??[]){let n=t.primaryKey?"PRI":t.unique?"UNI":"MUL";for(let o of V0(t.parts))B0(e,o,n)}return e}function V0(r){if(!r)return[];let e=[];for(let t of r)typeof t=="string"?e.push(t):t.column&&e.push(t.column);return e}function B0(r,e,t){let n=Uf(e),o=r.get(n);o==="PRI"||o==="UNI"&&t==="MUL"||r.set(n,t)}function Uf(r){return r.toLowerCase()}function q0(r){return r.defaultValue===void 0?"":r.defaultValue??"NULL"}function $0(r){return r.autoInc?"auto_increment":""}function $P(r){return G0(r)?H0(r.fields,r.data):typeof r.updateCount=="number"?d("cli.cmd.db.sqlUpdateCount",String(r.updateCount)):d("cli.cmd.db.sqlExecutedSuccess")}function HP(r){return z0(r.result.fields.map(e=>e.name),r.result.rows)}function H0(r,e){return r.length?{columns:r,rows:e.map(t=>t.map(Ar))}:d("cli.cmd.db.sqlExecutedSuccess")}function z0(r,e){return r.length?{columns:r,rows:e.map(t=>r.map(n=>Ar(t[n])))}:d("cli.cmd.db.sqlExecutedSuccess")}function zP(r){let e=r.skippedRows===void 0?"":d("cli.cmd.db.skipped",String(r.skippedRows)),t=r.dryRun?d("cli.cmd.db.dryImport"):d("cli.cmd.db.imported");return d("cli.cmd.db.rowsModeDry",t,String(r.importedRows),r.tableName,e,r.mode,String(r.dryRun))}function G0(r){return Array.isArray(r.fields)&&Array.isArray(r.data)}function GP(r){let e=r.value("table"),t=r.value(Jo),n=r.value(Qo);if(t!==void 0&&n!==void 0)throw new R("err.cli.conflictingInputs",{inputs:[`--${Jo}=<sql>`,`--${Qo}=<sql-file>`]});if(e!==void 0&&(t!==void 0||n!==void 0))throw new R("err.cli.conflictingInputs",{inputs:["<table>",`--${Jo}`,`--${Qo}`]});if(t!==void 0)return{type:"query"};if(n!==void 0)return{type:"query"};if(e===void 0)throw new R("err.cli.missingInput",{inputId:"exportTarget",sources:["<table>",`--${Jo}=<sql>`,`--${Qo}=<sql-file>`]});let o=Fs(r,e);return{type:"table",schema:o.schema,tableName:o.tableName}}function K0(r){let e=r.lastIndexOf(".");return e<=0||e===r.length-1?{tableName:r}:{schema:r.slice(0,e),tableName:r.slice(e+1)}}function Fs(r,e){let t=r.value($t);return t!==void 0?{schema:t,tableName:e}:K0(e)}_();F();var jf=class extends _e{toOptions(e){return{dataSource:e.value("datasource"),schema:e.value($t),timeoutSeconds:e.integer(mr),maxRows:e.integer(ia),force:e.has(qt)}}async prepareDbCommand(e,t){return t.sql!==void 0?t:{...t,sql:await this.readDbSqlText(e,"sqlSource")}}async executeDbCommand(e,t,n,o){let i=await this.executeAnySql(n,{dataSource:o.dataSource,schema:o.schema,sql:o.sql,timeoutMs:o.timeoutSeconds*1e3,maxRows:o.maxRows,force:o.force});return e.output.result({...ne(e,t),dataSource:o.dataSource,...o.schema!==void 0?{schema:o.schema}:{},timeoutSeconds:o.timeoutSeconds,...o.maxRows!==void 0?{maxRows:o.maxRows}:{},...o.force?{force:!0}:{},...WP(i)},()=>$P(i)),0}async executeAnySql(e,t){try{return await e.executeDbAny({dataSource:t.dataSource,...t.schema!==void 0?{schema:t.schema}:{},sql:t.sql,timeoutMs:t.timeoutMs,...t.maxRows!==void 0?{maxRows:t.maxRows}:{},...t.force?{force:!0}:{}})}catch(n){throw So(n,"err.sql.forceRequired")?new R("err.cli.confirmationRequired",{reason:"dbSqlMutation",flag:`--${qt}`,sqlInfos:n.properties.sqlInfos,context:{forceRequired:!0}},{cause:n}):n}}},KP={path:["db","exec"],domain:"db",spec:{name:"db exec",flags:[{name:na,takesValue:!0,valueHint:"sql-file",param:{source:"file",type:"string",nonEmpty:!0}},{name:$t,takesValue:!0,valueHint:"schema"},{name:mr,takesValue:!0,valueHint:"seconds",param:{type:"integer",min:1,defaultValue:ao}},{name:ia,takesValue:!0,valueHint:"n",param:{type:"integer",min:0}},{name:qt,takesValue:!1}],positionals:[{name:"datasource",param:{required:!0}},{name:"sql",param:{source:"value",type:"string",nonEmpty:!0}}],inputGroups:[{name:"sqlSource",mode:"atMostOne",inputId:"sql",defaultSource:"stdin",members:["<sql>",`--${na}`]}],usageArgs:"[<options>] <datasource> [<sql>]",examples:['succapp db exec default "update orders set status = 1 where id = 42"',"succapp db exec default --file=./change.sql --max-rows=10",'succapp db exec default "create table TEMP_ORDERS (ID int)" --force']},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new jf};var co=E(require("fs")),JP=E(require("path")),QP=require("stream/promises");_();F();async function _p(r,e,t){await co.promises.mkdir(JP.dirname(r),{recursive:!0});let n=J0(r);try{await(0,QP.pipeline)(e,co.createWriteStream(n,{flags:"wx"})),t.force?await co.promises.rename(n,r):(await co.promises.link(n,r),await co.promises.unlink(n))}catch(o){throw await Q0(n,o),!t.force&&ec(o)?new R("err.cli.confirmationRequired",{reason:"outputOverwrite",flag:t.overwriteFlag,path:r},{cause:o}):o}}function J0(r){let e=[process.pid,Date.now().toString(36),Math.random().toString(36).slice(2)].join("-");return`${r}.tmp-${e}`}async function Q0(r,e){try{await co.promises.unlink(r)}catch(t){if(x(t))return;e instanceof Error&&(e.cleanupError=t)}}D();_();$();var YP=E(require("fs")),Vf=class extends _e{toOptions(e){return{dataSource:e.value("datasource"),schema:e.value($t),target:GP(e),timeoutSeconds:e.integer(mr),output:e.value(Lf),force:e.has(qt)}}async prepareDbCommand(e,t){return t.target.type!=="query"||t.target.sql!==void 0?t:{...t,target:{...t.target,sql:await this.readDbSqlText(e,"exportTarget")}}}async executeDbCommand(e,t,n,o){let i=o.target.type==="table"?{tableName:o.target.tableName}:{query:!0},a=He(e.cwd,o.output),s=o.target.type==="table"?await n.exportDbTableData({dataSource:o.dataSource,...o.target.schema!==void 0?{schema:o.target.schema}:{},tableName:o.target.tableName,timeoutMs:o.timeoutSeconds*1e3}):await n.exportDbQueryData({dataSource:o.dataSource,...o.schema!==void 0?{schema:o.schema}:{},sql:o.target.sql,timeoutMs:o.timeoutSeconds*1e3});await _p(a,s,{force:o.force,overwriteFlag:`--${qt}`});let c=await YP.promises.stat(a),l={...ne(e,t),dataSource:o.dataSource,...o.target.type==="table"&&o.target.schema!==void 0?{schema:o.target.schema}:{},...o.target.type==="query"&&o.schema!==void 0?{schema:o.schema}:{},...i,timeoutSeconds:o.timeoutSeconds,size:c.size,output:a};return e.output.result(l,()=>d("cli.cmd.db.export.exportedData",a)),0}},XP={path:["db","export"],domain:"db",spec:{name:"db export",flags:[{name:Jo,takesValue:!0,valueHint:"sql",param:{source:"value",type:"string",nonEmpty:!0}},{name:Qo,takesValue:!0,valueHint:"sql-file",param:{source:"file",type:"string",nonEmpty:!0}},{name:$t,takesValue:!0,valueHint:"schema"},{name:mr,takesValue:!0,valueHint:"seconds",param:{type:"integer",min:1,defaultValue:ao}},{name:Lf,takesValue:!0,valueHint:"csv-file",param:{required:!0,nonEmpty:!0,inputId:"outputFile"}},{name:qt,takesValue:!1}],positionals:[{name:"datasource",param:{required:!0}},{name:"table",param:{source:"value",type:"string",nonEmpty:!0}}],inputGroups:[{name:"exportTarget",mode:"exactlyOne",inputId:"exportTarget",members:["<table>",`--${Jo}`,`--${Qo}`]}],usageArgs:"[<options>] <datasource> [<table>]",examples:["succapp db export default orders --output=orders.csv","succapp db export default --query-file=./query.sql --output=orders.csv"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Vf};_();var Bf=class extends _e{toOptions(e){let t=Fs(e,e.value("table")),n=e.value(Of);return{dataSource:e.value("datasource"),schema:t.schema,tableName:t.tableName,mode:n??"append",dryRun:e.has(_f),timeoutSeconds:e.integer(mr)}}async prepareDbCommand(e,t){return t.content!==void 0?t:{...t,content:await this.readDbImportContent(e)}}async executeDbCommand(e,t,n,o){let i=await n.importDbTableData({dataSource:o.dataSource,...o.schema!==void 0?{schema:o.schema}:{},tableName:o.tableName,content:o.content,format:"csv",mode:o.mode,dryRun:o.dryRun,timeoutMs:o.timeoutSeconds*1e3}),a={...i,mode:i.mode??o.mode,dryRun:i.dryRun??o.dryRun};return e.output.result({...ne(e,t),...UP(a),timeoutSeconds:o.timeoutSeconds},()=>zP(a)),0}},ZP={path:["db","import"],domain:"db",spec:{name:"db import",flags:[{name:Af,takesValue:!0,valueHint:"csv-file|-",param:{source:"file-or-stdin",type:"string",required:!0,inputId:"inputFile"}},{name:Of,takesValue:!0,valueHint:"append|truncate|replace",param:{choices:["append","truncate","replace"]}},{name:_f,takesValue:!1},{name:$t,takesValue:!0,valueHint:"schema"},{name:mr,takesValue:!0,valueHint:"seconds",param:{type:"integer",min:1,defaultValue:ao}}],positionals:[{name:"datasource",param:{required:!0}},{name:"table",param:{required:!0}}],usageArgs:"[<options>] <datasource> <table>",examples:["succapp db import default orders --input=./orders.csv","succapp db import default public.orders --input=./orders.csv --mode=truncate --dry-run","cat orders.csv | succapp db import default public.orders --input=- --mode=append"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Bf};_();F();var qf=class extends _e{toOptions(e){return{dataSource:e.value("datasource"),schema:e.value($t),timeoutSeconds:e.integer(mr),maxRows:e.integer(ia)}}async prepareDbCommand(e,t){return t.sql!==void 0?t:{...t,sql:await this.readDbSqlText(e,"sqlSource")}}async executeDbCommand(e,t,n,o){let i=await this.executeQuerySql(n,{dataSource:o.dataSource,...o.schema!==void 0?{schema:o.schema}:{},sql:o.sql,timeoutMs:o.timeoutSeconds*1e3,...o.maxRows!==void 0?{maxRows:o.maxRows}:{}});return e.output.result({...ne(e,t),dataSource:o.dataSource,...o.schema!==void 0?{schema:o.schema}:{},readOnly:!0,timeoutSeconds:o.timeoutSeconds,...o.maxRows!==void 0?{maxRows:o.maxRows}:{},...NP(i)},()=>HP(i)),0}async executeQuerySql(e,t){try{return await e.executeDbQuery(t)}catch(n){throw So(n,"err.db.nonReadOnlySql")?new R("err.cli.confirmationRequired",{reason:"dbQueryWriteSql",flag:`--${qt}`,context:{backendErrorCode:"err.db.nonReadOnlySql"}},{cause:n}):n}}},eR={path:["db","query"],domain:"db",spec:{name:"db query",flags:[{name:na,takesValue:!0,valueHint:"sql-file",param:{source:"file",type:"string",nonEmpty:!0}},{name:$t,takesValue:!0,valueHint:"schema"},{name:mr,takesValue:!0,valueHint:"seconds",param:{type:"integer",min:1,defaultValue:ao}},{name:ia,takesValue:!0,valueHint:"n",param:{type:"integer",min:0}}],positionals:[{name:"datasource",param:{required:!0}},{name:"sql",param:{source:"value",type:"string",nonEmpty:!0}}],inputGroups:[{name:"sqlSource",mode:"atMostOne",inputId:"sql",defaultSource:"stdin",members:["<sql>",`--${na}`]}],usageArgs:"[<options>] <datasource> [<sql>]",examples:['succapp db query default "select * from orders"',"succapp db query default --file=./query.sql --schema=PUBLIC --timeout=10 --max-rows=100"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new qf};D();Z();var $f=class extends _e{toOptions(e){return{dataSource:e.value("datasource"),catalog:e.value(Nf)}}async executeDbCommand(e,t,n,o){let i=await n.listDbSchemas(o.dataSource,{...o.catalog!==void 0?{catalog:o.catalog}:{}});return e.output.result({...ne(e,t),dataSource:o.dataSource,...o.catalog!==void 0?{catalog:o.catalog}:{},schemas:i.map(a=>I({...a}))},()=>({columns:[d("cli.out.header.schema"),d("cli.cmd.db.schema.list.catalog")],rows:i.map(a=>[a.name,a.catalog??""])})),0}},tR={path:["db","schema","list"],domain:"db",spec:{name:"db schema list",flags:[{name:Nf,takesValue:!0,valueHint:"catalog"}],positionals:[{name:"datasource",param:{required:!0}}],usageArgs:"[<options>] <datasource>",examples:["succapp db schema list default","succapp db schema list default --catalog=PUBLIC"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new $f};D();var Hf=class extends io{toOptions(e){return{testBeforeSave:e.has(oa)}}async prepareDbCommand(e,t){return t.config!==void 0?t:{...t,config:await this.readConfig(e)}}async executeDbCommand(e,t,n,o){let i=o.config,a=await n.createDataSource({config:i,testBeforeSave:o.testBeforeSave});return e.output.result({...ne(e,t),...so(a)},()=>d("cli.cmd.db.source.create.created",a.dataSource??i.name??"")),0}},rR={path:["db","source","create"],domain:"db",spec:{name:"db source create",flags:aa([{name:oa,takesValue:!1}]),positionals:[],usageArgs:"[<options>]",examples:["succapp db source create --config=./datasource.json --test"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Hf};var zf=class extends _e{async executeDbCommand(e,t,n){let o=await n.getDataSources();return e.output.result({...ne(e,t),dataSources:o.map(_P)},()=>jP(o)),0}},nR={path:["db","source","list"],domain:"db",spec:{name:"db source list",flags:[],positionals:[],usageArgs:"[<options>]",examples:["succapp db source list","succapp --server=http://localhost:8180 db source list --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new zf};D();F();_();var Gf=class extends _e{toOptions(e){return{dataSource:e.value("datasource"),force:e.has(qt)}}validateOptions(e,t){if(!t.force)throw new R("err.cli.confirmationRequired",{reason:"dbSourceDelete",flag:`--${qt}`,inputId:"dataSourceConfig"})}async executeDbCommand(e,t,n,o){let i=await n.deleteDataSource({dataSource:o.dataSource});return e.output.result({...ne(e,t),...so(i)},()=>d("cli.cmd.db.source.remove.deleted",i.dataSource??o.dataSource)),0}},oR={path:["db","source","remove"],domain:"db",spec:{name:"db source remove",flags:[{name:qt,takesValue:!1}],positionals:[{name:"datasource",param:{required:!0}}],usageArgs:"[<options>] <datasource>",examples:["succapp db source remove oldDs --force"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Gf};var Kf=class extends _e{toOptions(e){return{dataSource:e.value("datasource")}}async executeDbCommand(e,t,n,o){let i=await n.getDataSourceConfig(o.dataSource);return e.output.result({...ne(e,t),dataSource:o.dataSource,config:Op(i)},()=>VP(i)),0}},iR={path:["db","source","show"],domain:"db",spec:{name:"db source show",flags:[],positionals:[{name:"datasource",param:{required:!0}}],usageArgs:"[<options>] <datasource>",examples:["succapp db source show default"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Kf};D();var Jf=class extends io{toOptions(e){return{}}async prepareDbCommand(e,t){return t.config!==void 0?t:{...t,config:await this.readConfig(e)}}async executeDbCommand(e,t,n,o){let i=o.config,a=await n.testDataSource({config:i});return e.output.result({...ne(e,t),...so(a)},()=>d("cli.cmd.db.source.test.testOk",a.dataSource??i.name??"")),0}},aR={path:["db","source","test"],domain:"db",spec:{name:"db source test",flags:aa([]),positionals:[],usageArgs:"[<options>]",examples:["succapp db source test --config=./datasource.json","cat datasource.json | succapp db source test --config=-"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Jf};D();var Qf=class extends io{toOptions(e){return{dataSource:e.value("datasource"),testBeforeSave:e.has(oa)}}async prepareDbCommand(e,t){return t.config!==void 0?t:{...t,config:await this.readConfig(e)}}async executeDbCommand(e,t,n,o){let i=o.config,a=await n.updateDataSource({dataSource:o.dataSource,config:i,testBeforeSave:o.testBeforeSave});return e.output.result({...ne(e,t),...so(a)},()=>d("cli.cmd.db.source.update.updated",a.dataSource??i.name??o.dataSource)),0}},sR={path:["db","source","update"],domain:"db",spec:{name:"db source update",flags:aa([{name:oa,takesValue:!1}]),positionals:[{name:"datasource",param:{required:!0}}],usageArgs:"[<options>] <datasource>",examples:["succapp db source update oldDs --config=./datasource.json --test"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Qf};var Yf=class extends _e{toOptions(e){let t=Fs(e,e.value("table"));return{dataSource:e.value("datasource"),schema:t.schema,tableName:t.tableName}}async executeDbCommand(e,t,n,o){let i=await n.describeDbTable(o.dataSource,o.tableName,{...o.schema!==void 0?{schema:o.schema}:{}});return e.output.result({...ne(e,t),dataSource:o.dataSource,table:Ap(i.table),columns:i.table.columns?.map(LP)??[]},()=>qP(i)),0}},cR={path:["db","table","describe"],domain:"db",spec:{name:"db table describe",flags:[{name:$t,takesValue:!0,valueHint:"schema"}],positionals:[{name:"datasource",param:{required:!0}},{name:"table",param:{required:!0}}],usageArgs:"[<options>] <datasource> <table>",examples:["succapp db table describe default orders","succapp db table describe default public.orders"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Yf};var Xf=class extends _e{toOptions(e){return{dataSource:e.value("datasource"),schema:e.value("schema"),tableNameContains:e.value(Wf)}}async executeDbCommand(e,t,n,o){let i=await n.listDbTables(o.dataSource,{...o.schema!==void 0?{schema:o.schema}:{},...o.tableNameContains!==void 0?{tableNameContains:o.tableNameContains}:{}});return e.output.result({...ne(e,t),dataSource:o.dataSource,...o.schema!==void 0?{schema:o.schema}:{},...o.tableNameContains!==void 0?{tableNameContains:o.tableNameContains}:{},tables:i.map(Ap)},()=>BP(i)),0}},lR={path:["db","table","list"],domain:"db",spec:{name:"db table list",flags:[{name:Wf,takesValue:!0,valueHint:"text"}],positionals:[{name:"datasource",param:{required:!0}},{name:"schema"}],usageArgs:"[<options>] <datasource> [<schema>]",examples:["succapp db table list default","succapp db table list default PUBLIC --table-name-contains=order"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Xf};var pR=[nR,iR,aR,rR,sR,oR,tR,lR,cR,eR,KP,ZP,XP];_();F();D();Z();$();var Zf="all",Ds="contains",eh="detail",th="dim",Lp="force",rh="limit",As="max-rows",nh="measure",Os="order",oh="output",ih="project",lo="query",po="query-file",_s="select",uo="stdin",ah="type",Ls="where",tn=class extends te{async executeCommand(e,t){let n=await this.prepareModelCommand(e,t),o=await this.resolveServerUrl(e),i=await this.createServerApiClient(e,o);return this.executeModelCommand(e,o,i,n)}prepareModelCommand(e,t){return Promise.resolve(t)}readModelInputTextFile(e,t){return zn(He(e.cwd,t))}readModelStdinText(){return Nt()}isModelStdinInteractive(){return process.stdin.isTTY}createModelParamInputReader(e){return{hasInteractiveStdin:()=>this.isModelStdinInteractive(),readFileText:t=>this.readModelInputTextFile(e,t),readStdin:()=>this.readModelStdinText()}}async readQueryRequest(e,t){let n=gi(e).resolveInput(t),o=await vc(e,t,this.createModelParamInputReader(e));return Y0(o,n.label,n.inputId)}};function Y0(r,e,t="value"){let n;try{n=JSON.parse(r)}catch(o){throw new R("err.cli.invalidJsonObject",{inputId:t,source:e},{cause:o})}if(!W(n))throw new R("err.cli.invalidJsonObject",{inputId:t,source:e});return n}function dR(r){let e=r.value("model"),t=r.value(lo)!==void 0||r.value(po)!==void 0||r.has(uo);if(e!==void 0&&t)throw new R("err.cli.conflictingInputs",{inputs:["<model>",`--${lo}`,`--${po}`,`--${uo}`]});if(e!==void 0)return{type:"select",model:e,fields:r.values(_s),where:r.value(Ls),order:r.value(Os)};if(!t)throw new R("err.cli.missingInput",{inputId:"value",sources:["<model>",`--${lo}=<json>`,`--${po}=<file>`,`--${uo}`]});return{type:"query"}}function uR(r){return{columns:[d("cli.out.file.id"),d("cli.out.model.type"),d("cli.out.model.extracted"),d("cli.out.model.fields"),d("cli.out.model.writable"),d("cli.out.file.path")],rows:r.map(e=>[e.id,e.modelType??"",ur(e.extracted),Ar(e.fieldCount),ur(e.writable),e.path])}}function mR(r){return{columns:[d("cli.out.header.field"),d("cli.out.header.value")],rows:[[d("cli.out.file.id"),r.id],[d("cli.out.file.path"),r.path],[d("cli.out.file.name"),r.name],[d("cli.out.file.project"),r.project??""],[d("cli.out.model.type"),r.modelType??""],[d("cli.out.model.fields"),Ar(r.fieldCount)],[d("cli.out.model.extracted"),ur(r.extracted)],[d("cli.out.model.writable"),ur(r.writable)],[d("cli.out.model.primaryKeys"),(r.primaryKeys??[]).join(", ")],[d("cli.out.model.businessKeys"),(r.businessKeys??[]).join(", ")],[d("cli.out.model.extractMode"),r.extractMode??""],[d("cli.out.model.targetTable"),r.targetTable??""]]}}function fR(r){return{columns:[d("cli.out.file.name"),d("cli.out.model.title"),d("cli.out.model.dataType"),d("cli.out.model.dim"),d("cli.out.file.hidden"),d("cli.out.model.primary"),d("cli.out.model.dbField")],rows:r.map(e=>[e.name??"",e.title??"",e.dataType??"",ur(e.dim),ur(e.hidden),ur(e.primary),e.field??""])}}function hR(r){return{columns:[d("cli.out.model.kind"),d("cli.out.file.name"),d("cli.out.model.fields"),d("cli.out.model.unique"),d("cli.out.model.enabled")],rows:r.map(e=>[e.kind??"",e.name??"",(e.fields??[]).join(", "),ur(e.unique),ur(e.enabled)])}}function sh(r){let e=W(r.result)?r.result:{},t=Z0(e.fields),n=Array.isArray(e.rows)?e.rows:[];return t.length?{columns:t,rows:n.map(o=>X0(o,t))}:d("cli.cmd.model.query.empty")}function X0(r,e){return Array.isArray(r)?r.map(Ar):W(r)?e.map(t=>Ar(r[t])):[Ar(r)]}function Z0(r){return Array.isArray(r)?r.map(e=>typeof e=="string"?e:W(e)?String(e.alias??e.name??e.field??""):String(e)):[]}_();D();$();var gR=E(require("fs")),ch=class extends tn{toOptions(e){return{project:e.value(ih),types:e.values(ah),contains:e.value(Ds),limit:e.integer(rh)}}async executeModelCommand(e,t,n,o){let i=await n.listModels({...o.project!==void 0?{project:o.project}:{},...o.types.length>0?{types:[...o.types]}:{},...o.contains!==void 0?{contains:o.contains}:{},...o.limit!==void 0?{limit:o.limit}:{}});return e.output.result({...ne(e,t),models:i},()=>uR(i)),0}},lh=class extends tn{toOptions(e){return{model:e.value("model"),detail:e.has(eh)}}async executeModelCommand(e,t,n,o){let i=await n.getModelSummary(o);return e.output.result({...ne(e,t),model:i},()=>mR(i)),0}},ph=class extends tn{toOptions(e){return{model:e.value("model"),all:e.has(Zf),contains:e.value(Ds),dim:e.has(th),measure:e.has(nh)}}async executeModelCommand(e,t,n,o){let i=await n.listModelFields({model:o.model,all:o.all,dim:o.dim,measure:o.measure,...o.contains!==void 0?{contains:o.contains}:{}});return e.output.result({...ne(e,t),model:o.model,fields:i},()=>fR(i)),0}},dh=class extends tn{toOptions(e){return{model:e.value("model")}}async executeModelCommand(e,t,n,o){let i=await n.listModelIndexes(o);return e.output.result({...ne(e,t),model:o.model,indexes:i},()=>hR(i)),0}},uh=class extends tn{toOptions(e){return{model:e.value("model"),fields:e.values(_s),where:e.value(Ls),order:e.value(Os),maxRows:e.integer(As)}}async executeModelCommand(e,t,n,o){let i=await n.selectModelStream({model:o.model,...o.fields.length>0?{fields:[...o.fields]}:{},...o.where!==void 0?{where:o.where}:{},...o.order!==void 0?{order:o.order}:{},...o.maxRows!==void 0?{maxRows:o.maxRows}:{}});return await e.output.resultStream({...ne(e,t),model:o.model},i,a=>sh(a)),0}},mh=class extends tn{toOptions(e){return{maxRows:e.integer(As)}}async prepareModelCommand(e,t){let n=t;return n.request!==void 0?n:{...t,request:await this.readQueryRequest(e,"querySource")}}async executeModelCommand(e,t,n,o){let i=await n.queryModelsStream(o.request,o.maxRows);return await e.output.resultStream({...ne(e,t)},i,a=>sh(a)),0}},fh=class extends tn{toOptions(e){return{target:dR(e),output:e.value(oh),force:e.has(Lp)}}async prepareModelCommand(e,t){if(t.target.type!=="query")return t;let n=t;return n.queryRequest!==void 0?n:{...t,queryRequest:await this.readQueryRequest(e,"exportTarget")}}async executeModelCommand(e,t,n,o){let i=He(e.cwd,o.output),a=o.target.type==="select"?await n.exportModelSelectData({model:o.target.model,...o.target.fields.length>0?{fields:[...o.target.fields]}:{},...o.target.where!==void 0?{where:o.target.where}:{},...o.target.order!==void 0?{order:o.target.order}:{}}):await n.exportModelQueryData(o.queryRequest);await _p(i,a,{force:o.force,overwriteFlag:`--${Lp}`});let s=await gR.promises.stat(i),c={...ne(e,t),...o.target.type==="select"?{model:o.target.model}:{query:!0},output:i,size:s.size};return e.output.result(c,()=>d("cli.cmd.model.export.exportedData",i)),0}},yR={path:["model","list"],domain:"model",spec:{name:"model list",flags:[{name:ih,takesValue:!0,valueHint:"project"},{name:ah,takesValue:!0,repeatable:!0,valueHint:"type",param:{list:{separator:","}}},{name:Ds,takesValue:!0,valueHint:"text"},{name:rh,takesValue:!0,valueHint:"n",param:{type:"integer",min:1}}],positionals:[],usageArgs:"[<options>]",examples:["succapp model list","succapp model list --project DEMO --type App --limit 20"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new ch},CR={path:["model","show"],domain:"model",spec:{name:"model show",flags:[{name:eh,takesValue:!1}],positionals:[{name:"model",param:{required:!0}}],usageArgs:"[<options>] <model>",examples:["succapp model show /DEMO/data/tables/APP/\u5BA2\u6237.tbl"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new lh},SR={path:["model","fields"],domain:"model",spec:{name:"model fields",flags:[{name:Zf,takesValue:!1},{name:Ds,takesValue:!0,valueHint:"text"},{name:th,takesValue:!1},{name:nh,takesValue:!1}],positionals:[{name:"model",param:{required:!0}}],usageArgs:"[<options>] <model>",examples:["succapp model fields /DEMO/data/tables/APP/\u5BA2\u6237.tbl --dim"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new ph},vR={path:["model","indexes"],domain:"model",spec:{name:"model indexes",flags:[],positionals:[{name:"model",param:{required:!0}}],usageArgs:"[<options>] <model>",examples:["succapp model indexes /DEMO/data/tables/APP/\u5BA2\u6237.tbl"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new dh},kR={path:["model","select"],domain:"model",spec:{name:"model select",flags:[{name:_s,takesValue:!0,repeatable:!0,valueHint:"fields",param:{list:{separator:","}}},{name:Ls,takesValue:!0,valueHint:"expression"},{name:Os,takesValue:!0,valueHint:"order"},{name:As,takesValue:!0,valueHint:"n",param:{type:"integer",min:1}}],positionals:[{name:"model",param:{required:!0}}],usageArgs:"[<options>] <model>",examples:[`succapp model select /DEMO/data/tables/APP/\u5BA2\u6237.tbl --where "STATUS='ACTIVE'" --max-rows 20`]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new uh},wR={path:["model","query"],domain:"model",spec:{name:"model query",flags:[{name:lo,takesValue:!0,valueHint:"json",param:{source:"value"}},{name:po,takesValue:!0,valueHint:"file",param:{source:"file"}},{name:uo,takesValue:!1,param:{source:"stdin"}},{name:As,takesValue:!0,valueHint:"n",param:{type:"integer",min:1}}],positionals:[],inputGroups:[{name:"querySource",mode:"exactlyOne",inputId:"value",members:[`--${lo}`,`--${po}`,`--${uo}`]}],usageArgs:"[<options>]",examples:[["succapp model query --query '{",' "sources": ["/DEMO/data/tables/APP/\u5BA2\u6237.tbl"],',' "fields": [{',' "alias": "NAME",',' "exp": "NAME"'," }],",' "options": {',' "enableLimit": true,',' "limit": 20'," }","}' --json"].join(`
|
|
79
|
-
`),"succapp model query --query-file ./query.json --max-rows 100 --json","cat query.json | succapp model query --stdin"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new mh},PR={path:["model","export"],domain:"model",spec:{name:"model export",flags:[{name:_s,takesValue:!0,repeatable:!0,valueHint:"fields",param:{list:{separator:","}}},{name:Ls,takesValue:!0,valueHint:"expression"},{name:Os,takesValue:!0,valueHint:"order"},{name:lo,takesValue:!0,valueHint:"json",param:{source:"value"}},{name:po,takesValue:!0,valueHint:"file",param:{source:"file"}},{name:uo,takesValue:!1,param:{source:"stdin"}},{name:oh,takesValue:!0,valueHint:"csv-file",param:{required:!0,nonEmpty:!0,inputId:"outputFile"}},{name:Lp,takesValue:!1}],positionals:[{name:"model",param:{source:"value",type:"string",nonEmpty:!0}}],inputGroups:[{name:"exportTarget",mode:"exactlyOne",inputId:"value",members:["<model>",`--${lo}`,`--${po}`,`--${uo}`]}],usageArgs:"[<options>] [<model>]",examples:["succapp model export /DEMO/data/tables/APP/\u5BA2\u6237.tbl --select ID,NAME --output=orders.csv","succapp model export --query-file ./query.json --output=result.csv"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new fh};var RR=[yR,CR,SR,vR,kR,wR,PR];D();Z();var gh=["product","sys","metadata","inspect","jvm","env"],eN=[...gh,"all"],tN=["product","metadata"],rN=["sys","inspect","jvm","env"],hh=class extends te{toOptions(e){let t=nN(e.values("scope"));return{url:e.value("url"),scopes:t.scopes,all:e.has("all")||t.all,raw:e.has("raw")}}async executeCommand(e,t){let n=await this.resolveServerUrl(e,t.url),o=await this.createServerApiClient(e,n),i=oN(t)?await o.getServerDetailInfo():await o.getServerInfo();return e.output.result({...e.workspace?{workspace:e.workspace.root}:{},server:n,info:iN(i,t)},()=>aN(n,i,t)),0}},bR={path:["server","info"],domain:"server",spec:{name:"server info",flags:[{name:"scope",takesValue:!0,repeatable:!0,valueHint:"name",param:{choices:eN,list:{separator:",",empty:"error",dedupe:!0}}},{name:"all",takesValue:!1},{name:"raw",takesValue:!1}],positionals:[{name:"url",role:"server-url"}],usageArgs:"[<options>] [<url>]",examples:["succapp server info","succapp --server=https://bi.example.com server info","succapp server info --scope=env,jvm","succapp server info --scope=all","succapp server info http://localhost:8180 --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new hh};function nN(r){let e=[],t=!1;for(let n of r){if(n==="all"){t=!0;continue}if(gh.includes(n)){e.push(n);continue}}return{scopes:e,all:t}}function ER(r){return r.all?gh:r.scopes.length>0?r.scopes:tN}function oN(r){return r.raw||r.all||r.scopes.some(e=>rN.includes(e))}function iN(r,e){if(e.raw)return I(r);let t=ER(e);return I({productType:r.productType,version:r.version,devToolApiVersion:r.devToolApiVersion,scopes:t,productInfo:t.includes("product")?Ch(r):void 0,sysInfo:t.includes("sys")?TR(r):void 0,metadataVersions:t.includes("metadata")?r.metadataVersions:void 0,sysInspectInfo:t.includes("inspect")?sa(r,"sysInspectInfo"):void 0,jvmInfo:t.includes("jvm")?sa(r,"jvmInfo"):void 0,systemEnvirInfo:t.includes("env")?sa(r,"systemEnvirInfo"):void 0})}function aN(r,e,t){if(t.raw)return JSON.stringify(e,null,2);let n=[de(sN(r,e))];for(let o of ER(t)){let i=cN(o,e);i&&n.push("",i)}return n.join(`
|
|
80
|
-
`)}function
|
|
81
|
-
`)}function
|
|
82
|
-
`)}function
|
|
83
|
-
`)}function
|
|
84
|
-
`)}function yN(r){return I({name:r.name,desc:r.desc,version:r.version})}function CN(r){return de({columns:[d("cli.out.header.path")],rows:r.map(e=>[e])})}function SN(r){return de({columns:[d("cli.out.header.path"),d("cli.out.header.error")],rows:r.map(e=>[e.path,en(e.errorInfo)])})}function vN(r){return de({columns:[d("cli.out.header.path"),d("cli.out.workspace.ext.version"),d("cli.out.workspace.ext.targetVersion"),d("cli.out.workspace.ext.kind")],rows:r.map(e=>[e.path,e.currentVersion??"",e.targetVersion,Dp(e.kind)])})}Z();var qp=E(require("fs")),Or=E(require("path"));J();D();qr();F();_();$();var jR=E(require("path"));tt();J();var kN=T("workspace.extension-dev.package");async function VR(r,e){let t=jR.join(r,"package.json"),n=await Re(t);if(!n.trim())return kN.warn(`extension package.json is missing or empty: ${t}`),!1;let o=Qt(n,["name"],e);return o===n?!1:(await vt(t,o),!0)}var VN=vb(),BN=/^[a-z0-9]+(?:-[a-z0-9]+){2,}$/,qN=T("workspace.extension-dev.create"),$p=class{workspace;cachedClient;cachedOptions;constructor(e){this.workspace=e}async prepare(e=nt.INSTANCE){if(e.start(1,{message:d("workspace.extension.progress.templates")}),!await kh(this.workspace.root))throw new ut("err.extension.sysdataNotCloned",{extensionsDir:Or.join(this.workspace.root,En)});let n=await(await this.requireClient()).getExtensionTemplates(),o=Th(n);if(o.length===0)throw new ut("err.extension.templateUnavailable");return this.cachedOptions=o,e.step(1),o}groupOptionsByExtensionPoint(){let e=this.cachedOptions??[],t=new Map;for(let n of e){let o=t.get(n.extensionPoint)??[];o.push(n),t.set(n.extensionPoint,o)}return t}async validate(e){let t=e.extensionName.trim();if(!t)return{ok:!1,error:"empty"};if(!BN.test(t))return{ok:!1,error:"invalidFormat"};let o=t.split("-")[1];return o!==e.extensionPoint?{ok:!1,error:"extensionPointMismatch",actualExtensionPoint:o}:await ie(Wp(this.workspace.root,t))?{ok:!1,error:"targetExists"}:{ok:!0}}async execute(e){let{extensionPoint:t,templateName:n,extensionName:o}=e,i=e.task??nt.INSTANCE;i.start(100,{message:d("workspace.extension.progress.create.running",o),retainOnFinish:!0});let a=i.subTaskMonitor(10),s=i.subTaskMonitor(35),c=i.subTaskMonitor(40),l=i.subTaskMonitor(15);if(a.start(1),!await kh(this.workspace.root))throw new ut("err.extension.sysdataNotCloned",{extensionsDir:Or.join(this.workspace.root,En)});let p=await this.requireOption(t,n),u=Wp(this.workspace.root,o);if(await ie(u))throw new Error(`target extension directory already exists: ${u}`);a.step(1);let g=await this.requireClient();s.start(1);let m=await g.downloadExtensionTemplate(t,n);return s.step(1),c.start(1),await $N(m,u),await VR(u,o),c.step(1),await this.workspace.refreshSyncStatus(l),i.setMessage(d("workspace.extension.progress.create.done",o)),i.finish(),{extensionRoot:u,packageJsonPath:Or.join(u,"package.json"),extensionPoint:t,templateName:n,templateSummary:p.summary}}async requireClient(){return this.cachedClient||(this.cachedClient=await this.workspace.requireClient()),this.cachedClient}async requireOption(e,t){let o=(this.cachedOptions??await this.prepare()).find(i=>i.extensionPoint===e&&i.templateName===t);if(!o)throw new Error(`extension template not found: ${e}/${t}`);return o}};function Th(r){let e=[],t=r.templates??{};for(let[n,o]of Object.entries(t))if(o)for(let[i,a]of Object.entries(o))e.push({extensionPoint:n,templateName:i,summary:a});return e}async function $N(r,e){let n=new VN(r).getEntries();if(n.length===0)throw new Error("extension template zip is empty");await qp.promises.mkdir(e,{recursive:!0});try{let o=Or.resolve(e),i=o+Or.sep,a=[],s=new Set;for(let c of n){let l=c.entryName.replace(/\\/g,"/"),p=Un(l.endsWith("/")?l.slice(0,-1):l,"extension template entry"),u=Or.resolve(o,p);if(u!==o&&!u.startsWith(i))throw new Error(`extension template entry escapes target directory: ${l}`);if(l.endsWith("/")||c.isDirectory){s.add(u);continue}s.add(Or.dirname(u)),a.push({destination:u,entry:c})}await Promise.all(Array.from(s).map(c=>qp.promises.mkdir(c,{recursive:!0}))),await Promise.all(a.map(({destination:c,entry:l})=>qp.promises.writeFile(c,l.getData())))}catch(o){try{await sr(e)}catch(i){qN.debug(`cleanup partial extension directory failed: ${e}`,i)}throw o}}var Mh=class extends te{toOptions(e){return{extensionPoint:e.value("extension-point")}}async executeCommand(e,t){let n=await this.resolveServerUrl(e),o=await this.createServerApiClient(e,n),i=HN(Th(await o.getExtensionTemplates()),t.extensionPoint);return e.output.result(I({workspace:e.workspace?.root,server:n,extensionPoint:t.extensionPoint,templates:i.map(AR)}),()=>LR(i)),0}},kb={path:["server","extension","template","list"],domain:"server",spec:{name:"server extension template list",flags:[{name:"extension-point",takesValue:!0,valueHint:"point",param:{nonEmpty:!0}}],positionals:[],usageArgs:"[<options>]",examples:["succapp server extension template list","succapp --server=https://bi.example.com server extension template list --extension-point=component"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Mh};function HN(r,e){return e?r.filter(t=>t.extensionPoint===e):[...r]}F();_();_n();D();Z();$();var Hp=E(require("fs")),Xe=class extends te{async resolveServerFileTarget(e,t){return{serverUrl:await this.resolveServerUrl(e,t.url),remotePath:lC(t.path)}}createServerFileClient(e,t){return this.createServerApiClient(e,t.serverUrl)}};function dt(r,e={}){let[t,n]=r.positional,o=e.defaultPath;return t===void 0?(o===void 0&&wb(),{path:o}):n===void 0?Sr(t)?(o===void 0&&wb(),{url:t,path:o}):{path:t}:{url:t,path:n}}function wb(){throw new R("err.cli.missingInput",{inputId:"serverFilePath",sources:["<path>"]})}function zp(r){let e=Pe(r.value("file")),t=r.has("stdin");if(e&&t)throw new R("err.cli.conflictingInputs",{inputs:["--file=<local-file>","--stdin"]});if(!e&&!t)throw new R("err.cli.missingInput",{inputId:"contentSource",sources:["--file=<local-file>","--stdin"]});return e?{kind:"file",file:e}:{kind:"stdin"}}async function Gp(r,e,t){if(e.kind==="stdin")return{source:"stdin",content:await t()};let n=He(r.cwd,e.file);if(!(await Ti(n)).isFile())throw new R("err.cli.invalidRegularFile",{inputId:"inputFile",source:n,path:n});return{source:"file",localFile:n,content:Hp.createReadStream(n)}}async function Pb(r,e){try{await Hp.promises.stat(r)}catch(t){if(x(t))return;throw t}if(!e)throw new R("err.cli.confirmationRequired",{reason:"outputOverwrite",flag:"--force",path:r})}function Kp(r,e,t){if(r!==void 0&&e)throw new R("err.cli.conflictingInputs",{inputs:["--expected-revision","--force"],context:{command:t}});if(r===void 0&&!e)throw new R("err.cli.missingInput",{inputId:"revisionOrForce",sources:["--expected-revision=<revision>","--force"],context:{command:t}})}function Tn(r){return I({id:r.id,revision:r.revision,path:r.path,parentDir:r.parentDir,name:r.name,projectName:r.projectName,isFolder:r.isFolder,icon:r.icon,desc:r.desc,type:r.type,subFileType:r.subFileType,order:r.order,creator:r.creator,createTime:r.createTime,modifier:r.modifier,modifyTime:r.modifyTime,hidden:r.hidden,labels:r.labels,size:r.size,hash:r.hash,option:r.option,customOption:r.customOption})}function zN(r){return I({path:r.path,oldPath:r.oldPath,modifyTime:r.modifyTime,contentMutation:r.contentMutation,pathMutation:r.pathMutation,metaInfoChanged:r.metaInfoChanged,metaInfo:r.metaInfo?Tn(r.metaInfo):void 0,warnings:r.warnings})}function da(r,e,t,n){return I({workspace:r.workspace?.root,server:e,path:t.path,source:n?.source,localFile:n?.localFile,result:zN(t)})}async function ua(r,e,t){try{let n=await t();return GN(r,n),n}catch(n){let o=KN(n,r,e);if(!o)throw n;Rb(r,e,o)}}function GN(r,e){e.success||Rb(r,e.path,ss(e.errorInfo,{action:r,path:e.path}))}function Rb(r,e,t){let n=en(t)||d("cli.cmd.server.file.unknownServerFile"),o={action:r,remotePath:e,reason:n,errorInfo:t};throw JN(t)?new Kt("err.base.operationFailed",o,{cause:t}):new ut("err.base.operationFailed",o,{cause:t})}function KN(r,e,t){if(!(!(r instanceof nr)||!r.remoteError))return ss(On(r.remoteError),{action:e,path:t})}function JN(r){let e=kl(r);return e==="pull"||e==="rename"}function Jp(r){return r.length===0?d("cli.cmd.server.file.files"):de({columns:[d("cli.out.header.kind"),d("cli.out.header.type"),d("cli.out.header.revision"),d("cli.out.header.modified"),d("cli.out.file.size"),d("cli.out.header.path")],rows:r.map(e=>[e.isFolder?d("cli.out.file.folder"):d("cli.out.file.file"),rn(e.type),Ws(e.revision),xh(e.modifyTime),Ws(e.size),e.path])})}function Qp(r){return de({columns:[d("cli.out.header.field"),d("cli.out.header.value")],rows:QN(r)})}function ma(r,e){return d("cli.cmd.server.file.success",r,e.path)}function Ws(r){return r===void 0?"":String(r)}function rn(r){return r??""}function xh(r){return r===void 0?"":new Date(r).toISOString()}function QN(r){return[[d("cli.out.file.id"),r.id],[d("cli.out.file.revision"),Ws(r.revision)],[d("cli.out.file.path"),r.path],[d("cli.out.file.parentDir"),r.parentDir],[d("cli.out.file.name"),r.name],[d("cli.out.file.project"),rn(r.projectName)],[d("cli.out.file.kind"),r.isFolder?d("cli.out.file.folder"):d("cli.out.file.file")],[d("cli.out.file.icon"),rn(r.icon)],[d("cli.out.file.description"),rn(r.desc)],[d("cli.out.file.type"),rn(r.type)],[d("cli.out.file.subFileType"),rn(r.subFileType)],[d("cli.out.file.order"),Ws(r.order)],[d("cli.out.file.creator"),rn(r.creator)],[d("cli.out.file.createTime"),xh(r.createTime)],[d("cli.out.file.modifier"),rn(r.modifier)],[d("cli.out.file.modifyTime"),xh(r.modifyTime)],[d("cli.out.file.hidden"),YN(r.hidden)],[d("cli.out.file.labels"),rn(r.labels)],[d("cli.out.file.size"),Ws(r.size)],[d("cli.out.file.hash"),rn(r.hash)]].filter(([,e])=>e!=="")}function YN(r){return r===void 0?"":r?d("cli.out.value.yes"):d("cli.out.value.no")}_();var Ih=class extends Xe{constructor(t=Nt){super();this.readStdin=t}toOptions(t){return{...dt(t),source:zp(t)}}async executeCommand(t,n){let o=await this.resolveServerFileTarget(t,n),i=await this.createServerFileClient(t,o),a=await Gp(t,n.source,this.readStdin),s=await ua("Create",o.remotePath,()=>i.saveFile(o.remotePath,a.content,{expectedRevision:null}));return t.output.result(da(t,o.serverUrl,s,a),()=>ma("Create",s)),0}},bb={path:["server","file","create"],domain:"server",spec:{name:"server file create",flags:[{name:"file",takesValue:!0,valueHint:"local-file",param:{source:"file",type:"string",nonEmpty:!0,inputId:"inputFile"}},{name:"stdin",takesValue:!1,param:{source:"stdin",type:"string"}}],positionals:[{name:"url",role:"server-url"},{name:"path",param:{required:!0}}],inputGroups:[{name:"contentSource",mode:"exactlyOne",inputId:"contentSource",members:["--file","--stdin"]}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file create /DEMO/apps/new.view --file=./new.view",'printf "{}" | succapp server file create /DEMO/apps/new.view --stdin',"succapp server file create https://bi.example.com /DEMO/apps/new.view --file=./new.view"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Ih};D();F();_();Z();$();var Eb=E(require("fs")),Tb=require("stream/promises"),Fh=class extends Xe{toOptions(e){return{...dt(e),revision:e.integer("revision"),upgradeContent:e.has("upgrade-content"),output:e.value("output"),force:e.has("force")}}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),o=He(e.cwd,t.output);await Pb(o,t.force);let a=await(await this.createServerFileClient(e,n)).getFileContentStream(n.remotePath,{revision:t.revision,upgradeContent:t.upgradeContent});try{await(0,Tb.pipeline)(a.stream,Eb.createWriteStream(o,{flags:t.force?"w":"wx"}))}catch(s){throw!t.force&&ec(s)?new R("err.cli.confirmationRequired",{reason:"outputOverwrite",flag:"--force",path:o},{cause:s}):s}return e.output.result(I({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,output:o,revision:a.revision,modifyTime:a.modifyTime}),()=>d("cli.cmd.server.file.download.downloaded",n.remotePath,o)),0}},Mb={path:["server","file","download"],domain:"server",spec:{name:"server file download",flags:[{name:"revision",takesValue:!0,valueHint:"n",param:{type:"integer",min:0}},{name:"upgrade-content",takesValue:!1},{name:"output",takesValue:!0,valueHint:"local-file",param:{required:!0,nonEmpty:!0,inputId:"outputFile"}},{name:"force",takesValue:!1}],positionals:[{name:"url",role:"server-url"},{name:"path",param:{required:!0}}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file download /DEMO/apps/a.view --output=./a.view","succapp server file download --revision=12 /DEMO/apps/a.view --output=./a.view","succapp server file download /DEMO/apps/a.view --output=./a.view --force"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Fh};D();Z();function Yp(r){return r.length===0?d("cli.out.workspace.file.hist.empty"):de({columns:[d("cli.out.header.revision"),d("cli.out.header.action"),d("cli.out.header.modified"),d("cli.out.header.modifier"),d("cli.out.header.path"),d("cli.out.header.message")],rows:r.map(e=>[XN(e.revision),e.action??"",ZN(e.modifyTime),e.modifierName??e.modifier??"",e.path,e.message??""])})}function Xp(r){return I({id:r.id,fileId:r.fileId,path:r.path,revision:r.revision,action:r.action,modifyTime:r.modifyTime,modifier:r.modifier,modifierName:r.modifierName,message:r.message,detail:r.detail})}function XN(r){return r===void 0?"":String(r)}function ZN(r){return r===void 0?"":new Date(r).toISOString()}Z();var Dh=class extends Xe{toOptions(e){return{...dt(e),limit:e.integer("limit")}}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),i=await(await this.createServerFileClient(e,n)).getFileHistory(n.remotePath,{limit:t.limit});return e.output.result(I({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,summary:{histories:i.length},histories:i.map(Xp)}),()=>Yp(i)),0}},xb={path:["server","file","history"],domain:"server",spec:{name:"server file history",flags:[{name:"limit",takesValue:!0,valueHint:"n",param:{type:"integer",min:1}}],positionals:[{name:"url",role:"server-url"},{name:"path",param:{required:!0}}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file history /DEMO/views/sales.view","succapp server file history https://bi.example.com /DEMO/views/sales.view","succapp server file history --limit=20 /DEMO/views/sales.view --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Dh};Z();var Ah=class extends Xe{toOptions(e){return dt(e)}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),i=await(await this.createServerFileClient(e,n)).getFile(n.remotePath);return e.output.result(I({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,file:Tn(i)}),()=>Qp(i)),0}},Ib={path:["server","file","info"],domain:"server",spec:{name:"server file info",flags:[],positionals:[{name:"url",role:"server-url"},{name:"path",param:{required:!0}}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file info /DEMO/apps/a.view","succapp server file info https://bi.example.com /DEMO/apps/a.view","succapp server file info /DEMO/apps/a.view --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Ah};Z();var Oh=class extends Xe{toOptions(e){return dt(e,{defaultPath:"/"})}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),i=await(await this.createServerFileClient(e,n)).listFiles(n.remotePath);return e.output.result(I({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,summary:{files:i.length},files:i.map(Tn)}),()=>Jp(i)),0}},Fb={path:["server","file","list"],domain:"server",spec:{name:"server file list",flags:[],positionals:[{name:"url",role:"server-url"},{name:"path"}],usageArgs:"[<options>] [<url>] [<path>]",examples:["succapp --server=https://bi.example.com server file list /DEMO","succapp server file list https://bi.example.com /DEMO/apps","succapp server file list --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Oh};_();F();D();Ge();Z();var _h=class extends te{toOptions(e){return{...eW(e),outputUrl:e.value("url")}}async executeCommand(e,t){tW(t.id);let n=await this.resolveServerUrl(e,t.url),i=await(await this.createServerApiClient(e,n)).getFileById(t.id),a=hn(n,{path:i.path}),s=hn(n,{path:i.path,":edit":"true"});return e.output.result(rW(e,n,t.id,i,a,s),()=>nW(i,a,s,t.outputUrl)),0}},Db={path:["server","file","locate"],domain:"server",spec:{name:"server file locate",flags:[{name:"url",takesValue:!0,valueHint:"view|edit",description:"cli.cmd.server.file.locate.url",param:{choices:["view","edit"]}}],positionals:[{name:"url",role:"server-url"},{name:"id",param:{required:!0}}],usageArgs:"[<options>] [<url>] <id>",examples:["succapp --server=https://bi.example.com server file locate U5iZW6hsOXExZ9a8swkh3C","succapp server file locate https://bi.example.com U5iZW6hsOXExZ9a8swkh3C","succapp server file locate --url=view U5iZW6hsOXExZ9a8swkh3C"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new _h};function eW(r){let[e,t]=r.positional;if(e===void 0)throw new R("err.cli.missingArgument",{argument:"id"});if(t===void 0){if(Sr(e))throw new R("err.cli.missingArgument",{argument:"id"});return{id:e}}return{url:e,id:t}}function tW(r){if(!wv(r))throw new R("err.cli.invalidChoice",{input:"<id>",value:r,allowedValues:["metadata file id"]})}function rW(r,e,t,n,o,i){return I({workspace:r.workspace?.root,server:e,id:t,path:n.path,viewUrl:o,editUrl:i,file:Tn(n)})}function nW(r,e,t,n){return n==="view"?e:n==="edit"?t:[Qp(r),d("cli.cmd.server.file.locate.viewUrl",e),d("cli.cmd.server.file.locate.editUrl",t)].join(`
|
|
85
|
-
`)}D();Z();var Lh=class extends Xe{constructor(t=Mi){super();this.opener=t}toOptions(t){return{...dt(t),edit:t.has("edit")}}async executeCommand(t,n){let o=await this.resolveServerFileTarget(t,n),i=n.edit===!0,a=hn(o.serverUrl,{path:o.remotePath,...i?{":edit":"true"}:{}});return await this.opener(a,t.abortSignal),t.output.result(I({workspace:t.workspace?.root,server:o.serverUrl,path:o.remotePath,edit:i,url:a}),()=>oW(a,i)),0}},Ab={path:["server","file","open"],domain:"server",spec:{name:"server file open",flags:[{name:"edit",takesValue:!1}],positionals:[{name:"url",role:"server-url"},{name:"path",param:{required:!0}}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file open /DEMO/views/sales.view","succapp server file open https://bi.example.com /DEMO/views/sales.view","succapp server file open --edit /DEMO/views/sales.view --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Lh};function oW(r,e){return d(e?"cli.cmd.server.file.open.openedEdit":"cli.cmd.server.file.open.openedView",r)}_();var Nh=class extends Xe{toOptions(e){return{...dt(e),expectedRevision:e.integer("expected-revision"),force:e.has("force")}}async executeCommand(e,t){Kp(t.expectedRevision,t.force,"server file remove");let n=await this.resolveServerFileTarget(e,t),o=await this.createServerFileClient(e,n),i=await ua("Delete",n.remotePath,()=>o.deleteFile(n.remotePath,t.force?void 0:{expectedRevision:t.expectedRevision}));return e.output.result(da(e,n.serverUrl,i),()=>ma("Delete",i)),0}},Ob={path:["server","file","remove"],domain:"server",spec:{name:"server file remove",flags:[{name:"expected-revision",takesValue:!0,valueHint:"n",param:{type:"integer",min:0,inputId:"revisionOrForce"}},{name:"force",takesValue:!1,param:{inputId:"revisionOrForce"}}],positionals:[{name:"url",role:"server-url"},{name:"path",param:{required:!0}}],inputGroups:[{name:"revisionOrForce",mode:"exactlyOne",inputId:"revisionOrForce",members:["--expected-revision","--force"],sources:["--expected-revision=<revision>","--force"]}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file remove /DEMO/apps/a.view --expected-revision=12","succapp server file remove https://bi.example.com /DEMO/apps/a.view --expected-revision=12","succapp server file remove /DEMO/apps/a.view --force"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Nh};_();F();Z();var Wh="path",Uh="name",jh="parent-dir",_b="project",Lb="type",Nb="sub-type",Wb="min-size",Zp="max-size",Ub="limit",jb="offset",Vb="include-folders",Vh=class extends te{toOptions(e){let t=iW(e),n=aW(e,t.query);return{url:t.url,request:n}}async executeCommand(e,t){let n=await this.resolveServerUrl(e,t.url),i=await(await this.createServerApiClient(e,n)).searchFiles(t.request);return e.output.result(I({workspace:e.workspace?.root,server:n,query:t.request,summary:I({files:i.length,limit:t.request.limit,offset:t.request.offset}),files:i.map(Tn)}),()=>Jp(i)),0}},Bb={path:["server","file","search"],domain:"server",spec:{name:"server file search",flags:[{name:Wh,takesValue:!0,valueHint:"glob"},{name:Uh,takesValue:!0,valueHint:"glob"},{name:jh,takesValue:!0,valueHint:"glob"},{name:_b,takesValue:!0,valueHint:"name"},{name:Lb,takesValue:!0,repeatable:!0,valueHint:"type",param:{list:{separator:","}}},{name:Nb,takesValue:!0,repeatable:!0,valueHint:"type",param:{list:{separator:","}}},{name:Wb,takesValue:!0,valueHint:"bytes",param:{type:"integer",min:0}},{name:Zp,takesValue:!0,valueHint:"bytes",param:{type:"integer",min:0}},{name:Ub,takesValue:!0,valueHint:"n",param:{type:"integer",min:0}},{name:jb,takesValue:!0,valueHint:"n",param:{type:"integer",min:0}},{name:Vb,takesValue:!1}],positionals:[{name:"url",role:"server-url"},{name:"query"}],usageArgs:"[<options>] [<url>] [<query>]",examples:["succapp --server=https://bi.example.com server file search sales","succapp server file search '/DEMO/data/**' --type=tbl --limit=20","succapp server file search --name='*.view'","succapp server file search https://bi.example.com '/DEMO/**' --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Vh};function iW(r){let[e,t]=r.positional;return e===void 0?{}:t===void 0?Sr(e)?{url:e}:{query:e}:{url:e,query:t}}function aW(r,e){let t={},n=Pe(r.value(Wh)),o=Pe(r.value(Uh)),i=Pe(r.value(jh));if(e!==void 0){if(n!==void 0||o!==void 0||i!==void 0)throw new R("err.cli.conflictingInputs",{inputs:["<query>",`--${Wh}`,`--${Uh}`,`--${jh}`]});t.query=e}t.path=n,t.name=o,t.parentDir=i,t.projectName=Pe(r.value(_b));let a=r.values(Lb),s=r.values(Nb);if(t.types=a.length===0?void 0:[...a],t.subTypes=s.length===0?void 0:[...s],t.minSize=r.integer(Wb),t.maxSize=r.integer(Zp),t.minSize!==void 0&&t.maxSize!==void 0&&t.maxSize<t.minSize)throw new R("err.cli.invalidNonNegativeIntegerRange",{input:`--${Zp}`,option:`--${Zp}`,value:String(t.maxSize),min:t.minSize,max:Number.MAX_SAFE_INTEGER});return t.limit=r.integer(Ub),t.offset=r.integer(jb),r.has(Vb)&&(t.includeFolders=!0),I(t)}Z();var Bh=class extends Xe{toOptions(e){return{...dt(e),revision:e.integer("revision"),upgradeContent:e.has("upgrade-content")}}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),i=await(await this.createServerFileClient(e,n)).getFileContent(n.remotePath,{revision:t.revision,upgradeContent:t.upgradeContent});return e.output.content(I({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,revision:i.revision,modifyTime:i.modifyTime,size:i.buffer.length}),i.buffer),0}},qb={path:["server","file","show"],domain:"server",spec:{name:"server file show",flags:[{name:"revision",takesValue:!0,valueHint:"n",param:{type:"integer",min:0}},{name:"upgrade-content",takesValue:!1}],positionals:[{name:"url",role:"server-url"},{name:"path",param:{required:!0}}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file show /DEMO/apps/a.view","succapp server file show --revision=12 /DEMO/apps/a.view","succapp server file show /DEMO/apps/a.view > a.view"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Bh};_();var qh=class extends Xe{constructor(t=Nt){super();this.readStdin=t}toOptions(t){return{...dt(t),source:zp(t),expectedRevision:t.integer("expected-revision"),force:t.has("force")}}async executeCommand(t,n){Kp(n.expectedRevision,n.force,"server file update");let o=await this.resolveServerFileTarget(t,n),i=await this.createServerFileClient(t,o),a=await Gp(t,n.source,this.readStdin),s=await ua("Put",o.remotePath,()=>i.saveFile(o.remotePath,a.content,n.force?void 0:{expectedRevision:n.expectedRevision}));return t.output.result(da(t,o.serverUrl,s,a),()=>ma("Put",s)),0}},$b={path:["server","file","update"],domain:"server",spec:{name:"server file update",flags:[{name:"file",takesValue:!0,valueHint:"local-file",param:{source:"file",type:"string",nonEmpty:!0,inputId:"inputFile"}},{name:"stdin",takesValue:!1,param:{source:"stdin",type:"string"}},{name:"expected-revision",takesValue:!0,valueHint:"n",param:{type:"integer",min:0,inputId:"revisionOrForce"}},{name:"force",takesValue:!1,param:{inputId:"revisionOrForce"}}],positionals:[{name:"url",role:"server-url"},{name:"path",param:{required:!0}}],inputGroups:[{name:"contentSource",mode:"exactlyOne",inputId:"contentSource",members:["--file","--stdin"]},{name:"revisionOrForce",mode:"exactlyOne",inputId:"revisionOrForce",members:["--expected-revision","--force"],sources:["--expected-revision=<revision>","--force"]}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file update /DEMO/apps/a.view --file=./a.view --expected-revision=12",'printf "{}" | succapp server file update /DEMO/apps/a.view --stdin --expected-revision=12',"succapp server file update /DEMO/apps/a.view --file=./a.view --force"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new qh};D();var $h=class extends te{toOptions(e){return{url:e.value("url")}}async executeCommand(e,t){let n=await this.resolveServerUrl(e,t.url),i=await(await this.createServerApiClient(e,n)).getProjects();return e.output.result({...e.workspace?{workspace:e.workspace.root}:{},server:n,projects:i.map(xp)},()=>sW(i)),0}},Hb={path:["server","project","list"],domain:"server",spec:{name:"server project list",flags:[],positionals:[{name:"url",role:"server-url"}],usageArgs:"[<options>] [<url>]",examples:["succapp server project list","succapp --server=https://bi.example.com server project list","succapp server project list http://localhost:8180 --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new $h};function sW(r){return{columns:[d("cli.out.header.project"),d("cli.out.common.id"),d("cli.out.header.description")],rows:r.map(e=>[e.name,e.id??"",e.desc??""])}}_();F();D();var Hh=class extends te{toOptions(e){return{...cW(e),desc:Pe(e.value("desc"))}}validateOptions(e,t){!e.workspace&&!t.url&&!e.config.server&&Kb()}async executeCommand(e,t){let n=await this.resolveServerUrl(e,t.url),i=await(await this.createServerApiClient(e,n)).createProject({name:t.projectName,desc:t.desc});return e.output.result({...e.workspace?{workspace:e.workspace.root}:{},server:n,project:xp(i)},()=>lW(i)),0}},Gb={path:["server","project","create"],domain:"server",spec:{name:"server project create",flags:[{name:"desc",takesValue:!0,valueHint:"text",description:"cli.cmd.server.proj.create.descOption"}],positionals:[{name:"url",role:"server-url"},{name:"project"}],usageArgs:"[<options>] [<url>] <project>",examples:["succapp server project create SALES",'succapp server project create SALES --desc="Sales demo"',"succapp server project create http://localhost:8180 SALES --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Hh};function cW(r){let[e,t]=r.positional;return e===void 0&&zb(),t===void 0?(Sr(e)&&zb(),{projectName:e}):(Sr(e)||Kb(),{url:e,projectName:t})}function zb(){throw new R("err.cli.missingInput",{inputId:"projectName",sources:["<project>"]})}function Kb(){throw new R("err.cli.missingInput",{inputId:"server",sources:["--server=<url>","<url> <project>"]})}function lW(r){return d("cli.cmd.server.proj.create.created",r.name)}D();F();_();Z();var zh="input",Gh="param",fa=class extends te{async executeCommand(e,t){let n=await this.resolveServerUrl(e),o=await this.createServerApiClient(e,n);return this.executeScriptCommand(e,n,o,t)}};function ed(r){return I({result:"result"in r?r.result:void 0,elapsedMs:"elapsedMs"in r?r.elapsedMs:void 0,diagnostics:"diagnostics"in r?r.diagnostics:void 0})}function td(){return d("cli.cmd.server.script.done")}function Jb(r,e){let t=r.trim();if(!Xs(t))return r;try{return JSON.parse(t)}catch(n){throw new R("err.cli.invalidJsonObject",{inputId:"inputFile",source:e,context:{file:e}},{cause:n})}}_();$();var Kh=class extends fa{constructor(t=zn){super();this.readFileText=t}toOptions(t){return{scriptPath:t.value("file")}}async executeScriptCommand(t,n,o,i){let a=await this.readFileText(He(t.cwd,i.scriptPath)),s=await o.checkScript({script:a});return t.output.result({...ne(t,n),path:i.scriptPath,...ed(s)},()=>td()),0}},Qb={path:["server","script","check"],domain:"server",spec:{name:"server script check",flags:[],positionals:[{name:"file",param:{required:!0,source:"file",type:"string",nonEmpty:!0,inputId:"inputFile"}}],usageArgs:"[<options>] <file>",examples:["succapp server script check ./scripts/job.js"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Kh};_();Z();$();var Jh=class extends fa{constructor(t=zn){super();this.readFileText=t}toOptions(t){return{scriptPath:t.value("file"),inputFile:t.value(zh),params:uC(t.values(Gh))}}async executeScriptCommand(t,n,o,i){let a=await this.readFileText(He(t.cwd,i.scriptPath)),s=i.inputFile?Jb(await this.readFileText(He(t.cwd,i.inputFile)),i.inputFile):void 0,c=mC(i.params),l=await o.executeScript({script:a,args:I({input:s,params:c})});return t.output.result({...ne(t,n),path:i.scriptPath,params:c,...ed(l)},()=>td()),0}},Yb={path:["server","script","exec"],domain:"server",spec:{name:"server script exec",flags:[{name:zh,takesValue:!0,valueHint:"file",param:{source:"file",type:"string",nonEmpty:!0,inputId:"inputFile"}},{name:Gh,takesValue:!0,repeatable:!0,valueHint:"key=value"}],positionals:[{name:"file",param:{required:!0,source:"file",type:"string",nonEmpty:!0,inputId:"inputFile"}}],usageArgs:"[<options>] <file>",examples:["succapp server script exec ./scripts/job.js","succapp server script exec ./scripts/job.js --input=./input.json --param=mode=preview"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Jh};F();_();D();Z();$();var tE=E(require("fs")),ha="key",Xo="set",Zo="file",ei="stdin",rd="unset",Qh="expected-revision",pW="system";function nd(r,e={}){let[t,n]=r.positional,o=e.requireTarget===!0;return t===void 0?(o&&Zb(),{}):n===void 0?Sr(t)?(o&&Zb(t),{url:t}):{target:Xb(t)}:{url:t,target:Xb(n)}}function Xb(r){if(r!==pW)return r}function Zb(r){throw new R("err.cli.missingInput",{inputId:"settingsTarget",sources:["<target>"],...r!==void 0?{context:{server:r}}:{}})}function rE(r){let e=r.value(Xo),t=r.value(Zo),n=r.has(ei),o=[];if(e&&o.push(`--${Xo}=<json>`),t&&o.push(`--${Zo}=<local-file>`),n&&o.push(`--${ei}`),o.length>1)throw new R("err.cli.conflictingInputs",{inputs:o});if(e)return{kind:"inline",json:e};if(t)return{kind:"file",file:t};if(n)return{kind:"stdin"}}function nE(r){return r.values(ha)}function oE(r){return r.value(ha)}function iE(r){return r.values(rd)}async function aE(r,e,t,n){if(!e&&t.length===0)throw new R("err.cli.missingInput",{inputId:"settingsPatch",sources:[`--${Xo}=<json>`,`--${Zo}=<local-file>`,`--${ei}`,`--${rd}=<key>`]});let i={...e?await dW(r,e,n):{}};for(let a of t)i[a]=null;return i}async function dW(r,e,t){if(e.kind==="inline"){let a=`--${Xo}`;return eE(e.json,a,a)}if(e.kind==="stdin"){let a=`--${ei}`;return eE(await t(),a,a)}let n=He(r.cwd,e.file);if(!(await Ti(n)).isFile())throw new R("err.cli.invalidRegularFile",{inputId:"inputFile",source:n,path:n});let i=await tE.promises.readFile(n,"utf-8");return uW(i,n)}function eE(r,e,t){let n=sE(r);if(n===void 0)throw new R("err.cli.invalidJsonObject",{input:e,source:t});return n}function uW(r,e){let t=sE(r);if(t===void 0)throw new R("err.cli.invalidJsonObject",{input:`--${Zo}`,source:e});return t}function sE(r){let e=r.trim();if(!e)return;let t;try{t=JSON.parse(e)}catch{return}return W(t)?t:void 0}function cE(r){return r??d("cli.cmd.server.settings.target.system")}function lE(r,e){return`${d("cli.cmd.server.settings.get.header",cE(r))}
|
|
86
|
-
${dE(e)}`}function pE(r,e){let t=Object.keys(e),n=t.length>0?t.join(", "):d("cli.cmd.server.settings.set.noKeys");return`${d("cli.cmd.server.settings.set.success",cE(r),n)}
|
|
87
|
-
${
|
|
82
|
+
`}function IT(r){let e=r.trimEnd(),t=e.split(`
|
|
83
|
+
`),n=t[0],o=t[t.length-1];return K(t.length>=2&&n.startsWith("# BEGIN ")&&o.startsWith("# END "),"Git ignore template must be a marked block."),{begin:n,end:o,content:e}}function _T(r){return new RegExp(`${xT(r.begin)}[\\s\\S]*?${xT(r.end)}`)}function xT(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}Y();V();var wy=E(require("fs")),yr=E(require("path"));ze();V();var CV="resources",SV="workspace-templates",vV="succapp-workspace";async function Xi(r){let e=await Tp(r),t=Rt((await wy.promises.readFile(e,"utf8")).replace(/\r\n/g,`
|
|
84
|
+
`),{...Dr,filePath:e});return K(t,`Workspace template is not a JSON object: ${e}`),t}async function fo(r){return(await wy.promises.readFile(await Tp(r),"utf8")).replace(/\r\n/g,`
|
|
85
|
+
`)}async function Tp(r){let e=await PV(),t=kV(r),n=yr.join(e,...t.split("/"));if(await Se(n))return n;let o=wV(e,t);return o&&await Se(o)?o:n}function Sl(r,e){return Array.isArray(r[e])?r[e].filter(t=>typeof t=="string"):[]}function kV(r){let e=Gr(r);return K(e,`Unsafe workspace template path: ${r}`),e}function wV(r,e){if(yr.posix.basename(e)!==".gitignore")return;let t=yr.posix.dirname(e),n=t==="."?"gitignore.template":yr.posix.join(t,"gitignore.template");return yr.join(r,...n.split("/"))}async function PV(){let r=[CV,SV,vV],e=[yr.resolve(__dirname,"..",...r),yr.resolve(__dirname,"..","..",...r),yr.resolve(__dirname,"..","..","..",...r),yr.resolve(__dirname,"..","..","..","..",...r),yr.resolve(__dirname,"..","..","..","..","..",...r),yr.resolve(process.cwd(),...r)];for(let t of e)if(await Se(t))return t;return e[e.length-1]}var RV=M("workspace.maintenance.support"),Zi=".gitignore",bV=Zi,EV=vl.posix.join(no,Zi);async function Mp(r){try{let e=await r.requireClient();return{client:e,serverInfo:await e.getServerInfo()}}catch(e){RV.debug(`skip server workspace support without server client: ${r.root}`,e);return}}function Py(r,e){return r.capabilities?.includes(e)===!0}function DT(r,e){return!r.capabilities||Py(r,e)}async function FT(r,e){let t=vl.join(r.root,Zi),n=await Cl.read(t);n.upsertMarkedBlock(await fo(bV));let o=vl.join(An(r.root),Zi),i=await Cl.read(o);if(i.upsertMarkedBlock(await fo(EV)),e.apply){let a=await n.save(),s=await i.save();return a||s}return n.hasChanges()||i.hasChanges()}function ar(r){return{code:r.code,taskId:r.taskId,repairable:r.repairable,level:r.level,localPaths:r.localPaths,remotePaths:[],properties:r.properties,execution:r.execution}}var wl=E(require("path"));V();var ds=".agents/skills/succapp-docs",xp="indexes/md-index.json",Ip="indexes/assets-index.json",_p="indexes/metadata-demo-index.json",kl="metadata-examples/DEMO",TV="guide/dev/ai-building/task-driven.md",Ry=".sync-state.json",MV="SUCCAPP_DOCS_BASE_URL",xV="https://docs.succapp.com";function AT(r=process.env){let e=IV(r[MV]||xV);return new URL("md-index.json",`${e}/`).toString()}function OT(r,e){return{schemaVersion:1,skill:"succapp-docs",docSet:r.docSet,product:r.product??"SuccApp",generatedAt:r.generatedAt,updatedAt:e,entrypoints:{skill:"SKILL.md",aiBuilding:"guide/dev/ai-building/README.md",workspace:"guide/dev/ai-building/basics/workspace.md",markdownIndex:xp,assetsIndex:Ip,metadataDemoIndex:_p,metadataDemo:kl,taskRoutes:TV}}}function IV(r){return new URL(r.trim()).toString().replace(/\/+$/,"")}var ps=ds,Pl="dev-types",ho="json-schemas",_V="state.json",LT=".succapp/succ-types",ms=".succapp/json-schemas";function Dp(r){return mr(r,ps,"workspace dev support path")}function NT(r){return wl.join(Dp(r),Pl)}function Fp(r){return wl.join(Dp(r),ho)}function Ap(r){return wl.join(Dp(r),_V)}function Op(r,e){return wl.join(Dp(r),`${e}.tmp-${process.pid}-${Date.now()}`)}function WT(r){return`./${ps}/${ho}/${r}`}var Rl=E(require("fs")),UT=E(require("path"));F();V();async function fs(r,e){let t=await DV(r);if(!t||t.length!==e.size)return!0;for(let n of t)if(!e.has(n))return!0;for(let[n,o]of e){let i=mr(r,n,"workspace dev support file path");if(await FV(i)!==o)return!0}return!1}async function DV(r){try{if(!(await Rl.promises.lstat(r)).isDirectory())return}catch(t){if(_(t))return;throw t}let e=[];return await $T(r,"",e)?e:void 0}async function $T(r,e,t){let n=e?UT.join(r,...e.split("/")):r,o;try{o=await Rl.promises.readdir(n,{withFileTypes:!0})}catch(i){if(_(i))return!1;throw i}for(let i of o){let a=e?`${e}/${i.name}`:i.name;if(i.isDirectory()){if(!await $T(r,a,t))return!1;continue}if(!i.isFile())return!1;t.push(a)}return!0}async function FV(r){try{return(await Rl.promises.lstat(r)).isFile()?await Rl.promises.readFile(r,"utf8"):void 0}catch(e){if(_(e))return;throw e}}nt();var jT=require("crypto");function go(r){return(0,jT.createHash)("sha256").update(r).digest("hex")}Y();re();var AV=M("workspace.maintenance.dev-support-state");async function ea(r){let e=Ap(r),t=await Ue(e);if(!t.trim())return by();try{let n=JSON.parse(t);return LV(n)?n:by()}catch(n){return AV.debug(`skip workspace dev support state because it cannot be parsed: ${e}`,n),by()}}function ta(r,e,t){return r.servers?.[e]?.packages?.[t]}async function Lp(r,e,t,n,o,i){let a=await ea(r),s=ta(a,e,n);if(a.materializedServer===e&&s?.updatedAt&&!bl(s,o))return!1;let c=new Date().toISOString(),l={};for(let[g,m]of Object.entries(a.servers??{})){if(g===e)continue;let f={...m.packages??{}};delete f[n],l[g]={...m,packages:Object.keys(f).length>0?f:void 0}}let u=a.servers?.[e];l[e]={...NV(t),packages:{...u?.packages,[n]:{...o,updatedAt:c}}};let p=Wn({schemaVersion:1,materializedServer:e,servers:l});return p===await Ue(Ap(r))?!1:(i&&await qt(Ap(r),p),!0)}function OV(r,e,t={}){return D({packageId:[r,e.version,e.productType,e.devToolApiVersion].filter(n=>typeof n=="string"&&n.length>0).join("|"),etag:t.etag,lastModified:t.lastModified})}function Np(r,e,t){let n=OV(r,e);return{...n,packageId:go(JSON.stringify({fallback:n.packageId,files:t}))}}function by(){return{schemaVersion:1}}function LV(r){return typeof r=="object"&&r!==null&&(!("servers"in r)||typeof r.servers=="object"&&r.servers!==null&&!Array.isArray(r.servers))}function NV(r){return D({serverVersion:r.version,productType:r.productType,devToolApiVersion:r.devToolApiVersion})}function bl(r,e){return r?r.packageId!==e.packageId||e.etag!==void 0&&r.etag!==e.etag?!0:e.lastModified!==void 0&&r.lastModified!==e.lastModified:!1}var Ey="json-schema-support",VT="err.workspace.issue.E405",WV="jsonSchemaSupport",Ty=M("workspace.maintenance.json-schema-support"),hs=class{capabilities={taskId:Ey,writeScopes:["init"],serverRequirement:"optional"};async refreshOnServerVersionChange(e,t,n){if(!this.supportsJsonSchemaSupport(n))return;let o=await ea(e.root),i=ta(o,t.serverUrl,"jsonSchemas");if(!i&&!await this.hasSuccAppWorkspaceSetting(e.root))return;let a=await this.loadJsonSchemaSupportData(t,n);if(o.materializedServer===t.serverUrl&&i?.updatedAt&&!bl(i,a.packageSignature))return;let s=a.manifest.schemas;await fs(this.getSupportRoot(e.root),qT(s,a.schemaContents))&&await this.materializeFiles(e.root,a.manifest,t,a.schemaContents),await this.updateWorkspaceSettings(e.root,s,!0),await this.updateState(e.root,t.serverUrl,n,a.packageSignature,!0)}async execute(e){return this.maintainJsonSchemaSupport(e,!e.dryRun)}async maintainJsonSchemaSupport(e,t){let n=this.getMaintenancePaths(e.workspace.root),o=await Mp(e.workspace);if(!o)return[this.createSkippedIssue(n,e.dryRun,"server-support-unavailable")];if(!this.supportsJsonSchemaSupport(o.serverInfo))return[this.createSkippedIssue(n,e.dryRun,"server-capability-missing")];let i=this.createMaintenanceRun(e,n,t,o);if(i.applyWorkspaceConfiguration!==!0&&!await this.hasSuccAppWorkspaceSetting(i.root))return[];let a;try{a=await this.createMaintenancePlan(i)}catch(s){return Ty.warn(`plan JSON Schema support failed: ${i.root}`,s),[this.createIssue(i.localPaths,yl(),["schema-files-outdated"])]}if(!i.apply)return a.causes.length>0?[this.createIssue(i.localPaths,Qt(),a.causes)]:[];if(a.causes.length===0)return[];try{let s=a.manifest??await i.client.getJsonSchemaSupport(),c=a.shouldMaterializeSchemas?await this.materializeFiles(i.root,s,i.client,a.schemaContents):s.schemas,l=await this.updateWorkspaceSettings(i.root,c,!0),u=await this.updateState(i.root,i.client.serverUrl,i.serverInfo,a.packageSignature,!0);return a.shouldMaterializeSchemas||l||u?[this.createIssue(i.localPaths,Ot(),a.causes)]:[]}catch(s){return Ty.warn(`apply JSON Schema support failed: ${i.root}`,s),[this.createIssue(i.localPaths,yl(),a.causes)]}}async createMaintenancePlan(e){let t=await this.loadJsonSchemaSupportData(e.client,e.serverInfo),n=t.manifest,o=n.schemas,i=t.schemaContents,a=t.packageSignature,s=await fs(this.getSupportRoot(e.root),qT(o,i)),c=[];return s&&c.push("schema-files-outdated"),await this.updateWorkspaceSettings(e.root,o,!1)&&c.push("settings-outdated"),await this.updateState(e.root,e.client.serverUrl,e.serverInfo,a,!1)&&c.push("state-outdated"),{causes:c,shouldMaterializeSchemas:s,manifest:n,schemaContents:i,packageSignature:a}}createMaintenanceRun(e,t,n,o){return{root:e.workspace.root,localPaths:t,apply:n,...this.createExecutionOptions(o)}}createExecutionOptions(e){return{...e,applyWorkspaceConfiguration:!0}}supportsJsonSchemaSupport(e){return Py(e,WV)}getMaintenancePaths(e){return[this.getSupportRoot(e),UV(e),Hr(e)]}createIssue(e,t,n=[]){return ar({code:VT,taskId:Ey,repairable:!0,level:"info",localPaths:e,properties:{item:"json-schema-support",causes:n},execution:t})}createSkippedIssue(e,t,n){return ar({code:VT,taskId:Ey,repairable:!1,level:"warning",localPaths:e,properties:{item:"json-schema-support"},execution:ri(t,n)})}async materializeFiles(e,t,n,o){let i=this.getSupportRoot(e),a=Op(e,ho);await ni.promises.rm(a,{recursive:!0,force:!0});try{await ni.promises.mkdir(a,{recursive:!0});let s=this.normalizeSchemas(t),c=new Map(s.map(l=>[l.path,l]));return await Promise.all(Array.from(c.values()).map(async l=>{let u=o?.get(l.path),p=u!==void 0?u:await n.downloadJsonSchema(l.source),g=mr(a,l.path,"JSON Schema path");await ni.promises.mkdir(Wp.dirname(g),{recursive:!0}),await ni.promises.writeFile(g,p,"utf8")})),await ni.promises.rm(i,{recursive:!0,force:!0}),await ni.promises.rename(a,i),s}catch(s){throw await ni.promises.rm(a,{recursive:!0,force:!0}).catch(c=>{Ty.debug(`cleanup temporary JSON Schema support directory failed: ${a}`,c)}),s}}async loadJsonSchemaSupportData(e,t){let n=await e.getJsonSchemaSupport(),o=this.normalizeSchemas(n),i={schemas:o},a=await this.downloadSchemaContents(o,e);return{manifest:i,schemaContents:a,packageSignature:$V(t,o,a)}}normalizeSchemas(e){return e.schemas.map(t=>({...t,path:jo(t.path,"JSON Schema path"),source:jo(t.source,"JSON Schema source")}))}async downloadSchemaContents(e,t){let n=new Map,o=Array.from(new Map(e.map(i=>[i.path,i])).values());return await Promise.all(o.map(async i=>{n.set(i.path,await t.downloadJsonSchema(i.source))})),n}async updateWorkspaceSettings(e,t,n){let o=Hr(e),i=await Ue(o),a=Rt(i,{...Dr,filePath:o,ignoreParseError:!0});if(!a)return!1;let s=io(i);return s=this.upsertMissingJsonSchemas(s,a,t),s===io(i)?!1:(n&&await qt(o,s),!0)}async hasSuccAppWorkspaceSetting(e){let t=await Ue(Hr(e)),n=Rt(t,{...Dr,filePath:Hr(e),ignoreParseError:!0});return n?(Array.isArray(n["json.schemas"])?n["json.schemas"]:[]).filter(i=>this.isJsonSchemaSetting(i)).some(i=>this.isSuccAppJsonSchemaUrl(this.normalizeSettingUrl(i.url))):!1}upsertMissingJsonSchemas(e,t,n){let o=Array.isArray(t["json.schemas"])?t["json.schemas"]:[],i=n.filter(u=>u.fileMatch.length>0).map(u=>({fileMatch:u.fileMatch,url:WT(u.path)})),a=new Map(i.map(u=>[this.normalizeSettingUrl(u.url),u])),s=new Set,c=[],l=!1;for(let u of o){if(!this.isJsonSchemaSetting(u)){c.push(u);continue}let p=this.normalizeSettingUrl(u.url);if(!this.isSuccAppJsonSchemaUrl(p)){c.push(u);continue}if(s.has(p)){l=!0;continue}let g=a.get(p);if(!g){l=!0;continue}s.add(p),c.push(g),Xn(u,g)||(l=!0)}for(let u of i){let p=this.normalizeSettingUrl(u.url);s.has(p)||(c.push(u),l=!0)}return l?Fr(e,["json.schemas"],c):e}isJsonSchemaSetting(e){return W(e)&&typeof e.url=="string"}isSuccAppJsonSchemaUrl(e){return e.startsWith(`${ms}/`)||e.startsWith(`${ps}/${ho}/`)}normalizeSettingUrl(e){return ht(e).replace(/^\.\//,"")}async updateState(e,t,n,o,i){return Lp(e,t,n,"jsonSchemas",o,i)}getSupportRoot(e){return Fp(e)}};function UV(r){return Wp.join(r,...ms.split("/"))}function $V(r,e,t){return Np("jsonSchemas",r,[...e].sort((n,o)=>n.path<o.path?-1:n.path>o.path?1:0).map(n=>({path:n.path,fileMatch:n.fileMatch,content:t.get(n.path)??""})))}function qT(r,e){return new Map(r.map(t=>[t.path,e.get(t.path)??""]))}var yo=E(require("fs")),sr=E(require("path"));ze();nt();Y();nt();var El=class r{constructor(e,t){this.filePath=e;this.content=t}content;changed=!1;static async read(e){return new r(e,await Ue(e))}hasChanges(){return this.changed}getContent(){return this.content}upsertProjectReferences(e){let t=Rt(this.content,{...Dr,filePath:this.filePath,ignoreParseError:!0});if(!t)return{updated:!1,mergeRequired:!0};let n=jV(t,e);return n===t?{updated:!1,mergeRequired:!1}:{updated:this.updateContent(Fr(this.content,["references"],n.references)),mergeRequired:!1}}upsertGeneratedContent(e,t={}){return!this.content.trim()||t.overwrite===!0?{updated:this.updateContent(e),overwriteRequired:!1}:this.content===e?{updated:!1,overwriteRequired:!1}:{updated:!1,overwriteRequired:!0}}replaceContent(e){return this.updateContent(e)}async save(){return this.changed?(await qt(this.filePath,io(this.content)),this.changed=!1,!0):!1}updateContent(e){return e===this.content?!1:(this.content=e,this.changed=!0,!0)}};function jV(r,e){let t=Array.isArray(r.references)?[...r.references]:[],n=!Array.isArray(r.references);for(let o of e)t.some(i=>VV(i,o))||(t.push({path:o}),n=!0);return n?{...r,references:t}:r}function VV(r,e){return qV(r)&&r.path===e}function qV(r){return typeof r=="object"&&r!==null&&"path"in r&&typeof r.path=="string"}V();O();var My="typescript-support",BT="err.workspace.issue.E404",BV="typescriptSupport",Ml="tsconfig.json",xy="tsconfig.action.json",Iy="tsconfig.browser.json",HV=sr.posix.join(".vscode","settings.typescript-support.jsonc"),Up=M("workspace.maintenance.typescript-support"),gs=class{capabilities={taskId:My,writeScopes:["init"],serverRequirement:"optional"};async refreshOnServerVersionChange(e,t,n){if(!this.supportsTypeScriptSupport(n))return;let o=await ea(e.root),i=ta(o,t.serverUrl,"devTypes"),a=await this.downloadTypeScriptSupportPackage(t,n);o.materializedServer===t.serverUrl&&i?.updatedAt&&!bl(i,a.signature)||(await fs(Tl(e.root),a.files)&&await this.materializeTypeScriptSupportFiles(e.root,a.files),await this.updateTypeScriptTsConfigs(e.root,{},!0),await this.updateTypeScriptSupportState(e.root,t.serverUrl,n,a.signature,!0))}async execute(e,t){return e.dryRun?this.maintainTypeScriptSupport(e,!1):t!==void 0&&!t.some(n=>n.repairable)?t:this.maintainTypeScriptSupport(e,!0)}async maintainTypeScriptSupport(e,t){let n=await this.getMaintenancePaths(e.workspace.root),o=await Mp(e.workspace);if(!o)return[this.createSkippedIssue(n,!t,"server-support-unavailable")];if(!this.supportsTypeScriptSupport(o.serverInfo))return[this.createSkippedIssue(n,!t,"server-capability-missing")];let i=this.createExecutionOptions(o),a=await this.createMaintenancePlan(e.workspace.root,i);if(!t)return a.causes.length>0?[this.createIssue(n,Qt(),a.causes)]:[];if(a.causes.length===0)return[];try{let s=await this.updateTypeScriptSyncIgnore(e.workspace.root,!0),c=a.signature;a.shouldMaterializeTypes&&await this.materializeTypeScriptSupportFiles(e.workspace.root,a.files);let l=await this.updateTypeScriptTsConfigs(e.workspace.root,i,!0),u=await this.updateTypeScriptSupportState(e.workspace.root,i.client.serverUrl,i.serverInfo,c,!0);return s||a.shouldMaterializeTypes||l||u?[this.createIssue(n,Ot(),a.causes)]:[]}catch(s){return Up.warn(`apply TypeScript support failed: ${e.workspace.root}`,s),[this.createIssue(n,yl(),a.causes)]}}async createMaintenancePlan(e,t){let n=[];await this.updateTypeScriptSyncIgnore(e,!1)&&n.push("sync-ignore-outdated");let o=await this.downloadTypeScriptSupportPackage(t.client,t.serverInfo),i=o.signature,a=await fs(Tl(e),o.files);return a&&n.push("type-files-outdated"),await this.updateTypeScriptTsConfigs(e,t,!1)&&n.push("tsconfig-outdated"),await this.updateTypeScriptSupportState(e,t.client.serverUrl,t.serverInfo,i,!1)&&n.push("state-outdated"),{causes:n,shouldMaterializeTypes:a,signature:i,files:o.files}}createExecutionOptions(e){return{...e,overwriteGeneratedTsConfig:!0}}supportsTypeScriptSupport(e){return DT(e,BV)}async getMaintenancePaths(e){let t=await GV(e);return t.length>0?t:[Tl(e)]}createIssue(e,t,n=[]){return ar({code:BT,taskId:My,repairable:!0,level:"info",localPaths:e,properties:{item:"typescript-support",causes:n},execution:t})}createSkippedIssue(e,t,n){return ar({code:BT,taskId:My,repairable:!1,level:"warning",localPaths:e,properties:{item:"typescript-support"},execution:ri(t,n)})}async materializeTypeScriptSupportFiles(e,t){let n=Tl(e),o=Op(e,Pl);await yo.promises.rm(o,{recursive:!0,force:!0});try{await yo.promises.mkdir(o,{recursive:!0}),await Promise.all(Array.from(t).map(async([i,a])=>{let s=sr.join(o,...i.split("/"));await yo.promises.mkdir(sr.dirname(s),{recursive:!0}),await yo.promises.writeFile(s,a,"utf8")})),await yo.promises.rm(n,{recursive:!0,force:!0}),await yo.promises.rename(o,n)}catch(i){throw await yo.promises.rm(o,{recursive:!0,force:!0}).catch(a=>{Up.debug(`cleanup temporary TypeScript support directory failed: ${o}`,a)}),i}}async updateTypeScriptTsConfigs(e,t,n){let o=An(e);n&&await yo.promises.mkdir(o,{recursive:!0});let i=await this.updateRootTsConfig(e,n),a=await this.updateGeneratedOrMissingTsConfig(sr.join(o,xy),await fo(sr.posix.join(no,xy)),t,n),s=await this.updateGeneratedOrMissingTsConfig(sr.join(o,Iy),await fo(sr.posix.join(no,Iy)),t,n);return i||a||s}async updateRootTsConfig(e,t){let n=sr.join(e,Ml),o=await fo(Ml),i=await El.read(n);if(!i.getContent().trim())return i.replaceContent(o),t?i.save():!0;let a=i.upsertProjectReferences(await JV());return a.mergeRequired?(Up.debug(`skip root tsconfig references merge because it cannot be parsed: ${n}`),!1):a.updated?t?i.save():!0:!1}async updateGeneratedOrMissingTsConfig(e,t,n,o){let i=await El.read(e),a=i.upsertGeneratedContent(t,{overwrite:n.overwriteGeneratedTsConfig===!0});return a.overwriteRequired?(o&&Up.debug(`skip generated tsconfig overwrite without refresh permission: ${e}`),!1):a.updated?o?i.save():!0:!1}async updateTypeScriptSyncIgnore(e,t){let n=Hr(e),o=await Ue(n),i=Rt(o,{...Dr,filePath:n,ignoreParseError:!0});if(!i)return!1;let a=await Xi(HV),s=Sl(a,"succapp.sync.ignore"),c=Array.isArray(i["succapp.sync.ignore"])?i["succapp.sync.ignore"].filter(u=>typeof u=="string"):[],l=s.filter(u=>!c.includes(u));return l.length===0?!1:(t&&(await qt(n,Fr(o,["succapp.sync.ignore"],[...c,...l])),Kt.load()),!0)}async updateTypeScriptSupportState(e,t,n,o,i){return Lp(e,t,n,"devTypes",o,i)}async downloadTypeScriptSupportPackage(e,t){let n=await e.getTypeScriptSupportApiLibs();return{files:zV(n),signature:YV(t,n)}}};async function GV(r){let e=[sr.join(r,Ml),sr.join(An(r),xy),sr.join(An(r),Iy),Tl(r),XV(r)],t=[];for(let n of e)await Se(n)&&t.push(n);return t}function zV(r){let e=new Map;for(let[n,o]of Object.entries(r)){let i=Gr(n);i&&typeof o=="string"&&e.set(i,o)}if(e.has("index.json"))return e;let t=Array.from(e.keys()).filter(n=>n.endsWith(".d.ts")).sort();return e.set("index.json",Wn({schemaVersion:1,entrypoints:KV(t),files:t})),e}function KV(r){let e=[["metadataFileTypes","types/meta/file-types/index.d.ts"],["succApi","types/api/succ.d.ts"]],t=new Set(r),n={};for(let[o,i]of e)t.has(i)&&(n[o]=i);return n}async function JV(){let r=await Xi(Ml),e=Array.isArray(r.references)?r.references.map(t=>QV(t)?t.path:void 0).filter(t=>typeof t=="string"):[];return K(e.length>0,`Workspace template does not declare TypeScript references: ${await Tp(Ml)}`),e}function QV(r){return typeof r=="object"&&r!==null&&"path"in r&&typeof r.path=="string"}function YV(r,e){return Np("devTypes",r,Object.keys(e).sort().map(t=>({path:t,content:e[t]})))}function Tl(r){return NT(r)}function XV(r){return sr.join(r,...LT.split("/"))}var HT=M("workspace.maintenance.support-refresh");async function GT(r,e,t){await r.lockManager.withLock({scopes:["init"],command:"workspace-support-refresh"},async()=>ZV(r,e,t))}async function ZV(r,e,t){try{await new gs().refreshOnServerVersionChange(r,e,t)}catch(n){HT.warn(`refresh TypeScript support after server version change failed: ${r.root}`,n)}try{await new hs().refreshOnServerVersionChange(r,e,t)}catch(n){HT.warn(`refresh JSON Schema support after server version change failed: ${r.root}`,n)}}Nn();oo();Nn();Y();I();O();var KT=E(require("node:path"));it();O();Y();V();Hi();var zT="sync-baseline",_y=50,Co=M("workspace.maintenance.sync-baseline"),$p=class{capabilities={taskId:zT,writeScopes:["sync"],serverRequirement:"required"};async execute(e,t){let n=t!==void 0?[...t]:await this.detectBaselineIssues(e);if(Co.info("sync-baseline maintenance scan result: issues={0} paths={1}",n.length,this.formatIssuePaths(n)),e.dryRun||n.length===0)return n.map(l=>this.withExecution(l,this.createDryRunExecution(l)));let o=await this.listServerProjectNames(e),{repairableIssues:i,unresolved:a}=this.evaluateRepairability(n,o);Co.info("sync-baseline maintenance repair plan: repairable={0} unresolved={1} repairablePaths={2} unresolvedPaths={3}",i.length,a.length,this.formatIssuePaths(i),this.formatIssuePaths(a));let s=[],c=[];if(i.length>0){await this.fetchBaselineProjects(e,i);let l=await this.detectBaselineIssues(e);({repaired:s,unresolved:c}=this.evaluateRepairResult(i,l))}return Co.info("sync-baseline maintenance result: repaired={0} unresolved={1} repairedPaths={2} unresolvedPaths={3}",s.length,a.length+c.length,this.formatIssuePaths(s),this.formatIssuePaths([...a,...c])),[...s.map(l=>this.withExecution(l,Ot())),...a.map(l=>this.withExecution(l,Kn())),...c.map(l=>this.withExecution(l,Kn()))]}async detectBaselineIssues(e){e.task.throwIfAborted(),Co.info("sync-baseline maintenance start: dryRun={0} targets={1}",e.dryRun,this.formatPaths(e.targetRemotePaths));let t=await e.workspace.listWorkspaceProjects(),n=new Set(await e.workspace.listBaselineProjects(e.activeServerUrl)),o=this.resolveTargetProjectNames(e),i=this.resolveTargetRemotePaths(e);Co.info("sync-baseline project lists: workspaceProjects={0} baselineProjects={1} targetProjects={2}",this.formatProjectNames(t),this.formatProjectNames([...n]),o?this.formatProjectNames([...o]):"<all>");let a=new zt(e.workspace.getMirrorRoot(e.activeServerUrl)),s=[],c=t.filter(l=>!o||o.has(l));for(let l of c){if(!n.has(l)){s.push(this.createMissingBaselineProjectIssue(l));continue}let u=await this.detectIncompleteBaselineIssues(a,l);s.push(...this.filterIssuesByTargets(u,i))}return s}async detectIncompleteBaselineIssues(e,t){let n=Bt(t),o=[];return await this.detectDirectoryBaselineIssues(e,t,n,o),o}async detectDirectoryBaselineIssues(e,t,n,o){let i=KT.posix.join(n,te),a=await vn(e.root,i);if(!a.exists){o.push(this.createMissingBaselineMetaIssue(t,n,i));return}if(a.exists&&!a.readable){o.push(this.createUnreadableBaselineMetaIssue(t,n,i));return}let s=Object.keys(a.dotMeta),c=s.find(l=>!this.isValidDotMetaKey(l));if(c){o.push(this.createInvalidBaselineMetaIssue(t,n,i,c));return}for(let l of s){let u=this.joinRemotePath(n,l),p=a.dotMeta[l];if(!await e.exists(u)){o.push(this.createMissingBaselineResourceIssue(t,u));continue}let m=await e.isFolder(u),f=this.getExplicitFolderType(p);if(f!==void 0&&f!==m){o.push(this.createBaselineResourceTypeIssue(t,u,f,m));continue}m&&await this.detectDirectoryBaselineIssues(e,t,u,o)}}resolveTargetProjectNames(e){if(!e.targetRemotePaths||e.targetRemotePaths.length===0)return;let t=e.targetRemotePaths.map(n=>this.getProjectName(ie(n))).filter(n=>!!n);return t.length>0?new Set(t):void 0}resolveTargetRemotePaths(e){if(!(!e.targetRemotePaths||e.targetRemotePaths.length===0))return e.targetRemotePaths.map(t=>ie(t))}filterIssuesByTargets(e,t){return!t||t.length===0?e:e.filter(n=>n.remotePaths.some(o=>t.some(i=>Vo(o,void 0,i,void 0))))}getProjectName(e){let t=dt(e);return t?Je(t):void 0}createMissingBaselineProjectIssue(e){let t=Bt(e);return this.createIssue("err.workspace.issue.E305",!0,[t],{projectName:e,issueCause:"baselineProjectMissing"})}createMissingBaselineResourceIssue(e,t){return this.createIssue("err.workspace.issue.E302",!0,[t],{projectName:e,issueCause:"baselineResourceMissing"})}createBaselineResourceTypeIssue(e,t,n,o){return this.createIssue("err.workspace.issue.E301",!0,[t],{projectName:e,issueCause:"baselineResourceTypeMismatch",expectedType:n?"folder":"file",actualType:o?"folder":"file"})}createMissingBaselineMetaIssue(e,t,n){return this.createIssue("err.workspace.issue.E303",!0,[t],{projectName:e,issueCause:"baselineMetaMissing",dotMetaPath:n})}createUnreadableBaselineMetaIssue(e,t,n){return this.createIssue("err.workspace.issue.E304",!0,[t],{projectName:e,issueCause:"baselineMetaUnreadable",dotMetaPath:n})}createInvalidBaselineMetaIssue(e,t,n,o){return this.createIssue("err.workspace.issue.E304",!0,[t],{projectName:e,issueCause:"baselineMetaInvalidKey",dotMetaPath:n,invalidKey:o})}createIssue(e,t,n,o){return{code:e,taskId:zT,repairable:t,level:t?"warning":"error",localPaths:[],remotePaths:n,properties:o}}async listServerProjectNames(e){let n=await(await e.workspace.requireServerClient(e.activeServerUrl)).getProjects();return Co.info("sync-baseline server projects loaded: count={0} projects={1}",n.length,this.formatProjectNames(n.map(o=>o.name))),new Set(n.map(o=>o.name))}canRepairIssue(e,t){let n=this.getSingleProjectName(e);return!!n&&t.has(n)}evaluateRepairability(e,t){let n=[],o=[];for(let i of e)this.canRepairIssue(i,t)?n.push(i):o.push(this.createServerMissingIssue(i));return{repairableIssues:n,unresolved:o}}createServerMissingIssue(e){let t=this.getSingleProjectName(e);return{...e,code:"err.workspace.issue.E307",repairable:!1,level:"error",properties:{...e.properties,projectName:t??"",issueCause:"serverProjectMissing"}}}evaluateRepairResult(e,t){let n=new Set(t.map(s=>this.getIssueKey(s))),o=new Set(e.map(s=>this.getIssueKey(s))),i=[],a=[];for(let s of e)n.has(this.getIssueKey(s))?a.push(this.createBaselineStillMissingIssue(s)):i.push(s);for(let s of t)o.has(this.getIssueKey(s))||a.push(s);return{repaired:i,unresolved:a}}createBaselineStillMissingIssue(e){return{...e,code:"err.workspace.issue.E306",repairable:!1,level:"error",properties:{...e.properties,originalIssueCause:this.getIssueCause(e),issueCause:"baselineStillMissingAfterFetch"}}}async fetchBaselineProjects(e,t){let n=[...new Set(t.map(o=>this.getSingleProjectName(o)).filter(o=>!!o))];if(n.length===0){Co.info("sync-baseline fetch skipped: no repairable project names");return}Co.info("sync-baseline fetch start: projects={0}",this.formatProjectNames(n)),await new Zo(e.workspace,{projectNames:n,forceRefresh:!0,task:e.task}).execute(),Co.info("sync-baseline fetch done: projects={0}",this.formatProjectNames(n))}createDryRunExecution(e){return e.repairable?Qt():Kn(!0)}withExecution(e,t){return{...e,execution:t}}getIssueKey(e){return[e.code,this.getIssueCause(e),...e.remotePaths].join("|")}getIssueCause(e){let t=e.properties?.issueCause;return typeof t=="string"?t:""}getSingleProjectName(e){let t=e.properties?.projectName;if(typeof t=="string"&&t)return t;let n=e.remotePaths[0];return n?this.getProjectName(n):void 0}getExplicitFolderType(e){if(e.type==="file"||e.hash!==void 0||e.size!==void 0&&e.size>0)return!1;if(e.type)return!0}joinRemotePath(e,t){return e==="/"?"/"+t:e+"/"+t}isValidDotMetaKey(e){return Gr(e)===e&&!e.includes("/")&&e!==te}formatIssuePaths(e){return this.formatPaths(e.flatMap(t=>t.remotePaths))}formatProjectNames(e){return this.formatPaths(e.map(t=>Bt(t)))}formatPaths(e){if(!e||e.length===0)return"<none>";let t=e.slice(0,_y),n=e.length>_y?` ...(+${e.length-_y})`:"";return t.join(",")+n}};O();Y();V();var Cs=E(require("fs")),Pn=E(require("path"));$n();nt();I();Nn();Y();re();F();V();var ys=M("workspace.maintenance.agent-docs-skill"),jp=5e3,e1=/\.(?:avif|bmp|gif|ico|jpe?g|png|svg|webp)$/i,t1=/\.mp4$/i,r1=/\.expected\.md$/i,XT=["README.md"],JT=/!?\[[^\]]*]\(([^)\n]+)\)|^[ \t]{0,3}\[[^\]]+]:[ \t]*(\S+)|\b(?:href|src)=["']([^"']+)["']/gm,Vp=class{constructor(e=i1,t=a1){this.fetchText=e;this.fetchFile=t}async sync(e,t){let n=t.indexUrl??AT(),o=t.task??Pt.INSTANCE;o.start(100,{message:d("workspace.maintenance.agentDocs.progress.indexes")});let i=o.subTaskMonitor(8),a=o.subTaskMonitor(36),s=o.subTaskMonitor(50),c=o.subTaskMonitor(6);i.start(3,{message:d("workspace.maintenance.agentDocs.progress.indexes")});let l=y1(await this.fetchText(n));i.step();let u=await this.fetchAssetsIndex(n);i.step();let p=u?.index,g=u?.text,m=g===void 0?void 0:go(g),f=await this.fetchMetadataDemoIndex(n);i.step();let y=f?.index,C=f?.text,S=C===void 0?void 0:go(C),w=I1(e),h=Pn.join(w,Ry),k=await s1(h),v=Wn(l),b=go(v),R=await Ue(cr(w,xp)),Q=await Ue(cr(w,Ip)),x=await Ue(cr(w,_p)),H=g===void 0||Q===g,j=C===void 0||x===C,oe=m1(p,y);if(y||f1(oe,k),!t.force&&!p1(k)&&u1(l,k)&&d1(oe,k)&&R===v&&H&&j)return a.finish(),s.finish(),c.finish(),o.finish(),l1(l,k);let B={added:0,changed:0,removed:0,skipped:0,unavailable:0,resourcesAdded:0,resourcesChanged:0,resourcesRemoved:0,resourcesSkipped:0,resourcesUnavailable:0},G={},X={},pe=new Set(l.files.map(Ve=>Ve.path));a.start(Math.max(l.files.length,1),{message:d("workspace.maintenance.agentDocs.progress.markdown")}),await Oi([...l.files],async Ve=>{try{let we=cr(w,Ve.path),vt=await c1(we),pc=vt===Ve.sha256,Er;if(pc)B.skipped++,Er=await Ue(we);else{let vi=await this.downloadMarkdown(n,Ve);if(vi===void 0){B.unavailable++;return}Er=vi,t.apply&&await rr(we,Er),vt===void 0?B.added++:B.changed++}if(G[Ve.path]={sha256:Ve.sha256,bytes:Ve.bytes},!p){let vi=R1(Ve.path,Er);for(let Yf of vi)Fy(Yf)||oe.set(Yf,{path:Yf})}}finally{a.step()}}),l.files.length===0&&a.step(),s.start(Math.max(oe.size,1),{message:d("workspace.maintenance.agentDocs.progress.assets")}),await Oi([...oe.values()],async Ve=>{let we=await this.syncResource(w,n,Ve,t.apply);B.resourcesAdded+=we.added,B.resourcesChanged+=we.changed,B.resourcesSkipped+=we.skipped,B.resourcesUnavailable+=we.unavailable,we.file&&(X[Ve.path]=we.file),s.step()}),oe.size===0&&s.step();for(let Ve of Object.keys(k.files))pe.has(Ve)||(B.removed++,t.apply&&await Cs.promises.rm(cr(w,Ve),{force:!0}));for(let Ve of Object.keys(k.resources??{}))oe.has(Ve)||(B.resourcesRemoved++,t.apply&&!Ay(Ve)&&await Cs.promises.rm(cr(w,Ve),{force:!0}));let fe=B.added+B.changed+B.removed>0,U=B.resourcesAdded+B.resourcesChanged+B.resourcesRemoved>0,z=k.syncedAt||new Date().toISOString();c.start(1,{message:d("workspace.maintenance.agentDocs.progress.metadata")});let he=await QT(this.fetchText,n,l,v,b,g,m,C,S,z,G,X),Do=await o1(w,he,pe),sn=fe||U||Do?new Date().toISOString():z;return sn!==z&&(he=await QT(this.fetchText,n,l,v,b,g,m,C,S,sn,G,X),Do=!0),t.apply&&await this.writeGeneratedFiles(w,he,pe),c.step(),o.finish(),{docSet:l.docSet,generatedAt:l.generatedAt,updatedAt:sn,total:l.files.length,added:B.added,changed:B.changed,removed:B.removed,skipped:B.skipped,unavailable:B.unavailable,resourcesAdded:B.resourcesAdded,resourcesChanged:B.resourcesChanged,resourcesRemoved:B.resourcesRemoved,resourcesSkipped:B.resourcesSkipped,resourcesUnavailable:B.resourcesUnavailable,metadataChanged:Do}}async fetchAssetsIndex(e){let t=xl(e,"assets-index.json");try{let n=await this.fetchText(t),o=h1(C1(n));return{index:o,text:Wn(o)}}catch(n){ys.warn(`skip SuccApp docs assets index: ${t}`,n);return}}async fetchMetadataDemoIndex(e){let t=xl(e,"metadata-examples/DEMO/index.json");try{let n=await this.fetchText(t),o=g1(v1(n));return{index:o,text:Wn(o)}}catch(n){ys.warn(`skip SuccApp metadata demo index: ${t}`,n);return}}async downloadMarkdown(e,t){let n=xl(e,t.path);try{let o=await this.fetchText(n);return P1(t,o),o}catch(o){ys.warn(`skip SuccApp docs markdown file: ${n}`,o);return}}async syncResource(e,t,n,o){let i=n.path,a=cr(e,i),s=await M1(a),c=x1(n);if(c&&s&&Dy(s,c))return{added:0,changed:0,skipped:1,unavailable:0,file:s};let l=xl(t,n.urlPath??i),u;try{u=await this.fetchFile(l)}catch(g){return ys.warn(`skip SuccApp docs linked resource: ${l}`,g),{added:0,changed:0,skipped:0,unavailable:1}}let p=tM(u);return c&&!Dy(p,c)?(ys.warn(`skip SuccApp docs linked resource with mismatched checksum: ${l}`),{added:0,changed:0,skipped:0,unavailable:1}):!c&&s&&Dy(s,p)?{added:0,changed:0,skipped:1,unavailable:0,file:s}:(o&&await rr(a,u),{added:s?0:1,changed:s?1:0,skipped:0,unavailable:0,file:p})}async writeGeneratedFiles(e,t,n){for(let[o,i]of Object.entries(t))await rr(cr(e,o),i);for(let o of XT)n.has(o)||await Cs.promises.rm(cr(e,o),{force:!0})}};async function QT(r,e,t,n,o,i,a,s,c,l,u,p){let g=OT(t,l),m={"SKILL.md":await n1(r,e),"manifest.json":Wn(g),[xp]:n,[Ry]:Wn({schemaVersion:1,source:e,syncedAt:l,indexSha256:o,assetsIndexSha256:a,metadataDemoIndexSha256:c,files:u,resources:p})};return i!==void 0&&(m[Ip]=i),s!==void 0&&(m[_p]=s),m}function n1(r,e){return r(xl(e,"SKILL.md"))}async function o1(r,e,t){for(let[n,o]of Object.entries(e))if(await Ue(cr(r,n))!==o)return!0;for(let n of XT)if(!t.has(n)&&(await Ue(cr(r,n))).trim())return!0;return!1}async function i1(r){return await Hc(r,{headers:{Accept:"text/markdown, application/json, text/plain;q=0.9","Accept-Encoding":"gzip"}},{timeoutMs:jp,timeoutMessage:`download timeout after ${jp}ms: ${r}`},async e=>{if(!e.ok)throw await Gc(e),new Error(`download failed: ${r} (${e.status})`);return await e.text()})}async function a1(r){return await Hc(r,{headers:{Accept:"*/*","Accept-Encoding":"gzip"}},{timeoutMs:jp,timeoutMessage:`download timeout after ${jp}ms: ${r}`},async e=>{if(!e.ok)throw await Gc(e),new Error(`download failed: ${r} (${e.status})`);return Buffer.from(await e.arrayBuffer())})}async function s1(r){let e=await Ue(r);if(!e.trim())return{schemaVersion:1,source:"",syncedAt:"",files:{}};try{let t=Rt(e);return{schemaVersion:1,source:typeof t.source=="string"?t.source:"",syncedAt:typeof t.syncedAt=="string"?t.syncedAt:"",indexSha256:typeof t.indexSha256=="string"?t.indexSha256:void 0,assetsIndexSha256:typeof t.assetsIndexSha256=="string"?t.assetsIndexSha256:void 0,metadataDemoIndexSha256:typeof t.metadataDemoIndexSha256=="string"?t.metadataDemoIndexSha256:void 0,files:W(t.files)?YT(t.files):{},resources:W(t.resources)?YT(t.resources):{}}}catch(t){return ys.warn(`ignore invalid SuccApp docs sync state: ${r}`,t),{schemaVersion:1,source:"",syncedAt:"",files:{},resources:{}}}}async function c1(r){try{return go(await Cs.promises.readFile(r))}catch(e){if(_(e))return;throw e}}function YT(r){let e={};for(let[t,n]of Object.entries(r)){if(!W(n))continue;let o=n.sha256,i=n.bytes;typeof o=="string"&&typeof i=="number"&&(e[t]={sha256:o,bytes:i})}return e}function l1(r,e){return{docSet:r.docSet,generatedAt:r.generatedAt,updatedAt:e.syncedAt,total:r.files.length,added:0,changed:0,removed:0,skipped:r.files.length,unavailable:0,resourcesAdded:0,resourcesChanged:0,resourcesRemoved:0,resourcesSkipped:Object.keys(e.resources??{}).length,resourcesUnavailable:0,metadataChanged:!1}}function u1(r,e){return r.files.every(t=>e.files[t.path]?.sha256===t.sha256)}function d1(r,e){for(let t of r.values())if(e.resources?.[t.path]?.sha256!==t.sha256)return!1;return!0}function p1(r){return Object.keys(r.resources??{}).some(Ay)}function m1(r,e){let t=new Map;if(r)for(let n of r.files)ZT(n)||t.set(n.path,n);if(e)for(let n of e.files){let o=T1(n.path);t.set(o,{path:o,urlPath:eM(n.path),bytes:n.size,sha256:n.sha256})}return t}function f1(r,e){for(let[t,n]of Object.entries(e.resources??{}))t.startsWith(`${kl}/`)&&r.set(t,{path:t,urlPath:eM(t.slice(kl.length+1)),bytes:n.bytes,sha256:n.sha256})}function h1(r){return{...r,files:r.files.filter(e=>!ZT(e))}}function g1(r){return{...r,files:r.files.filter(e=>!Fy(e.path))}}function ZT(r){return Fy(r.path)}function Fy(r){return e1.test(r)||t1.test(r)||r1.test(r)?!0:Ay(r)}function Ay(r){let e=Pn.posix.normalize(Je(r).replace(/^\.\//,""));return e.startsWith(`${Pl}/`)||e.startsWith(`${ho}/`)}function y1(r){let e=Rt(r);if(!e||e.schemaVersion!==2||typeof e.docSet!="string"||typeof e.generatedAt!="string"||typeof e.base!="string"||!Array.isArray(e.files))throw new Error("invalid markdown index shape");let t=e.files.map(w1);return{schemaVersion:2,docSet:e.docSet,product:typeof e.product=="string"?e.product:void 0,generatedAt:e.generatedAt,base:e.base,files:t}}function C1(r){let e=Rt(r);if(!e||e.schemaVersion!==1||typeof e.docSet!="string"||typeof e.base!="string"||!Array.isArray(e.files))throw new Error("invalid assets index shape");return{schemaVersion:1,docSet:e.docSet,product:typeof e.product=="string"?e.product:void 0,base:e.base,files:e.files.map(S1)}}function S1(r){if(!W(r)||typeof r.path!="string"||typeof r.bytes!="number"||typeof r.sha256!="string")throw new Error("invalid assets index file entry");return cr("/",r.path),{path:r.path,bytes:r.bytes,sha256:r.sha256}}function v1(r){let e=Rt(r);if(!e||e.schemaVersion!==1||e.source!=="metadata-example"||typeof e.example!="string"||typeof e.root!="string"||typeof e.generatedAt!="string"||!Array.isArray(e.files))throw new Error("invalid metadata example index shape");return{schemaVersion:1,source:"metadata-example",example:e.example,root:e.root,generatedAt:e.generatedAt,files:e.files.map(k1)}}function k1(r){if(!W(r)||typeof r.path!="string"||typeof r.size!="number"||typeof r.sha256!="string")throw new Error("invalid metadata example index file entry");return cr("/",r.path),{path:r.path,size:r.size,sha256:r.sha256}}function w1(r){if(!W(r)||typeof r.path!="string"||typeof r.htmlUrl!="string"||typeof r.title!="string"||typeof r.bytes!="number"||typeof r.sha256!="string")throw new Error("invalid markdown index file entry");return cr("/",r.path),{path:r.path,htmlUrl:r.htmlUrl,title:r.title,bytes:r.bytes,sha256:r.sha256}}function P1(r,e){let t=Buffer.from(e,"utf8");if(t.byteLength!==r.bytes)throw new Error(`downloaded markdown bytes mismatch: ${r.path}`);if(go(t)!==r.sha256)throw new Error(`downloaded markdown sha256 mismatch: ${r.path}`)}function R1(r,e){let t=Pn.posix.dirname(r),n=new Set;JT.lastIndex=0;let o;for(;(o=JT.exec(e))!==null;){let i=E1(t,b1(o[1]||o[2]||o[3]||""));i&&n.add(i)}return[...n].sort()}function b1(r){let e=r.trim();if(e.startsWith("<")){let t=e.indexOf(">");return t>0?e.slice(1,t):e}return e.split(/\s+/)[0]||""}function E1(r,e){if(!e||e.startsWith("#")||e.startsWith("//")||/^[a-z][a-z0-9+.-]*:/i.test(e))return;let t=e.split("#")[0].split("?")[0];if(!t||t.endsWith("/"))return;let n=t.startsWith("/")?Pn.posix.normalize(Je(t)):Pn.posix.normalize(Pn.posix.join(r==="."?"":r,t));if(!n||n==="."||n.startsWith("../")||n==="..")return;let o=Pn.posix.extname(n).toLowerCase();if(!(!o||o===".md"))return cr("/",n),n}function T1(r){return Pn.posix.join(kl,r)}function eM(r){return Pn.posix.join("metadata-examples/DEMO",r)}function xl(r,e){let t=new URL(r);return t.pathname=t.pathname.replace(/[^/]*$/,""),new URL(Je(e),t).toString()}async function M1(r){try{return tM(await Cs.promises.readFile(r))}catch(e){if(_(e))return;throw e}}function tM(r){return{sha256:go(r),bytes:r.byteLength}}function x1(r){if(!(typeof r.bytes!="number"||typeof r.sha256!="string"))return{bytes:r.bytes,sha256:r.sha256}}function Dy(r,e){return r.sha256===e.sha256&&r.bytes===e.bytes}function I1(r){return mr(r,ds,"SuccApp docs skill path")}function cr(r,e){return mr(r,e,"SuccApp docs skill file path")}var Oy="succapp-docs-skill",rM="err.workspace.issue.E407",_1="agentDocsIndexUrl",D1="agentDocsForce",F1=M("workspace.maintenance.agent-docs-skill.task"),Bp=class{constructor(e=new Vp){this.syncer=e}capabilities={taskId:Oy,writeScopes:["init"],serverRequirement:"none"};async execute(e){let t=[mr(e.workspace.root,ds,"SuccApp docs skill path")];try{let n=await this.syncer.sync(e.workspace.root,{indexUrl:this.readIndexUrl(e),apply:!e.dryRun,force:this.readForce(e),task:e.task});return n.added+n.changed+n.removed+n.resourcesAdded+n.resourcesChanged+n.resourcesRemoved+(n.metadataChanged?1:0)>0?[this.createIssue(t,e.dryRun?Qt():Ot(),n)]:[this.createSkippedIssue(t,e.dryRun,"up-to-date",n)]}catch(n){return F1.warn(`sync SuccApp docs skill failed: ${e.workspace.root}`,n),[this.createSkippedIssue(t,e.dryRun,"agent-docs-unavailable")]}}readIndexUrl(e){let t=e.taskOptions?.[_1];return typeof t=="string"&&t.trim()?t.trim():void 0}readForce(e){return e.taskOptions?.[D1]===!0}createIssue(e,t,n){return ar({code:rM,taskId:Oy,repairable:!0,level:"info",localPaths:e,properties:{item:"succapp-docs-skill",...qp(n)},execution:{...t,properties:qp(n)}})}createSkippedIssue(e,t,n,o){return ar({code:rM,taskId:Oy,repairable:!1,level:n==="up-to-date"?"info":"warning",localPaths:e,properties:{item:"succapp-docs-skill",...o?qp(o):{}},execution:{...ri(t,n),properties:{skipCause:n,...o?qp(o):{}}}})}};function qp(r){return{docSet:r.docSet,generatedAt:r.generatedAt,updatedAt:r.updatedAt,total:r.total,added:r.added,changed:r.changed,removed:r.removed,skipped:r.skipped,unavailable:r.unavailable,resourcesAdded:r.resourcesAdded,resourcesChanged:r.resourcesChanged,resourcesRemoved:r.resourcesRemoved,resourcesSkipped:r.resourcesSkipped,resourcesUnavailable:r.resourcesUnavailable}}V();O();var Il="workspace-config",Ly="err.workspace.issue.E201",A1="err.workspace.issue.E202",nM="err.workspace.issue.E203",O1="err.workspace.issue.E204",Hp=class{capabilities={taskId:Il,writeScopes:["config"],serverRequirement:"none"};async execute(e,t){let n=t??await this.detectIssues(e);if(e.dryRun)return n.map(i=>this.withExecution(i,this.planIssue(i)));let o=[];for(let i of n)o.push(this.withExecution(i,await this.applyIssue(e,i)));return o}async detectIssues(e){await e.workspace.config.ensureLoaded();let t=e.workspace.config.get(),n=await Se(e.workspace.config.path);if(!t&&n)return[this.createInvalidJsonIssue(e.workspace.config.path)];if(!t)return[this.createMissingConfigIssue(e.workspace.config.path,e.server)];if(!e.server)return[];if(this.isEmptyServerConfig(t))return[this.createServerRequiredIssue(e.workspace.config.path,e.server)];let o=t.activeServerUrl||void 0;return!o||!gt(e.server,o)?[this.createServerMismatchIssue(e.workspace.config.path,e.server,o)]:[]}planIssue(e){return e.repairable?Qt():Kn(!0)}async applyIssue(e,t){return t.repairable?e.server&&(t.code===Ly||t.code===nM)?(await e.workspace.config.initialize(e.server),Ot()):t.code===Ly?(await e.workspace.config.ensureFile(),Ot()):Kn():Kn()}createMissingConfigIssue(e,t){return{code:Ly,taskId:Il,repairable:!0,level:"warning",localPaths:[e],remotePaths:[],properties:this.removeUndefinedProperties({configPath:e,server:t})}}createInvalidJsonIssue(e){return{code:A1,taskId:Il,repairable:!1,level:"error",localPaths:[e],remotePaths:[],properties:{configPath:e}}}createServerRequiredIssue(e,t){return{code:nM,taskId:Il,repairable:!0,level:"warning",localPaths:[e],remotePaths:[],properties:{configPath:e,server:t}}}createServerMismatchIssue(e,t,n){return{code:O1,taskId:Il,repairable:!1,level:"error",localPaths:[e],remotePaths:[],properties:this.removeUndefinedProperties({configPath:e,server:t,activeServer:n})}}withExecution(e,t){return{...e,execution:t}}isEmptyServerConfig(e){return(e.servers?.length??0)===0&&!e.activeServerUrl}removeUndefinedProperties(e){let t={};for(let[n,o]of Object.entries(e))o!==void 0&&(t[n]=o);return t}};var iM=E(require("fs")),aM=E(require("path"));ze();nt();V();O();var oM="workspace-agent-files",L1="err.workspace.issue.E403",N1="agent-workspace-template.jsonc",Gp=class{capabilities={taskId:oM,writeScopes:["init"],serverRequirement:"none"};async execute(e){let t=await this.maintainTemplateTargets(e.workspace.root,!e.dryRun);return(e.dryRun?t.missingPaths.length>0:t.updated)?[this.createIssue(t.missingPaths,e.dryRun?Qt():Ot())]:[]}async maintainTemplateTargets(e,t){let n=await this.readTemplateTargets(e),o=[],i=!1;for(let a of n.files)await Se(a.targetPath)||(o.push(a.targetPath),t&&(await qt(a.targetPath,await fo(a.relativePath)),i=!0));for(let a of n.directories)await Se(a.targetPath)||(o.push(a.targetPath),t&&(await iM.promises.mkdir(a.targetPath,{recursive:!0}),i=!0));return{missingPaths:o,updated:i}}async readManifest(){let e=await Xi(N1);return{files:Sl(e,"files"),directories:Sl(e,"directories")}}async readTemplateTargets(e){let t=await this.readManifest();return{files:t.files.map(n=>this.toTemplateTarget(e,n)),directories:t.directories.map(n=>this.toTemplateTarget(e,n))}}toTemplateTarget(e,t){let n=W1(t);return{relativePath:n,targetPath:aM.join(e,...n.split("/"))}}createIssue(e,t){return ar({code:L1,taskId:oM,repairable:!0,level:"info",localPaths:e,properties:{item:"agent-files"},execution:t})}};function W1(r){let e=Gr(r);return K(e,`Unsafe workspace template path: ${r}`),e}var Ny=E(require("path"));O();V();var sM="workspace-gitignore",U1="err.workspace.issue.E402",zp=class{capabilities={taskId:sM,writeScopes:["init"],serverRequirement:"none"};async execute(e){return await FT(e.workspace,{apply:!e.dryRun})?[this.createIssue(e,e.dryRun?Qt():Ot())]:[]}createIssue(e,t){return ar({code:U1,taskId:sM,repairable:!0,level:"info",localPaths:$1(e.workspace.root),properties:{item:"gitignore"},execution:t})}};function $1(r){return[Ny.join(r,Zi),Ny.join(An(r),Zi)]}var lM=E(require("path"));nt();re();V();O();var cM="workspace-settings",j1="err.workspace.issue.E401",V1=lM.posix.join(".vscode","settings.recommended.jsonc"),Kp=class{capabilities={taskId:cM,writeScopes:["init"],serverRequirement:"none"};async execute(e){return await this.updateRecommendedSettings(e.workspace.root,!e.dryRun)?[this.createIssue(e,e.dryRun?Qt():Ot())]:[]}async updateRecommendedSettings(e,t){let n=Hr(e),o=await Ue(n),i=Rt(o,{...Dr,filePath:n,ignoreParseError:!0});if(!i)return!1;let a=await Xi(V1),s=io(o);return s=q1(s,i,a),s===io(o)?!1:(t&&await qt(n,s),!0)}createIssue(e,t){return ar({code:j1,taskId:cM,repairable:!0,level:"info",localPaths:[Hr(e.workspace.root)],properties:{item:"workspace-settings"},execution:t})}};function q1(r,e,t){let n=r;for(let[o,i]of Object.entries(t)){if(W(i)){n=H1(n,e,o,i);continue}if(Array.isArray(i)){n=z1(n,e,o,i);continue}e[o]===void 0&&(n=Fr(n,[o],i))}return n}function B1(r,e){return Object.entries(e).filter(([t])=>r[t]===void 0)}function H1(r,e,t,n){let o=G1(e,t),i=B1(o,n);if(i.length===0)return r;let a=r;if(e[t]!==void 0&&!W(e[t]))return Fr(a,[t],{...o,...Object.fromEntries(i)});for(let[s,c]of i)a=Fr(a,[t,s],c);return a}function G1(r,e){return W(r[e])?r[e]:{}}function z1(r,e,t,n){let o=Array.isArray(e[t])?e[t]:[],i=n.filter(a=>!K1(o,a));return i.length===0?r:Fr(r,[t],[...o,...i])}function K1(r,e){return r.some(t=>Xn(t,e))}var Ss=class{tasks=new Map;constructor(){this.register(new Hp),this.register(new Kp),this.register(new zp),this.register(new Gp),this.register(new gs),this.register(new hs),this.register(new Bp),this.register(new $p)}getTask(e){return this.tasks.get(e)}register(e){this.tasks.set(e.capabilities.taskId,e)}};var vs=M("workspace.maintenance"),Jp=class{constructor(e,t,n){this.workspace=e;this.request=t;this.activeServerUrl=n}registry=new Ss;async run(){let e=[],t=this.request.taskIds,n=new Set(this.request.explicitTaskIds??[]);vs.info("workspace maintenance run start: dryRun={0} tasks={1} workspace={2} server={3}",this.request.dryRun===!0,t.join(","),this.workspace.root,this.activeServerUrl??"");let o=this.request.task??Pt.INSTANCE;for(let a=0;a<t.length;a++){let s=t[a],c=d("workspace.maintenance.progress.checking",this.getTaskName(s),a+1,t.length);o.start(100,{message:c,retainOnFinish:!0});let l=new Wy(o.subTaskMonitor(1),c),u=this.registry.getTask(s),p;if(!u)p=[this.createUnsupportedTaskIssue(s)],vs.warn("workspace maintenance task skipped: task={0} reason=notImplemented",s);else if(u.capabilities.serverRequirement==="required"&&!this.activeServerUrl)p=[this.createMissingServerIssue(u,n.has(s))],vs.info("workspace maintenance task skipped: task={0} reason=noActiveServer",s);else{vs.info("workspace maintenance task start: task={0}",s);let g=this.request.issues?this.request.issues.filter(m=>m.taskId===s):void 0;p=await u.execute({workspace:this.workspace,dryRun:this.request.dryRun===!0,explicit:n.has(s),server:this.request.server,activeServerUrl:this.activeServerUrl,targetRemotePaths:this.request.targetRemotePaths,taskOptions:this.request.taskOptions,task:l},g),vs.info("workspace maintenance task done: task={0} issues={1}",s,p.length)}e.push(...p),l.finish(),o.setMessage(this.renderProgressFinishMessage(s,p)),o.finish()}let i=this.createReport(e);return vs.info("workspace maintenance run done: dryRun={0} issues={1} planned={2} applied={3} blocked={4} failed={5}",i.dryRun,i.summary.issues,i.summary.planned,i.summary.applied,i.summary.blocked,i.summary.failed),i}createUnsupportedTaskIssue(e){return{code:"err.workspace.issue.E206",taskId:e,repairable:!1,level:"info",localPaths:[],remotePaths:[],properties:{},execution:{status:"skipped",dryRun:this.request.dryRun===!0}}}createMissingServerIssue(e,t){let n=e.capabilities.taskId,o=this.request.dryRun===!0,i="no-active-server";return{code:"err.workspace.issue.E205",taskId:n,repairable:!1,level:t?"warning":"info",localPaths:[],remotePaths:[],properties:{skipCause:i},execution:t?Kn(o):ri(o,i)}}renderProgressFinishMessage(e,t){let n=this.getTaskName(e);return t.length===0?d("workspace.maintenance.progress.upToDate",n):t.some(o=>o.execution?.status==="failed")?d("workspace.maintenance.progress.failed",n):t.some(o=>o.execution?.status==="blocked")?d("workspace.maintenance.progress.blocked",n):t.some(o=>o.execution?.status==="applied")?d("workspace.maintenance.progress.updated",n):t.every(o=>o.execution?.status==="skipped")?d("workspace.maintenance.progress.skipped",n,this.getSkipCause(t)):d("workspace.maintenance.progress.checked",n)}getSkipCause(e){for(let t of e){let n=t.execution?.properties?.skipCause??t.properties?.skipCause;if(typeof n=="string")return n}return d("workspace.maintenance.progress.skipReason")}getTaskName(e){return d(`workspace.maint.task.${e.replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}`)}createReport(e){let t=0,n=0,o=0,i=0,a=0,s=0;for(let c of e){c.repairable&&t++;let l=c.execution;if(l)switch(l.status){case"planned":n++;break;case"applied":o++;break;case"skipped":i++;break;case"blocked":a++;break;case"failed":s++;break}}return{workspaceRootPath:this.workspace.root,dryRun:this.request.dryRun===!0,serverUrl:this.activeServerUrl,requestedTaskIds:this.request.taskIds,summary:{issues:e.length,repairable:t,planned:n,applied:o,skipped:i,blocked:a,failed:s},issues:e}}},Wy=class r extends td{constructor(t,n){super(t);this.prefix=n}start(t,n){this.delegate.start(t,{...n,message:this.withPrefix(n?.message)})}setMessage(t){this.delegate.setMessage(this.withPrefix(t))}subTaskMonitor(t){return new r(this.delegate.subTaskMonitor(t),this.prefix)}withPrefix(t){return t?`${this.prefix}: ${t}`:this.prefix}};var Qp=class{constructor(e){this.workspace=e}registry=new Ss;async run(e){await this.workspace.ensureConfigLoaded();let t=this.workspace.activeServerUrl||void 0;if(e.dryRun===!0)return this.createRunner(e,t).run();let n=this.resolveWriteScopes(e);if(n.length===0)return this.createRunner(e,t).run();let o=e.task&&e.task!==Pt.INSTANCE?e.task:new Bo;return this.workspace.lockManager.withLock({scopes:n,command:"workspace-maintenance",wait:this.workspace.lockWait},async i=>(o.setAbortSignal(ed(o.getAbortSignal(),i)),this.createRunner({...e,task:o},t).run()))}createRunner(e,t){return new Jp(this.workspace,e,t)}resolveWriteScopes(e){let t=new Set;for(let n of e.taskIds){let o=this.registry.getTask(n);if(o)for(let i of o.capabilities.writeScopes)t.add(i)}return Array.from(t)}};I();$i();var J1=/^\d+\.\d+\.\d+$/;async function dM(r,e){let t=uM(e.version);if(!t)return{downgrades:[]};let n=uM(r),o=zo(t,n);if(o===-1&&n){let i=[{kind:"server",currentVersion:t,baselineVersion:n}];return{downgrades:i,warningMessage:Q1(i)}}return!n||o===void 0||o>0?{downgrades:[],newBaselineVersion:t}:{downgrades:[]}}function uM(r){let e=Or(r);if(e)return J1.test(e)?e:void 0}function Q1(r){if(r.length===0)return;let e=r.map(t=>d("workspace.compat.serverVersion",t.currentVersion,t.baselineVersion));return[d("workspace.compat.connectedServerAppears"),...e].join(`
|
|
86
|
+
`)}var Hy=E(require("fs")),Gy=E(require("path")),kM=E(vM());V();Y();F();var yq=M("workspace.gitignore"),Cq=".gitignore",Sq=new Set(Wa),em=class{constructor(e){this.workspaceRoot=e}matchers=[];async refresh(){let e=[];await this.collectIgnoreMatchers(this.workspaceRoot,"",e),this.matchers=e}matches(e){let t=Ee(e),n=!1;for(let[o,i]of this.matchers.entries()){if(this.isMatcherBaseIgnored(i,o))continue;let a=this.getScopedIgnoreDecision(i,t);a!==void 0&&(n=a)}return n}async collectIgnoreMatchers(e,t,n){let o;try{o=await Hy.promises.readdir(e,{withFileTypes:!0})}catch(a){if(_(a)){yq.debug(`skip unreadable gitignore directory: ${e}`);return}throw a}await this.addDirectoryGitIgnore(e,t,n);let i=o.filter(a=>a.isDirectory()&&!Sq.has(a.name)).sort((a,s)=>a.name.localeCompare(s.name));for(let a of i){let s=t?`${t}/${a.name}`:a.name;await this.collectIgnoreMatchers(Gy.join(e,a.name),s,n)}}async addDirectoryGitIgnore(e,t,n){let o=Gy.join(e,Cq),i;try{i=await Hy.promises.readFile(o,"utf-8")}catch(a){if(_(a))return;throw a}n.push({baseRelativePath:t,matcher:(0,kM.default)({allowRelativePaths:!0}).add(i)})}getScopedIgnoreDecision(e,t){let n=this.toScopedRelativePath(e.baseRelativePath,t);if(n===void 0||n==="")return;let o=this.testIgnore(e,n);if(o.ignored)return!0;if(o.unignored)return!1}testIgnore(e,t){let n=e.matcher.test(t);return n.ignored||n.unignored||t.endsWith("/")?n:e.matcher.test(`${t}/`)}isMatcherBaseIgnored(e,t){if(!e.baseRelativePath)return!1;let n=!1;for(let o=0;o<t;o++){let i=this.getScopedIgnoreDecision(this.matchers[o],e.baseRelativePath);i!==void 0&&(n=i)}return n}toScopedRelativePath(e,t){if(!e)return t;if(t===e)return"";let n=e+"/";if(t.startsWith(n))return t.slice(n.length)}};var pt=E(require("fs")),TM=E(require("os")),tm=E(require("path")),MM=E(bh());Y();ze();F();function xM(r){return new zy(r)}var vq=10*6e4,kq=".lock.json",wq=".lock",wM=1,Lt=M("workspace.lock"),zy=class{root;identity;staleMs;locksDir;hostname;eventBus;listeners=new Set;activeLocks=new Set;eventListenerSubscription;lockWatcher;lockWatcherRequested=!1;lockWatchRefreshTimer;observedScopeHeld=new Map;nextLockId=1;disposed=!1;constructor(e){this.root=e.root,this.identity=e.identity??Fo(),this.staleMs=e.staleMs??vq,this.locksDir=tm.join(this.root,".succapp","locks"),this.hostname=TM.hostname(),this.eventBus=e.eventBus,this.eventBus&&(this.eventListenerSubscription=this.eventBus.on("event.listener.changed",t=>{t.payload.id==="workspace.lock.changed"&&(t.payload.hasListeners?this.startLockWatcher():this.stopLockWatcher())}))}async withLock(e,t){K(!this.disposed,"WorkspaceLockManager has been disposed"),K(e.scopes&&e.scopes.length>0,"LockRequest.scopes must not be empty"),await pt.promises.mkdir(this.locksDir,{recursive:!0});let n=[...new Set(e.scopes)].sort(),o=new AbortController,i=this.nextLockId++,a={id:i,ownerId:`${process.pid}-${Date.now()}-${i}`,request:e,acquired:[],abortController:o,heartbeatTimer:void 0,heartbeatInFlight:void 0,releasing:!1};try{await this.acquireAllScopes(a,n)}catch(c){throw await this.releaseAllScopes(a),c}this.activeLocks.add(a);let s=this.buildHolders(a,n);try{for(let[c,l]of s)await this.writeHolderAtomic(this.holderPathFor(c),l)}catch(c){throw this.activeLocks.delete(a),await this.deleteAllHolders(a),await this.releaseAllScopes(a),c}this.startHeartbeat(a);for(let c of a.acquired)this.emitHolderChanged({scope:c.scope,holder:s.get(c.scope),reason:"acquired"});try{let c=await t(o.signal);if(bM(a))throw new eo(e.command);return c}catch(c){throw bM(a)&&!(c instanceof eo)?new eo(e.command,{cause:c}):c}finally{a.releasing=!0,this.stopHeartbeat(a),await this.waitForHeartbeat(a),await this.deleteAllHolders(a),await this.releaseAllScopes(a),this.activeLocks.delete(a);for(let c of a.acquired)c.compromised||this.emitHolderChanged({scope:c.scope,holder:void 0,reason:"released"})}}async peekHolder(e){let t=this.holderPathFor(e),n;try{n=await pt.promises.readFile(t,"utf-8")}catch(i){if(_(i))return;Lt.debug(`peekHolder failed for ${e}`,i);return}let o=this.parseHolderJson(n,e);if(o)try{let i=await pt.promises.stat(t);return{...o,lastHeartbeat:new Date(i.mtimeMs).toISOString()}}catch(i){return _(i)||Lt.debug(`peekHolder stat failed for ${e}`,i),o}}async peekHolders(e=Ii){let t=await Promise.all(e.map(async n=>{let o=await this.peekHolder(n);return[n,o]}));return new Map(t)}async isHeldLock(e){return this.isHeldLocally(e)?!0:!!await this.peekHolder(e)}isHeldLocally(e){for(let t of this.activeLocks)if(t.acquired.some(n=>n.scope===e&&!n.compromised))return!0;return!1}onHolderChanged(e){return this.listeners.add(e),{dispose:()=>{this.listeners.delete(e)}}}dispose(){if(!this.disposed){this.disposed=!0,this.eventListenerSubscription?.dispose(),this.eventListenerSubscription=void 0,this.stopLockWatcher();for(let e of[...this.activeLocks])e.releasing=!0,this.stopHeartbeat(e),e.abortController.abort("lock-manager-disposed"),(async()=>{await this.waitForHeartbeat(e),await this.deleteAllHolders(e),await this.releaseAllScopes(e)})().catch(t=>{Lt.debug("cleanup lock resources on dispose failed",t)});this.activeLocks.clear(),this.listeners.clear()}}async acquireAllScopes(e,t){for(let n of t){let o=await this.acquireSingleScope(e,n,t);e.acquired.push(o)}}async acquireSingleScope(e,t,n){let o=Date.now()+Pq(e.request.wait),i;for(;;){let a=await this.findBlockingExistingLock(t);if(a.blocked){if(i=a.holder,!PM(o))throw new Pi(e.request.command,n,t,EM(i));await RM(o);continue}try{let s=await MM.lock(this.lockfilePathFor(t),{lockfilePath:this.lockfilePathFor(t),realpath:!1,stale:this.staleMs,retries:0,onCompromised:c=>this.onScopeCompromised(e,t,c)});return{scope:t,lockfilePath:this.lockfilePathFor(t),holderPath:this.holderPathFor(t),release:s,compromised:!1}}catch(s){if(!Fu(s))throw s;if(i=await this.peekHolder(t),PM(o)){await RM(o);continue}throw new Pi(e.request.command,n,t,EM(i))}}}async findBlockingExistingLock(e){try{await pt.promises.stat(this.lockfilePathFor(e))}catch(n){if(_(n))return{blocked:!1};throw n}let t=await this.peekHolder(e);return await this.tryClearStaleLock(e,t)?{blocked:!1}:{blocked:!0,holder:t}}async tryClearStaleLock(e,t){return t?t.hostname!==this.hostname||this.isProcessAlive(t.pid)||!await this.isLockDirStale(e)?!1:(Lt.info(`auto-clear stale lock scope=${e} pid=${t.pid} command=${t.command}`),this.removeLockFiles(e,t)):this.tryClearOrphanedLockDir(e)}async tryClearOrphanedLockDir(e){if(!await this.isLockDirStale(e))return!1;let t=this.lockfilePathFor(e),n=`${t}.stale-${process.pid}-${Date.now()}`;try{await pt.promises.rename(t,n)}catch(o){if(_(o))return!1;throw o}return Lt.info(`auto-clear orphan lock dir scope=${e}`),await pt.promises.rm(n,{recursive:!0,force:!0}).catch(o=>{Lt.debug(`delete orphan lock tombstone ${e} failed`,o)}),!0}async releaseAllScopes(e){for(let t of[...e.acquired].reverse())if(!t.compromised)try{await t.release()}catch(n){Lt.warn(`release scope ${t.scope} failed`,n)}}buildHolders(e,t){let n=new Date().toISOString(),o=e.request.source??this.identity.source,i=new Map;for(let a of t)i.set(a,{version:wM,ownerId:e.ownerId,pid:process.pid,hostname:this.hostname,source:o,command:e.request.command,scope:a,alsoHolds:t.filter(s=>s!==a),startTime:n,lastHeartbeat:n,agentVersion:this.identity.agentVersion});return i}async deleteAllHolders(e){for(let t of e.acquired)try{let n=await this.peekHolder(t.scope);if(!n||n.ownerId!==e.ownerId)continue;await pt.promises.unlink(t.holderPath)}catch(n){if(_(n))continue;Lt.debug(`delete holder json ${t.scope} failed`,n)}}startHeartbeat(e){let t=Math.max(1e3,Math.floor(this.staleMs/2)),n=setInterval(()=>{this.scheduleHeartbeat(e)},t);n.unref?.(),e.heartbeatTimer=n}stopHeartbeat(e){e.heartbeatTimer&&(clearInterval(e.heartbeatTimer),e.heartbeatTimer=void 0)}scheduleHeartbeat(e){if(e.releasing||e.heartbeatInFlight)return;let t=this.refreshHeartbeat(e).finally(()=>{e.heartbeatInFlight===t&&(e.heartbeatInFlight=void 0)});e.heartbeatInFlight=t}async waitForHeartbeat(e){e.heartbeatInFlight&&await e.heartbeatInFlight}async refreshHeartbeat(e){let t=new Date;for(let n of e.acquired)if(!(e.releasing||n.compromised))try{await pt.promises.utimes(n.holderPath,t,t)}catch(o){if(_(o))continue;Lt.debug(`heartbeat refresh failed for ${n.scope}`,o)}}onScopeCompromised(e,t,n){Lt.warn(`lock scope ${t} compromised during ${e.request.command}`,n);let o=e.acquired.find(a=>a.scope===t),i=o?.compromised??!1;o&&(o.compromised=!0),e.abortController.signal.aborted||e.abortController.abort(new eo(e.request.command)),i||this.emitHolderChanged({scope:t,holder:void 0,reason:"compromised"})}async writeHolderAtomic(e,t){let n=`${e}.${process.pid}.${Date.now()}.tmp`;await pt.promises.writeFile(n,JSON.stringify(t,null,2),"utf-8");try{await pt.promises.rename(n,e)}catch(o){throw await pt.promises.unlink(n).catch(()=>{}),o}}parseHolderJson(e,t){try{let n=JSON.parse(e);return typeof n.pid!="number"||typeof n.hostname!="string"||typeof n.command!="string"||typeof n.source!="string"||!bq(n.source)||typeof n.ownerId!="string"||n.ownerId.length===0||typeof n.startTime!="string"?void 0:{version:wM,ownerId:n.ownerId,pid:n.pid,hostname:n.hostname,source:n.source,command:n.command,scope:n.scope??t,alsoHolds:Array.isArray(n.alsoHolds)?[...n.alsoHolds]:[],startTime:n.startTime,lastHeartbeat:typeof n.lastHeartbeat=="string"&&n.lastHeartbeat.length>0?n.lastHeartbeat:n.startTime,agentVersion:typeof n.agentVersion=="string"?n.agentVersion:""}}catch(n){Lt.debug(`parse holder json for ${t} failed`,n);return}}async isLockDirStale(e){try{return(await pt.promises.stat(this.lockfilePathFor(e))).mtimeMs<Date.now()-this.staleMs}catch(t){if(_(t))return!1;throw t}}async removeLockFiles(e,t){let n=this.lockfilePathFor(e),o=this.holderPathFor(e);if(!await this.isLockDirStale(e))return!1;let i=`${n}.stale-${process.pid}-${Date.now()}`;try{await pt.promises.rename(n,i)}catch(s){if(_(s))return!1;throw s}let a=!1;try{let s=await this.peekHolder(e);return Eq(s,t)?(await pt.promises.unlink(o).catch(c=>{if(!_(c))throw c}),!0):(a=await this.restoreTombstoneLock(e,i),!1)}finally{a||await pt.promises.rm(i,{recursive:!0,force:!0}).catch(s=>{Lt.debug(`delete stale lock tombstone ${e} failed`,s)})}}async restoreTombstoneLock(e,t){let n=this.lockfilePathFor(e);try{return await pt.promises.rename(t,n),!0}catch(o){return _(o)||Lt.debug(`restore stale lock tombstone ${e} failed`,o),!1}}isProcessAlive(e){if(e<=0||!Number.isFinite(e))return!1;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}emitHolderChanged(e){for(let t of[...this.listeners])try{t(e)}catch(n){Lt.warn(`holder changed listener threw for ${e.scope}`,n)}this.fireWorkspaceLockChanged(e.scope,e.reason==="acquired",e.holder)}startLockWatcher(){this.lockWatcherRequested=!0,!(this.disposed||this.lockWatcher)&&pt.promises.mkdir(this.locksDir,{recursive:!0}).then(()=>{this.disposed||!this.lockWatcherRequested||this.lockWatcher||(this.lockWatcher=pt.watch(this.locksDir,()=>{this.scheduleLockStateRefresh()}),this.lockWatcher.on("error",e=>{Lt.debug(`workspace lock watcher failed: ${this.root}`,e),this.closeLockWatcher(),this.scheduleLockWatcherRestart()}),this.scheduleLockStateRefresh(0))}).catch(e=>{Lt.debug(`start workspace lock watcher failed: ${this.root}`,e)})}stopLockWatcher(){this.lockWatcherRequested=!1,this.closeLockWatcher(),this.observedScopeHeld.clear()}closeLockWatcher(){this.lockWatchRefreshTimer&&(clearTimeout(this.lockWatchRefreshTimer),this.lockWatchRefreshTimer=void 0),this.lockWatcher&&(this.lockWatcher.close(),this.lockWatcher=void 0)}scheduleLockWatcherRestart(){if(!this.lockWatcherRequested||this.disposed)return;setTimeout(()=>this.startLockWatcher(),1e3).unref?.(),this.observedScopeHeld.clear()}scheduleLockStateRefresh(e=25){this.lockWatchRefreshTimer&&clearTimeout(this.lockWatchRefreshTimer),this.lockWatchRefreshTimer=setTimeout(()=>{this.lockWatchRefreshTimer=void 0,this.refreshObservedLockStates()},e),this.lockWatchRefreshTimer.unref?.()}async refreshObservedLockStates(){if(!(this.disposed||!this.lockWatcher))for(let e of Ii)await this.refreshObservedLockState(e)}async refreshObservedLockState(e){if(this.isHeldLocally(e))return;let t=await this.peekHolder(e);if((t?!0:await this.lockFileExists(e))&&!t){this.scheduleLockStateRefresh(50);return}let o=!!t,i=this.observedScopeHeld.get(e);if(i===void 0&&!o){this.observedScopeHeld.set(e,!1);return}i!==o&&this.fireWorkspaceLockChanged(e,o,t)}async lockFileExists(e){try{return await pt.promises.stat(this.lockfilePathFor(e)),!0}catch(t){return _(t)||Lt.debug(`stat lock file failed for ${e}`,t),!1}}fireWorkspaceLockChanged(e,t,n){this.observedScopeHeld.set(e,t),this.eventBus?.fire(new kt("workspace.lock.changed",{root:this.root,scope:e,held:t,holder:n},this))}lockfilePathFor(e){return tm.join(this.locksDir,`${e}${wq}`)}holderPathFor(e){return tm.join(this.locksDir,`${e}${kq}`)}};function Pq(r){return!r||r<=0?0:r*1e3}function PM(r){return Date.now()<r}async function RM(r){let e=Math.max(0,Math.min(500,r-Date.now()));e>0&&await new Promise(t=>setTimeout(t,e))}var Rq=new Set(Object.values(Ea));function bq(r){return Rq.has(r)}function bM(r){return r.acquired.some(e=>e.compromised)}function Eq(r,e){return r?.ownerId===e.ownerId}function EM(r){if(r)return{pid:r.pid,hostname:r.hostname,source:r.source,command:r.command,scope:r.scope,alsoHolds:r.alsoHolds,startTime:r.startTime,lastHeartbeat:r.lastHeartbeat,agentVersion:r.agentVersion}}var rm=E(require("fs")),IM=E(require("path"));F();I();Y();V();var Ky=M("workspace.connection"),Ps=class{constructor(e){this.workspace=e}async change(e,t,n){return await this.workspace.ensureConfigLoaded(),this.workspace.lockManager.withLock({scopes:["config","sync"],command:"change-server-url",wait:this.workspace.lockWait},()=>this.doChange(e,t,n))}async connect(e,t){await this.workspace.ensureConfigLoaded();let n=this.workspace.config.resolveServerUrl(e);if(!n)throw new Error(`server not configured: ${e}`);if(t){let c=await this.withAuthContext(n,()=>Cd(n,t)),l=await this.withAuthContext(n,()=>this.createVerifiedCredentialConnection(n,c));return await this.storeVerifiedConnectionCredential(n,c,l.client),await this.setActiveServerUrlForConnection(n),{serverUrl:n,connection:l}}if(!await Ai(n))throw new ft({workspaceRoot:this.workspace.root,serverUrl:n});let i=this.createServerClient(n);await i.verify();let a=await i.getServerInfo();Ky.info(`session restored: ${n}`);let s={serverUrl:n,connection:{client:i,serverInfo:a}};return await this.setActiveServerUrlForConnection(n),s}async doChange(e,t,n){let o=this.workspace.config.resolveServerUrl(e);if(!o)throw new Error(d("workspace.server.serverNotConfigured",e));let i=this.workspace.config.validateServerUrlChange(o,t),a=n?await this.withAuthContext(i,()=>Cd(i,n)):void 0,s=a?await this.withAuthContext(i,()=>this.createVerifiedCredentialConnection(i,a)):void 0,c=dn(o),l=dn(i),u=this.workspace.getMirrorRoot(o),p=this.workspace.getMirrorRoot(i),g=!1,m=!1,f="";try{if(c!==l&&await Se(u)){if(await Se(p))throw new Error(d("workspace.server.serverMirrorExists",p));await rm.promises.mkdir(IM.dirname(p),{recursive:!0}),await rm.promises.rename(u,p),g=!0}return f=await this.workspace.config.changeServerUrl(o,i),m=!0,a&&s&&await this.storeVerifiedConnectionCredential(f,a,s.client),{oldServerUrl:o,serverUrl:f,connection:s}}catch(y){throw await this.rollbackServerUrlChange({configChanged:m,changedServerUrl:f,oldConfiguredServerUrl:o,mirrorMoved:g,oldMirrorRoot:u,newMirrorRoot:p}),y}}async rollbackServerUrlChange(e){if(e.configChanged)try{await this.workspace.config.changeServerUrl(e.changedServerUrl,e.oldConfiguredServerUrl)}catch(t){Ky.warn(`rollback server config failed: ${e.changedServerUrl} -> ${e.oldConfiguredServerUrl}`,t)}if(e.mirrorMoved)try{await rm.promises.rename(e.newMirrorRoot,e.oldMirrorRoot)}catch(t){Ky.warn(`rollback server mirror failed: ${e.newMirrorRoot} -> ${e.oldMirrorRoot}`,t)}}async setActiveServerUrlForConnection(e){await this.workspace.lockManager.withLock({scopes:["config","sync"],command:"switch-active-server",wait:this.workspace.lockWait},async()=>{await this.workspace.config.setActiveServerUrl(e)})}async withAuthContext(e,t){try{return await t()}catch(n){throw n instanceof ft&&n.withContext({workspaceRoot:this.workspace.root,serverUrl:e}),n}}async createVerifiedCredentialConnection(e,t){let n=this.createServerClient(e,{initialCredential:t});await n.verify();let o=await n.getServerInfo();return{client:n,serverInfo:o}}async storeVerifiedConnectionCredential(e,t,n){await ng(e,t)}createServerClient(e,t={}){return new jn(e,{workspaceRoot:this.workspace.root,...t})}};var Cr=M("workspace"),Tq=6e4,Jy=class{constructor(e,t,n,o=Mc){this.root=e;this.eventBus=t;this.lockWait=o;this.connectedServerUrl=n?.connected?n.serverUrl:void 0,this.config=new pp(e,t,Gg()),this.gitIgnore=new em(e),this.lockManager=xM({root:e,eventBus:t}),this.disposables.add(this.lockManager),this.syncStatusTracker=new Rp(this),this.disposables.add(this.eventBus.on("workspace.config.changed",i=>{i.payload.root===this.root&&this.onConfigChanged()})),this.startAutoSyncScheduler()}disposables=new ti;config;connectedServerUrl;syncStatusTracker;gitIgnore;lockManager;fileChangeRefresh;metadataVersionCatalog=Wi.empty();metadataVersionCatalogLoaded=!1;initialized=!1;connectionInitializing=!1;autoSyncScheduler=null;startAutoSyncScheduler(){if(Fo().source!=="ide")return;let e={onAutoPush:async()=>{let n=this.syncStatusTracker.getLocalChanges();if(n.length===0||await this.shouldYieldAutoSync())return;await this.createSyncService({agentSource:"auto-sync"}).push({changes:n})},onAutoPull:async()=>{if(await this.shouldYieldAutoSync())return;await this.createSyncService({agentSource:"auto-sync"}).pull()}},t=new mp(this.root,this.eventBus,e);this.autoSyncScheduler=t,this.disposables.add(this.eventBus.on("settings.changed",n=>{n.payload.changedKeys.some(o=>o==="sync.autoPush"||o==="sync.autoPull"||o==="sync.autoPullInterval")&&this.autoSyncScheduler?.refreshAutoSync()})),this.disposables.add(t),t.startAutoPull()}get activeServerUrl(){return this.connectedServerUrl??this.config.getActiveServerUrl()}get isConnected(){return this.connectedServerUrl!==void 0}async ensureConfigLoaded(){await this.config.ensureLoaded()}async ensureActiveServerReady(){await this.ensureConfigLoaded();let e=this.activeServerUrl;if(!e)throw new Vt(e);return e}async requireClient(){return this.requireServerClient()}async requireServerClient(e){await this.ensureConfigLoaded();let t=e??this.config.getActiveServerUrl();if(!t)throw new Vt(t);let n=this.resolveConfiguredServerUrl(t),o=await this.createDetachedClient(n);return e===void 0&&(this.connectedServerUrl=o.serverUrl,this.updateConnectionStatus()),this.createDiagnosticClient(o)}async ensureMetadataVersionCatalogLoaded(){this.metadataVersionCatalogLoaded||await fn(this,"metadataVersionCatalog",async()=>{this.metadataVersionCatalogLoaded||(this.metadataVersionCatalog=await(await this.requireServerClient()).getMetadataVersions(),this.metadataVersionCatalogLoaded=!0)})}async resolveRemoteFilePath(e){let t=await this.resolveRemoteFilePathServerUrl(e.serverUrl),n=e.serverUrl?await this.requireServerClient(t):await this.requireServerClient(),o=await this.resolveWorkspaceRemoteFilePath(e.path,t,n);return{path:e.path,remotePath:o,serverUrl:t}}async resolveRemoteFilePathServerUrl(e){return e?(await this.ensureConfigLoaded(),this.resolveConfiguredServerUrl(e)):this.ensureActiveServerReady()}async resolveWorkspaceRemoteFilePath(e,t,n){let o=new zt(this.getMirrorRoot(t));return new ns({workspaceRoot:this.root,mirror:o,workspace:new Qr(this.root,o),getServerProjects:()=>n.getProjects()}).resolve(e,"server-backed")}disconnectServers(...e){let t=new Set(e.map(n=>dn(n)));this.connectedServerUrl&&t.has(dn(this.connectedServerUrl))&&(this.connectedServerUrl=void 0)}applyServerConnection(e,t={}){this.connectedServerUrl=e.client.serverUrl,this.updateMetadataVersions(e.serverInfo),this.updateConnectionStatus(),this.refreshSyncStatusAfterConnection(t),t.refreshWorkspaceSupport!==!1&&this.refreshWorkspaceSupportIfNeeded(e.serverInfo)}createDiagnosticClient(e){return mb(e)}async createDetachedClient(e){if(await this.ensureConfigLoaded(),!this.config.hasServer(e))throw new Vt(e);let t=new jn(e,{workspaceRoot:this.root});if(await t.verify(),!this.config.hasServer(e))throw new Vt(e);return t}resolveConfiguredServerUrl(e){let t=this.config.resolveServerUrl(e);if(!t)throw new Vt(e);return t}async listWorkspaceProjects(){await this.ensureConfigLoaded();let e=new Qr(this.root,this.createWorkspaceListingMirror());return this.toProjectNames(await e.listProjectPaths())}async listBaselineProjects(e){await this.ensureConfigLoaded();let t=e??this.activeServerUrl;if(!t)return[];let n=new zt(this.getMirrorRoot(t));return this.toProjectNames(await n.listProjectPaths())}getMetaProjectLocalPath(e){let t=e.trim();if(!t||t.includes("/")||t.includes("\\"))throw new Error(`invalid metadata project name: ${e}`);return this.getMetaFileLocalPath("/"+t)}getMetaFileLocalPath(e){return bP(this.root,e)}async countWorkspaceFiles(e,t){return await this.ensureConfigLoaded(),new Qr(this.root,this.createWorkspaceListingMirror()).countFiles(e,t)}async startIdeRuntime(){this.initialized||await fn(this,"startIdeRuntime",async()=>{await this.doStartIdeRuntime(),this.initialized=!0})}async waitInitialized(){this.initialized||await Bh(this,"startIdeRuntime")?.catch(()=>{})}async doStartIdeRuntime(){let e=!1;this.connectionInitializing=!0;try{await this.config.load(),this.syncStatusTracker.startBackgroundRemoteDiscovery({intervalMs:Tq}),this.fireConnectionStateChanged(!0),await this.refreshGitIgnore(),this.initializeFileWatcher(),await this.tryAutoConnect({refreshSyncStatus:!1}),e=!0}finally{this.connectionInitializing=!1,this.fireConnectionStateChanged()}e&&this.refreshSyncStatus().catch(t=>{Cr.warn(`refresh sync status after IDE runtime start failed: ${this.root}`,t)})}applySyncOperationResult(e,t=[]){this.syncStatusTracker.applyOperationResult(e,t)}applyFileWatchSyncStatus(e,t){this.syncStatusTracker.applyFileWatchResult(e,t)}clearSyncStatus(){this.syncStatusTracker.clear()}async refreshSyncStatus(e){await this.refreshSyncStatusState({task:e})}async refreshSyncStatusState(e={}){await this.ensureConfigLoaded();let t=["refreshSyncStatus",e.scope??"both",e.forceRefresh===!0?"force":"normal"].join(":"),n=e.task,o=!!Bh(this,t),i=fn(this,t,()=>(Cr.info("refresh sync status start: {0}",this.root),this.onSyncStatusRefreshing(),this.syncStatusTracker.refreshAll(e)));o&&n&&n.start(1,{message:d("workspace.sync.progress.refresh.running")});let a=await i;return n&&o&&n.step(1),o||Cr.info("refresh sync status done: {0}",this.root),a}getSyncChanges(){return this.syncStatusTracker.getChanges()}getSyncSummary(){return this.syncStatusTracker.getSummary()}refreshGitIgnore(){return this.gitIgnore.refresh()}isGitIgnored(e){return this.gitIgnore.matches(e)}getSyncStatusTracker(){return this.syncStatusTracker}async consumeFileChanges(e,t={}){if(e.some(o=>{if(Rn.basename(o.filePath)!==".gitignore")return!1;let i=Rn.relative(this.root,Rn.resolve(o.filePath));return!!i&&!i.startsWith("..")&&!Rn.isAbsolute(i)})){await this.refreshGitIgnore(),await this.refreshSyncStatus();return}return this.syncStatusTracker.consumeFileChanges(e,t)}clearSyncStatusTargets(e){this.syncStatusTracker.clearTargets(e)}notifySyncStatusChanged(){this.fireSyncStatusChanged()}initializeFileWatcher(){if(this.fileChangeRefresh)return;let e=Gg();e&&(this.fileChangeRefresh=new bp(this,this.eventBus,e,{},this.lockManager))}cancelPendingSyncStatusRefresh(){this.fileChangeRefresh?.cancelPendingRefresh()}async flushPendingFileChangeRefresh(){await this.fileChangeRefresh?.flushPendingRefresh()}onSyncStatusRefreshing(){this.cancelPendingSyncStatusRefresh()}async addServer(e){return this.lockManager.withLock({scopes:["config","sync"],command:"add-server",wait:this.lockWait},async()=>(await this.config.addServer(e),this.config.getActiveServerUrl()))}async verifyServerReachable(e){let t=_e(e);return await cd(t),t}async removeServer(e){return await this.ensureConfigLoaded(),this.lockManager.withLock({scopes:["config","sync"],command:"remove-server",wait:this.lockWait},async()=>{let t=this.config.getActiveServerUrl(),n=this.config.resolveServerUrl(e)??e;await this.config.removeServer(e),this.disconnectServers(n);let o=t!==this.config.getActiveServerUrl();return o&&(this.updateMetadataVersions(),this.updateConnectionStatus()),o})}async changeServerUrl(e,t,n){let o=await new Ps(this).change(e,t,n);return this.disconnectServers(o.oldServerUrl,o.serverUrl),o.connection&&(this.applyServerConnection(o.connection),Cr.info(`login succeeded: ${o.serverUrl}`)),o.serverUrl}async switchActiveServer(e){await this.ensureConfigLoaded();let t=this.config.resolveServerUrl(e);if(!t)throw new Error(d("workspace.server.serverNotConfigured",e));return await this.lockManager.withLock({scopes:["config","sync"],command:"switch-active-server",wait:this.lockWait},async()=>{await this.config.setActiveServerUrl(t)}),this.config.getActiveServerUrl()}async readTargetStatusSnapshot(e){await this.ensureConfigLoaded();try{let[t,n,o,i]=await Promise.all([this.readTargetSideSnapshot(this.root,e.remotePath,{returnStat:!0}),this.readTargetSideSnapshot(this.getMirrorRoot(),e.remotePath,{returnStat:!0}),ot(this.root,e.remotePath),ot(this.getMirrorRoot(),e.remotePath)]),a=await this.isTargetContentChanged(e.remotePath,t,n);return a===void 0?this.unknownTargetStatusSnapshot(e.remotePath):{remotePath:e.remotePath,workspace:{...t,fileId:o?.id,identity:t.identity??o?.id},mirror:{...n,fileId:i?.id,identity:n.identity??i?.id},contentChanged:a,metaChanged:!this.isMetaInfoEqual(o,i)}}catch(t){return Cr.debug(`read target status snapshot failed: ${e.remotePath}`,t),this.unknownTargetStatusSnapshot(e.remotePath)}}async readTargetSideSnapshot(e,t,n={}){try{let o=await nm.promises.stat(ge(e,t)),i=o.isFile()?"file":o.isDirectory()?"folder":"unknown",a=n.returnStat&&o.isFile()?{size:o.size,mtimeMs:o.mtimeMs}:void 0;return{kind:i,contentStat:a}}catch(o){if(_(o))return Cr.debug(`target side path does not exist: ${e}:${t}`),{kind:"missing"};throw o}}async isTargetContentChanged(e,t,n){if(t.kind!=="file"||n.kind!=="file")return!1;let o=t.contentStat,i=n.contentStat;if(o&&i)return this.compareFileContentStats(o,i);try{let[a,s]=await Promise.all([nm.promises.stat(ge(this.root,e)),nm.promises.stat(ge(this.getMirrorRoot(),e))]);return this.compareFileContentStats(a,s)}catch(a){Cr.debug(`cannot compare target stat cache for ${e}`,a);return}}compareFileContentStats(e,t){if(e.size!==t.size)return!0;if(e.mtimeMs===t.mtimeMs)return!1}isMetaInfoEqual(e,t){return!e&&!t?!0:!e||!t?!1:qi(e,t)}unknownTargetStatusSnapshot(e){return{remotePath:e,workspace:{kind:"unknown"},mirror:{kind:"unknown"}}}async tryAutoConnect(e={}){await this.ensureConfigLoaded();let t=this.config.getActiveServerUrl();if(t){if(this.connectedServerUrl&&dn(this.connectedServerUrl)===dn(t)){this.updateConnectionStatus();return}try{let n=await new Ps(this).connect(t);this.applyServerConnection(n.connection,e)}catch(n){if(!(n instanceof ft))throw n;Cr.debug(`stored credential invalid for ${t}`,n),this.updateConnectionStatus()}}}async connect(e,t){let n=await new Ps(this).connect(e,t);return this.applyServerConnection(n.connection),t&&Cr.info(`login succeeded: ${n.connection.client.serverUrl}`),!0}disconnect(){this.connectedServerUrl=void 0,this.updateMetadataVersions(),this.updateConnectionStatus(),Cr.info("disconnected")}updateConnectionStatus(){this.connectionInitializing||this.fireConnectionStateChanged()}onConfigChanged(){let e=this.connectedServerUrl;e&&dn(e)!==dn(this.config.getActiveServerUrl())&&(this.cancelPendingSyncStatusRefresh(),this.clearSyncStatus(),this.disconnectServers(e),this.updateMetadataVersions(),this.updateConnectionStatus())}refreshSyncStatusAfterConnection(e={}){e.refreshSyncStatus!==!1&&this.refreshSyncStatus().catch(t=>{Cr.warn(`refresh sync status after connection failed: ${this.root}`,t)})}async refreshWorkspaceSupportIfNeeded(e){let t=this.connectedServerUrl;if(t)try{let n=await this.createDetachedClient(t),o=this.createDiagnosticClient(n),i=e??await o.getServerInfo();this.updateMetadataVersions(i),await this.warnIfServerLooksOlder(i),await GT(this,o,i)}catch(n){Cr.warn(`refresh workspace support after server version change failed: ${this.root}`,n)}finally{this.updateConnectionStatus()}}async warnIfServerLooksOlder(e){try{let t=this.config.getServerVersion(),n=await dM(t,e);if(n.newBaselineVersion&&await this.lockManager.withLock({scopes:["config"],command:"set-server-version",wait:this.lockWait},async()=>{await this.config.setServerVersion(n.newBaselineVersion)}),!n.warningMessage)return;this.eventBus.fire(new kt("user.notification.requested",{level:"warning",message:n.warningMessage},this))}catch(t){Cr.warn(`check server compatibility baseline failed: ${this.root}`,t)}}fireConnectionStateChanged(e=!1){this.eventBus.fire(new kt("workspace.connection.changed",{root:this.root,connected:this.isConnected,serverUrl:this.activeServerUrl,initializing:e},this))}notifySyncStatusRefreshing(e,t){this.eventBus.fire(new kt("workspace.sync.status.refreshing",{root:this.root,refreshTask:e,progressVisible:t},this))}fireSyncStatusChanged(){this.eventBus.fire(new kt("workspace.sync.status.changed",{root:this.root},this))}createSyncService(e){return cy(this,e)}runMaintenance(e){return new Qp(this).run(e)}notifyLocalProjectsChanged(){this.eventBus.fire(new kt("workspace.local.projects.changed",{root:this.root,serverUrl:this.activeServerUrl},this))}async getMetadataVersionCatalog(){return await this.ensureMetadataVersionCatalogLoaded(),this.metadataVersionCatalog}updateMetadataVersions(e){this.metadataVersionCatalog=Wi.fromServerVersions(e?.metadataVersions),this.metadataVersionCatalogLoaded=e!==void 0}dispose(){this.disposables.dispose(),this.config.dispose(),this.syncStatusTracker.dispose(),this.fileChangeRefresh?.dispose(),this.fileChangeRefresh=void 0}async shouldYieldAutoSync(){let e=await this.lockManager.peekHolders(["config","sync"]),t=this.lockManager.staleMs;for(let n of e.values()){if(!n)continue;if(Date.now()-new Date(n.lastHeartbeat).getTime()<t&&(n.source==="ide"||n.source==="cli"))return Cr.info(`auto-sync yield to ${n.command}`),!0}return!1}getMirrorRoot(e=this.activeServerUrl){return Rn.join(this.root,".succapp","remote",dn(e))}createWorkspaceListingMirror(){let e=this.activeServerUrl?this.getMirrorRoot(this.activeServerUrl):Rn.join(this.root,".succapp","remote","__workspace__");return new zt(e)}toProjectNames(e){return e.map(t=>Je(t)).sort((t,n)=>t.localeCompare(n))}},Mq=Jy;function Rs(r){return new Mq(r.root,r.eventBus,r.client,r.lockWait)}var bn=M("cli.versionUpdate"),xq="version-check.json",Iq="server-version-check.json",bs=1,_q="@succsoft/succapp",Dq="https://registry.npmjs.org/",Fq=24*60*60,Aq=2e3;async function Oq(r){let e=LM(r);if(WM(e))return;let t=Vq(r,e);try{switch(r.trigger){case"version":return await OM(r.context,t)??await t.checkLatestFromRegistry()??await t.checkLatestFromAnyCache();case"auth-login":return await $q(r,t);case"command":return await Uq(r,t)}}catch(n){bn.debug("skip cli version update check: %s",n);return}}async function Es(r){let e=(r.includeCheckingProgress??Lq(r))&&!WM(LM(r));e&&Nq(r.output);let t;try{t=await Oq(r)}finally{e&&Wq(r.output)}let n=qq(t);if(n){r.output.warning(n);return}if(!(r.includeUpToDateInfo??r.trigger==="version"))return;let i=Bq(t);i&&r.output.info(i)}function Lq(r){return r.trigger==="version"||r.trigger==="auth-login"||!!r.command&&NM(r.command)}function Nq(r){r.progress({task:"cli-version-check",status:"checking"},()=>d("cli.out.version.checking"))}function Wq(r){r.progress({task:"cli-version-check",status:"done"},()=>"")}async function Uq(r,e){let t=r.command;if(t){if(NM(t))return await OM(r.context,e)??await e.checkLatestFromRegistry()??await e.checkLatestFromAnyCache();if(t.serverTarget==="none")return await e.checkLatestFromCache()}}async function $q(r,e){if(!(!r.context||!r.serverUrl||!await e.hasPackageVersionCache()))try{let t=await Bc(r.context,r.serverUrl),n=await e.runWithTimeout(t.getServerInfo(),"auth login server info");return n.version?await e.checkServerCompatibilityFromCache({serverUrl:t.serverUrl,serverVersion:n.version,devToolApiVersion:n.devToolApiVersion}):void 0}catch(t){bn.debug("skip auth login cli server compatibility check: %s",t);return}}async function OM(r,e){if(!r)return;let t,n=!1;try{r.workspace?t=r.workspace:(t=await jq(r),n=t!==void 0);let o={cwd:r.cwd,env:r.env,config:r.config,output:r.output,task:r.task,eventBus:r.eventBus,workspace:t,abortSignal:r.abortSignal},i=await Ka(o,{serverTarget:"optional"}),a=await Bc(o,i),s=await e.runWithTimeout(a.getServerInfo(),"current server info");return s.version?await e.checkServerCompatibility({serverUrl:a.serverUrl,serverVersion:s.version,devToolApiVersion:s.devToolApiVersion}):void 0}catch(o){bn.debug("skip cli current server version check: %s",o);return}finally{n&&t?.dispose()}}async function jq(r){let e=await vd({cwd:r.cwd,workspace:r.config.workspace,env:r.env,required:!1});if(e)return Rs({root:e,eventBus:r.eventBus,lockWait:r.config.lockTimeout})}function Vq(r,e){return new Xy({env:e,cacheDir:r.cacheDir,currentVersion:r.currentVersion,packageName:r.packageName,fetch:r.fetch,now:r.now,timeoutMs:r.timeoutMs})}function LM(r){return r.env??r.context?.env??process.env}function NM(r){return r.path.length===2&&r.path[0]==="workspace"&&r.path[1]==="init"}function WM(r){return Tu(r[Mr.noUpdateCheck],!1)===!0}var Xy=class{env;cacheDir;currentVersion;packageName;fetchImpl;now;timeoutMs;constructor(e){this.env=e.env,this.cacheDir=e.cacheDir??Qu(this.env),this.currentVersion=e.currentVersion??cn,this.packageName=e.packageName??_q,this.fetchImpl=e.fetch??fetch,this.now=e.now??(()=>new Date),this.timeoutMs=e.timeoutMs??Aq}async checkLatestFromRegistry(){try{let e=await this.fetchPackageVersionCacheData();return await this.writeCache(e),this.toLatestStatus(e)}catch(e){bn.debug("skip cli latest version check: %s",e);return}}async checkLatestFromCache(){let e=await this.readCache();if(!(!e||!this.matchesCurrentSource(e)||this.isExpired(e)))return this.toLatestStatus(e)}async checkLatestFromAnyCache(){let e=await this.readCache();return e&&this.matchesCurrentSource(e)?this.toLatestStatus(e):void 0}async hasPackageVersionCache(){let e=await this.readCache();return!!e&&this.matchesCurrentSource(e)&&Qy(e)}async runWithTimeout(e,t){let n,o=new Promise((i,a)=>{n=setTimeout(()=>a(new Error(`${t} timed out after ${this.timeoutMs}ms`)),this.timeoutMs)});try{return await Promise.race([e,o])}finally{n&&clearTimeout(n),e.catch(i=>bn.debug("ignored late cli version check operation failure: %s",i))}}async checkServerCompatibility(e){try{let t=await this.readServerCacheEntry(e);if(t&&!this.isServerCacheExpired(t))return this.toServerStatus(e,t);let n=await this.fetchPackageVersionCacheData();await this.writeCache(n);let o=this.createServerCompatibilityCacheData(e,n);return o?(await this.writeServerCacheEntry(e,o),this.toServerStatus(e,o)):this.toServerNoCompatibleStatus(e,n.checkedAt)}catch(t){bn.debug("skip cli server compatibility check: %s",t);let n=await this.readServerCacheEntry(e);return n?this.toServerStatus(e,n):this.toServerUnknownStatus(e)}}async checkServerCompatibilityFromCache(e){let t=await this.readServerCacheEntry(e);if(t)return this.toServerStatus(e,t);let n=await this.readCache();if(!n||!this.matchesCurrentSource(n)||!Qy(n))return;let o=this.createServerCompatibilityCacheData(e,n);return o?(await this.writeServerCacheEntry(e,o),this.toServerStatus(e,o)):this.toServerNoCompatibleStatus(e,n.checkedAt)}async fetchPackageVersionCacheData(){let{registryUrl:e,packageUrl:t,metadata:n}=await this.fetchPackageMetadata(),o=Or(n["dist-tags"]?.latest);if(!o)throw new Error(`npm registry response has no latest dist-tag: ${t}`);return{version:bs,packageName:this.packageName,registryUrl:e,latestVersion:o,packageVersions:Jq(n),checkedAt:this.now().toISOString(),upgradeCommand:DM(this.packageName,"latest")}}createServerCompatibilityCacheData(e,t){if(!Qy(t))return;let n=Kq(e.serverVersion,t.packageVersions);if(n)return{serverVersion:e.serverVersion,devToolApiVersion:e.devToolApiVersion,recommendedVersion:n.version,checkedAt:t.checkedAt,upgradeCommand:DM(this.packageName,n.installTag)}}async fetchPackageMetadata(){let e=this.resolveRegistryUrl(),t=new URL(encodeURIComponent(this.packageName),e).toString(),n=await Hc(t,{headers:{Accept:"application/json"}},{timeoutMs:this.timeoutMs,fetchImpl:this.fetchImpl,timeoutMessage:`npm registry request timed out after ${this.timeoutMs}ms: ${t}`},async o=>{if(!o.ok)throw await Gc(o),new Error(`npm registry responded with HTTP ${o.status}: ${t}`);return await o.json()});return{registryUrl:e,packageUrl:t,metadata:n}}resolveRegistryUrl(){let e=Ce(this.env[Mr.updateCheckRegistry])??Ce(this.env.npm_config_registry)??Ce(this.env.NPM_CONFIG_REGISTRY)??Dq;return e.endsWith("/")?e:`${e}/`}async readCache(){try{return Hq(await hn(this.getCachePath()))}catch(e){bn.debug("skip cli version update cache read: %s",e);return}}async writeCache(e){try{await rr(this.getCachePath(),`${JSON.stringify(e,void 0," ")}
|
|
87
|
+
`)}catch(t){bn.debug("skip cli version update cache write: %s",t)}}getCachePath(){return Yy.join(this.cacheDir,xq)}getServerCachePath(){return Yy.join(this.cacheDir,Iq)}isExpired(e){return this.isCheckedAtExpired(e.checkedAt)}isServerCacheExpired(e){return this.isCheckedAtExpired(e.checkedAt)}isCheckedAtExpired(e){let t=Ia(this.env[Mr.updateCheckTtlSeconds])??Fq,n=Date.parse(e);return!Number.isFinite(n)||this.now().getTime()-n>=t*1e3}matchesCurrentSource(e){return e.packageName===this.packageName&&e.registryUrl===this.resolveRegistryUrl()}matchesServerCacheFile(e){return!!e&&e.packageName===this.packageName&&e.registryUrl===this.resolveRegistryUrl()}toLatestStatus(e){let t=zo(this.currentVersion,e.latestVersion);if(t===void 0){bn.debug("skip cli version update status because versions are not comparable: current=%s latest=%s",this.currentVersion,e.latestVersion);return}return{currentVersion:this.currentVersion,latestVersion:e.latestVersion,source:"registry",outdated:t<0,upToDate:t>=0,upgradeCommand:e.upgradeCommand,checkedAt:e.checkedAt}}async readServerCacheEntry(e){try{let t=_M(await hn(this.getServerCachePath()));if(!t||!this.matchesServerCacheFile(t))return;let n=t.entries[FM(e.serverUrl)];return n&&zq(n,e)?n:void 0}catch(t){bn.debug("skip cli server compatibility cache read: %s",t);return}}async writeServerCacheEntry(e,t){try{let n=_M(await hn(this.getServerCachePath())),o=this.matchesServerCacheFile(n)?n:{version:bs,packageName:this.packageName,registryUrl:this.resolveRegistryUrl(),entries:{}};await rr(this.getServerCachePath(),`${JSON.stringify({...o,entries:{...o.entries,[FM(e.serverUrl)]:t}},void 0," ")}
|
|
88
|
+
`)}catch(n){bn.debug("skip cli server compatibility cache write: %s",n)}}toServerStatus(e,t){let n=ra(this.currentVersion),o=ra(e.serverVersion),i=zo(this.currentVersion,t.recommendedVersion);if(!n||!o||i===void 0)return;let a=n.major!==o.major;return{currentVersion:this.currentVersion,latestVersion:t.recommendedVersion,source:"server",outdated:a||i<0,upToDate:!a&&i>=0,upgradeCommand:t.upgradeCommand,checkedAt:t.checkedAt,serverVersion:e.serverVersion,devToolApiVersion:e.devToolApiVersion,incompatibleMajor:a}}toServerNoCompatibleStatus(e,t){let n=ra(this.currentVersion),o=ra(e.serverVersion);if(!(!n||!o))return{currentVersion:this.currentVersion,source:"server",outdated:!0,upToDate:!1,checkedAt:t,serverVersion:e.serverVersion,devToolApiVersion:e.devToolApiVersion,incompatibleMajor:n.major!==o.major,noCompatibleVersion:!0}}toServerUnknownStatus(e){return Or(e.serverVersion)?{currentVersion:this.currentVersion,source:"server",outdated:!1,upToDate:!1,checkedAt:this.now().toISOString(),serverVersion:e.serverVersion,devToolApiVersion:e.devToolApiVersion}:void 0}};function qq(r){if(r?.outdated){if(r.noCompatibleVersion&&r.serverVersion)return d("cli.out.version.serverNoCompatible",r.serverVersion);if(r.incompatibleMajor&&r.serverVersion)return!r.latestVersion||!r.upgradeCommand?void 0:d("cli.out.version.serverIncompatible",r.currentVersion,r.serverVersion,r.latestVersion,r.upgradeCommand);if(r.source==="server"&&r.serverVersion)return!r.latestVersion||!r.upgradeCommand?void 0:d("cli.out.version.serverUpdateAvailable",r.serverVersion,r.latestVersion,r.upgradeCommand);if(!(!r.latestVersion||!r.upgradeCommand))return d("cli.out.version.updateAvailable",r.latestVersion,r.upgradeCommand)}}function Bq(r){return r?.upToDate?d("cli.out.version.upToDate"):void 0}function Hq(r){if(!r||r.version!==bs)return;let e=Qe(r.packageName),t=Qe(r.registryUrl),n=Or(r.latestVersion),o=Zn(r.packageVersions)?.map(s=>Or(s)).filter(s=>s!==void 0),i=Qe(r.checkedAt),a=Qe(r.upgradeCommand);if(!(!e||!t||!n||!i||!a))return{version:bs,packageName:e,registryUrl:t,latestVersion:n,packageVersions:o,checkedAt:i,upgradeCommand:a}}function _M(r){if(!r||r.version!==bs)return;let e=Qe(r.packageName),t=Qe(r.registryUrl),n=W(r.entries)?r.entries:void 0;if(!e||!t||!n)return;let o={};for(let[i,a]of Object.entries(n)){let s=Gq(a);s&&(o[i]=s)}return{version:bs,packageName:e,registryUrl:t,entries:o}}function Gq(r){if(!W(r))return;let e=Or(r.serverVersion),t=Or(r.recommendedVersion),n=Qe(r.checkedAt),o=Qe(r.upgradeCommand);if(!(!e||!t||!n||!o))return{serverVersion:e,devToolApiVersion:Qe(r.devToolApiVersion),recommendedVersion:t,checkedAt:n,upgradeCommand:o}}function DM(r,e){return`npm install -g ${r}@${e}`}function FM(r){return(0,AM.createHash)("sha256").update(r).digest("hex").slice(0,32)}function zq(r,e){return r.serverVersion===e.serverVersion&&(r.devToolApiVersion??"")===(e.devToolApiVersion??"")}function Qy(r){return Array.isArray(r.packageVersions)&&r.packageVersions.length>0}function Kq(r,e){let t=ra(r);if(!t)return;let n=e.filter(s=>ra(s)?.major===t.major),o=n.filter(s=>ra(s)?.minor===t.minor),i=o.length>0?o:n,a=Qq(i);if(a)return{version:a,installTag:o.length>0?`${t.major}.${t.minor}`:String(t.major)}}function Jq(r){return Object.keys(r.versions??{}).map(e=>Or(e)).filter(e=>e!==void 0)}function Qq(r){return r.reduce((e,t)=>{if(!e)return t;let n=zo(t,e);return n!==void 0&&n>0?t:e},void 0)}function ra(r){let e=/^(\d+)\.(\d+)\.(\d+)(?:[-+].*)?$/.exec(r);if(e)return{major:Number(e[1]),minor:Number(e[2]),patch:Number(e[3])}}F();O();I();var Zy=class extends ae{readStdin;constructor(e=pr){super(),this.readStdin=e}toOptions(e){let t=e.has("oauth"),n=e.has("pat");return{serverUrl:e.value("url"),mode:n?"pat":"oauth",oauthRequested:t,patRequested:n}}validateOptions(e,t){if(t.oauthRequested&&t.patRequested)throw new P("err.cli.conflictingInputs",{inputs:["oauth","pat"]})}async executeCommand(e,t){let n=await this.resolveServerUrl(e,t.serverUrl);if(t.mode==="oauth"){let a=await yR(n,{openExternal:c=>Qa(c,e.abortSignal),abortSignal:e.abortSignal,onProgress:c=>Xq(e,c)}),s=await rg(n,a);return UM(e,n,s),await Es({trigger:"auth-login",context:e,serverUrl:n,output:e.output}),0}let o=await Yq(this.readStdin),i=await rg(n,{type:"pat",token:o});return UM(e,n,i),await Es({trigger:"auth-login",context:e,serverUrl:n,output:e.output}),0}},$M={path:["auth","login"],domain:"auth",spec:{name:"auth login",flags:[{name:"oauth",takesValue:!1,helpGroup:"options",param:{}},{name:"pat",takesValue:!1,helpGroup:"options",param:{}}],positionals:[{name:"url",role:"server-url"}],inputGroups:[{name:"loginMode",mode:"atMostOne",inputId:"value",members:["--oauth","--pat"]}],usageArgs:"[<options>] [<url>]",examples:["succapp auth login http://localhost:8080","succapp auth login --pat http://localhost:8080",'printf "%s" "$PAT" | succapp auth login --pat http://localhost:8080']},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new Zy};async function Yq(r){let e=!!process.stdin.isTTY,t=(e?await kP(d("cli.cmd.auth.login.patPrompt")):await r()).trim();if(!t)throw new P("err.cli.missingInput",{inputId:"token",sources:e?void 0:["stdin"]});return t}function UM(r,e,t){let n={server:e,loggedIn:!0,authType:t.authType,stored:!0,username:t.username,userId:t.userId,token:!!t.token};t.refreshToken!==void 0&&(n.refreshToken=!0),t.expiresAt!==void 0&&(n.expiresAt=t.expiresAt);let o=t.username||t.userId;r.output.result(n,()=>o?d("cli.cmd.auth.login.loggedInAs",e,o):d("cli.cmd.auth.login.loggedIn",e))}function Xq(r,e){switch(e.stage){case"openingBrowser":r.output.progress({stage:e.stage},()=>d("cli.cmd.auth.login.openingBrowser"));return;case"manualAuthorizationUrl":r.output.info(d("cli.cmd.auth.login.oauthManualUrl",e.authorizationUrl??""));return;case"waitingForCallback":r.output.progress({stage:e.stage},()=>d("cli.cmd.auth.login.waitingForCallback"));return;case"exchangingToken":r.output.progress({stage:e.stage},()=>d("cli.cmd.auth.login.exchangingToken"));return}}I();F();O();var eC=class extends ae{toOptions(e){return{serverUrl:e.value("url"),all:e.has("all")}}validateOptions(e,t){if(t.all&&t.serverUrl)throw new P("err.cli.conflictingInputs",{inputs:["<url>","--all"]})}async executeCommand(e,t){if(t.all){let a=await og();return e.output.result({all:a.all,removed:a.removed},()=>d("cli.cmd.auth.logout.removedAllAuth",a.removed)),0}let n=await this.resolveServerUrl(e,t.serverUrl),o=await og(n),i=o.removed>0;return e.output.result({server:o.serverUrl??n,removed:i},()=>i?d("cli.cmd.auth.logout.removedAuth",n):d("cli.cmd.auth.logout.storedAuth",n)),0}},jM={path:["auth","logout"],domain:"auth",spec:{name:"auth logout",flags:[{name:"all",takesValue:!1,helpGroup:"options",param:{}}],positionals:[{name:"url",role:"server-url",param:{}}],inputGroups:[{name:"logoutTarget",mode:"atMostOne",inputId:"server",members:["<url>","--all"]}],usageArgs:"[<options>] [<url>]",examples:["succapp auth logout","succapp auth logout https://bi.example.com","succapp auth logout --all"]},workspaceTarget:"optional",serverTarget:"optional",createExecutor:()=>new eC};I();var tC=class extends ae{toOptions(e){return{serverUrl:e.value("url")}}async executeCommand(e,t){let n=await this.resolveServerUrl(e,t.serverUrl),o=await Ai(n),i={server:n,...Zq(o)};return e.output.result(i,()=>eB(i)),0}},VM={path:["auth","status"],domain:"auth",spec:{name:"auth status",flags:[],positionals:[{name:"url",role:"server-url"}],usageArgs:"[<options>] [<url>]",examples:["succapp auth status","succapp --server=https://bi.example.com auth status"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new tC};function Zq(r){return{storedAuth:r!==void 0,authType:r?.authType,username:r?.username,userId:r?.userId,token:!!r?.token,refreshToken:!!r?.refreshToken,expiresAt:r?.expiresAt,lastLoginAt:r?.lastLoginAt,updatedAt:r?.updatedAt}}function eB(r){return d(r.storedAuth===!1?"cli.cmd.auth.status.noStoredOutput":"cli.cmd.auth.status.output",tB(r))}function tB(r){let e={};for(let[t,n]of Object.entries(r))e[t]=n===void 0?"":String(n);return e}var qM=[$M,jM,VM];var rB=2,rC=class{constructor(e,t={}){this.model=e;this.columnGap=nB(t.columnGap)}columnGap;columnWidths;render(){return this.model.columns.length===0?"":(this.columnWidths=this.calculateColumnWidths(),[this.renderRow(this.model.columns),...this.model.rows.map(t=>this.renderRow(t))].join(`
|
|
89
|
+
`))}calculateColumnWidths(){return this.model.columns.map((e,t)=>{let n=this.model.rows.map(o=>rt(this.getCellText(o,t)));return Math.max(rt(e),...n)})}renderRow(e){return this.getColumnWidths().map((t,n)=>this.padCell(this.getCellText(e,n),t)).join(this.getColumnSeparator()).trimEnd()}padCell(e,t){return Mu(e,t)}getCellText(e,t){return e[t]??""}getColumnSeparator(){return" ".repeat(this.columnGap)}getColumnWidths(){return this.columnWidths===void 0&&(this.columnWidths=this.calculateColumnWidths()),this.columnWidths}};function Re(r,e){return new rC(r,e).render()}function nB(r){return r===void 0||!Number.isFinite(r)?rB:Math.max(0,Math.floor(r))}wi();I();re();function om(r,e){if(r.path!==void 0&&!gn(r.path)&&iB(r.path)===void 0){let t=oB(r.path);return d(e.path,r.path,t)}if(r.name!==void 0&&!gn(r.name))return d(e.name)}function oB(r){return r==="/"?"/**":`${r.replace(/\/+$/,"")}/**`}function iB(r){return/^\/([^/]+)\/?$/.exec(r)?.[1]}function oi(r){return D({type:r.type,path:r.path,remotePath:r.remotePath,oldPath:r.oldPath,oldRemotePath:r.oldRemotePath,fileId:r.fileId,isFolder:r.isFolder,contentChanged:r.contentChanged,metaChanged:r.metaChanged,modifier:r.modifier,modifierName:r.modifierName,modifyTime:r.modifyTime})}function im(r){return D({name:r.name,id:r.id,desc:r.desc})}function vo(r){return D({remotePath:r.remotePath,localPath:r.localPath,currentVersion:r.currentVersion,targetVersion:r.targetVersion,changed:r.changed,reason:r.reason,...BM(r.errorInfo)})}function am(r){return D({path:r.path,...BM(r.errorInfo)})}function sm(r){return D({path:r.path,currentVersion:r.currentVersion,targetVersion:r.targetVersion,metaType:r.metaType,kind:r.kind})}function cm(r){switch(r){case"older":return d("cli.out.value.older");case"newer":return d("cli.out.value.newer");default:return r}}function Xe(r){return r==null?"":Array.isArray(r)?r.map(Xe).join(", "):typeof r=="object"?JSON.stringify(r):String(r)}function na(r){return r===void 0?"":new Date(r).toISOString()}function Sr(r){return r==null?"":r?d("cli.out.value.yes"):d("cli.out.value.no")}function ii(r){return Re({columns:[d("cli.out.header.type"),d("cli.out.header.path"),d("cli.out.header.remote")],rows:r.map(e=>[e.type,e.path,e.remotePath])})}function Dl(r){return Re({columns:[d("cli.out.header.remote"),d("cli.out.common.version"),d("cli.out.common.targetVersion")],rows:r.map(e=>[e.remotePath,e.currentVersion??"",e.targetVersion??""])})}function BM(r){if(r===void 0)return{};let e=aB(r);return e||(r instanceof Error?D({errorName:r.name||"Error",errorMessage:r.message}):typeof r=="object"&&r!==null?D({errorName:Nr(r,"name"),errorCode:Nr(r,"code")??Nr(r,"errorCode"),errorMessage:Nr(r,"message")??Nr(r,"reason")}):{errorMessage:String(r)})}function Xr(r){if(r===void 0)return"";let e=sB(r);if(e)return e;if(r instanceof Error)return r.message||r.name;if(typeof r=="object"&&r!==null){let t=Nr(r,"code")??Nr(r,"errorCode"),n=Nr(r,"message")??Nr(r,"reason");return[t,n].filter(o=>o&&o.length>0).join(": ")}return String(r)}function aB(r){let e=jt(r),t=un(r),n=dr(r);if(!(e===void 0&&t===void 0&&n===void 0))return D({errorName:cB(r),errorCode:e,errorType:t==null?void 0:String(t),errorMessage:HM(r),errorProperties:n})}function sB(r){let e=jt(r),t=HM(r);return[e,t].filter(n=>n&&n.length>0).join(": ")}function cB(r){if(r instanceof Error)return r.name||"Error";if(!(typeof r!="object"||r===null))return Nr(r,"name")??Nr(r,"className")}function HM(r){if(r instanceof Error)return r.message;if(!(typeof r!="object"||r===null))return Nr(r,"message")??Nr(r,"reason")}function Nr(r,e){if(!Object.hasOwn(r,e))return;let t=r[e];return typeof t=="string"?t:void 0}I();re();V();F();O();var Ts="file",nC="input",oC="mode",iC="dry-run",aC="output",vr="force",Fl="config",Ms="test",Zr="timeout",sC="catalog",kr="schema",cC="table-name-contains",xs="max-rows",oa="query",ia="query-file",si=30,Be=class extends ae{async executeCommand(e,t){let n=await this.prepareDbCommand(e,t),o=await this.resolveServerUrl(e),i=await this.createServerApiClient(e,o);return this.executeDbCommand(e,o,i,n)}prepareDbCommand(e,t){return Promise.resolve(t)}readDbInputTextFile(e,t){return Go(ut(e.cwd,t))}readDbStdinText(){return pr()}isDbStdinInteractive(){return process.stdin.isTTY}createDbParamInputReader(e){return{hasInteractiveStdin:()=>this.isDbStdinInteractive(),readFileText:t=>this.readDbInputTextFile(e,t),readStdin:()=>this.readDbStdinText()}}readDbParamText(e,t){return Ju(e,t,this.createDbParamInputReader(e))}async readDbSqlText(e,t){let n=await this.readDbParamText(e,t);if(Ce(n))return n;let o=Ua(e).resolveInput(t);throw new P("err.cli.missingInput",{inputId:o.inputId,sources:o.sources})}readDbImportContent(e){return this.readDbParamText(e,`--${nC}`)}},ai=class extends Be{async readConfig(e){let t=Ua(e).resolveInput(`--${Fl}`),n=await this.readDbParamText(e,`--${Fl}`);return lB(n,t.label,t.inputId)}};function Is(r,e=!0){return[{name:Fl,takesValue:!0,valueHint:"json-file|-",helpGroup:"input",param:{source:"file-or-stdin",required:e,inputId:"dataSourceConfig"}},...r]}function lB(r,e,t="dataSourceConfig"){let n;try{n=JSON.parse(r)}catch(o){throw new P("err.cli.invalidJsonObject",{inputId:t,source:e},{cause:o})}if(!W(n))throw new P("err.cli.invalidJsonObject",{inputId:t,source:e});return n}function GM(r){return D({name:r.name,desc:r.desc,defaultSchema:r.defaultSchema,defaultCatalog:r.defaultCatalog,readonly:r.readonly})}function lm(r){return D({schema:r.schema,tableName:r.tableName,tableType:r.tableType,tableComment:r.tableComment})}function zM(r){return D({name:r.name,primaryKey:r.primaryKey,unique:r.unique,dataType:r.dataType,dbType:r.dbType,length:r.length,scale:r.scale,defaultValue:r.defaultValue,autoInc:r.autoInc,nullable:r.nullable,comment:r.comment})}function KM(r){return D({result:r.result})}function JM(r){return D({dataSource:r.dataSource,resultType:r.resultType,force:r.force,updateCount:r.updateCount,results:r.results,sqlInfos:r.sqlInfos?.map(uB),fields:r.fields,data:r.data,columns:r.columns,rowCount:r.rowCount,maxRows:r.maxRows,truncated:r.truncated,elapsedMs:r.elapsedMs,timeoutMs:r.timeoutMs})}function QM(r){return D({dataSource:r.dataSource,schema:r.schema,tableName:r.tableName,mode:r.mode,dryRun:r.dryRun,importedRows:r.importedRows,skippedRows:r.skippedRows,elapsedMs:r.elapsedMs,timeoutMs:r.timeoutMs})}function uB(r){return D({datasource:r.datasource,schema:r.schema,sql:r.sql,sqlType:r.sqlType,tableName:r.tableName,dataMutation:r.dataMutation,schemaMutation:r.schemaMutation,manipulateAllRows:r.manipulateAllRows,dangerous:r.dangerous})}function ci(r){let e=r;return D({result:r.result,dataSource:r.dataSource,defaultSchema:r.defaultSchema,databaseProductName:r.databaseProductName,databaseVersion:r.databaseVersion,databaseProductVersion:r.databaseProductVersion,driverName:r.driverName,driverVersion:r.driverVersion,originalDataSource:e.originalDataSource,config:r.config?_s(r.config):void 0})}function _s(r){let e=D({...r});return delete e.password,e}function YM(){return{reason:"emptyCollection",message:d("cli.cmd.db.source.list.empty")}}function Ds(r){let e=W(r.result)?r.result:void 0,t=e&&Array.isArray(e.rows)?e.rows:void 0,n=Array.isArray(r.fields)&&Array.isArray(r.data)?r.data:void 0,o=t??n;if(!(o===void 0||o.length>0))return{reason:"noRows",message:d("cli.cmd.db.query.empty")}}function XM(r,e){return{columns:[d("cli.cmd.db.dataSource"),d("cli.out.header.description"),d("cli.cmd.db.defaultSchema"),d("cli.cmd.db.readonly")],rows:r.map(t=>[t.name??"",t.desc??"",t.defaultSchema??t.defaultCatalog??"",Sr(t.readonly)]),...e===void 0?{}:{empty:e}}}function ZM(r){let e=_s(r);return{columns:[d("cli.out.header.field"),d("cli.out.header.value")],rows:Object.keys(e).sort().map(t=>[t,Xe(e[t])])}}function um(r){let e=[];r.dataSource!==void 0&&e.push([d("cli.cmd.db.dataSource"),r.dataSource]);let t="connected"in r?r.connected:r.result;return e.push([d("cli.cmd.db.connection"),Sr(t)],[d("cli.cmd.db.defaultSchema"),r.defaultSchema??""],[d("cli.cmd.db.databaseProduct"),r.databaseProductName??""],[d("cli.cmd.db.databaseVersion"),r.databaseVersion??""],[d("cli.cmd.db.databaseFullVersion"),r.databaseProductVersion??""],[d("cli.cmd.db.driver"),r.driverName??""],[d("cli.cmd.db.driverVersion"),r.driverVersion??""]),{columns:[d("cli.out.header.field"),d("cli.out.header.value")],rows:e}}function ex(r,e){return{columns:[d("cli.out.header.schema"),d("cli.out.header.table"),d("cli.out.header.type"),d("cli.out.header.comment")],rows:r.map(t=>[t.schema??"",t.tableName,t.tableType??"",t.tableComment??""]),...e===void 0?{}:{empty:e}}}function tx(r){let e=r.table.columns??[],t=fB(r.table);return{columns:[d("cli.out.header.field"),d("cli.out.header.type"),d("cli.out.header.null"),d("cli.out.header.key"),d("cli.out.header.default"),d("cli.out.header.extra"),d("cli.out.header.comment")],rows:e.map(n=>[n.name,dB(n),pB(n),mB(n,t),yB(n),CB(n),n.comment??""])}}function dB(r){let e=r.dbType??r.dataType??"";return!e||r.length===void 0||r.length<=0||e.includes("(")?e:r.scale!==void 0&&r.scale>0?`${e}(${r.length},${r.scale})`:`${e}(${r.length})`}function pB(r){return r.nullable===void 0?"":r.nullable?"YES":"NO"}function mB(r,e){return r.primaryKey?"PRI":r.unique?"UNI":e.get(lC(r.name))??""}function fB(r){let e=new Map;for(let t of r.primaryKeys??[])e.set(lC(t),"PRI");for(let t of r.indexes??[]){let n=t.primaryKey?"PRI":t.unique?"UNI":"MUL";for(let o of hB(t.parts))gB(e,o,n)}return e}function hB(r){if(!r)return[];let e=[];for(let t of r)typeof t=="string"?e.push(t):t.column&&e.push(t.column);return e}function gB(r,e,t){let n=lC(e),o=r.get(n);o==="PRI"||o==="UNI"&&t==="MUL"||r.set(n,t)}function lC(r){return r.toLowerCase()}function yB(r){return r.defaultValue===void 0?"":r.defaultValue??"NULL"}function CB(r){return r.autoInc?"auto_increment":""}function rx(r,e=Ds(r)){return kB(r)?SB(r.fields,r.data,e):typeof r.updateCount=="number"?d("cli.cmd.db.sqlUpdateCount",String(r.updateCount)):d("cli.cmd.db.sqlExecutedSuccess")}function nx(r,e=Ds(r)){return vB(r.result.fields.map(t=>t.name),r.result.rows,e)}function SB(r,e,t){return r.length?{columns:r,rows:e.map(n=>n.map(Xe)),...t===void 0?{}:{empty:t}}:d("cli.cmd.db.sqlExecutedSuccess")}function vB(r,e,t){return r.length?{columns:r,rows:e.map(n=>r.map(o=>Xe(n[o]))),...t===void 0?{}:{empty:t}}:d("cli.cmd.db.sqlExecutedSuccess")}function ox(r){let e=r.skippedRows===void 0?"":d("cli.cmd.db.skipped",String(r.skippedRows)),t=r.dryRun?d("cli.cmd.db.dryImport"):d("cli.cmd.db.imported");return d("cli.cmd.db.rowsModeDry",t,String(r.importedRows),r.tableName,e,r.mode,String(r.dryRun))}function kB(r){return Array.isArray(r.fields)&&Array.isArray(r.data)}function ix(r){let e=r.value("table"),t=r.value(oa),n=r.value(ia);if(t!==void 0&&n!==void 0)throw new P("err.cli.conflictingInputs",{inputs:[`--${oa}=<sql>`,`--${ia}=<sql-file>`]});if(e!==void 0&&(t!==void 0||n!==void 0))throw new P("err.cli.conflictingInputs",{inputs:["<table>",`--${oa}`,`--${ia}`]});if(t!==void 0)return{type:"query"};if(n!==void 0)return{type:"query"};if(e===void 0)throw new P("err.cli.missingInput",{inputId:"exportTarget",sources:["<table>",`--${oa}=<sql>`,`--${ia}=<sql-file>`]});let o=Al(r,e);return{type:"table",schema:o.schema,tableName:o.tableName}}function wB(r){let e=r.lastIndexOf(".");return e<=0||e===r.length-1?{tableName:r}:{schema:r.slice(0,e),tableName:r.slice(e+1)}}function Al(r,e){let t=r.value(kr);return t!==void 0?{schema:t,tableName:e}:wB(e)}O();F();var uC=class extends Be{toOptions(e){return{dataSource:e.value("datasource"),schema:e.value(kr),timeoutSeconds:e.integer(Zr),maxRows:e.integer(xs),force:e.has(vr)}}async prepareDbCommand(e,t){return t.sql!==void 0?t:{...t,sql:await this.readDbSqlText(e,"sqlSource")}}async executeDbCommand(e,t,n,o){let i=await this.executeAnySql(n,{dataSource:o.dataSource,schema:o.schema,sql:o.sql,timeoutMs:o.timeoutSeconds*1e3,maxRows:o.maxRows,force:o.force}),a=Ds(i);return e.output.result({...ee(e,t),dataSource:o.dataSource,...o.schema!==void 0?{schema:o.schema}:{},timeoutSeconds:o.timeoutSeconds,...o.maxRows!==void 0?{maxRows:o.maxRows}:{},...o.force?{force:!0}:{},...a===void 0?{}:{empty:a},...JM(i)},()=>rx(i,a)),0}async executeAnySql(e,t){try{return await e.executeDbAny({dataSource:t.dataSource,...t.schema!==void 0?{schema:t.schema}:{},sql:t.sql,timeoutMs:t.timeoutMs,...t.maxRows!==void 0?{maxRows:t.maxRows}:{},...t.force?{force:!0}:{}})}catch(n){throw Ir(n,"err.sql.forceRequired")?new P("err.cli.confirmationRequired",{reason:"dbSqlMutation",flag:`--${vr}`,sqlInfos:n.properties.sqlInfos,context:{forceRequired:!0}},{cause:n}):n}}},ax={path:["db","exec"],domain:"db",spec:{name:"db exec",flags:[{name:Ts,takesValue:!0,valueHint:"sql-file",helpGroup:"input",param:{source:"file",type:"string",nonEmpty:!0}},{name:kr,takesValue:!0,valueHint:"schema",helpGroup:"options"},{name:Zr,takesValue:!0,valueHint:"seconds",helpGroup:"options",param:{type:"integer",min:1,defaultValue:si}},{name:xs,takesValue:!0,valueHint:"n",helpGroup:"output",param:{type:"integer",min:0}},{name:vr,takesValue:!1,helpGroup:"options"}],positionals:[{name:"datasource",param:{required:!0}},{name:"sql",param:{source:"value",type:"string",nonEmpty:!0}}],inputGroups:[{name:"sqlSource",mode:"atMostOne",inputId:"sql",defaultSource:"stdin",members:["<sql>",`--${Ts}`]}],usageArgs:"[<options>] <datasource> [<sql>]",examples:['succapp db exec default "update orders set status = 1 where id = 42"',"succapp db exec default --file=./change.sql --max-rows=10",'succapp db exec default "create table TEMP_ORDERS (ID int)" --force']},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new uC};var li=E(require("fs")),sx=E(require("path")),cx=require("stream/promises");O();F();async function dm(r,e,t){await li.promises.mkdir(sx.dirname(r),{recursive:!0});let n=PB(r);try{await(0,cx.pipeline)(e,li.createWriteStream(n,{flags:"wx"})),t.force?await li.promises.rename(n,r):(await li.promises.link(n,r),await li.promises.unlink(n))}catch(o){throw await RB(n,o),!t.force&&_u(o)?new P("err.cli.confirmationRequired",{reason:"outputOverwrite",flag:t.overwriteFlag,path:r},{cause:o}):o}}function PB(r){let e=[process.pid,Date.now().toString(36),Math.random().toString(36).slice(2)].join("-");return`${r}.tmp-${e}`}async function RB(r,e){try{await li.promises.unlink(r)}catch(t){if(_(t))return;e instanceof Error&&(e.cleanupError=t)}}I();O();V();var lx=E(require("fs")),dC=class extends Be{toOptions(e){return{dataSource:e.value("datasource"),schema:e.value(kr),target:ix(e),timeoutSeconds:e.integer(Zr),output:e.value(aC),force:e.has(vr)}}async prepareDbCommand(e,t){return t.target.type!=="query"||t.target.sql!==void 0?t:{...t,target:{...t.target,sql:await this.readDbSqlText(e,"exportTarget")}}}async executeDbCommand(e,t,n,o){let i=o.target.type==="table"?{tableName:o.target.tableName}:{query:!0},a=ut(e.cwd,o.output),s=o.target.type==="table"?await n.exportDbTableData({dataSource:o.dataSource,...o.target.schema!==void 0?{schema:o.target.schema}:{},tableName:o.target.tableName,timeoutMs:o.timeoutSeconds*1e3}):await n.exportDbQueryData({dataSource:o.dataSource,...o.schema!==void 0?{schema:o.schema}:{},sql:o.target.sql,timeoutMs:o.timeoutSeconds*1e3});await dm(a,s,{force:o.force,overwriteFlag:`--${vr}`});let c=await lx.promises.stat(a),l={...ee(e,t),dataSource:o.dataSource,...o.target.type==="table"&&o.target.schema!==void 0?{schema:o.target.schema}:{},...o.target.type==="query"&&o.schema!==void 0?{schema:o.schema}:{},...i,timeoutSeconds:o.timeoutSeconds,size:c.size,output:a};return e.output.result(l,()=>d("cli.cmd.db.export.exportedData",a)),0}},ux={path:["db","export"],domain:"db",spec:{name:"db export",flags:[{name:oa,takesValue:!0,valueHint:"sql",helpGroup:"query",param:{source:"value",type:"string",nonEmpty:!0}},{name:ia,takesValue:!0,valueHint:"sql-file",helpGroup:"query",param:{source:"file",type:"string",nonEmpty:!0}},{name:kr,takesValue:!0,valueHint:"schema",helpGroup:"options"},{name:Zr,takesValue:!0,valueHint:"seconds",helpGroup:"options",param:{type:"integer",min:1,defaultValue:si}},{name:aC,takesValue:!0,valueHint:"csv-file",helpGroup:"output",param:{required:!0,nonEmpty:!0,inputId:"outputFile"}},{name:vr,takesValue:!1,helpGroup:"output"}],positionals:[{name:"datasource",param:{required:!0}},{name:"table",param:{source:"value",type:"string",nonEmpty:!0}}],inputGroups:[{name:"exportTarget",mode:"exactlyOne",inputId:"exportTarget",members:["<table>",`--${oa}`,`--${ia}`]}],usageArgs:"[<options>] <datasource> [<table>]",examples:["succapp db export default orders --output=orders.csv","succapp db export default --query-file=./query.sql --output=orders.csv"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new dC};O();var pC=class extends Be{toOptions(e){let t=Al(e,e.value("table")),n=e.value(oC);return{dataSource:e.value("datasource"),schema:t.schema,tableName:t.tableName,mode:n??"append",dryRun:e.has(iC),timeoutSeconds:e.integer(Zr)}}async prepareDbCommand(e,t){return t.content!==void 0?t:{...t,content:await this.readDbImportContent(e)}}async executeDbCommand(e,t,n,o){let i=await n.importDbTableData({dataSource:o.dataSource,...o.schema!==void 0?{schema:o.schema}:{},tableName:o.tableName,content:o.content,format:"csv",mode:o.mode,dryRun:o.dryRun,timeoutMs:o.timeoutSeconds*1e3}),a={...i,mode:i.mode??o.mode,dryRun:i.dryRun??o.dryRun};return e.output.result({...ee(e,t),...QM(a),timeoutSeconds:o.timeoutSeconds},()=>ox(a)),0}},dx={path:["db","import"],domain:"db",spec:{name:"db import",flags:[{name:nC,takesValue:!0,valueHint:"csv-file|-",helpGroup:"input",param:{source:"file-or-stdin",type:"string",required:!0,inputId:"inputFile"}},{name:oC,takesValue:!0,valueHint:"append|truncate|replace",helpGroup:"options",param:{choices:["append","truncate","replace"]}},{name:iC,takesValue:!1,helpGroup:"options"},{name:kr,takesValue:!0,valueHint:"schema",helpGroup:"options"},{name:Zr,takesValue:!0,valueHint:"seconds",helpGroup:"options",param:{type:"integer",min:1,defaultValue:si}}],positionals:[{name:"datasource",param:{required:!0}},{name:"table",param:{required:!0}}],usageArgs:"[<options>] <datasource> <table>",examples:["succapp db import default orders --input=./orders.csv","succapp db import default public.orders --input=./orders.csv --mode=truncate --dry-run","cat orders.csv | succapp db import default public.orders --input=- --mode=append"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new pC};O();F();var mC=class extends Be{toOptions(e){return{dataSource:e.value("datasource"),schema:e.value(kr),timeoutSeconds:e.integer(Zr),maxRows:e.integer(xs)}}async prepareDbCommand(e,t){return t.sql!==void 0?t:{...t,sql:await this.readDbSqlText(e,"sqlSource")}}async executeDbCommand(e,t,n,o){let i=await this.executeQuerySql(n,{dataSource:o.dataSource,...o.schema!==void 0?{schema:o.schema}:{},sql:o.sql,timeoutMs:o.timeoutSeconds*1e3,...o.maxRows!==void 0?{maxRows:o.maxRows}:{}}),a=Ds(i);return e.output.result({...ee(e,t),dataSource:o.dataSource,...o.schema!==void 0?{schema:o.schema}:{},readOnly:!0,timeoutSeconds:o.timeoutSeconds,...o.maxRows!==void 0?{maxRows:o.maxRows}:{},...a===void 0?{}:{empty:a},...KM(i)},()=>nx(i,a)),0}async executeQuerySql(e,t){try{return await e.executeDbQuery(t)}catch(n){throw Ir(n,"err.db.nonReadOnlySql")?new P("err.cli.confirmationRequired",{reason:"dbQueryWriteSql",flag:`--${vr}`,context:{backendErrorCode:"err.db.nonReadOnlySql"}},{cause:n}):n}}},px={path:["db","query"],domain:"db",spec:{name:"db query",flags:[{name:Ts,takesValue:!0,valueHint:"sql-file",helpGroup:"input",param:{source:"file",type:"string",nonEmpty:!0}},{name:kr,takesValue:!0,valueHint:"schema",helpGroup:"options"},{name:Zr,takesValue:!0,valueHint:"seconds",helpGroup:"options",param:{type:"integer",min:1,defaultValue:si}},{name:xs,takesValue:!0,valueHint:"n",helpGroup:"output",param:{type:"integer",min:0}}],positionals:[{name:"datasource",param:{required:!0}},{name:"sql",param:{source:"value",type:"string",nonEmpty:!0}}],inputGroups:[{name:"sqlSource",mode:"atMostOne",inputId:"sql",defaultSource:"stdin",members:["<sql>",`--${Ts}`]}],usageArgs:"[<options>] <datasource> [<sql>]",examples:['succapp db query default "select * from orders"',"succapp db query default --file=./query.sql --schema=PUBLIC --timeout=10 --max-rows=100"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new mC};I();re();var fC=class extends Be{toOptions(e){return{dataSource:e.value("datasource"),catalog:e.value(sC)}}async executeDbCommand(e,t,n,o){let i=await n.listDbSchemas(o.dataSource,{...o.catalog!==void 0?{catalog:o.catalog}:{}}),a=i.length===0?{reason:"emptyCollection",message:d("cli.cmd.db.schema.list.empty",o.dataSource)}:void 0;return e.output.result({...ee(e,t),dataSource:o.dataSource,...o.catalog!==void 0?{catalog:o.catalog}:{},...a===void 0?{}:{empty:a},schemas:i.map(s=>D({...s}))},()=>({columns:[d("cli.out.header.schema"),d("cli.cmd.db.schema.list.catalog")],rows:i.map(s=>[s.name,s.catalog??""]),...a===void 0?{}:{empty:a}})),0}},mx={path:["db","schema","list"],domain:"db",spec:{name:"db schema list",flags:[{name:sC,takesValue:!0,valueHint:"catalog",helpGroup:"options"}],positionals:[{name:"datasource",param:{required:!0}}],usageArgs:"[<options>] <datasource>",examples:["succapp db schema list default","succapp db schema list default --catalog=PUBLIC"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new fC};I();var hC=class extends ai{toOptions(e){return{testBeforeSave:e.has(Ms)}}async prepareDbCommand(e,t){return t.config!==void 0?t:{...t,config:await this.readConfig(e)}}async executeDbCommand(e,t,n,o){let i=o.config,a=await n.createDataSource({config:i,testBeforeSave:o.testBeforeSave});return e.output.result({...ee(e,t),...ci(a)},()=>d("cli.cmd.db.source.create.created",a.dataSource??i.name??"")),0}},fx={path:["db","source","create"],domain:"db",spec:{name:"db source create",flags:Is([{name:Ms,takesValue:!1,helpGroup:"options"}]),positionals:[],usageArgs:"[<options>]",examples:["succapp db source create --config=./datasource.json --test"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new hC};var gC=class extends Be{async executeDbCommand(e,t,n){let o=await n.getDataSources(),i=o.length===0?YM():void 0;return e.output.result({...ee(e,t),...i===void 0?{}:{empty:i},dataSources:o.map(GM)},()=>XM(o,i)),0}},hx={path:["db","source","list"],domain:"db",spec:{name:"db source list",flags:[],positionals:[],usageArgs:"[<options>]",examples:["succapp db source list","succapp --server=http://localhost:8180 db source list --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new gC};re();var yC=class extends Be{toOptions(e){return{dataSource:e.value("datasource")}}async executeDbCommand(e,t,n,o){let i=await n.probeDataSource(o.dataSource);return e.output.result({...ee(e,t),...bB(i)},()=>um(i)),0}},gx={path:["db","source","probe"],domain:"db",spec:{name:"db source probe",flags:[],positionals:[{name:"datasource",description:"cli.cmd.db.source.probe.datasource",param:{required:!0}}],usageArgs:"[<options>] <datasource>",examples:["succapp db source probe default","succapp --server=http://localhost:8180 db source probe default --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new yC};function bB(r){return D({dataSource:r.dataSource,connected:r.connected,defaultSchema:r.defaultSchema,databaseProductName:r.databaseProductName,databaseVersion:r.databaseVersion,databaseProductVersion:r.databaseProductVersion,driverName:r.driverName,driverVersion:r.driverVersion,config:r.config?_s(r.config):void 0})}I();F();O();var CC=class extends Be{toOptions(e){return{dataSource:e.value("datasource"),force:e.has(vr)}}validateOptions(e,t){if(!t.force)throw new P("err.cli.confirmationRequired",{reason:"dbSourceDelete",flag:`--${vr}`,inputId:"dataSourceConfig"})}async executeDbCommand(e,t,n,o){let i=await n.deleteDataSource({dataSource:o.dataSource});return e.output.result({...ee(e,t),...ci(i)},()=>d("cli.cmd.db.source.remove.deleted",i.dataSource??o.dataSource)),0}},yx={path:["db","source","remove"],domain:"db",spec:{name:"db source remove",flags:[{name:vr,takesValue:!1,helpGroup:"options"}],positionals:[{name:"datasource",param:{required:!0}}],usageArgs:"[<options>] <datasource>",examples:["succapp db source remove oldDs --force"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new CC};var SC=class extends Be{toOptions(e){return{dataSource:e.value("datasource")}}async executeDbCommand(e,t,n,o){let i=await n.getDataSourceConfig(o.dataSource);return e.output.result({...ee(e,t),dataSource:o.dataSource,config:_s(i)},()=>ZM(i)),0}},Cx={path:["db","source","show"],domain:"db",spec:{name:"db source show",flags:[],positionals:[{name:"datasource",param:{required:!0}}],usageArgs:"[<options>] <datasource>",examples:["succapp db source show default"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new SC};O();var vC=class extends ai{toOptions(e){return{dataSource:e.value("datasource")}}async prepareDbCommand(e,t){return t.dataSource!==void 0||t.config!==void 0?t:{...t,config:await this.readConfig(e)}}async executeDbCommand(e,t,n,o){let i;return o.dataSource!==void 0?i={...await n.probeDataSource(o.dataSource),result:!0}:i=await n.testDataSource({config:o.config}),e.output.result({...ee(e,t),...ci(i)},()=>um(i)),0}},Sx={path:["db","source","test"],domain:"db",spec:{name:"db source test",flags:Is([],!1),positionals:[{name:"datasource",description:"cli.cmd.db.source.test.datasource",param:{source:"value",type:"string",nonEmpty:!0}}],inputGroups:[{name:"dataSourceTestTarget",mode:"exactlyOne",inputId:"dataSourceTestTarget",members:["<datasource>",`--${Fl}`]}],usageArgs:"[<options>] [<datasource>]",examples:["succapp db source test default","succapp db source test --config=./datasource.json","cat datasource.json | succapp db source test --config=-"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new vC};I();var kC=class extends ai{toOptions(e){return{dataSource:e.value("datasource"),testBeforeSave:e.has(Ms)}}async prepareDbCommand(e,t){return t.config!==void 0?t:{...t,config:await this.readConfig(e)}}async executeDbCommand(e,t,n,o){let i=o.config,a=await n.updateDataSource({dataSource:o.dataSource,config:i,testBeforeSave:o.testBeforeSave});return e.output.result({...ee(e,t),...ci(a)},()=>d("cli.cmd.db.source.update.updated",a.dataSource??i.name??o.dataSource)),0}},vx={path:["db","source","update"],domain:"db",spec:{name:"db source update",flags:Is([{name:Ms,takesValue:!1,helpGroup:"options"}]),positionals:[{name:"datasource",param:{required:!0}}],usageArgs:"[<options>] <datasource>",examples:["succapp db source update oldDs --config=./datasource.json --test"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new kC};var wC=class extends Be{toOptions(e){let t=Al(e,e.value("table"));return{dataSource:e.value("datasource"),schema:t.schema,tableName:t.tableName}}async executeDbCommand(e,t,n,o){let i=await n.describeDbTable(o.dataSource,o.tableName,{...o.schema!==void 0?{schema:o.schema}:{}});return e.output.result({...ee(e,t),dataSource:o.dataSource,table:lm(i.table),columns:i.table.columns?.map(zM)??[]},()=>tx(i)),0}},kx={path:["db","table","describe"],domain:"db",spec:{name:"db table describe",flags:[{name:kr,takesValue:!0,valueHint:"schema",helpGroup:"options"}],positionals:[{name:"datasource",param:{required:!0}},{name:"table",param:{required:!0}}],usageArgs:"[<options>] <datasource> <table>",examples:["succapp db table describe default orders","succapp db table describe default public.orders"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new wC};I();var PC=class extends Be{toOptions(e){return{dataSource:e.value("datasource"),schema:e.value("schema"),tableNameContains:e.value(cC)}}async executeDbCommand(e,t,n,o){let i=await n.listDbTables(o.dataSource,{...o.schema!==void 0?{schema:o.schema}:{},...o.tableNameContains!==void 0?{tableNameContains:o.tableNameContains}:{}}),a=i.length===0?{reason:o.tableNameContains===void 0?"emptyCollection":"noMatches",message:d(o.tableNameContains===void 0?"cli.cmd.db.table.list.empty":"cli.cmd.db.table.list.noMatches")}:void 0;return e.output.result({...ee(e,t),dataSource:o.dataSource,...o.schema!==void 0?{schema:o.schema}:{},...o.tableNameContains!==void 0?{tableNameContains:o.tableNameContains}:{},...a===void 0?{}:{empty:a},tables:i.map(lm)},()=>ex(i,a)),0}},wx={path:["db","table","list"],domain:"db",spec:{name:"db table list",flags:[{name:cC,takesValue:!0,valueHint:"text",helpGroup:"search"}],positionals:[{name:"datasource",param:{required:!0}},{name:"schema"}],usageArgs:"[<options>] <datasource> [<schema>]",examples:["succapp db table list default","succapp db table list default PUBLIC --table-name-contains=order"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new PC};var Px=[hx,Cx,gx,Sx,fx,vx,yx,mx,wx,kx,px,ax,dx,ux];O();F();I();re();V();var Fs="contains",As="max-rows",Os="order",ko="query",wo="query-file",Ls="select",Po="stdin",Ns="where",Ct=class extends ae{async executeCommand(e,t){let n=await this.prepareModelCommand(e,t),o=await this.resolveServerUrl(e),i=await this.createServerApiClient(e,o);return this.executeModelCommand(e,o,i,n)}prepareModelCommand(e,t){return Promise.resolve(t)}readModelInputTextFile(e,t){return Go(ut(e.cwd,t))}readModelStdinText(){return pr()}isModelStdinInteractive(){return process.stdin.isTTY}createModelParamInputReader(e){return{hasInteractiveStdin:()=>this.isModelStdinInteractive(),readFileText:t=>this.readModelInputTextFile(e,t),readStdin:()=>this.readModelStdinText()}}async readQueryRequest(e,t){let n=Ua(e).resolveInput(t),o=await Ju(e,t,this.createModelParamInputReader(e));return EB(o,n.label,n.inputId)}};function EB(r,e,t="value"){let n;try{n=JSON.parse(r)}catch(o){throw new P("err.cli.invalidJsonObject",{inputId:t,source:e},{cause:o})}if(!W(n))throw new P("err.cli.invalidJsonObject",{inputId:t,source:e});return n}function TB(){return{reason:"noRows",message:d("cli.cmd.model.query.empty")}}function aa(r,e){return e===void 0?r:{...r,logLevel:e}}function pm(r){let e=W(r.result)?r.result:{},t=xB(e.fields),n=Array.isArray(e.rows)?e.rows:[];return{columns:t,rows:n.map(o=>MB(o,t)),...n.length===0?{empty:TB()}:{}}}function MB(r,e){return Array.isArray(r)?r.map(Xe):W(r)?e.map(t=>Xe(r[t])):[Xe(r)]}function xB(r){return Array.isArray(r)?r.map(e=>typeof e=="string"?e:W(e)?String(e.alias??e.name??e.field??""):String(e)):[]}O();F();I();V();var Rx=E(require("fs")),RC="force",bx="output",bC=class extends Ct{toOptions(e){return{target:IB(e),output:e.value(bx),force:e.has(RC)}}async prepareModelCommand(e,t){if(t.target.type!=="query")return t;let n=t;return n.queryRequest!==void 0?n:{...t,queryRequest:await this.readQueryRequest(e,"exportTarget")}}async executeModelCommand(e,t,n,o){let i=ut(e.cwd,o.output),a=o.target.type==="select"?await n.exportModelSelectData(aa({model:o.target.model,...o.target.fields.length>0?{fields:[...o.target.fields]}:{},...o.target.where!==void 0?{where:o.target.where}:{},...o.target.order!==void 0?{order:o.target.order}:{}},e.config.explicitLogLevel)):await n.exportModelQueryData(aa(o.queryRequest,e.config.explicitLogLevel));await dm(i,a,{force:o.force,overwriteFlag:`--${RC}`});let s=await Rx.promises.stat(i),c={...ee(e,t),...o.target.type==="select"?{model:o.target.model}:{query:!0},output:i,size:s.size};return e.output.result(c,()=>d("cli.cmd.model.export.exportedData",i)),0}},Ex={path:["model","export"],domain:"model",spec:{name:"model export",flags:[{name:Ls,takesValue:!0,repeatable:!0,valueHint:"fields",helpGroup:"query",param:{list:{separator:","}}},{name:Ns,takesValue:!0,valueHint:"expression",helpGroup:"query"},{name:Os,takesValue:!0,valueHint:"order",helpGroup:"query"},{name:ko,takesValue:!0,valueHint:"json",helpGroup:"query",param:{source:"value"}},{name:wo,takesValue:!0,valueHint:"file",helpGroup:"query",param:{source:"file"}},{name:Po,takesValue:!1,helpGroup:"query",param:{source:"stdin"}},{name:bx,takesValue:!0,valueHint:"csv-file",helpGroup:"output",param:{required:!0,nonEmpty:!0,inputId:"outputFile"}},{name:RC,takesValue:!1,helpGroup:"output"}],positionals:[{name:"model",param:{source:"value",type:"string",nonEmpty:!0}}],inputGroups:[{name:"exportTarget",mode:"exactlyOne",inputId:"value",members:["<model>",`--${ko}`,`--${wo}`,`--${Po}`]}],usageArgs:"[<options>] [<model>]",examples:["succapp model export /DEMO/data/tables/customer.tbl --select ID,NAME --output=customers.csv","succapp model export --query-file ./query.json --output=result.csv"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new bC};function IB(r){let e=r.value("model"),t=r.value(ko)!==void 0||r.value(wo)!==void 0||r.has(Po);if(e!==void 0&&t)throw new P("err.cli.conflictingInputs",{inputs:["<model>",`--${ko}`,`--${wo}`,`--${Po}`]});if(e!==void 0)return{type:"select",model:e,fields:r.values(Ls),where:r.value(Ns),order:r.value(Os)};if(!t)throw new P("err.cli.missingInput",{inputId:"value",sources:["<model>",`--${ko}=<json>`,`--${wo}=<file>`,`--${Po}`]});return{type:"query"}}O();F();I();function en(r,e=""){return r===void 0?e:String(r)}function EC(r,e="-"){if(r===void 0)return e;if(r<1024)return`${r} B`;let t=["KB","MB","GB","TB"],n=r/1024,o=0;for(;n>=1024&&o<t.length-1;)n/=1024,o++;return`${n.toFixed(1)} ${t[o]}`}function Ol(r,e=2,t="-"){return r===void 0?t:`${(r*100).toFixed(e)}%`}var TC="data-property",Tx="dimension-attribute-depth",mm="no-data",Mx="sample-limit",xx="top-n",_B=20,DB=["nullCount","nullRate","distinctCount","minValue","maxValue","sum","avg","median","p90","p95","zeroCount","negativeCount","topValues","sampleValues"],FB=["profiledRowCount","sampled","nullCount","nullRate","distinctCount","minValue","maxValue","sum","avg","median","p90","p95","zeroCount","negativeCount","topValues","sampleValues","estimatedProperties","unavailableProperties"],AB={profiledRowCount:"cli.out.model.profile.profiledRowCount",sampled:"cli.out.model.profile.sampled",nullCount:"cli.out.model.profile.nullCount",nullRate:"cli.out.model.profile.nullRate",distinctCount:"cli.out.model.profile.distinctCount",minValue:"cli.out.model.profile.minValue",maxValue:"cli.out.model.profile.maxValue",sum:"cli.out.model.profile.sum",avg:"cli.out.model.profile.avg",median:"cli.out.model.profile.median",p90:"cli.out.model.profile.p90",p95:"cli.out.model.profile.p95",zeroCount:"cli.out.model.profile.zeroCount",negativeCount:"cli.out.model.profile.negativeCount",topValues:"cli.out.model.profile.topValues",sampleValues:"cli.out.model.profile.sampleValues",estimatedProperties:"cli.out.model.profile.estimatedProperties",unavailableProperties:"cli.out.model.profile.unavailableProperties"},MC=class extends Ct{toOptions(e){let t=e.values(TC);if(e.has(mm)&&t.length>0)throw new P("err.cli.conflictingInputs",{inputs:[`--${mm}`,`--${TC}`]});return{model:e.value("model"),fields:e.values("field"),...e.has(mm)?{dataProperties:[]}:t.length>0?{dataProperties:t}:{},topN:e.integer(xx),sampleLimit:e.integer(Mx),dimensionAttributeDepth:e.integer(Tx)}}async executeModelCommand(e,t,n,o){let i=OB(o),a=await n.fieldProfile(i);return e.output.result({...ee(e,t),model:o.model,request:{fields:i.fields,...i.dataProperties===void 0?{}:{dataProperties:i.dataProperties},...i.topN===void 0?{}:{topN:i.topN},...i.sampleLimit===void 0?{}:{sampleLimit:i.sampleLimit},...i.dimensionAttributeDepth===void 0?{}:{dimensionAttributeDepth:i.dimensionAttributeDepth}},fields:a.fields},()=>LB(a.fields)),0}},Ix={path:["model","field-profile"],domain:"model",spec:{name:"model field-profile",flags:[{name:TC,takesValue:!0,repeatable:!0,valueHint:"property",helpGroup:"field",param:{choices:DB,list:{separator:",",dedupe:!0},nonEmpty:!0}},{name:mm,takesValue:!1,helpGroup:"field"},{name:xx,takesValue:!0,valueHint:"n",helpGroup:"field",param:{type:"integer",min:1,max:50}},{name:Mx,takesValue:!0,valueHint:"n",helpGroup:"field",param:{type:"integer",min:1,max:50}},{name:Tx,takesValue:!0,valueHint:"n",helpGroup:"field",param:{type:"integer",min:0,max:3}}],positionals:[{name:"model",param:{required:!0}},{name:"field",repeatable:!0,description:"cli.cmd.model.fieldProfile.field",param:{required:!0,nonEmpty:!0,maxItems:_B}}],usageArgs:"[<options>] <model> <field>...",examples:["succapp model field-profile /DEMO/data/tables/customer.tbl CUSTOMER_ID --no-data","succapp model field-profile /DEMO/data/tables/customer.tbl AMOUNT --data-property=sum,avg,zeroCount,negativeCount --json","succapp model field-profile /DEMO/data/tables/customer.tbl STATUS --data-property=topValues --top-n=10"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new MC};function OB(r){return{model:r.model,fields:[...r.fields],...r.dataProperties===void 0?{}:{dataProperties:[...r.dataProperties]},...r.topN===void 0?{}:{topN:r.topN},...r.sampleLimit===void 0?{}:{sampleLimit:r.sampleLimit},...r.dimensionAttributeDepth===void 0?{}:{dimensionAttributeDepth:r.dimensionAttributeDepth}}}function LB(r){let e=_x(r),t=FB.filter(n=>e.some(o=>o.dataProfile?.[n]!==void 0));return{columns:[d("cli.out.header.field"),d("cli.out.model.title"),d("cli.out.model.dataType"),d("cli.out.model.role"),...t.map(n=>d(AB[n]))],rows:e.map(n=>[n.fieldPath,n.name??n.desc??"",n.normalizedDt??n.dt??"",n.role??n.inferredRole??"",...t.map(o=>NB(o,n.dataProfile?.[o]))])}}function NB(r,e){return r==="nullRate"?typeof e=="number"?Ol(e):"":r==="sampled"?Sr(e):r==="topValues"&&Array.isArray(e)?e.map(t=>`${Xe(t.value)}: ${t.count} (${Ol(t.rate)})`).join(", "):r==="unavailableProperties"&&Array.isArray(e)?e.map(t=>{if(typeof t!="object"||t===null)return Xe(t);let n=t;return`${Xe(n.property)} (${Xe(n.reason)})`}).join(", "):Xe(e)}function _x(r){let e=[];for(let t of r)e.push(t),t.dimensionAttributes&&e.push(..._x(t.dimensionAttributes));return e}I();var Dx="all",Fx="dim",Ax="measure",xC=class extends Ct{toOptions(e){return{model:e.value("model"),all:e.has(Dx),contains:e.value(Fs),dim:e.has(Fx),measure:e.has(Ax)}}async executeModelCommand(e,t,n,o){let i=await n.listModelFields({model:o.model,all:o.all,dim:o.dim,measure:o.measure,...o.contains!==void 0?{contains:o.contains}:{}}),a=i.length===0?WB():void 0;return e.output.result({...ee(e,t),model:o.model,...a===void 0?{}:{empty:a},fields:i},()=>UB(i,a)),0}},Ox={path:["model","fields"],domain:"model",spec:{name:"model fields",flags:[{name:Dx,takesValue:!1,helpGroup:"field"},{name:Fs,takesValue:!0,valueHint:"text",helpGroup:"field"},{name:Fx,takesValue:!1,helpGroup:"field"},{name:Ax,takesValue:!1,helpGroup:"field"}],positionals:[{name:"model",param:{required:!0}}],usageArgs:"[<options>] <model>",examples:["succapp model fields /DEMO/data/tables/customer.tbl --dim"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new xC};function WB(){return{reason:"noMatches",message:d("cli.cmd.model.fields.empty")}}function UB(r,e){return{columns:[d("cli.out.file.name"),d("cli.out.model.title"),d("cli.out.model.dataType"),d("cli.out.model.dim"),d("cli.out.file.hidden"),d("cli.out.model.dbField")],rows:r.map(t=>[t.name??"",t.desc??"",t.dt??"",Sr(t.dim),Sr(t.hidden),t.fld??""]),...e===void 0?{}:{empty:e}}}I();var IC=class extends Ct{toOptions(e){return{model:e.value("model")}}async executeModelCommand(e,t,n,o){let i=await n.listModelIndexes(o),a=i.length===0?$B():void 0;return e.output.result({...ee(e,t),model:o.model,...a===void 0?{}:{empty:a},indexes:i},()=>jB(i,a)),0}},Lx={path:["model","indexes"],domain:"model",spec:{name:"model indexes",flags:[],positionals:[{name:"model",param:{required:!0}}],usageArgs:"[<options>] <model>",examples:["succapp model indexes /DEMO/data/tables/customer.tbl"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new IC};function $B(){return{reason:"emptyCollection",message:d("cli.cmd.model.indexes.empty")}}function jB(r,e){return{columns:[d("cli.out.model.kind"),d("cli.out.file.name"),d("cli.out.model.fields"),d("cli.out.model.unique"),d("cli.out.model.enabled")],rows:r.map(t=>[t.kind??"",t.name??"",(t.fields??[]).join(", "),Sr(t.unique),Sr(t.enabled)]),...e===void 0?{}:{empty:e}}}O();var _C=class extends Ct{toOptions(e){return{maxRows:e.integer(As)}}async prepareModelCommand(e,t){let n=t;return n.request!==void 0?n:{...t,request:await this.readQueryRequest(e,"querySource")}}async executeModelCommand(e,t,n,o){let i=aa(o.request,e.config.explicitLogLevel),a=await n.queryModelsStream(i,o.maxRows);return await e.output.resultStream({...ee(e,t)},a,s=>pm(s)),0}},Nx={path:["model","query"],domain:"model",spec:{name:"model query",flags:[{name:ko,takesValue:!0,valueHint:"json",helpGroup:"query",param:{source:"value"}},{name:wo,takesValue:!0,valueHint:"file",helpGroup:"query",param:{source:"file"}},{name:Po,takesValue:!1,helpGroup:"query",param:{source:"stdin"}},{name:As,takesValue:!0,valueHint:"n",helpGroup:"output",param:{type:"integer",min:1}}],positionals:[],inputGroups:[{name:"querySource",mode:"exactlyOne",inputId:"value",members:[`--${ko}`,`--${wo}`,`--${Po}`]}],usageArgs:"[<options>]",examples:[["succapp model query --query '{",' "sources": ["/DEMO/data/tables/customer.tbl"],',' "fields": [{',' "alias": "NAME",',' "exp": "NAME"'," }],",' "options": {',' "enableLimit": true,',' "limit": 20'," }","}' --json"].join(`
|
|
90
|
+
`),"succapp model query --query-file ./query.json --max-rows 100 --json","cat query.json | succapp model query --stdin"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new _C};I();var DC=class extends Ct{toOptions(e){return{model:e.value("model")}}async executeModelCommand(e,t,n,o){let i=await n.getModelSummary(o);return e.output.result({...ee(e,t),model:i},()=>FC(i)),0}},Wx={path:["model","show"],domain:"model",spec:{name:"model show",flags:[],positionals:[{name:"model",param:{required:!0}}],usageArgs:"[<options>] <model>",examples:["succapp model show /DEMO/data/tables/customer.tbl"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new DC};function FC(r){return{columns:[d("cli.out.header.field"),d("cli.out.header.value")],rows:[[d("cli.out.file.id"),r.id],[d("cli.out.file.path"),r.path],[d("cli.out.file.name"),r.name],[d("cli.out.file.project"),r.projectName??""],[d("cli.out.model.type"),r.tableType??""],[d("cli.out.model.fields"),Xe(r.fieldCount)],[d("cli.out.model.extracted"),Sr(r.extracted)],[d("cli.out.model.writable"),Sr(r.writable)],[d("cli.out.model.primaryKeys"),(r.primaryKeys??[]).join(", ")],[d("cli.out.model.businessKeys"),(r.businessKeys??[]).join(", ")],[d("cli.out.model.extractMode"),r.extractTargetType??""],[d("cli.out.model.targetTable"),r.dbTableName??""]]}}I();var AC=class extends Ct{toOptions(e){return{model:e.value("model")}}async executeModelCommand(e,t,n,o){let i=await n.profile(o);return e.output.result({...ee(e,t),...i},()=>VB(i)),0}},Ux={path:["model","profile"],domain:"model",spec:{name:"model profile",flags:[],positionals:[{name:"model",param:{required:!0}}],usageArgs:"[<options>] <model>",examples:["succapp model profile /DEMO/data/tables/customer.tbl","succapp model profile /DEMO/data/tables/customer.tbl --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new AC};function VB(r){let e=FC(r.model);return{...e,rows:[...e.rows,[d("cli.out.model.rowCount"),qB(r.dataRowCount)]]}}function qB(r){return r.value!==void 0?Xe(r.value):Xr(r.errorInfo)}O();F();I();re();V();var $x="all-fields",jx="contains-any",Vx="field-contains",qx="field-contains-any",Bx="field-limit",Hx="field-match",Gx="limit",Ll="name",fm="parent-dir",Nl="path",hm="project",zx="type",LC=class extends Ct{toOptions(e){return{request:BB(e)}}async executeModelCommand(e,t,n,o){let i=await n.searchModels(o.request),a=i.results.reduce((c,l)=>c+l.fields.length,0),s=i.results.length===0?GB(o.request):void 0;return e.output.result({...ee(e,t),filters:o.request,summary:{...i.summary,matchedFields:a},...s===void 0?{}:{empty:s},results:i.results},()=>HB(i.results,s)),i.summary.hasMore&&e.output.warning(d("cli.cmd.model.search.hasMore",i.summary.limit)),0}},Kx={path:["model","search"],domain:"model",spec:{name:"model search",flags:[{name:Nl,takesValue:!0,valueHint:"glob",helpGroup:"search",param:{nonEmpty:!0}},{name:Ll,takesValue:!0,valueHint:"glob",helpGroup:"search",param:{nonEmpty:!0}},{name:fm,takesValue:!0,valueHint:"path",helpGroup:"search",param:{nonEmpty:!0}},{name:hm,takesValue:!0,valueHint:"name",helpGroup:"search",param:{nonEmpty:!0}},{name:zx,takesValue:!0,repeatable:!0,valueHint:"type",helpGroup:"search",param:{nonEmpty:!0,list:{separator:","}}},{name:Fs,takesValue:!0,repeatable:!0,valueHint:"text",helpGroup:"search",param:{nonEmpty:!0}},{name:jx,takesValue:!0,repeatable:!0,valueHint:"text",helpGroup:"search",param:{nonEmpty:!0}},{name:Vx,takesValue:!0,repeatable:!0,valueHint:"text",helpGroup:"field",param:{nonEmpty:!0}},{name:qx,takesValue:!0,repeatable:!0,valueHint:"text",helpGroup:"field",param:{nonEmpty:!0}},{name:Hx,takesValue:!0,valueHint:"kind",helpGroup:"field",param:{choices:["dim","measure","all"]}},{name:$x,takesValue:!1,helpGroup:"field"},{name:Bx,takesValue:!0,valueHint:"n",helpGroup:"field",param:{type:"integer",min:1,max:50}},{name:Gx,takesValue:!0,valueHint:"n",helpGroup:"output",param:{type:"integer",min:1,max:200}}],positionals:[{name:"query",description:"cli.cmd.model.search.query",param:{nonEmpty:!0}}],usageArgs:"[<options>] [<query>]",examples:["succapp model search customer --project=DEMO","succapp model search '/DEMO/data/tables/**' --type=App --limit=20","succapp model search --parent-dir='/DEMO/data/tables' --name='*.tbl'","succapp model search --field-contains='amount' --field-match=measure --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new LC};function BB(r){let e={},t=r.positional[0],n=Ce(t);if(t!==void 0&&n===void 0)throw new P("err.cli.missingInput",{inputId:"value",sources:["<query>"]});let o=Ce(r.value(Nl)),i=Ce(r.value(Ll)),a=Ce(r.value(fm)),s=Ce(r.value(hm));if(n?.startsWith("/"))OC("<query>",[[o,`--${Nl}`],[i,`--${Ll}`],[a,`--${fm}`],[s,`--${hm}`]]),o=n;else{if(n?.includes("/"))throw new P("err.meta.invalidPath",{path:n,reason:"relativeSearchQuery"});n!==void 0&&gn(n)?(OC("<query>",[[o,`--${Nl}`],[i,`--${Ll}`]]),i=n):n!==void 0&&(e.query=n)}if(o!==void 0&&(OC(`--${Nl}`,[[i,`--${Ll}`],[a,`--${fm}`],[s,`--${hm}`]]),e.path=$o(o)),e.name=i,a!==void 0){if(gn(a))throw new P("err.meta.invalidPath",{path:a,reason:"parentDirGlob"});e.parentDir=$o(a);let f=zB(e.parentDir);if(s!==void 0&&s!==f)throw new P("err.meta.invalidPath",{path:e.parentDir,projectName:s,parentProjectName:f,reason:"parentProjectMismatch"})}e.projectName=s;let c=r.values(zx),l=r.values(Fs),u=r.values(jx),p=r.values(Vx),g=r.values(qx);e.tableTypes=c.length===0?void 0:[...c],e.contains=l.length===0?void 0:[...l],e.containsAny=u.length===0?void 0:[...u],e.fieldContains=p.length===0?void 0:[...p],e.fieldContainsAny=g.length===0?void 0:[...g];let m=r.value(Hx);return(m==="dim"||m==="measure"||m==="all")&&(e.fieldMatch=m),r.has($x)&&(e.allFields=!0),e.fieldLimit=r.integer(Bx),e.limit=r.integer(Gx),D(e)}function HB(r,e){return{columns:[d("cli.out.search.score"),d("cli.out.file.id"),d("cli.out.model.type"),d("cli.out.header.revision"),d("cli.out.header.modified"),d("cli.out.model.fields"),d("cli.out.model.matchedFields"),d("cli.out.file.path")],rows:r.map(t=>[Xe(t.score),t.model.id,t.model.tableType??"",Xe(t.model.revision),na(t.model.modifyTime),Xe(t.model.fieldCount),t.fields.map(n=>n.fld??n.expVarName??n.name??"").filter(Boolean).join(", "),t.model.path]),...e===void 0?{}:{empty:e}}}function GB(r){let e=om(r,{path:"cli.cmd.model.search.pathHint",name:"cli.cmd.model.search.nameHint"});return{reason:"noMatches",message:d("cli.cmd.model.search.empty"),...e===void 0?{}:{hint:e}}}function OC(r,e){let t=e.filter(([n])=>n!==void 0).map(([,n])=>n);if(t.length!==0)throw new P("err.cli.conflictingInputs",{inputs:[r,...t]})}function zB(r){return r.split("/")[1]||void 0}var NC=class extends Ct{toOptions(e){return{model:e.value("model"),fields:e.values(Ls),where:e.value(Ns),order:e.value(Os),maxRows:e.integer(As)}}async executeModelCommand(e,t,n,o){let i=await n.selectModelStream(aa({model:o.model,...o.fields.length>0?{fields:[...o.fields]}:{},...o.where!==void 0?{where:o.where}:{},...o.order!==void 0?{order:o.order}:{},...o.maxRows!==void 0?{maxRows:o.maxRows}:{}},e.config.explicitLogLevel));return await e.output.resultStream({...ee(e,t),model:o.model},i,a=>pm(a)),0}},Jx={path:["model","select"],domain:"model",spec:{name:"model select",flags:[{name:Ls,takesValue:!0,repeatable:!0,valueHint:"fields",helpGroup:"query",param:{list:{separator:","}}},{name:Ns,takesValue:!0,valueHint:"expression",helpGroup:"query"},{name:Os,takesValue:!0,valueHint:"order",helpGroup:"query"},{name:As,takesValue:!0,valueHint:"n",helpGroup:"output",param:{type:"integer",min:1}}],positionals:[{name:"model",param:{required:!0}}],usageArgs:"[<options>] <model>",examples:[`succapp model select /DEMO/data/tables/customer.tbl --where "STATUS='ACTIVE'" --max-rows 20`]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new NC};var Qx=[Kx,Wx,Ux,Ix,Ox,Lx,Jx,Nx,Ex];I();re();var UC=["product","sys","metadata","inspect","jvm","env"],KB=[...UC,"all"],JB=["product","metadata"],QB=["sys","inspect","jvm","env"],WC=class extends ae{toOptions(e){let t=YB(e.values("scope"));return{url:e.value("url"),scopes:t.scopes,all:e.has("all")||t.all,raw:e.has("raw")}}async executeCommand(e,t){let n=await this.resolveServerUrl(e,t.url),o=await this.createServerApiClient(e,n),i=XB(t)?await o.getServerDetailInfo():await o.getServerInfo();return e.output.result({...e.workspace?{workspace:e.workspace.root}:{},server:n,info:ZB(i,t)},()=>e2(n,i,t)),0}},Yx={path:["server","info"],domain:"server",spec:{name:"server info",flags:[{name:"scope",takesValue:!0,repeatable:!0,valueHint:"name",helpGroup:"output",param:{choices:KB,list:{separator:",",empty:"error",dedupe:!0}}},{name:"all",takesValue:!1,helpGroup:"output"},{name:"raw",takesValue:!1,helpGroup:"output"}],positionals:[{name:"url",role:"server-url"}],usageArgs:"[<options>] [<url>]",examples:["succapp server info","succapp --server=https://bi.example.com server info","succapp server info --scope=env,jvm","succapp server info --scope=all","succapp server info http://localhost:8180 --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new WC};function YB(r){let e=[],t=!1;for(let n of r){if(n==="all"){t=!0;continue}if(UC.includes(n)){e.push(n);continue}}return{scopes:e,all:t}}function Xx(r){return r.all?UC:r.scopes.length>0?r.scopes:JB}function XB(r){return r.raw||r.all||r.scopes.some(e=>QB.includes(e))}function ZB(r,e){if(e.raw)return D(r);let t=Xx(e);return D({productType:r.productType,version:r.version,devToolApiVersion:r.devToolApiVersion,scopes:t,productInfo:t.includes("product")?jC(r):void 0,sysInfo:t.includes("sys")?Zx(r):void 0,metadataVersions:t.includes("metadata")?r.metadataVersions:void 0,sysInspectInfo:t.includes("inspect")?Ws(r,"sysInspectInfo"):void 0,jvmInfo:t.includes("jvm")?Ws(r,"jvmInfo"):void 0,systemEnvirInfo:t.includes("env")?Ws(r,"systemEnvirInfo"):void 0})}function e2(r,e,t){if(t.raw)return JSON.stringify(e,null,2);let n=[Re(t2(r,e))];for(let o of Xx(t)){let i=r2(o,e);i&&n.push("",i)}return n.join(`
|
|
91
|
+
`)}function t2(r,e){return{columns:[d("cli.out.header.field"),d("cli.out.header.value")],rows:[[d("cli.out.common.server"),r],[d("cli.out.common.product"),e.productType??""],[d("cli.out.header.version"),e.version??s2(jC(e),"productVersion")??""],[d("cli.out.common.api"),e.devToolApiVersion??""]]}}function r2(r,e){switch(r){case"product":return gm(d("cli.out.common.productInfo"),jC(e));case"sys":return n2(Zx(e));case"metadata":return o2(e.metadataVersions);case"inspect":return gm(d("cli.out.common.sysInspectInfo"),Ws(e,"sysInspectInfo"));case"jvm":return gm(d("cli.out.common.jvmInfo"),Ws(e,"jvmInfo"));case"env":return gm(d("cli.out.common.systemEnvirInfo"),Ws(e,"systemEnvirInfo"));default:return""}}function gm(r,e){return!e||Object.keys(e).length===0?"":[r,Re({columns:[d("cli.out.header.field"),d("cli.out.header.value")],rows:Object.entries(e).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>[t,$C(n)])})].join(`
|
|
92
|
+
`)}function n2(r){return!r||r.length===0?"":[d("cli.out.common.sysInfo"),Re({columns:[d("cli.out.header.field"),d("cli.out.header.value")],rows:r.map(e=>[e.name,i2(e)])})].join(`
|
|
93
|
+
`)}function o2(r){return!r||Object.keys(r).length===0?"":[d("cli.out.common.metaVersions"),Re({columns:[d("cli.out.header.metaType"),d("cli.out.header.latestVersion")],rows:Object.entries(r).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,t])})].join(`
|
|
94
|
+
`)}function i2(r){return r.name==="startTime"||r.name==="osTime"?a2(r.value):$C(r.value)}function a2(r){if(typeof r!="number")return $C(r);let e=new Date(r),t=n=>n.toString().padStart(2,"0");return[e.getFullYear(),t(e.getMonth()+1),t(e.getDate())].join("-")+" "+[t(e.getHours()),t(e.getMinutes()),t(e.getSeconds())].join(":")}function $C(r){return r==null?"":typeof r=="string"?r:typeof r=="number"||typeof r=="boolean"?String(r):JSON.stringify(r)}function s2(r,e){let t=r?.[e];return typeof t=="string"?t:void 0}function jC(r){return"productInfo"in r?r.productInfo:{productVersion:r.version}}function Zx(r){return"sysInfo"in r?r.sysInfo:void 0}function Ws(r,e){switch(e){case"sysInspectInfo":return"sysInspectInfo"in r?r.sysInspectInfo:void 0;case"jvmInfo":return"jvmInfo"in r?r.jvmInfo:void 0;case"systemEnvirInfo":return"systemEnvirInfo"in r?r.systemEnvirInfo:void 0;default:return}}I();var VC=class extends ae{constructor(t=cd){super();this.ping=t}toOptions(t){return{url:t.value("url")}}async executeCommand(t,n){let o=await this.resolveServerUrl(t,n.url);return await this.ping(o),t.output.result({server:o,reachable:!0},()=>d("cli.cmd.server.serverReachable",o)),0}},eI={path:["server","ping"],domain:"server",spec:{name:"server ping",flags:[],positionals:[{name:"url",role:"server-url"}],usageArgs:"[<options>] [<url>]",examples:["succapp server ping","succapp --server=https://bi.example.com server ping","succapp server ping http://localhost:8180 --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new VC};O();F();I();re();function tI(r,e,t){if(r!==void 0&&e)throw new P("err.cli.conflictingInputs",{inputs:["<name>","--all"],context:{command:t}});if(e)return"*";if(r===void 0)throw new P("err.cli.missingInput",{inputId:"value",sources:["<name>","--all"],context:{command:t}});return r}function rI(r){return D({cacheName:r.cacheName,entitiesCount:r.entitiesCount,diskUsed:r.diskUsed,memUsed:r.memUsed,hitRate:r.hitRate,hitTimes:r.hitTimes,totalAccessTimes:r.totalAccessTimes,lastAccessTime:r.lastAccessTime})}function nI(r,e){if(r.length===0)return e?.message??d("cli.cmd.server.cache.list.empty");let t={columns:[d("cli.out.header.cacheName"),d("cli.out.header.cacheEntries"),d("cli.out.header.cacheDisk"),d("cli.out.header.cacheMem"),d("cli.out.header.cacheHitRate")],rows:r.map(n=>[n.cacheName,en(n.entitiesCount,"-"),EC(n.diskUsed),EC(n.memUsed),Ol(n.hitRate)])};return Re(t)}I();re();var qC=class extends ae{toOptions(e){return{url:e.value("url"),cacheName:e.value("name"),all:e.has("all")}}async executeCommand(e,t){let n=tI(t.cacheName,t.all,"server cache clean"),o=await this.resolveServerUrl(e,t.url);return await(await this.createServerApiClient(e,o)).cleanCache(n),e.output.result(D({...e.workspace?{workspace:e.workspace.root}:{},server:o,cleaned:!0,cacheName:n}),()=>d("cli.cmd.server.cache.clean.cleaned",o,n)),0}},oI={path:["server","cache","clean"],domain:"server",spec:{name:"server cache clean",flags:[{name:"all",takesValue:!1,helpGroup:"options"}],positionals:[{name:"url",role:"server-url"},{name:"name"}],usageArgs:"[<options>] [<url>] [<name>]",examples:["succapp server cache clean metaCache","succapp --server=https://bi.example.com server cache clean themeCache","succapp server cache clean --all"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new qC};re();I();var BC=class extends ae{toOptions(e){return{url:e.value("url")}}async executeCommand(e,t){let n=await this.resolveServerUrl(e,t.url),i=await(await this.createServerApiClient(e,n)).listCaches(),a=i.length===0?{reason:"emptyCollection",message:d("cli.cmd.server.cache.list.empty")}:void 0;return e.output.result(D({...e.workspace?{workspace:e.workspace.root}:{},server:n,summary:{caches:i.length},empty:a,caches:i.map(rI)}),()=>nI(i,a)),0}},iI={path:["server","cache","list"],domain:"server",spec:{name:"server cache list",flags:[],positionals:[{name:"url",role:"server-url"}],usageArgs:"[<options>] [<url>]",examples:["succapp server cache list","succapp --server=https://bi.example.com server cache list","succapp server cache list --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new BC};I();re();var aI=E(require("fs")),Tt=E(require("path"));F();V();var En=Tt.posix.join("sysdata","extensions");function sI(r){if(r.extensionName){let e=r.extensionName.trim();return l2(e)?{extensionRoot:ym(r.workspaceRoot,e),extensionName:e}:void 0}if(r.path)return u2(r.workspaceRoot,r.path)}function ym(r,e){return Tt.join(r,En,e)}async function HC(r){return Se(Tt.join(r,En))}async function c2(r){let e=Tt.join(r,En),t;try{t=await aI.promises.readdir(e,{withFileTypes:!0})}catch(n){if(_(n))return[];throw n}return t.filter(n=>n.isDirectory()).map(n=>n.name).sort()}async function cI(r){return c2(r)}function l2(r){return r.length>0&&r!=="."&&r!==".."&&!r.includes("/")&&!r.includes("\\")}function u2(r,e){let t=Tt.isAbsolute(e)?Tt.normalize(e):Tt.resolve(r,e),n=Tt.join(r,En),o=n+Tt.sep;if(t!==n&&!t.startsWith(o))return;let a=Tt.relative(n,t).split(Tt.sep)[0];if(!(!a||a===".."||a==="."))return{extensionRoot:Tt.join(n,a),extensionName:a}}function lI(r){return D({extensionPoint:r.extensionPoint,templateName:r.templateName,name:r.summary.name,desc:r.summary.desc,version:r.summary.version})}function uI(r,e){return{extensionName:r,extensionRoot:e.extensionRoot,packageJsonPath:e.packageJsonPath,extensionPoint:e.extensionPoint,templateName:e.templateName,template:d2(e.templateSummary)}}function dI(r){let e=r.metadataVersionSuggestions??[];return{summary:{pushed:r.pushed.length,rejected:r.rejected.length,failures:r.failures.length,metadataVersionSuggestions:e.length},pushed:r.pushed,rejected:r.rejected.map(oi),failures:r.failures.map(am),metadataVersionSuggestions:e.map(sm)}}function pI(r,e){return r.length===0?e?.message??d("cli.out.workspace.ext.extTemplates"):{columns:[d("cli.out.workspace.ext.extPoint"),d("cli.out.workspace.ext.template"),d("cli.out.header.version"),d("cli.out.header.description")],rows:r.map(t=>[t.extensionPoint,t.templateName,t.summary.version??"",t.summary.desc??""])}}function mI(r,e){return r.length===0?e?.message??d("cli.out.workspace.ext.ext",En):{columns:[d("cli.out.header.extension")],rows:r.map(t=>[t])}}function fI(r,e){return d("cli.out.workspace.ext.createdExt",r,e.extensionRoot)}function hI(r,e){if(e.pushed.length===0&&e.rejected.length===0&&e.failures.length===0)return d("cli.out.workspace.ext.noLocalChanges",r);let t=[d("cli.out.workspace.ext.pushExtPushed",r,e.pushed.length,e.rejected.length,e.failures.length)];e.pushed.length>0&&(t.push(d("cli.out.workspace.ext.pushedFiles",e.pushed.length)),t.push(p2(e.pushed))),e.rejected.length>0&&(t.push(d("cli.out.workspace.ext.pushBlockedRemote",e.rejected.length)),t.push(ii(e.rejected))),e.failures.length>0&&(t.push(d("cli.out.workspace.ext.failed",e.failures.length)),t.push(m2(e.failures)));let n=e.metadataVersionSuggestions??[];return n.length>0&&(t.push(d("cli.out.workspace.ext.metaVersions",n.length)),t.push(f2(n))),t.join(`
|
|
95
|
+
`)}function d2(r){return D({name:r.name,desc:r.desc,version:r.version})}function p2(r){return Re({columns:[d("cli.out.header.path")],rows:r.map(e=>[e])})}function m2(r){return Re({columns:[d("cli.out.header.path"),d("cli.out.header.error")],rows:r.map(e=>[e.path,Xr(e.errorInfo)])})}function f2(r){return Re({columns:[d("cli.out.header.path"),d("cli.out.workspace.ext.version"),d("cli.out.workspace.ext.targetVersion"),d("cli.out.workspace.ext.kind")],rows:r.map(e=>[e.path,e.currentVersion??"",e.targetVersion,cm(e.kind)])})}re();I();var wm=E(require("fs")),Tn=E(require("path"));Y();I();Nn();F();O();V();var gI=E(require("path"));nt();Y();var h2=M("workspace.extension-dev.package");async function yI(r,e){let t=gI.join(r,"package.json"),n=await Ue(t);if(!n.trim())return h2.warn(`extension package.json is missing or empty: ${t}`),!1;let o=Fr(n,["name"],e);return o===n?!1:(await qt(t,o),!0)}var O2=QI(),L2=/^[a-z0-9]+(?:-[a-z0-9]+){2,}$/,N2=M("workspace.extension-dev.create"),Pm=class{workspace;cachedClient;cachedOptions;constructor(e){this.workspace=e}async prepare(e=Pt.INSTANCE){if(e.start(1,{message:d("workspace.extension.progress.templates")}),!await HC(this.workspace.root))throw new _t("err.extension.sysdataNotCloned",{extensionsDir:Tn.join(this.workspace.root,En)});let n=await(await this.requireClient()).getExtensionTemplates(),o=YC(n);if(o.length===0)throw new _t("err.extension.templateUnavailable");return this.cachedOptions=o,e.step(1),o}groupOptionsByExtensionPoint(){let e=this.cachedOptions??[],t=new Map;for(let n of e){let o=t.get(n.extensionPoint)??[];o.push(n),t.set(n.extensionPoint,o)}return t}async validate(e){let t=e.extensionName.trim();if(!t)return{ok:!1,error:"empty"};if(!L2.test(t))return{ok:!1,error:"invalidFormat"};let o=t.split("-")[1];return o!==e.extensionPoint?{ok:!1,error:"extensionPointMismatch",actualExtensionPoint:o}:await Se(ym(this.workspace.root,t))?{ok:!1,error:"targetExists"}:{ok:!0}}async execute(e){let{extensionPoint:t,templateName:n,extensionName:o}=e,i=e.task??Pt.INSTANCE;i.start(100,{message:d("workspace.extension.progress.create.running",o),retainOnFinish:!0});let a=i.subTaskMonitor(10),s=i.subTaskMonitor(35),c=i.subTaskMonitor(40),l=i.subTaskMonitor(15);if(a.start(1),!await HC(this.workspace.root))throw new _t("err.extension.sysdataNotCloned",{extensionsDir:Tn.join(this.workspace.root,En)});let u=await this.requireOption(t,n),p=ym(this.workspace.root,o);if(await Se(p))throw new Error(`target extension directory already exists: ${p}`);a.step(1);let g=await this.requireClient();s.start(1);let m=await g.downloadExtensionTemplate(t,n);return s.step(1),c.start(1),await W2(m,p),await yI(p,o),c.step(1),await this.workspace.refreshSyncStatus(l),i.setMessage(d("workspace.extension.progress.create.done",o)),i.finish(),{extensionRoot:p,packageJsonPath:Tn.join(p,"package.json"),extensionPoint:t,templateName:n,templateSummary:u.summary}}async requireClient(){return this.cachedClient||(this.cachedClient=await this.workspace.requireClient()),this.cachedClient}async requireOption(e,t){let o=(this.cachedOptions??await this.prepare()).find(i=>i.extensionPoint===e&&i.templateName===t);if(!o)throw new Error(`extension template not found: ${e}/${t}`);return o}};function YC(r){let e=[],t=r.templates??{};for(let[n,o]of Object.entries(t))if(o)for(let[i,a]of Object.entries(o))e.push({extensionPoint:n,templateName:i,summary:a});return e}async function W2(r,e){let n=new O2(r).getEntries();if(n.length===0)throw new Error("extension template zip is empty");await wm.promises.mkdir(e,{recursive:!0});try{let o=Tn.resolve(e),i=o+Tn.sep,a=[],s=new Set;for(let c of n){let l=ht(c.entryName),u=jo(l.endsWith("/")?l.slice(0,-1):l,"extension template entry"),p=Tn.resolve(o,u);if(p!==o&&!p.startsWith(i))throw new Error(`extension template entry escapes target directory: ${l}`);if(l.endsWith("/")||c.isDirectory){s.add(p);continue}s.add(Tn.dirname(p)),a.push({destination:p,entry:c})}await Promise.all(Array.from(s).map(c=>wm.promises.mkdir(c,{recursive:!0}))),await Promise.all(a.map(({destination:c,entry:l})=>wm.promises.writeFile(c,l.getData())))}catch(o){try{await zr(e)}catch(i){N2.debug(`cleanup partial extension directory failed: ${e}`,i)}throw o}}var XC=class extends ae{toOptions(e){return{extensionPoint:e.value("extension-point")}}async executeCommand(e,t){let n=await this.resolveServerUrl(e),o=await this.createServerApiClient(e,n),i=U2(YC(await o.getExtensionTemplates()),t.extensionPoint),a=i.length===0?{reason:t.extensionPoint===void 0?"emptyCollection":"noMatches",message:d("cli.out.workspace.ext.extTemplates")}:void 0;return e.output.result(D({workspace:e.workspace?.root,server:n,extensionPoint:t.extensionPoint,empty:a,templates:i.map(lI)}),()=>pI(i,a)),0}},YI={path:["server","extension","template","list"],domain:"server",spec:{name:"server extension template list",flags:[{name:"extension-point",takesValue:!0,valueHint:"point",helpGroup:"options",param:{nonEmpty:!0}}],positionals:[],usageArgs:"[<options>]",examples:["succapp server extension template list","succapp --server=https://bi.example.com server extension template list --extension-point=component"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new XC};function U2(r,e){return e?r.filter(t=>t.extensionPoint===e):[...r]}F();O();wi();I();re();V();var Rm=E(require("fs")),$2=120,e_=" ",St=class extends ae{async resolveServerFileTarget(e,t){return{serverUrl:await this.resolveServerUrl(e,t.url),remotePath:$o(t.path)}}createServerFileClient(e,t){return this.createServerApiClient(e,t.serverUrl)}};function It(r,e={}){let[t,n]=r.positional,o=e.defaultPath;return t===void 0?(o===void 0&&XI(),{path:o}):n===void 0?mn(t)?(o===void 0&&XI(),{url:t,path:o}):{path:t}:{url:t,path:n}}function XI(){throw new P("err.cli.missingInput",{inputId:"serverFilePath",sources:["<path>"]})}function bm(r){let e=Ce(r.value("file")),t=r.has("stdin");if(e&&t)throw new P("err.cli.conflictingInputs",{inputs:["--file=<local-file>","--stdin"]});if(!e&&!t)throw new P("err.cli.missingInput",{inputId:"contentSource",sources:["--file=<local-file>","--stdin"]});return e?{kind:"file",file:e}:{kind:"stdin"}}async function Em(r,e,t){if(e.kind==="stdin")return{source:"stdin",content:await t()};let n=ut(r.cwd,e.file);if(!(await Ja(n)).isFile())throw new P("err.cli.invalidRegularFile",{inputId:"inputFile",source:n,path:n});return{source:"file",localFile:n,content:Rm.createReadStream(n)}}async function t_(r,e){try{await Rm.promises.stat(r)}catch(t){if(_(t))return;throw t}if(!e)throw new P("err.cli.confirmationRequired",{reason:"outputOverwrite",flag:"--force",path:r})}function Tm(r,e,t){if(r!==void 0&&e)throw new P("err.cli.conflictingInputs",{inputs:["--expected-revision","--force"],context:{command:t}});if(r===void 0&&!e)throw new P("err.cli.missingInput",{inputId:"revisionOrForce",sources:["--expected-revision=<revision>","--force"],context:{command:t}})}function Ro(r){return D({id:r.id,revision:r.revision,path:r.path,parentDir:r.parentDir,name:r.name,projectName:r.projectName,isFolder:r.isFolder,icon:r.icon,desc:r.desc,type:r.type,subFileType:r.subFileType,order:r.order,creator:r.creator,createTime:r.createTime,modifier:r.modifier,modifyTime:r.modifyTime,hidden:r.hidden,labels:r.labels,size:r.size,hash:r.hash,option:r.option,customOption:r.customOption})}function j2(r){return D({path:r.path,oldPath:r.oldPath,modifyTime:r.modifyTime,contentMutation:r.contentMutation,pathMutation:r.pathMutation,metaInfoChanged:r.metaInfoChanged,metaInfo:r.metaInfo?Ro(r.metaInfo):void 0,warnings:r.warnings})}function Vs(r,e,t,n){return D({workspace:r.workspace?.root,server:e,path:t.path,source:n?.source,localFile:n?.localFile,result:j2(t)})}async function qs(r,e,t){try{let n=await t();return V2(r,n),n}catch(n){let o=q2(n,r,e);if(!o)throw n;r_(r,e,o)}}function V2(r,e){e.success||r_(r,e.path,cl(e.errorInfo,{action:r,path:e.path}))}function r_(r,e,t){let n=Xr(t)||d("cli.cmd.server.file.unknownServerFile"),o={action:r,remotePath:e,reason:n,errorInfo:t};throw B2(t)?new xr("err.base.operationFailed",o,{cause:t}):new _t("err.base.operationFailed",o,{cause:t})}function q2(r,e,t){if(!(!(r instanceof jr)||!r.remoteError))return cl(Lo(r.remoteError),{action:e,path:t})}function B2(r){let e=Jd(r);return e==="pull"||e==="rename"}function n_(r,e){return{columns:[d("cli.out.file.id"),d("cli.out.header.kind"),d("cli.out.header.type"),d("cli.out.header.revision"),d("cli.out.header.modified"),d("cli.out.file.size"),d("cli.out.header.path")],rows:r.map(t=>[t.id,t.isFolder?d("cli.out.file.folder"):d("cli.out.file.file"),Mn(t.type),en(t.revision),na(t.modifyTime),en(t.size),t.path]),...e===void 0?{}:{empty:e}}}function o_(r,e,t){return J2(e)&&r.length>0?H2(r,e):{columns:[d("cli.out.search.score"),d("cli.out.file.id"),d("cli.out.header.kind"),d("cli.out.header.type"),d("cli.out.header.revision"),d("cli.out.header.modified"),d("cli.out.file.size"),d("cli.out.header.path")],rows:r.map(n=>[en(n.score),n.file.id,n.file.isFolder?d("cli.out.file.folder"):d("cli.out.file.file"),Mn(n.file.type),en(n.file.revision),na(n.file.modifyTime),en(n.file.size),n.file.path]),...t===void 0?{}:{empty:t}}}function H2(r,e){let t=[];for(let n of r){t.push(`${en(n.score)} ${n.file.path}`);let o=G2(n);o!==void 0&&t.push(...z2(o,e)),n.warnings.length>0&&t.push(`${e_}${d("cli.out.human.warning",d("cli.cmd.server.file.search.warningDetails"))}`)}return t.join(`
|
|
96
|
+
`)}function G2(r){return r.matchedOn.content!==void 0?["content",r.matchedOn.content]:Object.entries(r.matchedOn)[0]}function z2(r,e){let[t,n]=r,o=ZI(n),i=`${e_}${t}: `;if(o==="")return[i.trimEnd()];let a=Math.max(1,$2-rt(i));if(t==="content"){let c=K2(n,e),l=c===void 0?void 0:ZI(c),u=l?o.indexOf(l):-1;if(u>=0&&l!==void 0)return[`${i}${ww(o,u,u+l.length,a)}`]}let s=" ".repeat(rt(i));return kw(o,a).map((c,l)=>`${l===0?i:s}${c.trim()}`)}function K2(r,e){let t=r.toLowerCase();if(t.length!==r.length)return;let n=[...e.contentContains??[],...e.contentContainsAny??[]];for(let o of n){let i=o.trim();if(i===""||vw(i))continue;let a=i.toLowerCase();if(a.length!==i.length)continue;let s=t.indexOf(a);if(s>=0)return r.slice(s,s+i.length)}}function ZI(r){return r.replace(/\s+/gu," ").trim()}function J2(r){return(r.contentContains?.length??0)>0||(r.contentContainsAny?.length??0)>0}function Mm(r){return Re({columns:[d("cli.out.header.field"),d("cli.out.header.value")],rows:Q2(r)})}function Bs(r,e){return d("cli.cmd.server.file.success",r,e.path)}function Mn(r){return r??""}function Q2(r){return[[d("cli.out.file.id"),r.id],[d("cli.out.file.revision"),en(r.revision)],[d("cli.out.file.path"),r.path],[d("cli.out.file.parentDir"),r.parentDir],[d("cli.out.file.name"),r.name],[d("cli.out.file.project"),Mn(r.projectName)],[d("cli.out.file.kind"),r.isFolder?d("cli.out.file.folder"):d("cli.out.file.file")],[d("cli.out.file.icon"),Mn(r.icon)],[d("cli.out.file.description"),Mn(r.desc)],[d("cli.out.file.type"),Mn(r.type)],[d("cli.out.file.subFileType"),Mn(r.subFileType)],[d("cli.out.file.order"),en(r.order)],[d("cli.out.file.creator"),Mn(r.creator)],[d("cli.out.file.createTime"),na(r.createTime)],[d("cli.out.file.modifier"),Mn(r.modifier)],[d("cli.out.file.modifyTime"),na(r.modifyTime)],[d("cli.out.file.hidden"),Y2(r.hidden)],[d("cli.out.file.labels"),Mn(r.labels)],[d("cli.out.file.size"),en(r.size)],[d("cli.out.file.hash"),Mn(r.hash)]].filter(([,e])=>e!=="")}function Y2(r){return r===void 0?"":r?d("cli.out.value.yes"):d("cli.out.value.no")}O();var ZC=class extends St{constructor(t=pr){super();this.readStdin=t}toOptions(t){return{...It(t),source:bm(t)}}async executeCommand(t,n){let o=await this.resolveServerFileTarget(t,n),i=await this.createServerFileClient(t,o),a=await Em(t,n.source,this.readStdin),s=await qs("Create",o.remotePath,()=>i.saveFile(o.remotePath,a.content,{expectedRevision:null}));return t.output.result(Vs(t,o.serverUrl,s,a),()=>Bs("Create",s)),0}},i_={path:["server","file","create"],domain:"server",spec:{name:"server file create",flags:[{name:"file",takesValue:!0,valueHint:"local-file",helpGroup:"input",param:{source:"file",type:"string",nonEmpty:!0,inputId:"inputFile"}},{name:"stdin",takesValue:!1,helpGroup:"input",param:{source:"stdin",type:"string"}}],positionals:[{name:"url",role:"server-url"},{name:"path",param:{required:!0}}],inputGroups:[{name:"contentSource",mode:"exactlyOne",inputId:"contentSource",members:["--file","--stdin"]}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file create /DEMO/ana/new-dashboard.dash --file=./new-dashboard.dash","cat new-dashboard.dash | succapp server file create /DEMO/ana/new-dashboard.dash --stdin","succapp server file create https://bi.example.com /DEMO/ana/new-dashboard.dash --file=./new-dashboard.dash"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new ZC};I();F();O();re();V();var a_=E(require("fs")),s_=require("stream/promises"),eS=class extends St{toOptions(e){return{...It(e),revision:e.integer("revision"),upgradeContent:e.has("upgrade-content"),output:e.value("output"),force:e.has("force")}}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),o=ut(e.cwd,t.output);await t_(o,t.force);let a=await(await this.createServerFileClient(e,n)).getFileContentStream(n.remotePath,{revision:t.revision,upgradeContent:t.upgradeContent});try{await(0,s_.pipeline)(a.stream,a_.createWriteStream(o,{flags:t.force?"w":"wx"}))}catch(s){throw!t.force&&_u(s)?new P("err.cli.confirmationRequired",{reason:"outputOverwrite",flag:"--force",path:o},{cause:s}):s}return e.output.result(D({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,output:o,revision:a.revision,modifyTime:a.modifyTime}),()=>d("cli.cmd.server.file.download.downloaded",n.remotePath,o)),0}},c_={path:["server","file","download"],domain:"server",spec:{name:"server file download",flags:[{name:"revision",takesValue:!0,valueHint:"n",helpGroup:"input",param:{type:"integer",min:0}},{name:"upgrade-content",takesValue:!1,helpGroup:"output"},{name:"output",takesValue:!0,valueHint:"local-file",helpGroup:"output",param:{required:!0,nonEmpty:!0,inputId:"outputFile"}},{name:"force",takesValue:!1,helpGroup:"output"}],positionals:[{name:"url",role:"server-url"},{name:"path",param:{required:!0}}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file download /DEMO/ana/sales.dash --output=./sales.dash","succapp server file download --revision=12 /DEMO/ana/sales.dash --output=./sales.dash","succapp server file download /DEMO/ana/sales.dash --output=./sales.dash --force"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new eS};I();re();function xm(r,e){return r.length===0?e?.message??d("cli.out.workspace.file.hist.empty"):Re({columns:[d("cli.out.header.revision"),d("cli.out.header.action"),d("cli.out.header.modified"),d("cli.out.header.modifier"),d("cli.out.header.path"),d("cli.out.header.message")],rows:r.map(t=>[X2(t.revision),t.action??"",Z2(t.modifyTime),t.modifierName??t.modifier??"",t.path,t.message??""])})}function Im(r){return D({id:r.id,fileId:r.fileId,path:r.path,revision:r.revision,action:r.action,modifyTime:r.modifyTime,modifier:r.modifier,modifierName:r.modifierName,message:r.message,detail:r.detail})}function X2(r){return r===void 0?"":String(r)}function Z2(r){return r===void 0?"":new Date(r).toISOString()}re();I();var tS=class extends St{toOptions(e){return{...It(e),limit:e.integer("limit")}}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),i=await(await this.createServerFileClient(e,n)).getFileHistory(n.remotePath,{limit:t.limit}),a=i.length===0?{reason:"emptyCollection",message:d("cli.out.workspace.file.hist.empty")}:void 0;return e.output.result(D({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,summary:{histories:i.length},empty:a,histories:i.map(Im)}),()=>xm(i,a)),0}},l_={path:["server","file","history"],domain:"server",spec:{name:"server file history",flags:[{name:"limit",takesValue:!0,valueHint:"n",helpGroup:"output",param:{type:"integer",min:1}}],positionals:[{name:"url",role:"server-url"},{name:"path",param:{required:!0}}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file history /DEMO/ana/sales.dash","succapp server file history https://bi.example.com /DEMO/ana/sales.dash","succapp server file history --limit=20 /DEMO/ana/sales.dash --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new tS};re();var rS=class extends St{toOptions(e){return It(e)}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),i=await(await this.createServerFileClient(e,n)).getFile(n.remotePath);return e.output.result(D({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,file:Ro(i)}),()=>Mm(i)),0}},u_={path:["server","file","info"],domain:"server",spec:{name:"server file info",flags:[],positionals:[{name:"url",role:"server-url"},{name:"path",param:{required:!0}}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file info /DEMO/ana/sales.dash","succapp server file info https://bi.example.com /DEMO/ana/sales.dash","succapp server file info /DEMO/ana/sales.dash --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new rS};re();I();var nS=class extends St{toOptions(e){return It(e,{defaultPath:"/"})}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),i=await(await this.createServerFileClient(e,n)).listFiles(n.remotePath),a=i.length===0?{reason:"emptyCollection",message:d("cli.cmd.server.file.list.empty",n.remotePath)}:void 0;return e.output.result(D({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,summary:{files:i.length},empty:a,files:i.map(Ro)}),()=>n_(i,a)),0}},d_={path:["server","file","list"],domain:"server",spec:{name:"server file list",flags:[],positionals:[{name:"url",role:"server-url"},{name:"path"}],usageArgs:"[<options>] [<url>] [<path>]",examples:["succapp --server=https://bi.example.com server file list /DEMO","succapp server file list https://bi.example.com /DEMO/ana","succapp server file list --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new nS};O();F();I();it();re();var oS=class extends ae{toOptions(e){return{...eH(e),outputUrl:e.value("url")}}async executeCommand(e,t){tH(t.id);let n=await this.resolveServerUrl(e,t.url),i=await(await this.createServerApiClient(e,n)).getFileById(t.id),a=so(n,{path:i.path}),s=so(n,{path:i.path,":edit":"true"});return e.output.result(rH(e,n,t.id,i,a,s),()=>nH(i,a,s,t.outputUrl)),0}},p_={path:["server","file","locate"],domain:"server",spec:{name:"server file locate",flags:[{name:"url",takesValue:!0,valueHint:"view|edit",description:"cli.cmd.server.file.locate.url",helpGroup:"output",param:{choices:["view","edit"]}}],positionals:[{name:"url",role:"server-url"},{name:"id",param:{required:!0}}],usageArgs:"[<options>] [<url>] <id>",examples:["succapp --server=https://bi.example.com server file locate U5iZW6hsOXExZ9a8swkh3C","succapp server file locate https://bi.example.com U5iZW6hsOXExZ9a8swkh3C","succapp server file locate --url=view U5iZW6hsOXExZ9a8swkh3C"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new oS};function eH(r){let[e,t]=r.positional;if(e===void 0)throw new P("err.cli.missingArgument",{argument:"id"});if(t===void 0){if(mn(e))throw new P("err.cli.missingArgument",{argument:"id"});return{id:e}}return{url:e,id:t}}function tH(r){if(!Ab(r))throw new P("err.cli.invalidChoice",{input:"<id>",value:r,allowedValues:["metadata file id"]})}function rH(r,e,t,n,o,i){return D({workspace:r.workspace?.root,server:e,id:t,path:n.path,viewUrl:o,editUrl:i,file:Ro(n)})}function nH(r,e,t,n){return n==="view"?e:n==="edit"?t:[Mm(r),d("cli.cmd.server.file.locate.viewUrl",e),d("cli.cmd.server.file.locate.editUrl",t)].join(`
|
|
97
|
+
`)}I();re();var iS=class extends St{constructor(t=Qa){super();this.opener=t}toOptions(t){return{...It(t),edit:t.has("edit"),noOpen:t.has("no-open")}}async executeCommand(t,n){let o=await this.resolveServerFileTarget(t,n),i=n.edit===!0,a=so(o.serverUrl,{path:o.remotePath,...i?{":edit":"true"}:{}}),s=!n.noOpen;return s&&await this.opener(a,t.abortSignal),t.output.result(D({workspace:t.workspace?.root,server:o.serverUrl,path:o.remotePath,edit:i,opened:s,url:a}),()=>iH(a,i,s)),0}},m_={path:["server","file","open"],domain:"server",spec:{name:"server file open",flags:[{name:"edit",takesValue:!1,helpGroup:"options"},{name:"no-open",takesValue:!1,helpGroup:"options"}],positionals:[{name:"url",role:"server-url"},{name:"path",role:"server-metadata-path",description:"cli.cmd.server.file.open.path",param:{required:!0}}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file open /DEMO/ana/sales.dash","succapp server file open https://bi.example.com /DEMO/ana/sales.dash","succapp server file open --edit /DEMO/ana/sales.dash --json","succapp server file open --no-open /DEMO/ana/sales.dash --json"]},workspaceTarget:"optional",serverTarget:"required",sideEffects:[{type:"open-external-url",disabledBy:"--no-open"}],createExecutor:()=>new iS};function iH(r,e,t){return t?d(e?"cli.cmd.server.file.open.openedEdit":"cli.cmd.server.file.open.openedView",r):r}O();var aS=class extends St{toOptions(e){return{...It(e),expectedRevision:e.integer("expected-revision"),force:e.has("force")}}async executeCommand(e,t){Tm(t.expectedRevision,t.force,"server file remove");let n=await this.resolveServerFileTarget(e,t),o=await this.createServerFileClient(e,n),i=await qs("Delete",n.remotePath,()=>o.deleteFile(n.remotePath,t.force?void 0:{expectedRevision:t.expectedRevision}));return e.output.result(Vs(e,n.serverUrl,i),()=>Bs("Delete",i)),0}},f_={path:["server","file","remove"],domain:"server",spec:{name:"server file remove",flags:[{name:"expected-revision",takesValue:!0,valueHint:"n",helpGroup:"options",param:{type:"integer",min:0,inputId:"revisionOrForce"}},{name:"force",takesValue:!1,helpGroup:"options",param:{inputId:"revisionOrForce"}}],positionals:[{name:"url",role:"server-url"},{name:"path",param:{required:!0}}],inputGroups:[{name:"revisionOrForce",mode:"exactlyOne",inputId:"revisionOrForce",members:["--expected-revision","--force"],sources:["--expected-revision=<revision>","--force"]}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file remove /DEMO/ana/sales.dash --expected-revision=12","succapp server file remove https://bi.example.com /DEMO/ana/sales.dash --expected-revision=12","succapp server file remove /DEMO/ana/sales.dash --force"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new aS};O();F();I();re();V();var Ul="path",$l="name",Dm="parent-dir",Fm="project",h_="type",g_="sub-type",y_="min-size",Am="max-size",C_="limit",S_="include-folders",v_="content-contains",k_="content-contains-any",aH=1e3,cS=class extends ae{toOptions(e){let t=sH(e),n=cH(e,t.query);return{url:t.url,request:n}}async executeCommand(e,t){let n=await this.resolveServerUrl(e,t.url),i=await(await this.createServerApiClient(e,n)).searchFiles(t.request),a=i.results.length===0?uH(t.request):void 0;return e.output.result(D({workspace:e.workspace?.root,server:n,filters:t.request,summary:{returned:i.returned,limit:i.limit,hasMore:i.hasMore},empty:a,results:i.results.map(s=>({score:s.score,matchedOn:s.matchedOn,warnings:s.warnings,file:Ro(s.file)}))}),()=>o_(i.results,t.request,a)),i.hasMore&&e.output.warning(d("cli.cmd.server.file.search.hasMore",i.limit)),0}},w_={path:["server","file","search"],domain:"server",spec:{name:"server file search",flags:[{name:Ul,takesValue:!0,valueHint:"glob",helpGroup:"search"},{name:$l,takesValue:!0,valueHint:"glob",helpGroup:"search"},{name:Dm,takesValue:!0,valueHint:"path",helpGroup:"search"},{name:Fm,takesValue:!0,valueHint:"name",helpGroup:"search"},{name:h_,takesValue:!0,repeatable:!0,valueHint:"type",helpGroup:"search",param:{list:{separator:","}}},{name:g_,takesValue:!0,repeatable:!0,valueHint:"type",helpGroup:"search",param:{list:{separator:","}}},{name:y_,takesValue:!0,valueHint:"bytes",helpGroup:"search",param:{type:"integer",min:0}},{name:Am,takesValue:!0,valueHint:"bytes",helpGroup:"search",param:{type:"integer",min:0}},{name:C_,takesValue:!0,valueHint:"n",helpGroup:"output",param:{type:"integer",min:1,max:aH}},{name:S_,takesValue:!1,helpGroup:"search"},{name:v_,takesValue:!0,repeatable:!0,valueHint:"pattern",helpGroup:"content",param:{nonEmpty:!0}},{name:k_,takesValue:!0,repeatable:!0,valueHint:"pattern",helpGroup:"content",param:{nonEmpty:!0}}],positionals:[{name:"url",role:"server-url",description:"cli.cmd.server.file.search.url"},{name:"query",description:"cli.cmd.server.file.search.query"}],usageArgs:"[<options>] [<url>] [<query>]",examples:["succapp --server=https://bi.example.com server file search sales --project=DEMO","succapp server file search '/DEMO/data/**' --type=tbl --limit=20","succapp server file search --parent-dir='/DEMO/ana' --name='*.dash'","succapp server file search --project=DEMO --content-contains='select *'","succapp server file search https://bi.example.com '/DEMO/**' --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new cS};function sH(r){let[e,t]=r.positional;return e===void 0?{}:t===void 0?mn(e)?{url:e}:{query:e}:{url:e,query:t}}function cH(r,e){let t={},n=Ce(e);if(e!==void 0&&n===void 0)throw new P("err.cli.missingInput",{inputId:"value",sources:["<query>"]});let o=Ce(r.value(Ul)),i=Ce(r.value($l)),a,s=Ce(r.value(Dm)),c=Ce(r.value(Fm));if(n?.startsWith("/"))sS("<query>",[[o,`--${Ul}`],[i,`--${$l}`],[s,`--${Dm}`],[c,`--${Fm}`]]),o=n;else{if(n?.includes("/"))throw new P("err.meta.invalidPath",{path:n,reason:"relativeSearchQuery"});n!==void 0&&gn(n)?(sS("<query>",[[o,`--${Ul}`],[i,`--${$l}`]]),i=n):n!==void 0&&(a=[n])}if(o!==void 0&&(sS(`--${Ul}`,[[i,`--${$l}`],[s,`--${Dm}`],[c,`--${Fm}`]]),t.path=$o(o)),t.name=i,s!==void 0){if(gn(s))throw new P("err.meta.invalidPath",{path:s,reason:"parentDirGlob"});t.parentDir=$o(s);let l=lH(t.parentDir);if(c!==void 0&&c!==l)throw new P("err.meta.invalidPath",{path:t.parentDir,projectName:c,parentProjectName:l,reason:"parentProjectMismatch"})}if(t.projectName=c,t.types=_m(r,h_),t.subTypes=_m(r,g_),t.minSize=r.integer(y_),t.maxSize=r.integer(Am),t.minSize!==void 0&&t.maxSize!==void 0&&t.maxSize<t.minSize)throw new P("err.cli.invalidNonNegativeIntegerRange",{input:`--${Am}`,option:`--${Am}`,value:String(t.maxSize),min:t.minSize,max:Number.MAX_SAFE_INTEGER});return t.limit=r.integer(C_),t.contains=a,t.contentContains=_m(r,v_),t.contentContainsAny=_m(r,k_),r.has(S_)&&(t.includeFolders=!0),D(t)}function _m(r,e){let t=r.values(e);return t.length===0?void 0:[...t]}function sS(r,e){let t=e.filter(([n])=>n!==void 0).map(([,n])=>n);if(t.length!==0)throw new P("err.cli.conflictingInputs",{inputs:[r,...t]})}function lH(r){return r.split("/")[1]||void 0}function uH(r){let e=om(r,{path:"cli.cmd.server.file.search.pathHint",name:"cli.cmd.server.file.search.nameHint"});return{reason:"noMatches",message:d("cli.cmd.server.file.search.empty"),...e===void 0?{}:{hint:e}}}re();var lS=class extends St{toOptions(e){return{...It(e),revision:e.integer("revision"),upgradeContent:e.has("upgrade-content")}}async executeCommand(e,t){let n=await this.resolveServerFileTarget(e,t),i=await(await this.createServerFileClient(e,n)).getFileContent(n.remotePath,{revision:t.revision,upgradeContent:t.upgradeContent});return e.output.content(D({workspace:e.workspace?.root,server:n.serverUrl,path:n.remotePath,revision:i.revision,modifyTime:i.modifyTime,size:i.buffer.length}),i.buffer),0}},P_={path:["server","file","show"],domain:"server",spec:{name:"server file show",flags:[{name:"revision",takesValue:!0,valueHint:"n",helpGroup:"input",param:{type:"integer",min:0}},{name:"upgrade-content",takesValue:!1,helpGroup:"output"}],positionals:[{name:"url",role:"server-url"},{name:"path",param:{required:!0}}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file show /DEMO/ana/sales.dash","succapp server file show --revision=12 /DEMO/ana/sales.dash","succapp server file show /DEMO/ana/sales.dash > sales.dash"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new lS};O();var uS=class extends St{constructor(t=pr){super();this.readStdin=t}toOptions(t){return{...It(t),source:bm(t),expectedRevision:t.integer("expected-revision"),force:t.has("force")}}async executeCommand(t,n){Tm(n.expectedRevision,n.force,"server file update");let o=await this.resolveServerFileTarget(t,n),i=await this.createServerFileClient(t,o),a=await Em(t,n.source,this.readStdin),s=await qs("Put",o.remotePath,()=>i.saveFile(o.remotePath,a.content,n.force?void 0:{expectedRevision:n.expectedRevision}));return t.output.result(Vs(t,o.serverUrl,s,a),()=>Bs("Put",s)),0}},R_={path:["server","file","update"],domain:"server",spec:{name:"server file update",flags:[{name:"file",takesValue:!0,valueHint:"local-file",helpGroup:"input",param:{source:"file",type:"string",nonEmpty:!0,inputId:"inputFile"}},{name:"stdin",takesValue:!1,helpGroup:"input",param:{source:"stdin",type:"string"}},{name:"expected-revision",takesValue:!0,valueHint:"n",helpGroup:"options",param:{type:"integer",min:0,inputId:"revisionOrForce"}},{name:"force",takesValue:!1,helpGroup:"options",param:{inputId:"revisionOrForce"}}],positionals:[{name:"url",role:"server-url"},{name:"path",param:{required:!0}}],inputGroups:[{name:"contentSource",mode:"exactlyOne",inputId:"contentSource",members:["--file","--stdin"]},{name:"revisionOrForce",mode:"exactlyOne",inputId:"revisionOrForce",members:["--expected-revision","--force"],sources:["--expected-revision=<revision>","--force"]}],usageArgs:"[<options>] [<url>] <path>",examples:["succapp --server=https://bi.example.com server file update /DEMO/ana/sales.dash --file=./sales.dash --expected-revision=12","cat sales.dash | succapp server file update /DEMO/ana/sales.dash --stdin --expected-revision=12","succapp server file update /DEMO/ana/sales.dash --file=./sales.dash --force"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new uS};I();var dS=class extends ae{toOptions(e){return{url:e.value("url")}}async executeCommand(e,t){let n=await this.resolveServerUrl(e,t.url),i=await(await this.createServerApiClient(e,n)).getProjects(),a=i.length===0?{reason:"emptyCollection",message:d("cli.cmd.server.proj.list.empty")}:void 0;return e.output.result({...e.workspace?{workspace:e.workspace.root}:{},server:n,...a===void 0?{}:{empty:a},projects:i.map(im)},()=>dH(i,a)),0}},b_={path:["server","project","list"],domain:"server",spec:{name:"server project list",flags:[],positionals:[{name:"url",role:"server-url"}],usageArgs:"[<options>] [<url>]",examples:["succapp server project list","succapp --server=https://bi.example.com server project list","succapp server project list http://localhost:8180 --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new dS};function dH(r,e){return{columns:[d("cli.out.header.project"),d("cli.out.common.id"),d("cli.out.header.description")],rows:r.map(t=>[t.name,t.id??"",t.desc??""]),...e===void 0?{}:{empty:e}}}O();F();I();var pS=class extends ae{toOptions(e){return{...pH(e),desc:Ce(e.value("desc"))}}validateOptions(e,t){!e.workspace&&!t.url&&!e.config.server&&M_()}async executeCommand(e,t){let n=await this.resolveServerUrl(e,t.url),i=await(await this.createServerApiClient(e,n)).createProject({name:t.projectName,desc:t.desc});return e.output.result({...e.workspace?{workspace:e.workspace.root}:{},server:n,project:im(i)},()=>mH(i)),0}},T_={path:["server","project","create"],domain:"server",spec:{name:"server project create",flags:[{name:"desc",takesValue:!0,valueHint:"text",description:"cli.cmd.server.proj.create.descOption",helpGroup:"options"}],positionals:[{name:"url",role:"server-url"},{name:"project"}],usageArgs:"[<options>] [<url>] <project>",examples:["succapp server project create SALES",'succapp server project create SALES --desc="Sales demo"',"succapp server project create http://localhost:8180 SALES --json"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new pS};function pH(r){let[e,t]=r.positional;return e===void 0&&E_(),t===void 0?(mn(e)&&E_(),{projectName:e}):(mn(e)||M_(),{url:e,projectName:t})}function E_(){throw new P("err.cli.missingInput",{inputId:"projectName",sources:["<project>"]})}function M_(){throw new P("err.cli.missingInput",{inputId:"server",sources:["--server=<url>","<url> <project>"]})}function mH(r){return d("cli.cmd.server.proj.create.created",r.name)}I();F();O();re();var mS="input",fS="param",Hs=class extends ae{async executeCommand(e,t){let n=await this.resolveServerUrl(e),o=await this.createServerApiClient(e,n);return this.executeScriptCommand(e,n,o,t)}};function Om(r){return D({result:"result"in r?r.result:void 0,elapsedMs:"elapsedMs"in r?r.elapsedMs:void 0,diagnostics:"diagnostics"in r?r.diagnostics:void 0})}function Lm(){return d("cli.cmd.server.script.done")}function x_(r,e){let t=r.trim();if(!xu(t))return r;try{return JSON.parse(t)}catch(n){throw new P("err.cli.invalidJsonObject",{inputId:"inputFile",source:e,context:{file:e}},{cause:n})}}O();V();var hS=class extends Hs{constructor(t=Go){super();this.readFileText=t}toOptions(t){return{scriptPath:t.value("file")}}async executeScriptCommand(t,n,o,i){let a=await this.readFileText(ut(t.cwd,i.scriptPath)),s=await o.checkScript({script:a});return t.output.result({...ee(t,n),path:i.scriptPath,...Om(s)},()=>Lm()),0}},I_={path:["server","script","check"],domain:"server",spec:{name:"server script check",flags:[],positionals:[{name:"file",param:{required:!0,source:"file",type:"string",nonEmpty:!0,inputId:"inputFile"}}],usageArgs:"[<options>] <file>",examples:["succapp server script check ./scripts/job.js"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new hS};O();re();V();var gS=class extends Hs{constructor(t=Go){super();this.readFileText=t}toOptions(t){return{scriptPath:t.value("file"),inputFile:t.value(mS),params:MP(t.values(fS))}}async executeScriptCommand(t,n,o,i){let a=await this.readFileText(ut(t.cwd,i.scriptPath)),s=i.inputFile?x_(await this.readFileText(ut(t.cwd,i.inputFile)),i.inputFile):void 0,c=xP(i.params),l=await o.executeScript({script:a,args:D({input:s,params:c})});return t.output.result({...ee(t,n),path:i.scriptPath,params:c,...Om(l)},()=>Lm()),0}},__={path:["server","script","exec"],domain:"server",spec:{name:"server script exec",flags:[{name:mS,takesValue:!0,valueHint:"file",helpGroup:"input",param:{source:"file",type:"string",nonEmpty:!0,inputId:"inputFile"}},{name:fS,takesValue:!0,repeatable:!0,valueHint:"key=value",helpGroup:"input"}],positionals:[{name:"file",param:{required:!0,source:"file",type:"string",nonEmpty:!0,inputId:"inputFile"}}],usageArgs:"[<options>] <file>",examples:["succapp server script exec ./scripts/job.js","succapp server script exec ./scripts/job.js --input=./input.json --param=mode=preview"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new gS};F();O();I();re();V();var O_=E(require("fs")),Gs="key",ca="set",la="file",ua="stdin",Nm="unset",yS="expected-revision",fH="system";function Wm(r,e={}){let[t,n]=r.positional,o=e.requireTarget===!0;return t===void 0?(o&&F_(),{}):n===void 0?mn(t)?(o&&F_(t),{url:t}):{target:D_(t)}:{url:t,target:D_(n)}}function D_(r){if(r!==fH)return r}function F_(r){throw new P("err.cli.missingInput",{inputId:"settingsTarget",sources:["<target>"],...r!==void 0?{context:{server:r}}:{}})}function L_(r){let e=r.value(ca),t=r.value(la),n=r.has(ua),o=[];if(e&&o.push(`--${ca}=<json>`),t&&o.push(`--${la}=<local-file>`),n&&o.push(`--${ua}`),o.length>1)throw new P("err.cli.conflictingInputs",{inputs:o});if(e)return{kind:"inline",json:e};if(t)return{kind:"file",file:t};if(n)return{kind:"stdin"}}function N_(r){return r.values(Gs)}function W_(r){return r.value(Gs)}function U_(r){return r.values(Nm)}async function $_(r,e,t,n){if(!e&&t.length===0)throw new P("err.cli.missingInput",{inputId:"settingsPatch",sources:[`--${ca}=<json>`,`--${la}=<local-file>`,`--${ua}`,`--${Nm}=<key>`]});let i={...e?await hH(r,e,n):{}};for(let a of t)i[a]=null;return i}async function hH(r,e,t){if(e.kind==="inline"){let a=`--${ca}`;return A_(e.json,a,a)}if(e.kind==="stdin"){let a=`--${ua}`;return A_(await t(),a,a)}let n=ut(r.cwd,e.file);if(!(await Ja(n)).isFile())throw new P("err.cli.invalidRegularFile",{inputId:"inputFile",source:n,path:n});let i=await O_.promises.readFile(n,"utf-8");return gH(i,n)}function A_(r,e,t){let n=j_(r);if(n===void 0)throw new P("err.cli.invalidJsonObject",{input:e,source:t});return n}function gH(r,e){let t=j_(r);if(t===void 0)throw new P("err.cli.invalidJsonObject",{input:`--${la}`,source:e});return t}function j_(r){let e=r.trim();if(!e)return;let t;try{t=JSON.parse(e)}catch{return}return W(t)?t:void 0}function V_(r){return r??d("cli.cmd.server.settings.target.system")}function q_(r,e){return`${d("cli.cmd.server.settings.get.header",V_(r))}
|
|
98
|
+
${H_(e)}`}function B_(r,e){let t=Object.keys(e),n=t.length>0?t.join(", "):d("cli.cmd.server.settings.set.noKeys");return`${d("cli.cmd.server.settings.set.success",V_(r),n)}
|
|
99
|
+
${H_(e)}`}function H_(r){return JSON.stringify(r,null,2)}function G_(r,e,t,n){return{settings:t,...r!==void 0?{path:r}:{},...e!==void 0?{key:e}:{},...n!==void 0?{expectedRevision:n}:{}}}var z_=pr;var CS=class extends ae{toOptions(e){return{...Wm(e),keys:N_(e)}}async executeCommand(e,t){let n=await this.resolveServerUrl(e,t.url),a=await(await this.createServerApiClient(e,n)).getSettings({...t.target!==void 0?{path:t.target}:{},...t.keys.length>0?{keys:[...t.keys]}:{}});return e.output.result({...e.workspace?{workspace:e.workspace.root}:{},server:n,target:t.target,settings:a},()=>q_(t.target,a)),0}},K_={path:["server","settings","get"],domain:"server",spec:{name:"server settings get",flags:[{name:Gs,takesValue:!0,repeatable:!0,valueHint:"key",helpGroup:"output",param:{nonEmpty:!0}}],positionals:[{name:"url",role:"server-url"},{name:"target"}],usageArgs:"[<options>] [<url>] [<target>]",examples:["succapp server settings get","succapp server settings get DEMO --json","succapp server settings get /DEMO/app/script-demo.app --key modelConfig"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new CS};O();var SS=class extends ae{constructor(t=z_){super();this.readStdin=t}toOptions(t){return{...Wm(t,{requireTarget:!0}),source:L_(t),unsetKeys:U_(t),key:W_(t),expectedRevision:t.integer(yS)}}async executeCommand(t,n){let o=await $_(t,n.source,n.unsetKeys,this.readStdin),i=await this.resolveServerUrl(t,n.url),a=await this.createServerApiClient(t,i),s=G_(n.target,n.key,o,n.expectedRevision),l=await a.setSettings(s);return t.output.result({...t.workspace?{workspace:t.workspace.root}:{},server:i,target:n.target,settings:l},()=>B_(n.target,l)),0}},J_={path:["server","settings","set"],domain:"server",spec:{name:"server settings set",flags:[{name:ca,takesValue:!0,valueHint:"json",helpGroup:"input",param:{source:"value",nonEmpty:!0,inputId:"settingsPatch"}},{name:la,takesValue:!0,valueHint:"local-file",helpGroup:"input",param:{source:"file",nonEmpty:!0,inputId:"inputFile"}},{name:ua,takesValue:!1,helpGroup:"input",param:{source:"stdin",inputId:"settingsPatch"}},{name:Nm,takesValue:!0,repeatable:!0,valueHint:"key",helpGroup:"options",param:{nonEmpty:!0}},{name:Gs,takesValue:!0,valueHint:"key",helpGroup:"options",param:{nonEmpty:!0}},{name:yS,takesValue:!0,valueHint:"n",helpGroup:"options",param:{type:"integer",min:0}}],positionals:[{name:"url",role:"server-url"},{name:"target",param:{required:!0}}],inputGroups:[{name:"settingsSource",mode:"atMostOne",inputId:"settingsPatch",members:[`--${ca}`,`--${la}`,`--${ua}`]}],usageArgs:"[<options>] [<url>] <target>",examples:[`succapp server settings set system --set '{"ai":{"defaultModel":"qwen-max"}}'`,"succapp server settings set DEMO --file=./patch.json --expected-revision=12","succapp server settings set /DEMO/app/script-demo.app --unset rag"]},workspaceTarget:"optional",serverTarget:"required",createExecutor:()=>new SS};var Q_=[eI,Yx,b_,T_,d_,w_,p_,u_,P_,c_,m_,l_,i_,R_,f_,__,I_,oI,iI,YI,K_,J_];I();F();O();V();var Z_=E(require("path"));var vS=class extends ae{toOptions(e){return{scopes:vH(e.values("scope")),force:e.has("force")}}async executeCommand(e,t){let n=Z_.resolve(e.cwd,e.config.workspace??".");await Ku(n);let o=De("server"),i=e.config.server?yn(e.config.server,{input:o,option:o,flag:"server"}):void 0,a=e.workspace===void 0,s=e.workspace??Rs({root:n,eventBus:e.eventBus,lockWait:e.config.lockTimeout});try{let c=await this.initializeWorkspace(s,e,i,t);return e.output.result({...c},()=>yH(c)),0}finally{a&&s.dispose()}}async initializeWorkspace(e,t,n,o){n&&(await this.validateExplicitServerAgainstExistingConfig(e,n),await this.verifyExplicitServer(t,e,n));let i=o.scopes,a=kH(i),s=await e.runMaintenance({taskIds:a,explicitTaskIds:a,dryRun:!1,server:n,taskOptions:{agentDocsForce:o.force},task:t.task});this.throwBlockedConfigIssue(s,e,n),await e.config.ensureLoaded();let c=s.issues.find(l=>l.taskId==="workspace-config");return{workspace:e.root,configPath:e.config.path,initialized:c?.execution?.status==="applied",activeServer:e.config.get()?.activeServerUrl||void 0,supportFiles:CH(s),scopes:i}}throwBlockedConfigIssue(e,t,n){let o=e.issues.find(i=>i.taskId==="workspace-config"&&(i.execution?.status==="blocked"||i.execution?.status==="failed"));if(o)throw RH(o,t,n)}async validateExplicitServerAgainstExistingConfig(e,t){await e.config.ensureLoaded();let n=e.config.get()?.activeServerUrl||void 0;if(!n||gt(t,n))return;let o=De("server");throw new P("err.cli.serverMismatch",{input:o,option:o,value:t,expected:n,context:{workspace:e.root,target:t,active:n}})}async verifyExplicitServer(e,t,n){let o=new jn(n,{workspaceRoot:t.root});await o.verify(),await o.getServerInfo()}},eD={path:["workspace","init"],domain:"workspace",spec:{name:"workspace init",flags:[{name:"server",takesValue:!0,valueHint:"url",helpGroup:"options"},{name:"scope",takesValue:!0,repeatable:!0,valueHint:"scope",helpGroup:"options",param:{choices:Object.keys(iy),list:{separator:",",empty:"error",dedupe:!0}}},{name:"force",takesValue:!1,helpGroup:"options"}],positionals:[],usageArgs:"[<options>]",examples:["succapp workspace init","succapp -C /path/to/workspace workspace init --server=http://localhost:8180/bi","succapp workspace init --scope base,dev","succapp workspace init --scope agent-docs","succapp workspace init --scope agent-docs --force","succapp workspace init --server=https://bi.example.com --json"]},workspaceTarget:"optional",allowUninitializedWorkspaceTarget:!0,serverTarget:"none",lockUsage:"workspace-write",createExecutor:()=>new vS};function yH(r){let e=r.initialized?d("cli.cmd.workspace.init.initWorkspace",r.workspace):d("cli.cmd.workspace.init.workspaceInit",r.workspace),t=r.activeServer?`
|
|
88
100
|
${d("cli.cmd.workspace.init.active",r.activeServer)}`:"",n=`
|
|
89
101
|
${d("cli.cmd.workspace.init.supportFiles",r.supportFiles.updatedCount,r.supportFiles.skipped.length)}`,o=r.supportFiles.agentDocs?`
|
|
90
|
-
${
|
|
102
|
+
${PH(r.supportFiles.agentDocs)}`:"",i=r.activeServer?"":`
|
|
91
103
|
${d("cli.cmd.workspace.init.noActiveServer")}
|
|
92
|
-
${d("cli.cmd.workspace.init.nextConfigureServer")}`;return`${e}${t}${n}${o}${i}`}function
|
|
93
|
-
${d("cli.cmd.workspace.init.agentDocsResourceSkipped",r.resourcesUnavailable??0)}`:
|
|
94
|
-
${d("cli.cmd.workspace.init.agentDocsFileSkipped",e.unavailable??0)}`:r}function
|
|
95
|
-
`)}
|
|
96
|
-
`)}function
|
|
97
|
-
`)}function
|
|
98
|
-
`)}function
|
|
99
|
-
`)}function
|
|
104
|
+
${d("cli.cmd.workspace.init.nextConfigureServer")}`;return`${e}${t}${n}${o}${i}`}function CH(r){let e=r.issues.filter(o=>o.taskId!=="workspace-config"&&o.taskId!=="succapp-docs-skill"),t=e.filter(o=>o.execution?.status==="applied").length,n=e.filter(o=>o.execution?.status==="skipped").map(o=>({item:o.taskId,reason:SH(o),localPaths:o.localPaths}));return{updated:t>0,updatedCount:t,skipped:n,agentDocs:wH(r)}}function SH(r){let e=r.execution?.properties?.skipCause??r.properties?.skipCause;return typeof e=="string"?e:"skipped"}function vH(r){if(r.length===0)return["all"];let e=r;return e.includes("all")?["all"]:e}function kH(r){let e=[];for(let t of r)for(let n of iy[t])e.includes(n)||e.push(n);return e}function wH(r){let e=r.issues.find(o=>o.taskId==="succapp-docs-skill");if(!e)return;let t=e.execution?.properties??e.properties??{};return{status:(typeof t.skipCause=="string"?t.skipCause:void 0)==="agent-docs-unavailable"?"unavailable":e.execution?.status==="applied"?"updated":"up-to-date",docSet:X_(t,"docSet"),generatedAt:X_(t,"generatedAt"),total:da(t,"total"),added:da(t,"added"),changed:da(t,"changed"),removed:da(t,"removed"),skipped:da(t,"skipped"),unavailable:da(t,"unavailable"),resourcesUnavailable:da(t,"resourcesUnavailable")}}function PH(r){if(r.status==="unavailable")return d("cli.cmd.workspace.init.agentDocsUnavailable");let e=d("cli.cmd.workspace.init.agentDocsSummary",r.total??0,r.added??0,r.changed??0,r.removed??0,r.skipped??0);return(r.resourcesUnavailable??0)>0?`${Y_(e,r)}
|
|
105
|
+
${d("cli.cmd.workspace.init.agentDocsResourceSkipped",r.resourcesUnavailable??0)}`:Y_(e,r)}function Y_(r,e){return(e.unavailable??0)>0?`${r}
|
|
106
|
+
${d("cli.cmd.workspace.init.agentDocsFileSkipped",e.unavailable??0)}`:r}function X_(r,e){let t=r[e];return typeof t=="string"?t:void 0}function da(r,e){let t=r[e];return typeof t=="number"?t:void 0}function RH(r,e,t){if(r.code==="err.workspace.issue.E202")return new P("err.cli.invalidWorkspaceConfigJson",{inputId:"workspaceConfig",source:e.config.path,context:{workspace:e.root,configPath:e.config.path}});let n=De("server"),o=typeof r.properties?.activeServer=="string"?r.properties.activeServer:void 0;return new P("err.cli.serverMismatch",{input:n,option:n,value:t??"",expected:o||d("cli.out.value.none"),context:{workspace:e.root,target:t??"",active:o}})}var je=class extends Te{async executeWorkspaceCommand(e,t,n){return await this.prepareSyncCommand(e,t,n),this.executeSyncCommand(e,e.createSyncService(),t,n)}async prepareSyncCommand(e,t,n){!t.command||t.command.serverTarget!=="none"?await Vn(t,e):await e.config.ensureLoaded()}};I();var kS=class extends je{toOptions(e){return{paths:e.values("path"),force:e.has("force")}}async executeSyncCommand(e,t,n,o){let i=await t.pull({paths:o.paths.length>0?[...o.paths]:void 0,force:o.force,task:n.task});return n.output.result({workspace:e.root,server:e.activeServerUrl,summary:{updated:i.updated.length,deleted:i.deleted.length,conflicts:i.conflicts.length,oldFiles:i.oldFiles.length},updated:i.updated,deleted:i.deleted,conflicts:i.conflicts.map(oi),oldFiles:i.oldFiles.map(vo)},()=>bH(i)),i.conflicts.length>0?6:0}},rD={path:["workspace","pull"],domain:"workspace",spec:{name:"workspace pull",flags:[{name:"force",alias:"f",takesValue:!1,helpGroup:"options"}],positionals:[{name:"path",repeatable:!0}],usageArgs:"[<options>] [--] [<path>...]",examples:["succapp workspace pull","succapp workspace pull demo/ana/sales.dash","succapp workspace pull --force /DEMO/ana/sales.dash"]},workspaceTarget:"required",serverTarget:"required",lockUsage:"workspace-write",createExecutor:()=>new kS};function bH(r){if(r.updated.length===0&&r.deleted.length===0&&r.conflicts.length===0)return tD([d("cli.cmd.workspace.pull.upDate")],r.oldFiles);let e=[d("cli.cmd.workspace.pull.pullResultUpdated",r.updated.length,r.deleted.length,r.conflicts.length)];return(r.updated.length>0||r.deleted.length>0)&&e.push(EH(r)),r.conflicts.length>0&&(e.push(d("cli.cmd.workspace.pull.conflicts",r.conflicts.length)),e.push(ii(r.conflicts))),tD(e,r.oldFiles)}function EH(r){return Re({columns:[d("cli.out.header.type"),d("cli.out.header.remote")],rows:[...r.updated.map(e=>[d("cli.out.value.updated"),e]),...r.deleted.map(e=>[d("cli.out.value.deleted"),e])]})}function tD(r,e){return e.length>0&&(r.push(d("cli.cmd.workspace.pull.oldMeta",e.length)),r.push(Dl(e))),r.join(`
|
|
107
|
+
`)}I();var wS=class extends je{toOptions(e){return{paths:e.values("path"),force:e.has("force")}}async executeSyncCommand(e,t,n,o){let i=await t.push({paths:o.paths.length>0?[...o.paths]:void 0,force:o.force,task:n.task}),a=xH(i.metadataVersionSuggestions??[]);return n.output.result({workspace:e.root,server:e.activeServerUrl,summary:{pushed:i.pushed.length,rejected:i.rejected.length,failures:i.failures.length,metadataVersionSuggestions:i.metadataVersionSuggestions?.length??0,olderMetadataVersionSuggestions:a.older,newerMetadataVersionSuggestions:a.newer},pushed:i.pushed,rejected:i.rejected.map(oi),failures:i.failures.map(am),metadataVersionSuggestions:(i.metadataVersionSuggestions??[]).map(sm)},()=>MH(i,a)),TH(i)}},nD={path:["workspace","push"],domain:"workspace",spec:{name:"workspace push",flags:[{name:"force",alias:"f",takesValue:!1,helpGroup:"options"}],positionals:[{name:"path",repeatable:!0}],usageArgs:"[<options>] [--] [<path>...]",examples:["succapp workspace push","succapp workspace push demo/ana/sales.dash","succapp workspace push --force demo/ana/sales.dash"]},workspaceTarget:"required",serverTarget:"required",lockUsage:"workspace-write",createExecutor:()=>new wS};function TH(r){return r.rejected.length>0?6:r.failures.length>0?1:0}function MH(r,e){if(r.pushed.length===0&&r.rejected.length===0&&r.failures.length===0)return d("cli.cmd.workspace.push.noLocalChanges");let t=[d("cli.cmd.workspace.push.pushResultPushed",r.pushed.length,r.rejected.length,r.failures.length)];r.pushed.length>0&&(t.push(d("cli.cmd.workspace.push.pushedFiles",r.pushed.length)),t.push(IH(r.pushed))),r.rejected.length>0&&(t.push(d("cli.cmd.workspace.push.pushBlockedRemote",r.rejected.length)),t.push(ii(r.rejected))),r.failures.length>0&&(t.push(d("cli.cmd.workspace.push.failed",r.failures.length)),t.push(_H(r.failures)));let n=r.metadataVersionSuggestions??[];return n.length>0&&(t.push(d("cli.cmd.workspace.push.metaVersions",e.older,e.newer)),t.push(DH(n))),t.join(`
|
|
108
|
+
`)}function xH(r){let e=0,t=0;for(let n of r)n.kind==="newer"?t++:e++;return{older:e,newer:t}}function IH(r){return Re({columns:[d("cli.out.header.path")],rows:r.map(e=>[e])})}function _H(r){return Re({columns:[d("cli.out.header.path"),d("cli.out.header.error")],rows:r.map(e=>[e.path,Xr(e.errorInfo)])})}function DH(r){return Re({columns:[d("cli.out.header.path"),d("cli.cmd.workspace.push.version"),d("cli.cmd.workspace.push.targetVersion"),d("cli.cmd.workspace.push.kind")],rows:r.map(e=>[e.path,e.currentVersion??"",e.targetVersion,cm(e.kind)])})}O();F();I();var PS=class extends je{toOptions(e){return{paths:e.values("path"),force:e.has("force")}}validateOptions(e,t){if(t.paths.length===0&&!t.force)throw new P("err.cli.confirmationRequired",{reason:"discardAll",flag:"--force"})}async executeSyncCommand(e,t,n,o){let i=await t.reset({paths:o.paths.length>0?[...o.paths]:void 0,force:!0,task:n.task});return n.output.result({workspace:e.root,server:e.activeServerUrl,summary:{updated:i.updated.length,deleted:i.deleted.length},updated:i.updated,deleted:i.deleted},()=>FH(i)),0}},iD={path:["workspace","discard"],domain:"workspace",spec:{name:"workspace discard",flags:[{name:"force",alias:"f",takesValue:!1,helpGroup:"options"}],positionals:[{name:"path",repeatable:!0}],usageArgs:"[<options>] [--] [<path>...]",examples:["succapp workspace discard demo/ana/sales.dash","succapp workspace discard --force","succapp workspace discard --force --json"]},workspaceTarget:"required",serverTarget:"required",lockUsage:"workspace-write",createExecutor:()=>new PS};function FH(r){if(r.updated.length===0&&r.deleted.length===0)return d("cli.cmd.workspace.discard.noLocalChanges");let e=[d("cli.cmd.workspace.discard.result",r.updated.length,r.deleted.length)];return r.updated.length>0&&(e.push(d("cli.cmd.workspace.discard.restoredFiles",r.updated.length)),e.push(oD(r.updated))),r.deleted.length>0&&(e.push(d("cli.cmd.workspace.discard.deletedFiles",r.deleted.length)),e.push(oD(r.deleted))),e.join(`
|
|
109
|
+
`)}function oD(r){return Re({columns:[d("cli.out.header.path")],rows:r.map(e=>[e])})}I();F();O();re();var aD=["sync-baseline","workspace-config","workspace-settings","workspace-gitignore","workspace-agent-files","typescript-support","json-schema-support"],AH=["workspace-support"],ES=[...aD,...AH];function sD(r){return r.flatMap(e=>{if(e==="workspace-support")return[...dp];if(aD.includes(e))return[e];throw new P("err.cli.invalidChoice",{input:"--only",option:"--only",value:e,allowedValues:ES})})}function cD(r){return D({checks:r.checks.length>0?r.checks:void 0,dryRun:r.dryRun?!0:void 0})}function pa(r){let e=new Map;for(let t of r){let n=mD(t.code),o=e.get(n);o?e.set(n,{code:n,count:o.count+1,message:o.message,repairable:o.repairable||t.repairable,repairableCount:o.repairableCount+(t.repairable?1:0),unrepairableCount:o.unrepairableCount+(t.repairable?0:1),remotePaths:[...o.remotePaths,...t.remotePaths],localPaths:[...o.localPaths,...t.localPaths]}):e.set(n,{code:n,count:1,message:OH(t),repairable:t.repairable,repairableCount:t.repairable?1:0,unrepairableCount:t.repairable?0:1,remotePaths:[...t.remotePaths],localPaths:[...t.localPaths]})}return Array.from(e.values())}function lD(r){let e=di(r),t=e.filter(o=>o.repairable).length,n=pa(e).map(o=>({code:o.code,count:o.count,repairable:o.repairableCount,unrepairable:o.unrepairableCount,message:o.message}));return{workspace:r.workspaceRootPath,server:r.serverUrl??"",dryRun:!0,summary:{issues:e.length,repairable:t,unrepairable:e.length-t,skipped:Um(r).length,byCode:n},issues:pa(e).map(o=>({code:o.code,repairable:o.repairable,repairableCount:o.repairableCount,unrepairableCount:o.unrepairableCount,remotePaths:o.remotePaths,localPaths:o.localPaths})),skipped:Um(r).map(hD)}}function uD(r){let e=di(r),t=fD(r),n=$m(r),o=pa(e),i=pa(t),a=pa(n);return{workspace:r.workspaceRootPath,server:r.serverUrl??"",dryRun:!1,summary:{issues:e.length,repaired:t.length,unresolved:n.length,skipped:Um(r).length,byCode:o.map(s=>({code:s.code,count:s.count,repairable:s.repairableCount,unrepairable:s.unrepairableCount,message:s.message}))},issues:o.map(s=>({code:s.code,repairable:s.repairable,repairableCount:s.repairableCount,unrepairableCount:s.unrepairableCount,remotePaths:s.remotePaths,localPaths:s.localPaths})),repaired:i.map(s=>({code:s.code,repairable:s.repairable,repairableCount:s.repairableCount,unrepairableCount:s.unrepairableCount,remotePaths:s.remotePaths,localPaths:s.localPaths})),unresolved:a.map(s=>({code:s.code,repairable:s.repairable,repairableCount:s.repairableCount,unrepairableCount:s.unrepairableCount,remotePaths:s.remotePaths,localPaths:s.localPaths})),skipped:Um(r).map(hD)}}function dD(r){let e=di(r);if(e.length===0)return d("cli.cmd.workspace.repair.dryRunClean");let t=e.filter(o=>o.repairable).length,n=[d("cli.cmd.workspace.repair.dryRunIssue",e.length,t,e.length-t)];return n.push(...RS(e)),n.push(...bS(e)),n.join(`
|
|
110
|
+
`)}function pD(r){let e=di(r),t=fD(r),n=$m(r);if(e.length===0)return d("cli.cmd.workspace.repair.clean");let o=[d("cli.cmd.workspace.repair.repaired",t.length,n.length)];return t.length>0&&(o.push(""),o.push(d("cli.cmd.workspace.repair.repairedIssues")),o.push(...RS(t)),o.push(...bS(t))),n.length>0&&(o.push(""),o.push(d("cli.cmd.workspace.repair.unresolved")),o.push(...RS(n)),o.push(...bS(n))),o.join(`
|
|
111
|
+
`)}function RS(r){let e=pa(r);if(e.length===0)return[];let t=[""];t.push("Summary by code:");for(let n of e){let o=n.count.toString().padStart(3);t.push(` ${n.code} ${o} ${n.message}`)}return t}function bS(r){if(r.length===0)return[];let e=pa(r),t=[];t.push(""),t.push("Issues:");for(let n of e){t.push(` ${n.code}`);for(let o of n.remotePaths)t.push(` ${o}`);for(let o of n.localPaths)t.push(` ${o}`)}return t}function OH(r){return d(r.code)}function mD(r){if(!r)return"-";let e=r.lastIndexOf(".");return e>=0?r.slice(e+1):r}function di(r){return r.issues.filter(e=>e.execution?.status!=="skipped")}function Um(r){return r.issues.filter(e=>e.execution?.status==="skipped")}function fD(r){return di(r).filter(e=>e.execution?.status==="applied")}function $m(r){return di(r).filter(e=>e.execution?.status==="blocked"||e.execution?.status==="failed")}function hD(r){let e=r.execution?.properties?.skipCause??r.properties?.skipCause;return D({check:r.taskId,code:mD(r.code),reason:typeof e=="string"?e:void 0,remotePaths:r.remotePaths,localPaths:r.localPaths})}var TS=class extends Te{toOptions(e){return{checks:sD(e.values("only")),dryRun:e.has("dry-run")}}async executeWorkspaceCommand(e,t,n){let o=await e.createSyncService().repairWorkspace({...cD(n),task:t.task});return n.dryRun?(t.output.result(lD(o),()=>dD(o)),di(o).length>0?1:0):(t.output.result(uD(o),()=>pD(o)),$m(o).length>0?1:0)}},gD={path:["workspace","repair"],domain:"workspace",spec:{name:"workspace repair",flags:[{name:"only",takesValue:!0,repeatable:!0,valueHint:"item",helpGroup:"options",param:{choices:ES}},{name:"dry-run",takesValue:!1,helpGroup:"options"}],positionals:[],usageArgs:"[<options>]",examples:["succapp workspace repair --dry-run","succapp workspace repair --only=sync-baseline","succapp workspace repair --json"]},workspaceTarget:"required",serverTarget:"none",lockUsage:"workspace-write",createExecutor:()=>new TS};I();O();var MS=class extends je{toOptions(e){return{paths:e.values("path"),localOnly:e.has("local-only"),forceRefresh:e.has("force-refresh")}}async executeSyncCommand(e,t,n,o){let i=await t.status({refreshAll:!0,scope:o.localOnly?"local":"both",forceRefresh:o.forceRefresh,paths:[...o.paths],task:n.task}),a=LH(i);for(let s of i.warnings??[])n.output.warning(s.errorCode==="err.login.notlogin"?d("cli.cmd.workspace.status.remoteAuthRequired"):s.errorCode);return n.output.result({workspace:e.root,server:e.activeServerUrl,summary:a,changes:i.changes.map(oi),...i.warnings?.length?{warnings:i.warnings.map(s=>({errorCode:s.errorCode,...s.properties?{properties:s.properties}:{}}))}:{}},()=>NH(a,i.changes)),0}},yD={path:["workspace","status"],domain:"workspace",spec:{name:"workspace status",flags:[{name:"local-only",takesValue:!1,helpGroup:"options"},{name:"force-refresh",takesValue:!1,helpGroup:"options"}],positionals:[{name:"path",repeatable:!0}],usageArgs:"[<options>] [--] [<path>...]",examples:["succapp workspace status","succapp workspace status --local-only","succapp workspace status --force-refresh","succapp workspace status --json","succapp workspace status demo/ana/sales.dash"]},workspaceTarget:"required",serverTarget:"required",createExecutor:()=>new MS};function LH(r){return{changes:r.changes.length,local:r.localChanges.length,remote:r.remoteChanges.length,conflicts:r.conflicts.length}}function NH(r,e){let t=WH(r);return e.length===0?`${t}
|
|
100
112
|
${d("cli.out.common.changes")}`:`${t}
|
|
101
|
-
${oo(e)}`}function OW(r){return d("cli.out.common.changesLocalRemote",r.changes,r.local,r.remote,r.conflicts)}D();var WE="1";function UE(r,e={}){let t=e.targetVersion??WE;return{workspaceRootPath:r.root,currentVersion:WE,targetVersion:t,dryRun:e.dryRun===!0,hasActions:!1,actions:[],reason:"no-workspace-migrations"}}var cg=class extends fe{toOptions(e){return{targetVersion:e.value("target-version"),dryRun:e.has("dry-run")}}async executeWorkspaceCommand(e,t,n){let o=UE(e,n);return t.output.result(_W(o),()=>LW(o)),0}},jE={path:["workspace","upgrade"],domain:"workspace",spec:{name:"workspace upgrade",flags:[{name:"target-version",takesValue:!0,valueHint:"version",param:{nonEmpty:!0}},{name:"dry-run",takesValue:!1}],positionals:[],usageArgs:"[<options>]",examples:["succapp workspace upgrade --dry-run","succapp workspace upgrade --target-version=1"]},workspaceTarget:"required",serverTarget:"none",createExecutor:()=>new cg};function _W(r){return{workspace:r.workspaceRootPath,currentVersion:r.currentVersion,targetVersion:r.targetVersion,dryRun:r.dryRun,hasActions:r.hasActions,actions:r.actions,reason:r.reason}}function LW(r){return r.hasActions?d("cli.cmd.workspace.upgrade.actions",r.actions.length,r.currentVersion,r.targetVersion):d("cli.cmd.workspace.upgrade.noActions",r.currentVersion,r.targetVersion)}D();Z();function VE(r){return{workspace:r.workspaceRootPath,summary:{entries:r.entries.length},entries:r.entries.map(lg)}}function BE(r){return{workspace:r.workspaceRootPath,summary:{cleared:r.cleared.length,remaining:r.remaining.length},cleared:r.cleared.map(lg),remaining:r.remaining.map(lg)}}function qE(r){return{columns:[d("cli.out.header.path"),d("cli.out.file.size"),d("cli.out.header.modified"),d("cli.cmd.workspace.backup.backupPath")],rows:r.map(e=>[e.path,e.size===void 0?"":String(e.size),e.mtime??"",e.backupPath])}}function $E(r){return d("cli.cmd.workspace.backup.cleared",r.cleared.length,r.remaining.length)}function lg(r){return I({path:r.path,backupPath:r.backupPath,size:r.size,mtime:r.mtime})}var pg=class extends fe{toOptions(e){return{paths:e.values("path")}}async executeWorkspaceCommand(e,t,n){let o=await e.createSyncService().clearMergeBackups({paths:n.paths.length>0?[...n.paths]:void 0,task:t.task});return t.output.result(BE(o),()=>$E(o)),0}},HE={path:["workspace","backup","clear"],domain:"workspace",spec:{name:"workspace backup clear",flags:[],positionals:[{name:"path",repeatable:!0}],usageArgs:"[<options>] [--] [<path>...]",examples:["succapp workspace backup clear","succapp workspace backup clear /DEMO_BLANK/app"]},workspaceTarget:"required",serverTarget:"none",lockUsage:"workspace-write",createExecutor:()=>new pg};var dg=class extends fe{toOptions(e){return{paths:e.values("path")}}async executeWorkspaceCommand(e,t,n){let o=await e.createSyncService().listMergeBackups({paths:n.paths.length>0?[...n.paths]:void 0,task:t.task});return t.output.result(VE(o),()=>qE(o.entries)),0}},zE={path:["workspace","backup","list"],domain:"workspace",spec:{name:"workspace backup list",flags:[],positionals:[{name:"path",repeatable:!0}],usageArgs:"[<options>] [--] [<path>...]",examples:["succapp workspace backup list","succapp workspace backup list /DEMO_BLANK/app"]},workspaceTarget:"required",serverTarget:"none",createExecutor:()=>new dg};F();_();function GE(r,e,t){return r.error==="empty"?new R("err.cli.missingInput",{inputId:"extensionName",sources:["<extension-name>"],context:{scope:e}}):new R("err.cli.invalidExtensionName",{inputId:"extensionName",value:t,expectedScope:e,actualScope:r.actualExtensionPoint,reason:r.error,context:{name:t,scope:e,reason:r.error,actualScope:r.actualExtensionPoint}})}function KE(r){return r.rejected.length>0?6:r.failures.length>0?1:0}F();_();var ug=class extends fe{toOptions(e){return{extensionPoint:e.value("extension-point"),templateName:e.value("template"),extensionName:e.value("name")}}async executeWorkspaceCommand(e,t,n){await Gr(t,e);let o=new $p(e);if(!(await o.prepare(t.task)).some(c=>c.extensionPoint===n.extensionPoint&&c.templateName===n.templateName))throw new R("err.cli.unknownExtensionTemplate",{inputId:"extensionTemplate",value:`${n.extensionPoint}/${n.templateName}`,extensionPoint:n.extensionPoint,templateName:n.templateName,context:{scope:n.extensionPoint,name:n.templateName}});let a=await o.validate({extensionPoint:n.extensionPoint,extensionName:n.extensionName});if(!a.ok)throw GE(a,n.extensionPoint,n.extensionName);let s=await e.lockManager.withLock({scopes:["sync"],command:"extension-create",wait:t.config.lockTimeout},async()=>o.execute({extensionPoint:n.extensionPoint,templateName:n.templateName,extensionName:n.extensionName,task:t.task}));return t.output.result({workspace:e.root,server:e.activeServerUrl,...OR(n.extensionName,s)},()=>WR(n.extensionName,s)),0}},JE={path:["workspace","extension","create"],domain:"workspace",spec:{name:"workspace extension create",flags:[],positionals:[{name:"extension-point",param:{required:!0}},{name:"template",param:{required:!0}},{name:"name",param:{required:!0}}],usageArgs:"[<options>] <extension-point> <template> <name>",examples:["succapp workspace extension create component blank succ-component-card"]},workspaceTarget:"required",serverTarget:"none",lockUsage:"workspace-write",createExecutor:()=>new ug};var mg=class extends fe{async executeWorkspaceCommand(e,t){let n=await DR(e.root);return t.output.result({workspace:e.root,extensions:n},()=>NR(n)),0}},QE={path:["workspace","extension","list"],domain:"workspace",spec:{name:"workspace extension list",flags:[],positionals:[],usageArgs:"[<options>]",examples:["succapp workspace extension list","succapp workspace extension list --json"]},workspaceTarget:"required",serverTarget:"none",createExecutor:()=>new mg};F();_();F();_();$();var ad=class{workspace;cachedService;constructor(e){this.workspace=e}async resolveTarget(e){let t=FR({workspaceRoot:this.workspace.root,path:e.path,extensionName:e.extensionName});if(!t)throw new R("err.extension.rootUnresolved",{reason:NW(e)});if(!await ie(t.extensionRoot))throw new R("err.extension.rootNotFound",{extensionName:t.extensionName,extensionRoot:t.extensionRoot});return t}async status(){return this.requireService().status()}async execute(e){return this.requireService().push({paths:[e.target.extensionRoot],message:e.message,force:e.force,...e.task?{task:e.task}:{}})}requireService(){return this.cachedService||(this.cachedService=this.workspace.createSyncService()),this.cachedService}};function NW(r){return r.extensionName!==void 0?"invalidName":r.path!==void 0?"invalidPath":"missingInput"}var fg=class extends fe{toOptions(e){return{extensionName:e.value("name"),path:e.value("path"),force:e.has("force")}}validateOptions(e,t){if(t.extensionName&&t.path)throw new R("err.cli.conflictingInputs",{inputs:["<extension>","--path=<path>"]});if(!t.extensionName&&!t.path)throw new R("err.cli.missingInput",{inputId:"extensionNameOrPath",sources:["<extension>","--path=<path>"]})}async executeWorkspaceCommand(e,t,n){await Gr(t,e);let o=new ad(e),i=await o.resolveTarget({extensionName:n.extensionName,path:n.path}),a=await o.execute({target:i,force:n.force,task:t.task});return t.output.result({workspace:e.root,server:e.activeServerUrl,extensionName:i.extensionName,extensionRoot:i.extensionRoot,force:n.force,..._R(a)},()=>UR(i.extensionName,a)),KE(a)}},YE={path:["workspace","extension","push"],domain:"workspace",spec:{name:"workspace extension push",flags:[{name:"path",takesValue:!0,valueHint:"path",param:{nonEmpty:!0,inputId:"extensionNameOrPath"}},{name:"force",alias:"f",takesValue:!1}],positionals:[{name:"name",param:{nonEmpty:!0,inputId:"extensionNameOrPath"}}],inputGroups:[{name:"extensionTarget",mode:"exactlyOne",inputId:"extensionNameOrPath",members:["<name>","--path"],sources:["<extension>","--path=<path>"]}],usageArgs:"[<options>] [<name>]",examples:["succapp workspace extension push succ-component-card","succapp workspace extension push --path=sysdata/extensions/succ-component-card/package.json","succapp workspace extension push --force succ-component-card"]},workspaceTarget:"required",serverTarget:"required",lockUsage:"workspace-write",createExecutor:()=>new fg};var XE=E(require("fs"));async function ga(r,e){let t=await r.resolveRemoteFilePath({path:e.path});return{path:t.path,localPath:r.getMetaFileLocalPath(t.remotePath),remotePath:t.remotePath,serverUrl:t.serverUrl,viewUrl:hn(t.serverUrl,{path:t.remotePath}),editUrl:hn(t.serverUrl,{path:t.remotePath,":edit":"true"})}}D();var hg=class extends fe{toOptions(e){return{paths:e.values("path")}}async executeWorkspaceCommand(e,t,n){await Gr(t,e);let o=[];for(let a of n.paths)o.push(await WW(e,a));let i=o.filter(a=>!a.success);return t.output.result({workspace:e.root,server:e.activeServerUrl,summary:{files:o.length,passed:o.length-i.length,failed:i.length},items:o},()=>jW(o)),i.length>0?1:0}},ZE={path:["workspace","file","compile"],domain:"workspace",spec:{name:"workspace file compile",flags:[],positionals:[{name:"path",param:{required:!0},repeatable:!0}],usageArgs:"[<options>] [--] <path>...",examples:["succapp workspace file compile demo/views/sales.dash","succapp workspace file compile /DEMO/views/sales.dash --json","succapp workspace file compile demo/views/sales.dash demo/data/sales.tbl"]},workspaceTarget:"required",serverTarget:"required",createExecutor:()=>new hg};async function WW(r,e){let t,n;try{let o=await ga(r,{path:e});t=o.remotePath,n=o.localPath;let i=await XE.promises.readFile(n,"utf-8"),s=await(await r.requireServerClient(o.serverUrl)).compileFileContent({path:t,content:i});return UW(e,n,s)}catch(o){return{path:e,remotePath:t,localPath:n,success:!1,errorInfo:o}}}function UW(r,e,t){return{path:r,remotePath:t.path,localPath:e,type:t.type,success:t.success,changed:t.changed,originalVersion:t.originalVersion,upgradedVersion:t.upgradedVersion,compiler:t.compiler,errorInfo:t.errorInfo}}function jW(r){let e=r.filter(n=>!n.success),t=[d("cli.cmd.workspace.file.compile.result",r.length,r.length-e.length,e.length)];return e.length>0&&(t.push(d("cli.cmd.workspace.file.compile.failed",e.length)),t.push(VW(e))),t.join(`
|
|
102
|
-
`)}function
|
|
103
|
-
`)}function
|
|
104
|
-
`)}F();
|
|
105
|
-
`)}function
|
|
106
|
-
`)}},uT={path:["workspace","project","clone"],domain:"workspace",spec:{name:"workspace project clone",flags:[{name:"force",alias:"f",takesValue:!1}],positionals:[{name:"project",repeatable:!0}],usageArgs:"[<options>] [--] [<project>...]",examples:["succapp workspace project clone","succapp workspace project clone DEMO","succapp workspace project clone DEMO --force","succapp workspace project clone DEMO OTHER --json"]},workspaceTarget:"required",serverTarget:"required",lockUsage:"workspace-write",createExecutor:()=>new bg};function rU(r){return`succapp workspace file upgrade${r.length>0?` ${r.join(" ")}`:""}`}async function nU(r,e){if(e.force)return;let[t,n]=await Promise.all([r.listWorkspaceProjects(),r.listBaselineProjects()]),o=new Set([...t,...n].map(dT)),a=(e.projectNames.length>0?[...new Set(e.projectNames.map(dT))]:[...o]).filter(s=>o.has(s));if(a.length!==0)throw new R("err.cli.confirmationRequired",{reason:"cloneOverwrite",flag:"--force",projectNames:a.join(", ")})}function dT(r){return kt(r).slice(1)}D();var Eg=class extends Ee{async executeSyncCommand(e,t,n,o){let[i,a]=await Promise.all([t.listWorkspaceProjects(),t.listBaselineProjects()]),s=oU(i,a);return n.output.result({workspace:e.root,server:e.activeServerUrl,projects:s},()=>iU(s)),0}},mT={path:["workspace","project","list"],domain:"workspace",spec:{name:"workspace project list",flags:[],positionals:[],usageArgs:"[<options>]",examples:["succapp workspace project list","succapp workspace project list --json"]},workspaceTarget:"required",serverTarget:"none",createExecutor:()=>new Eg};function oU(r,e){let t=new Set(r),n=new Set(e);return Array.from(new Set([...r,...e])).sort((o,i)=>o.localeCompare(i)).map(o=>({name:o,workspace:t.has(o),baseline:n.has(o)}))}function iU(r){return{columns:[d("cli.out.header.project"),d("cli.out.common.workspace"),d("cli.out.common.baseline")],rows:r.map(e=>[e.name,d(e.workspace?"cli.out.value.yes":"cli.out.value.no"),d(e.baseline?"cli.out.value.yes":"cli.out.value.no")])}}_();F();D();var Tg=class extends Ee{toOptions(e){return{projectNames:e.values("project"),force:e.has("force")}}validateOptions(e,t){if(!t.force)throw new R("err.cli.confirmationRequired",{reason:"projRemove",flag:"--force",projectNames:t.projectNames.join(", ")})}async executeSyncCommand(e,t,n,o){let i=await t.removeProject({projectNames:[...o.projectNames],task:n.task});return n.output.result({workspace:e.root,server:e.activeServerUrl,projectNames:i.projectNames},()=>d("cli.cmd.workspace.proj.remove.removed",i.projectNames.join(", ")||d("cli.out.value.none"))),0}},fT={path:["workspace","project","remove"],domain:"workspace",spec:{name:"workspace project remove",flags:[{name:"force",alias:"f",takesValue:!1}],positionals:[{name:"project",param:{required:!0},repeatable:!0}],usageArgs:"[<options>] <project>...",examples:["succapp workspace project remove DEMO_BLANK --force","succapp workspace project remove DEMO_BLANK OTHER --force --json"]},workspaceTarget:"required",serverTarget:"none",lockUsage:"workspace-write",createExecutor:()=>new Tg};F();_();var fr=class extends fe{async executeWorkspaceCommand(e,t,n){return await e.config.ensureLoaded(),this.executeServerCommand(e,t,n)}async requireConfiguredServerUrl(e,t,n){let o=await Ei(t,{explicitServerUrl:n}),i=e.config.resolveServerUrl(o);if(!i)throw new R("err.cli.unconfiguredServer",{inputId:"server",value:o,context:{target:o}});return i}};D();var Mg=class extends fr{toOptions(e){return{url:e.value("url")}}async executeServerCommand(e,t,n){let o=wr(n.url),i=e.config.hasServer(o),a=await e.addServer(o);return t.output.result({workspace:e.root,server:a,activeServer:a,added:!i},()=>d("cli.cmd.workspace.remote.add.active",a)),0}},hT={path:["workspace","remote","add"],domain:"workspace",spec:{name:"workspace remote add",flags:[],positionals:[{name:"url",param:{required:!0},role:"server-url"}],usageArgs:"[<options>] <url>",examples:["succapp workspace remote add http://localhost:8180","succapp workspace remote add https://bi.example.com --json"]},workspaceTarget:"required",serverTarget:"none",lockUsage:"workspace-write",createExecutor:()=>new Mg};D();var xg=class extends fr{async executeServerCommand(e,t,n){let o=e.activeServerUrl,i=e.config.getServers().map(a=>({url:a,active:a===o}));return t.output.result({workspace:e.root,activeServer:o||void 0,servers:i.map(aU)},()=>sU(i)),0}},gT={path:["workspace","remote","list"],domain:"workspace",spec:{name:"workspace remote list",flags:[],positionals:[],usageArgs:"[<options>]",examples:["succapp workspace remote list","succapp workspace remote list --json"]},workspaceTarget:"required",serverTarget:"none",createExecutor:()=>new xg};function aU(r){return{url:r.url,active:r.active}}function sU(r){return r.length===0?d("cli.out.common.noServers"):{columns:[d("cli.out.common.server"),d("cli.out.common.active")],rows:r.map(e=>[e.url,d(e.active?"cli.out.value.yes":"cli.out.value.no")])}}D();var Ig=class extends fr{toOptions(e){return{url:e.value("url")}}async executeServerCommand(e,t,n){let o=await this.requireConfiguredServerUrl(e,t,n.url),i=await e.removeServer(o);return t.output.result({workspace:e.root,server:o,removedActive:i,activeServer:e.activeServerUrl||void 0},()=>e.activeServerUrl?d("cli.cmd.workspace.remote.remove.active",o,e.activeServerUrl):d("cli.cmd.workspace.remote.remove.removed",o)),0}},yT={path:["workspace","remote","remove"],domain:"workspace",spec:{name:"workspace remote remove",flags:[],positionals:[{name:"url",param:{required:!0},role:"server-url"}],usageArgs:"[<options>] <url>",examples:["succapp workspace remote remove http://localhost:8180","succapp workspace remote remove https://bi.example.com --json"]},workspaceTarget:"required",serverTarget:"none",lockUsage:"workspace-write",createExecutor:()=>new Ig};D();var Fg=class extends fr{toOptions(e){return{oldUrl:e.value("old-url"),newUrl:e.value("new-url")}}async executeServerCommand(e,t,n){let o=await this.requireConfiguredServerUrl(e,t,n.oldUrl),i=wr(n.newUrl),a=await e.changeServerUrl(o,i);return t.output.result({workspace:e.root,oldServer:o,server:a,activeServer:e.activeServerUrl||void 0},()=>d("cli.cmd.workspace.remote.setUrl.changed",o,a)),0}},CT={path:["workspace","remote","set-url"],domain:"workspace",spec:{name:"workspace remote set-url",flags:[],positionals:[{name:"old-url",param:{required:!0},role:"server-url"},{name:"new-url",param:{required:!0},role:"server-url"}],usageArgs:"[<options>] <old-url> <new-url>",examples:["succapp workspace remote set-url http://localhost:8080 http://localhost:8180","succapp workspace remote set-url https://old.example.com https://new.example.com --json"]},workspaceTarget:"required",serverTarget:"none",lockUsage:"workspace-write",createExecutor:()=>new Fg};D();var Dg=class extends fr{toOptions(e){return{url:e.value("url")}}async executeServerCommand(e,t,n){let o=await this.requireConfiguredServerUrl(e,t,n.url),i=await e.switchActiveServer(o);return t.output.result({workspace:e.root,server:o,activeServer:i},()=>d("cli.cmd.workspace.remote.use.active",i)),0}},ST={path:["workspace","remote","use"],domain:"workspace",spec:{name:"workspace remote use",flags:[],positionals:[{name:"url",param:{required:!0},role:"server-url"}],usageArgs:"[<options>] <url>",examples:["succapp workspace remote use http://localhost:8180","succapp workspace remote use https://bi.example.com --json"]},workspaceTarget:"required",serverTarget:"none",lockUsage:"workspace-write",createExecutor:()=>new Dg};var vT=[vE,NE,wE,PE,bE,ZE,eT,oT,tT,rT,nT,iT,uT,mT,fT,LE,hT,gT,ST,CT,yT,JE,QE,YE,sT,aT,pT,zE,HE,jE];var kT=[...vT,...gE,...DP,...pR,...RR];var sd=[{path:["server","file"]},{path:["server","cache"]},{path:["server","project"]},{path:["server","script"]},{path:["server","settings"]},{path:["server","extension"]},{path:["server","extension","template"]},{path:["db","source"]},{path:["db","schema"]},{path:["db","table"]},{path:["model"]},{path:["workspace","project"]},{path:["workspace","file"]},{path:["workspace","remote"]},{path:["workspace","lock"]},{path:["workspace","backup"]},{path:["workspace","extension"]}];Ie();Ie();var cU="cli.out.help.commands",lU={extension:"ext",project:"proj"};function wT(r){return r.spec.summary??pU(r.path)}function PT(r){return r.spec.description??dU(r.path)}function cd(r){return r.help?.section??cU}function RT(r){return r.title??ld(r.path)}function bT(r){return r.summary??Us(r.path)}function ET(r){return r.description??pd(r.path)}function TT(r,e){return r.description?r.description:(H(e,`flag --${r.name} description requires command context`),uU(e.path,r.name))}function pU(r){return Us(r)}function dU(r){return pd(r)}function ld(r){return`cli.cmd.${dd(r)}.title`}function Us(r){return`cli.cmd.${dd(r)}.summary`}function pd(r){return`cli.cmd.${dd(r)}.desc`}function uU(r,e){return`cli.cmd.${dd(r)}.${MT(e)}`}function dd(r){return r.map(mU).join(".")}function mU(r){return lU[r]??MT(r)}function MT(r){return r.replace(/-([a-z0-9])/g,(e,t)=>t.toUpperCase())}function xT(r){let e=new Map;for(let t of r){let n=t.path.join(" ");H(!e.has(n),`Duplicate CLI command path: ${n}`),e.set(n,t),fU(t,n),hU(t,n),gU(t,n)}}function fU(r,e){H(r.path.length>0,"CLI command path must not be empty."),r.domain!=="common"&&H(r.path[0]===r.domain,`CLI command domain/path mismatch: ${e}`)}function hU(r,e){H(cd(r).trim(),`CLI command help section must not be empty: ${e}`),H(r.spec.name.trim(),`CLI command spec name must not be empty: ${e}`)}function gU(r,e){H(typeof r.createExecutor=="function",`CLI command createExecutor must be a function: ${e}`)}var IT=["workspace","server","model","db","auth"];function FT(){return IT.map(r=>{let e=[r];return{title:ld(e),commands:[{name:r,summary:Us(e)}]}})}function ud(r,e=[]){let t=IT.map(o=>{let i=[o],a=r.filter(s=>s.domain===o);return{path:i,title:ld(i),summary:Us(i),description:pd(i),sections:yU(a)}}),n=e.flatMap(o=>{let i=r.filter(a=>SU(a,o.path));return i.length===0?[]:[{path:o.path,title:RT(o),summary:bT(o),description:ET(o),sections:CU(o.path,i)}]});return kU([...t,...n])}function yU(r){return DT(r,e=>e.help?.entry??e.path.slice(1).join(" "))}function CU(r,e){return DT(e,t=>t.help?.entry??t.path.slice(r.length).join(" "))}function DT(r,e){let t=new Map;for(let n of r){let o=cd(n),i=t.get(o)??[];i.push({name:e(n),summary:wT(n)}),t.set(o,i)}return Array.from(t,([n,o])=>({title:n,commands:vU(o)}))}function SU(r,e){return r.path.length>e.length&&e.every((t,n)=>r.path[n]===t)}function vU(r){let e=[],t=new Set;for(let n of r)t.has(n.name)||(t.add(n.name),e.push(n));return e}function kU(r){let e=[],t=new Set;for(let n of r){let o=n.path.join(" ");t.has(o)||(t.add(o),e.push(n))}return e}var Ag=class{commands;namespaces;topLevelHelpGroups;commandsByPath=new Map;namespacesByPath=new Map;constructor(e){xT(e),this.commands=[...e],this.namespaces=ud(this.commands,sd),this.topLevelHelpGroups=FT();for(let t of this.commands)this.commandsByPath.set(t.path.join(" "),t);for(let t of this.namespaces)this.namespacesByPath.set(t.path.join(" "),t)}findCommand(e){return this.commandsByPath.get(e.join(" "))}findNamespace(e){return this.namespacesByPath.get(e.join(" "))}},Og=new Ag(kT),AT=Og.commands,OT=Og.topLevelHelpGroups,Rie=Og.namespaces;D();function NT(r){return Lg.renderCommandHelp(r)}function WT(r){return Lg.renderTopLevelHelp(r)}function UT(r){return Lg.renderNamespaceHelp(r)}var wU=4,_T=3,PU="[<options>]",LT="value",RU=100,_g=class{renderCommandHelp(e){let t=e.spec,n=this.mergeGlobalFlags(e),o=t.usageArgs??PU,i=[d("cli.out.help.usageLine",{command:t.name,usageArgs:o})];return this.appendCommandDescription(i,e),this.appendFlags(i,n,e),this.appendExamples(i,t.examples),this.renderLines(i)}renderTopLevelHelp(e){let t=this.renderTopLevelUsage();return this.appendFlags(t,Dd),this.appendCommandGroups(t,e),t.push("",d("cli.out.help.commandHelpSee")),this.renderLines(t)}renderNamespaceHelp(e){let t=e.path.join(" "),n=[`${d("cli.out.help.usageHeader")} succapp ${t} <command> [<args>]`,"",d(e.description)];for(let o of e.sections){if(o.commands.length===0)continue;n.push("",d(o.title));let i=Math.max(...o.commands.map(a=>Lr(a.name)));for(let a of o.commands)n.push(js(`${li(a.name,i)} ${d(a.summary)}`,_T))}return n.push("",d("cli.out.help.commandHelpRead",t)),this.renderLines(n)}renderTopLevelUsage(){let e=`${d("cli.out.help.usageHeader")} succapp `,t=" ".repeat(Lr(e)),n=[...Dd.map(a=>{let s=a.takesValue?` <${a.valueHint??LT}>`:"";return`[--${a.name}${s}]`}),"<command>","[<args>]"],o=[],i=e;for(let a of n){let c=`${i}${i===e?"":" "}${a}`;if(i!==e&&Lr(c)>RU){o.push(i),i=`${t}${a}`;continue}i=c}return o.push(i),o}appendCommandDescription(e,t){e.push("",js(d(PT(t))))}appendFlags(e,t,n){t.length!==0&&(e.push("",d("cli.out.help.options")),e.push(...this.renderFlags(t,n)))}appendExamples(e,t){if(!(!t||t.length===0)){e.push("",d("cli.out.help.examples"));for(let n of t)e.push(js(n))}}appendCommandGroups(e,t){for(let n of t)this.appendCommandGroup(e,n)}appendCommandGroup(e,t){if(t.commands.length===0)return;e.push("",d(t.title));let n=Math.max(...t.commands.map(o=>Lr(o.name)));for(let o of t.commands)e.push(js(`${li(o.name,n)} ${d(o.summary)}`,_T))}renderFlags(e,t){let n=e.map(i=>({left:this.renderFlagLeft(i),description:d(TT(i,t))})),o=Math.max(...n.map(i=>Lr(i.left)));return n.map(i=>js(`${li(i.left,o)} ${i.description}`))}renderFlagLeft(e){let t=e.takesValue?` <${e.valueHint??LT}>`:"",n=`--${e.name}${t}`;return e.alias?`-${e.alias}, ${n}`:` ${n}`}mergeGlobalFlags(e){let t=new Set(e.spec.flags.map(n=>n.name));return[...e.spec.flags,...Nr.filter(n=>!t.has(n.name)&&nn(e,n.name))]}renderLines(e){return`${e.join(`
|
|
113
|
+
${ii(e)}`}function WH(r){return d("cli.out.common.changesLocalRemote",r.changes,r.local,r.remote,r.conflicts)}I();var CD="1";function SD(r,e={}){let t=e.targetVersion??CD;return{workspaceRootPath:r.root,currentVersion:CD,targetVersion:t,dryRun:e.dryRun===!0,hasActions:!1,actions:[],reason:"no-workspace-migrations"}}var xS=class extends Te{toOptions(e){return{targetVersion:e.value("target-version"),dryRun:e.has("dry-run")}}async executeWorkspaceCommand(e,t,n){let o=SD(e,n);return t.output.result(UH(o),()=>$H(o)),0}},vD={path:["workspace","upgrade"],domain:"workspace",spec:{name:"workspace upgrade",flags:[{name:"target-version",takesValue:!0,valueHint:"version",helpGroup:"options",param:{nonEmpty:!0}},{name:"dry-run",takesValue:!1,helpGroup:"options"}],positionals:[],usageArgs:"[<options>]",examples:["succapp workspace upgrade --dry-run","succapp workspace upgrade --target-version=1"]},workspaceTarget:"required",serverTarget:"none",createExecutor:()=>new xS};function UH(r){return{workspace:r.workspaceRootPath,currentVersion:r.currentVersion,targetVersion:r.targetVersion,dryRun:r.dryRun,hasActions:r.hasActions,actions:r.actions,reason:r.reason}}function $H(r){return r.hasActions?d("cli.cmd.workspace.upgrade.actions",r.actions.length,r.currentVersion,r.targetVersion):d("cli.cmd.workspace.upgrade.noActions",r.currentVersion,r.targetVersion)}I();re();function kD(r){return{workspace:r.workspaceRootPath,summary:{entries:r.entries.length},entries:r.entries.map(IS)}}function wD(r){return{workspace:r.workspaceRootPath,summary:{cleared:r.cleared.length,remaining:r.remaining.length},cleared:r.cleared.map(IS),remaining:r.remaining.map(IS)}}function PD(r,e){return{columns:[d("cli.out.header.path"),d("cli.out.file.size"),d("cli.out.header.modified"),d("cli.cmd.workspace.backup.backupPath")],rows:r.map(t=>[t.path,t.size===void 0?"":String(t.size),t.mtime??"",t.backupPath]),...e===void 0?{}:{empty:e}}}function RD(r){return d("cli.cmd.workspace.backup.cleared",r.cleared.length,r.remaining.length)}function IS(r){return D({path:r.path,backupPath:r.backupPath,size:r.size,mtime:r.mtime})}var _S=class extends Te{toOptions(e){return{paths:e.values("path")}}async executeWorkspaceCommand(e,t,n){let o=await e.createSyncService().clearMergeBackups({paths:n.paths.length>0?[...n.paths]:void 0,task:t.task});return t.output.result(wD(o),()=>RD(o)),0}},bD={path:["workspace","backup","clear"],domain:"workspace",spec:{name:"workspace backup clear",flags:[],positionals:[{name:"path",repeatable:!0}],usageArgs:"[<options>] [--] [<path>...]",examples:["succapp workspace backup clear","succapp workspace backup clear /DEMO/app"]},workspaceTarget:"required",serverTarget:"none",lockUsage:"workspace-write",createExecutor:()=>new _S};I();var DS=class extends Te{toOptions(e){return{paths:e.values("path")}}async executeWorkspaceCommand(e,t,n){let o=await e.createSyncService().listMergeBackups({paths:n.paths.length>0?[...n.paths]:void 0,task:t.task}),i=o.entries.length===0?{reason:"emptyCollection",message:d("cli.cmd.workspace.backup.list.empty")}:void 0;return t.output.result({...kD(o),...i===void 0?{}:{empty:i}},()=>PD(o.entries,i)),0}},ED={path:["workspace","backup","list"],domain:"workspace",spec:{name:"workspace backup list",flags:[],positionals:[{name:"path",repeatable:!0}],usageArgs:"[<options>] [--] [<path>...]",examples:["succapp workspace backup list","succapp workspace backup list /DEMO/app"]},workspaceTarget:"required",serverTarget:"none",createExecutor:()=>new DS};F();O();function TD(r,e,t){return r.error==="empty"?new P("err.cli.missingInput",{inputId:"extensionName",sources:["<extension-name>"],context:{scope:e}}):new P("err.cli.invalidExtensionName",{inputId:"extensionName",value:t,expectedScope:e,actualScope:r.actualExtensionPoint,reason:r.error,context:{name:t,scope:e,reason:r.error,actualScope:r.actualExtensionPoint}})}function MD(r){return r.rejected.length>0?6:r.failures.length>0?1:0}F();O();var FS=class extends Te{toOptions(e){return{extensionPoint:e.value("extension-point"),templateName:e.value("template"),extensionName:e.value("name")}}async executeWorkspaceCommand(e,t,n){await Vn(t,e);let o=new Pm(e);if(!(await o.prepare(t.task)).some(c=>c.extensionPoint===n.extensionPoint&&c.templateName===n.templateName))throw new P("err.cli.unknownExtensionTemplate",{inputId:"extensionTemplate",value:`${n.extensionPoint}/${n.templateName}`,extensionPoint:n.extensionPoint,templateName:n.templateName,context:{scope:n.extensionPoint,name:n.templateName}});let a=await o.validate({extensionPoint:n.extensionPoint,extensionName:n.extensionName});if(!a.ok)throw TD(a,n.extensionPoint,n.extensionName);let s=await e.lockManager.withLock({scopes:["sync"],command:"extension-create",wait:t.config.lockTimeout},async()=>o.execute({extensionPoint:n.extensionPoint,templateName:n.templateName,extensionName:n.extensionName,task:t.task}));return t.output.result({workspace:e.root,server:e.activeServerUrl,...uI(n.extensionName,s)},()=>fI(n.extensionName,s)),0}},xD={path:["workspace","extension","create"],domain:"workspace",spec:{name:"workspace extension create",flags:[],positionals:[{name:"extension-point",param:{required:!0}},{name:"template",param:{required:!0}},{name:"name",param:{required:!0}}],usageArgs:"[<options>] <extension-point> <template> <name>",examples:["succapp workspace extension create component blank succ-component-card"]},workspaceTarget:"required",serverTarget:"none",lockUsage:"workspace-write",createExecutor:()=>new FS};I();var AS=class extends Te{async executeWorkspaceCommand(e,t){let n=await cI(e.root),o=n.length===0?{reason:"emptyCollection",message:d("cli.out.workspace.ext.ext",En)}:void 0;return t.output.result({workspace:e.root,...o===void 0?{}:{empty:o},extensions:n},()=>mI(n,o)),0}},ID={path:["workspace","extension","list"],domain:"workspace",spec:{name:"workspace extension list",flags:[],positionals:[],usageArgs:"[<options>]",examples:["succapp workspace extension list","succapp workspace extension list --json"]},workspaceTarget:"required",serverTarget:"none",createExecutor:()=>new AS};F();O();F();O();V();var jm=class{workspace;cachedService;constructor(e){this.workspace=e}async resolveTarget(e){let t=sI({workspaceRoot:this.workspace.root,path:e.path,extensionName:e.extensionName});if(!t)throw new P("err.extension.rootUnresolved",{reason:jH(e)});if(!await Se(t.extensionRoot))throw new P("err.extension.rootNotFound",{extensionName:t.extensionName,extensionRoot:t.extensionRoot});return t}async status(){return this.requireService().status()}async execute(e){return this.requireService().push({paths:[e.target.extensionRoot],message:e.message,force:e.force,...e.task?{task:e.task}:{}})}requireService(){return this.cachedService||(this.cachedService=this.workspace.createSyncService()),this.cachedService}};function jH(r){return r.extensionName!==void 0?"invalidName":r.path!==void 0?"invalidPath":"missingInput"}var OS=class extends Te{toOptions(e){return{extensionName:e.value("name"),path:e.value("path"),force:e.has("force")}}validateOptions(e,t){if(t.extensionName&&t.path)throw new P("err.cli.conflictingInputs",{inputs:["<extension>","--path=<path>"]});if(!t.extensionName&&!t.path)throw new P("err.cli.missingInput",{inputId:"extensionNameOrPath",sources:["<extension>","--path=<path>"]})}async executeWorkspaceCommand(e,t,n){await Vn(t,e);let o=new jm(e),i=await o.resolveTarget({extensionName:n.extensionName,path:n.path}),a=await o.execute({target:i,force:n.force,task:t.task});return t.output.result({workspace:e.root,server:e.activeServerUrl,extensionName:i.extensionName,extensionRoot:i.extensionRoot,force:n.force,...dI(a)},()=>hI(i.extensionName,a)),MD(a)}},_D={path:["workspace","extension","push"],domain:"workspace",spec:{name:"workspace extension push",flags:[{name:"path",takesValue:!0,valueHint:"path",helpGroup:"input",param:{nonEmpty:!0,inputId:"extensionNameOrPath"}},{name:"force",alias:"f",takesValue:!1,helpGroup:"options"}],positionals:[{name:"name",param:{nonEmpty:!0,inputId:"extensionNameOrPath"}}],inputGroups:[{name:"extensionTarget",mode:"exactlyOne",inputId:"extensionNameOrPath",members:["<name>","--path"],sources:["<extension>","--path=<path>"]}],usageArgs:"[<options>] [<name>]",examples:["succapp workspace extension push succ-component-card","succapp workspace extension push --path=sysdata/extensions/succ-component-card/package.json","succapp workspace extension push --force succ-component-card"]},workspaceTarget:"required",serverTarget:"required",lockUsage:"workspace-write",createExecutor:()=>new OS};var bf=E(require("path"));var bo=E(require("path"));O();F();var DD=E(require("fs")),Yt=E(require("path"));nt();Y();V();var VH=M("common.file-path-spec"),jl=class extends Error{reason;pathSpec;constructor(e,t,n){super(n),this.name="FilePathSpecError",this.reason=e,this.pathSpec=t}},Vm=class{root;excludeMatcher;files=[];seen=new Set;constructor(e){this.root=Yt.resolve(e.root);let t=qH(e.exclude??[]);this.excludeMatcher=t.length>0?jc(t):void 0}async expand(e){this.files=[],this.seen=new Set;for(let t of e)await this.expandOne(t);return this.files}async expandOne(e){if(e.trim()){if(gn(e)){await this.expandGlob(e);return}await this.expandLiteral(e,this.resolveLiteralPath(e))}}async expandGlob(e){let t=jc([FD(e)]);await this.scanDirectory(this.root,"",async n=>{t.matches(n)&&(this.isExcludedFile(n)||this.addFile(n))})}async expandLiteral(e,t){let n=this.toRelativePath(t,e),o=await xi(t);if(o){if(o.isDirectory()){await this.scanDirectory(t,n,i=>{this.addFile(i)});return}if(o.isFile()){this.addFile(n);return}VH.debug(`skip unsupported file path type: ${e}`)}}async scanDirectory(e,t,n){if(this.isExcludedDirectory(t))return;let o=(await DD.promises.readdir(e,{withFileTypes:!0})).sort((i,a)=>i.name.localeCompare(a.name));for(let i of o){let a=Yt.join(e,i.name),s=Yt.posix.join(t,i.name);if(i.isDirectory()){await this.scanDirectory(a,s,n);continue}i.isFile()&&await n(s)}}addFile(e){return this.isExcludedFile(e)||this.seen.has(e)?!1:(this.seen.add(e),this.files.push(e),!0)}resolveLiteralPath(e){let t=ht(e);return Yt.isAbsolute(t)?Yt.resolve(t):Yt.resolve(this.root,t)}toRelativePath(e,t){let n=Yt.relative(this.root,Yt.resolve(e));if(!n||n===".")return"";if(n===".."||n.startsWith(`..${Yt.sep}`)||Yt.isAbsolute(n))throw new jl("outsideRoot",t,`File path is outside root: ${t}`);return ht(n)}isExcludedDirectory(e){if(!e)return!1;let t=EP(e);return this.excludeMatcher?.matches(t)??!1}isExcludedFile(e){return this.excludeMatcher?.matches(e)??!1}};function qH(r){return r.flatMap(e=>{let t=FD(e);return t?t.endsWith("/")?[`${t}**`]:[t]:[]})}function FD(r){let e=ht(r),t=e.startsWith("./")?e.slice(2):e;return Je(t)}V();async function zs(r,e){let t=e.filter(o=>o.trim()).map(o=>BH(r.root,o));if(t.length===0)return[];let n=new Set(await r.listWorkspaceProjects());try{return(await new Vm({root:r.root,exclude:[...Wa.map(i=>`${i}/`),"**/node_modules/","**/.meta"]}).expand(t)).map(i=>HH(r,n,i))}catch(o){throw o instanceof jl?AD(o.pathSpec,o):o}}function BH(r,e){if(!bo.isAbsolute(e))return e;let t=bo.resolve(r),n=bo.resolve(e);return n===t||n.startsWith(`${t}${bo.sep}`)?bo.relative(t,n)||".":Je(ht(e))}function HH(r,e,t){let n=GH(t).split("/")[0];if(!n||!e.has(n))throw AD(t);let o=ie(t);return{path:o,remotePath:o,localPath:r.getMetaFileLocalPath(o)}}function AD(r,e){return new P("err.cli.invalidReadableFile",{input:"<pathspec>",source:r,path:r},{cause:e})}function GH(r){let e=Je(ht(r));for(;e.startsWith("./");)e=e.slice(2);return e}O();$n();F();nt();I();it();V();$i();var mO=E(pO()),uc=E(require("path")),Rf=require("url");O();F();nt();re();V();var _4={allowEmptyContent:!1,allowTrailingComma:!1,disallowComments:!0},D4={allowEmptyContent:!1,allowTrailingComma:!0,disallowComments:!1},Pf=class{constructor(e,t){this.workspaceRoot=e;this.serverUrl=t}indexTask;ajvTask;schemaFileTasks=new Map;validators=new Map;async initialize(){await this.getAjv(await this.getSchemaIndex())}async validateContent(e){let t=await this.getSchemaIndex(),n=V4(t,e.relativePath);if(!n)return{matched:!1,diagnostics:[]};let o=B4(e.content,q4(t,e.relativePath));if(o.diagnostics.length>0)return{matched:!0,diagnostics:o.diagnostics};let i=await this.getValidator(t,n);return{matched:!0,diagnostics:i(o.value)?[]:(i.errors??[]).map(s=>K4(s,e.content,o.root))}}getSchemaIndex(){return this.indexTask||(this.indexTask=F4(this.workspaceRoot,this.serverUrl)),this.indexTask}getValidator(e,t){let n=this.validators.get(t.schemaFilePath);return n||(n=this.createValidator(e,t),this.validators.set(t.schemaFilePath,n)),n}async createValidator(e,t){let n=await this.getAjv(e);try{return await n.compileAsync(await this.getSchemaFile(e,t.schemaFilePath))}catch(o){throw Ir(o,"err.workspace.issue.E405")?o:Io({reason:"missingSchemaFile",schemaRoot:e.schemaRoot,missingPaths:[t.schemaFilePath],cause:o})}}getAjv(e){return this.ajvTask||(this.ajvTask=this.createAjv(e)),this.ajvTask}async createAjv(e){return new mO.default({allErrors:!0,strict:!1,validateSchema:!1,validateFormats:!1,loadSchema:t=>this.loadReferencedSchema(e,t)})}async loadReferencedSchema(e,t){let n=H4(e,t);return this.getSchemaFile(e,n)}getSchemaFile(e,t){let n=uc.resolve(t),o=this.schemaFileTasks.get(n);return o||(o=this.readSchemaFile(e,n),this.schemaFileTasks.set(n,o)),o}async readSchemaFile(e,t){try{return z4(await G4(t),(0,Rf.pathToFileURL)(t).href)}catch(n){throw Io({reason:"missingSchemaFile",schemaRoot:e.schemaRoot,missingPaths:[t],cause:n})}}};async function F4(r,e){let t=await A4(r),n=Fp(r);if(!await e3(n))throw Io({reason:"missingSchemaRoot",schemaRoot:n,missingPaths:[n]});let o=await ea(r),i=ta(o,e,"jsonSchemas");if(!o.materializedServer)throw Io({reason:"missingState",schemaRoot:n,actualServer:e});if(o.materializedServer!==e||!i?.updatedAt)throw Io({reason:"serverMismatch",schemaRoot:n,expectedServer:o.materializedServer,actualServer:e});let a=await $4(r,n,t.settings),s=a.filter(c=>!c.exists).map(c=>c.schemaFilePath);if(s.length>0)throw Io({reason:"missingSchemaFile",schemaRoot:n,missingPaths:s});return{schemaRoot:n,jsoncFileMatch:t.jsoncFileMatch,entries:a.map(({exists:c,...l})=>l)}}async function A4(r){let e=Hr(r),t;try{t=await hn(e,{...Dr,ignoreParseError:!1})}catch(i){throw Io({reason:"invalidSettings",missingPaths:[e],cause:i})}let o=(Array.isArray(t?.["json.schemas"])?t["json.schemas"]:[]).filter(i=>W(i)).map(O4).filter(i=>i!==void 0);if(o.length===0)throw Io({reason:"missingSettings",missingPaths:[e]});return{settings:o,jsoncFileMatch:N4(t?.["files.associations"])}}function O4(r){let e=typeof r.url=="string"?r.url:void 0;if(!e)return;let t=hO(e),n=U4(t);if(!n)return;let o=L4(r.fileMatch);if(o.length!==0)return{fileMatch:o,url:e,schemaPath:n}}function L4(r){return typeof r=="string"?[r]:Array.isArray(r)?r.filter(e=>typeof e=="string"&&e.trim().length>0):[]}function N4(r){return W(r)?Object.entries(r).filter(([,e])=>typeof e=="string"&&e.toLowerCase()==="jsonc").flatMap(([e])=>W4(e)):[]}function W4(r){let e=ht(r.trim());return e?e.includes("/")?[e]:[e,`**/${e}`]:[]}function U4(r){let e=`${ps}/${ho}/`;if(r.startsWith(e))return Gr(r.slice(e.length));let t=`${ms}/`;if(r.startsWith(t))return Gr(r.slice(t.length))}async function $4(r,e,t){return Promise.all(t.map(async n=>{let o=await j4(r,e,n);return{fileMatch:n.fileMatch,schemaFilePath:o,exists:await yO(o)}}))}async function j4(r,e,t){let n=hO(t.url);if(n.startsWith(`${ms}/`)){let o=mr(r,n,"JSON Schema setting URL");if(await yO(o))return o}return mr(e,t.schemaPath,"JSON Schema path")}function V4(r,e){let t=gO(e);return r.entries.find(n=>Ni(t,[...n.fileMatch]))}function q4(r,e){return Ni(gO(e),[...r.jsoncFileMatch])}function B4(r,e){let t=[],n=e?D4:_4,o=hd(r,t,n),i=TR(r,[],n);return t.length===0?{value:o,root:i,diagnostics:[]}:{value:o,root:i,diagnostics:t.map(a=>{let s=fO(r,a.offset);return{message:`Invalid JSON: ${gd(a.error)}`,keyword:"json.syntax",line:s.line,character:s.character}})}}function H4(r,e){try{let t=new URL(e.split("#")[0]);if(t.protocol!=="file:")throw new Error(`Unsupported schema URI protocol: ${t.protocol}`);let n=uc.resolve((0,Rf.fileURLToPath)(t)),o=uc.resolve(r.schemaRoot);if(n!==o&&!n.startsWith(o+uc.sep))throw new Error(`Schema URI escapes schema root: ${e}`);return n}catch(t){throw Io({reason:"missingSchemaFile",schemaRoot:r.schemaRoot,missingPaths:[e],cause:t})}}async function G4(r){let e=await ro(r),t=JSON.parse(e);if(!W(t))throw new Error(`JSON Schema root must be an object: ${r}`);return t}function z4(r,e){return{...r,$id:e}}function K4(r,e,t){let n=Q4(e,t,r);return{message:J4(r),keyword:r.keyword,instancePath:r.instancePath,schemaPath:r.schemaPath,line:n?.line,character:n?.character}}function J4(r){let e=r.instancePath||"/";return r.message?`${e} ${r.message}`:`${e} failed ${r.keyword}`}function Q4(r,e,t){if(!e)return;let n=Y4(t.instancePath),o=X4(n,t)??Z4(n,t)??n,i=Yh(e,o)??Yh(e,n);return i?fO(r,i.offset):void 0}function Y4(r){return r?r.split("/").slice(1).map(e=>{let t=e.replace(/~1/g,"/").replace(/~0/g,"~");return/^\d+$/.test(t)?Number(t):t}):[]}function X4(r,e){if(e.keyword!=="additionalProperties"||!W(e.params))return;let t=e.params.additionalProperty;return typeof t=="string"?[...r,t]:void 0}function Z4(r,e){if(e.keyword!=="required"||!W(e.params))return;let t=e.params.missingProperty;return typeof t=="string"?[...r,t]:void 0}function fO(r,e){let t=Math.max(0,Math.min(e,r.length)),n=0,o=0;for(let i=0;i<t;i++)r.charCodeAt(i)===10&&(n++,o=i+1);return{line:n,character:t-o}}function hO(r){return ht(r).replace(/^\.\//,"")}function gO(r){return Ee(ie(r))}async function e3(r){return(await xi(r))?.isDirectory()??!1}async function yO(r){return(await xi(r))?.isFile()??!1}function Io(r){return new P("err.workspace.issue.E405",{item:"json-schema-support",reason:r.reason,schemaRoot:r.schemaRoot,missingPaths:r.missingPaths,expectedServer:r.expectedServer,actualServer:r.actualServer},{cause:r.cause})}var t3=2,kk=class extends Te{toOptions(e){return{paths:e.values("pathspec")}}async executeWorkspaceCommand(e,t,n){await Vn(t,e);let o=new Pf(e.root,e.activeServerUrl),i=await e.getMetadataVersionCatalog(),a=await zs(e,n.paths),s,c=()=>(s??=e.requireServerClient(e.activeServerUrl),s),l=new Array(a.length);t.task.start(Math.max(a.length,1),{message:d("cli.cmd.workspace.file.compile.running"),retainOnFinish:!0}),await Oi(a.map((f,y)=>({target:f,index:y})),{maxConcurrency:t3,signal:t.task.getAbortSignal()},async({target:f,index:y})=>{t.task.throwIfAborted();try{l[y]=await r3(e.root,o,i,c,f)}finally{t.task.isCancellationRequested()||t.task.step()}}),a.length===0&&t.task.step(),t.task.setMessage(d("cli.cmd.workspace.file.compile.done",l.length)),t.task.finish();let u=l.filter(f=>!f.success),p=l.filter(f=>f.skipped),g=l.filter(f=>f.skipReason==="metadataUpgradeRequired"),m=l.filter(f=>f.skipReason==="metadataVersionNewer");return t.output.result({workspace:e.root,server:e.activeServerUrl,summary:{files:l.length,passed:l.length-u.length-p.length,failed:u.length,skipped:p.length,upgradeRequired:g.length,newerVersion:m.length},items:l},()=>o3(l)),u.length>0?1:0}},CO={path:["workspace","file","compile"],domain:"workspace",spec:{name:"workspace file compile",flags:[],positionals:[{name:"pathspec",param:{required:!0},repeatable:!0}],usageArgs:"[<options>] [--] <pathspec>...",examples:["succapp workspace file compile DEMO/ana","succapp workspace file compile /DEMO/ana/sales.dash --json","succapp workspace file compile 'DEMO/ana/**/*.dash'","succapp workspace file compile DEMO/ana/sales.dash DEMO/data/tables/customer.tbl"]},workspaceTarget:"required",serverTarget:"required",createExecutor:()=>new kk};async function r3(r,e,t,n,o){try{let a=t.getInfoByPath(o.remotePath)?.contentVersion;if(!a)return{path:o.path,remotePath:o.remotePath,localPath:o.localPath,success:!0,skipped:!0,skipReason:"metadataVersionMissing"};let s=await ro(o.localPath),c=Qc(s);if(Ya(c,a))return{path:o.path,remotePath:o.remotePath,localPath:o.localPath,success:!0,skipped:!0,skipReason:"metadataUpgradeRequired",currentVersion:c,targetVersion:a};if(Xa(c,a))return{path:o.path,remotePath:o.remotePath,localPath:o.localPath,success:!0,skipped:!0,skipReason:"metadataVersionNewer",currentVersion:c,targetVersion:a};let l=await e.validateContent({relativePath:a3(r,o.localPath,o.remotePath),content:s});if(l.matched&&l.diagnostics.length>0)return{path:o.path,remotePath:o.remotePath,localPath:o.localPath,success:!1,errorInfo:c3(l.diagnostics)};let p=await(await n()).compileFileContent({path:o.remotePath,content:s});return n3(o.path,o.localPath,p)}catch(i){if(Ir(i,"err.workspace.issue.E405"))throw i;return{path:o.path,remotePath:o.remotePath,localPath:o.localPath,success:!1,errorInfo:i}}}function n3(r,e,t){return{path:r,remotePath:t.path,localPath:e,type:t.type,success:t.success,changed:t.changed,originalVersion:t.originalVersion,upgradedVersion:t.upgradedVersion,compiler:t.compiler,errorInfo:t.errorInfo}}function o3(r){let e=r.filter(a=>!a.success),t=r.filter(a=>a.skipped),n=r.filter(a=>a.skipReason==="metadataUpgradeRequired"),o=r.filter(a=>a.skipReason==="metadataVersionNewer"),i=[d("cli.cmd.workspace.file.compile.result",r.length,r.length-e.length-t.length,e.length)];return t.length>0&&i.push(d("cli.cmd.workspace.file.compile.skipped",t.length)),n.length>0&&i.push(d("cli.cmd.workspace.file.compile.upgradeRequired",n.length,"succapp workspace file upgrade <pathspec>")),o.length>0&&i.push(d("cli.cmd.workspace.file.compile.newerVersion",o.length)),e.length>0&&(i.push(d("cli.cmd.workspace.file.compile.failed",e.length)),i.push(i3(e))),i.join(`
|
|
114
|
+
`)}function i3(r){return Re({columns:[d("cli.out.header.remote"),d("cli.cmd.workspace.file.compile.compiler"),d("cli.out.header.error")],rows:r.map(e=>[e.remotePath??e.path,e.compiler??"",Xr(e.errorInfo)])})}function a3(r,e,t){let n=bf.relative(r,e),o=s3(n)?n:t;return Ee(ie(o))}function s3(r){return r.length>0&&r!==".."&&!r.startsWith("../")&&!r.startsWith("..\\")&&!bf.isAbsolute(r)}function c3(r){let e=r[0];return{message:e?d("cli.cmd.workspace.file.compile.schemaFailedMsg",e.message):d("cli.cmd.workspace.file.compile.schemaFailed"),diagnostics:r}}var wk=class extends je{toOptions(e){let t=e.value("source");return{paths:e.values("pathspec"),source:t??"server"}}async executeSyncCommand(e,t,n,o){let i=await zs(e,o.paths),a=await t.diff({paths:i.map(s=>s.remotePath),source:o.source,task:n.task});return n.output.result({workspace:e.root,server:e.activeServerUrl,source:a.source,summary:{files:a.items.length,changed:a.items.filter(s=>s.changed).length,binary:a.items.filter(s=>s.binary).length},patches:a.items.map(u3)},()=>l3(a)),0}},SO={path:["workspace","file","diff"],domain:"workspace",spec:{name:"workspace file diff",flags:[{name:"source",takesValue:!0,valueHint:"server",helpGroup:"input",param:{choices:["server"]}}],positionals:[{name:"pathspec",param:{required:!0},repeatable:!0}],usageArgs:"[<options>] [--] <pathspec>...",examples:["succapp workspace file diff demo/ana/sales.dash","succapp workspace file diff --source=server /DEMO/ana/sales.dash","succapp workspace file diff 'demo/ana/**/*.dash' --json","succapp workspace file diff demo/ana/sales.dash --json"]},workspaceTarget:"required",serverTarget:"required",createExecutor:()=>new wk};function l3(r){return r.items.map(e=>e.patch).filter(Boolean).join(`
|
|
115
|
+
`)}function u3(r){return{path:r.path,remotePath:r.remotePath,localPath:r.localPath,source:r.source,sourceSize:r.sourceSize,workspaceSize:r.workspaceSize,changed:r.changed,binary:r.binary,patch:r.patch}}I();var Pk=class extends je{toOptions(e){return{path:e.value("path"),limit:e.integer("limit")}}async executeSyncCommand(e,t,n,o){let i=await t.history({path:o.path,limit:o.limit,task:n.task}),a=i.histories.length===0?{reason:"emptyCollection",message:d("cli.out.workspace.file.hist.empty")}:void 0;return n.output.result({workspace:e.root,server:e.activeServerUrl,path:i.path,remotePath:i.remotePath,summary:{histories:i.histories.length},...a===void 0?{}:{empty:a},histories:i.histories.map(Im)},()=>xm(i.histories,a)),0}},vO={path:["workspace","file","history"],domain:"workspace",spec:{name:"workspace file history",flags:[{name:"limit",takesValue:!0,valueHint:"n",helpGroup:"output",param:{type:"integer",min:1}}],positionals:[{name:"path",param:{required:!0}}],usageArgs:"[<options>] <path>",examples:["succapp workspace file history demo/ana/sales.dash","succapp workspace file history --limit=20 /DEMO/ana/sales.dash","succapp workspace file history demo/ana/sales.dash --json"]},workspaceTarget:"required",serverTarget:"required",createExecutor:()=>new Pk};async function Ef(r,e){let t=await r.resolveRemoteFilePath({path:e.path});return{path:t.path,localPath:r.getMetaFileLocalPath(t.remotePath),remotePath:t.remotePath,serverUrl:t.serverUrl,viewUrl:so(t.serverUrl,{path:t.remotePath}),editUrl:so(t.serverUrl,{path:t.remotePath,":edit":"true"})}}O();F();I();var Rk=class extends je{constructor(t=Qa){super();this.opener=t}toOptions(t){return{path:t.value("path"),edit:t.has("edit"),noOpen:t.has("no-open"),force:t.has("force")}}async executeSyncCommand(t,n,o,i){let a=await Ef(t,{path:i.path});await p3(a.localPath);let s=await m3(n,o,a.remotePath);if(s&&!i.force)throw new P("err.cli.confirmationRequired",{reason:"openLocalChanged",flag:"--force",path:a.remotePath});s&&o.output.warning(d("cli.cmd.workspace.file.open.localChangedForce",a.remotePath));let c=i.edit===!0,l=c?a.editUrl:a.viewUrl,u=!i.noOpen;return u&&await this.opener(l,o.abortSignal),o.output.result({workspace:t.root,server:a.serverUrl,path:a.path,remotePath:a.remotePath,edit:c,opened:u,force:i.force,localChanged:!!s,...s?{warnings:[{code:"localChanged",remotePath:s.remotePath,type:s.type}]}:{},url:l},()=>d3(l,c,u)),0}},kO={path:["workspace","file","open"],domain:"workspace",spec:{name:"workspace file open",flags:[{name:"edit",takesValue:!1,helpGroup:"options"},{name:"no-open",takesValue:!1,helpGroup:"options"},{name:"force",takesValue:!1,helpGroup:"options"}],positionals:[{name:"path",role:"workspace-file-path",description:"cli.cmd.workspace.file.open.path",param:{required:!0}}],usageArgs:"[<options>] <path>",examples:["succapp workspace file open demo/ana/sales.dash","succapp workspace file open --edit /DEMO/ana/sales.dash","succapp workspace file open --force demo/ana/sales.dash","succapp workspace file open demo/ana/sales.dash --json","succapp workspace file open --no-open demo/ana/sales.dash --json"]},workspaceTarget:"required",serverTarget:"required",sideEffects:[{type:"open-external-url",disabledBy:"--no-open"}],createExecutor:()=>new Rk};function d3(r,e,t){return t?d(e?"cli.cmd.workspace.file.open.openedEdit":"cli.cmd.workspace.file.open.openedView",r):r}async function p3(r){if(!(await Ja(r)).isFile())throw new P("err.cli.invalidRegularFile",{inputId:"inputFile",source:r,path:r})}async function m3(r,e,t){return(await r.status({refreshAll:!0,scope:"local",paths:[t],task:e.task})).localChanges.find(o=>o.remotePath===t)}I();var bk=class extends Te{toOptions(e){return{path:e.value("path"),url:e.value("url")}}async executeWorkspaceCommand(e,t,n){await Vn(t,e);let o=await Ef(e,{path:n.path});return t.output.result(f3(e,o),()=>h3(o,n.url)),0}},wO={path:["workspace","file","resolve"],domain:"workspace",spec:{name:"workspace file resolve",flags:[{name:"url",takesValue:!0,valueHint:"view|edit",helpGroup:"output",param:{choices:["view","edit"]}}],positionals:[{name:"path",param:{required:!0}}],usageArgs:"[<options>] <path>",examples:["succapp workspace file resolve demo/ana/sales.dash","succapp workspace file resolve --url=view demo/ana/sales.dash","succapp workspace file resolve --url=edit /DEMO/ana/sales.dash --json"]},workspaceTarget:"required",serverTarget:"required",createExecutor:()=>new bk};function f3(r,e){return{workspace:r.root,server:e.serverUrl,path:e.path,remotePath:e.remotePath,localPath:e.localPath,viewUrl:e.viewUrl,editUrl:e.editUrl}}function h3(r,e){return e==="view"?r.viewUrl:e==="edit"?r.editUrl:[d("cli.cmd.workspace.file.resolve.path",r.path),d("cli.cmd.workspace.file.resolve.localPath",r.localPath),d("cli.cmd.workspace.file.resolve.remote",r.remotePath),d("cli.cmd.workspace.file.resolve.viewUrl",r.viewUrl),d("cli.cmd.workspace.file.resolve.editUrl",r.editUrl)].join(`
|
|
116
|
+
`)}F();O();var Ek=class extends je{toOptions(e){let t=e.value("source");return{path:e.value("path"),source:t??"server",revision:e.integer("revision")}}validateOptions(e,t){if(t.revision!==void 0&&t.source==="mirror")throw new P("err.cli.conflictingInputs",{inputs:["--revision","--source=mirror"]})}async executeSyncCommand(e,t,n,o){let i=await t.show({path:o.path,source:o.source,revision:o.revision,task:n.task});return n.output.content({workspace:e.root,server:e.activeServerUrl,path:i.path,remotePath:i.remotePath,fileName:i.fileName,source:i.source,size:i.buffer.length},i.buffer),0}},PO={path:["workspace","file","show"],domain:"workspace",spec:{name:"workspace file show",flags:[{name:"source",takesValue:!0,valueHint:"mirror|server",helpGroup:"input",param:{choices:["mirror","server"]}},{name:"revision",takesValue:!0,valueHint:"n",helpGroup:"input",param:{type:"integer",min:0}}],positionals:[{name:"path",param:{required:!0}}],usageArgs:"[<options>] <path>",examples:["succapp workspace file show /DEMO/ana/sales.dash","succapp workspace file show --source=mirror demo/ana/sales.dash","succapp workspace file show --revision=42 /DEMO/ana/sales.dash","succapp workspace file show /DEMO/ana/sales.dash --json"]},workspaceTarget:"required",serverTarget:"required",createExecutor:()=>new Ek};I();var Tk=class extends je{toOptions(e){return{paths:e.values("pathspec"),dryRun:e.has("dry-run")}}async executeSyncCommand(e,t,n,o){let i=o.paths.length>0?(await zs(e,o.paths)).map(s=>s.remotePath):void 0,a=await t.upgradeMetadata({paths:i,dryRun:o.dryRun,task:n.task});return n.output.result({workspace:e.root,server:e.activeServerUrl,dryRun:o.dryRun,summary:{checked:a.checked,candidates:a.candidates.length,changed:a.changed.length,skipped:a.skipped.length,failures:a.failures.length},candidates:a.candidates.map(vo),changed:a.changed.map(vo),skipped:a.skipped.map(vo),failures:a.failures.map(vo)},()=>g3(a,o.dryRun,n.config.verbose)),a.failures.length>0?1:0}},RO={path:["workspace","file","upgrade"],domain:"workspace",spec:{name:"workspace file upgrade",flags:[{name:"dry-run",takesValue:!1,helpGroup:"options"}],positionals:[{name:"pathspec",repeatable:!0}],usageArgs:"[<options>] [--] [<pathspec>...]",examples:["succapp workspace file upgrade --dry-run","succapp workspace file upgrade demo/ana/sales.dash","succapp workspace file upgrade 'demo/ana/**/*.dash'","succapp workspace file upgrade /DEMO/ana/sales.dash --json"]},workspaceTarget:"required",serverTarget:"required",lockUsage:"workspace-write",createExecutor:()=>new Tk};function g3(r,e,t){let n=[d(e?"cli.cmd.workspace.file.upgrade.dryRunRes":"cli.cmd.workspace.file.upgrade.result",r.checked,e?r.candidates.length:r.changed.length,r.skipped.length,r.failures.length)];return e&&r.candidates.length>0&&(n.push(d("cli.cmd.workspace.file.upgrade.cands",r.candidates.length)),n.push(Dl(r.candidates))),!e&&r.changed.length>0&&(n.push(d("cli.cmd.workspace.file.upgrade.upgraded",r.changed.length)),n.push(Dl(r.changed))),r.failures.length>0&&(n.push(d("cli.cmd.workspace.file.upgrade.failed",r.failures.length)),n.push(y3(r.failures))),t&&r.skipped.length>0&&(n.push(d("cli.cmd.workspace.file.upgrade.skipped",r.skipped.length)),n.push(C3(r.skipped))),n.join(`
|
|
117
|
+
`)}function y3(r){return Re({columns:[d("cli.out.header.remote"),d("cli.cmd.workspace.file.upgrade.reason"),d("cli.out.header.error")],rows:r.map(e=>[e.remotePath,e.reason??"",Xr(e.errorInfo)])})}function C3(r){return Re({columns:[d("cli.out.header.remote"),d("cli.out.common.version"),d("cli.out.common.targetVersion"),d("cli.cmd.workspace.file.upgrade.reason")],rows:r.map(e=>[e.remotePath,e.currentVersion??"",e.targetVersion??"",e.reason??""])})}I();var Mk=class extends Te{async executeWorkspaceCommand(e,t,n){let o=await e.lockManager.peekHolders(),i=Array.from(o,([s,c])=>({scope:s,holder:c})).filter(s=>s.holder).map(s=>({scope:s.scope})),a=i.length===0?{reason:"emptyCollection",message:d("cli.cmd.workspace.lock.list.empty")}:void 0;return t.output.result({workspace:e.root,...a===void 0?{}:{empty:a},scopes:i},()=>({columns:[d("cli.cmd.workspace.lock.list.scope")],rows:i.map(s=>[s.scope]),...a===void 0?{}:{empty:a}})),0}},bO={path:["workspace","lock","list"],domain:"workspace",spec:{name:"workspace lock list",flags:[],positionals:[],usageArgs:"[<options>]",examples:["succapp workspace lock list","succapp workspace lock list --json"]},workspaceTarget:"required",serverTarget:"none",createExecutor:()=>new Mk};I();O();var xk=class extends Te{toOptions(e){return{scopes:e.values("scope")}}async executeWorkspaceCommand(e,t,n){let o=await e.lockManager.peekHolders(n.scopes.length===0?void 0:n.scopes),i=Array.from(o,([s,c])=>({scope:s,holder:c})),a={workspace:e.root,staleMs:e.lockManager.staleMs,scopes:i.map(s=>this.toJsonScopeStatus(s))};return t.output.result(a,()=>({columns:[d("cli.cmd.workspace.lock.status.scope"),d("cli.out.header.status"),d("cli.out.header.source"),d("cli.cmd.workspace.lock.status.pid"),d("cli.out.header.command"),d("cli.out.header.started"),d("cli.cmd.workspace.lock.status.heartbeat")],rows:i.map(s=>this.toTableRow(s))})),0}toJsonScopeStatus(e){return e.holder?{scope:e.scope,status:"busy",holder:this.toJsonHolder(e.holder)}:{scope:e.scope,status:"free"}}toJsonHolder(e){return{pid:e.pid,hostname:e.hostname,source:e.source,command:e.command,startTime:e.startTime,lastHeartbeat:e.lastHeartbeat,agentVersion:e.agentVersion,alsoHolds:e.alsoHolds}}toTableRow(e){return[e.scope,d(e.holder?"cli.out.value.busy":"cli.out.value.free"),e.holder?.source??"",e.holder?String(e.holder.pid):"",e.holder?.command??"",e.holder?.startTime??"",e.holder?.lastHeartbeat??""]}},EO={path:["workspace","lock","status"],domain:"workspace",spec:{name:"workspace lock status",flags:[],positionals:[{name:"scope",repeatable:!0,param:{choices:Ii,inputId:"lockScope"}}],usageArgs:"[<options>] [<scope>...]",examples:["succapp workspace lock status","succapp workspace lock status sync","succapp -C /path/to/workspace workspace lock status --json"]},workspaceTarget:"required",serverTarget:"none",createExecutor:()=>new xk};oo();I();O();var MO=100,S3=["config","sync"],Ik=class extends Te{toOptions(e){return{scopes:e.values("scope"),timeoutSeconds:e.integer("timeout")}}async executeWorkspaceCommand(e,t,n){let o=n.scopes.length>0?n.scopes:S3,i=Date.now(),a=n.timeoutSeconds===void 0?void 0:n.timeoutSeconds*1e3;for(;;){Gt(t.abortSignal);let s=await v3(e,o),c=s.filter(u=>u.status==="busy"),l=Date.now()-i;if(c.length===0)return t.output.result(TO(e.root,s,"free",l),()=>d("cli.cmd.workspace.lock.wait.locksFree",o.join(", "))),0;if(a!==void 0&&l>=a)return t.output.result(TO(e.root,s,"timeout",l),()=>d("cli.cmd.workspace.lock.wait.locksBusy",n.timeoutSeconds??0,c.map(u=>u.scope).join(", "))),124;await w3(Math.min(MO,k3(a,l)))}}},xO={path:["workspace","lock","wait"],domain:"workspace",spec:{name:"workspace lock wait",flags:[{name:"timeout",takesValue:!0,valueHint:"seconds",helpGroup:"options",param:{type:"integer",min:0,max:_i}}],positionals:[{name:"scope",repeatable:!0,param:{choices:Ii,inputId:"lockScope"}}],usageArgs:"[<options>] [<scope>...]",examples:["succapp workspace lock wait","succapp workspace lock wait sync --timeout=30","succapp workspace lock wait config sync --json"]},workspaceTarget:"required",serverTarget:"none",createExecutor:()=>new Ik};async function v3(r,e){let t=await r.lockManager.peekHolders(e);return e.map(n=>({scope:n,status:t.get(n)?"busy":"free"}))}function TO(r,e,t,n){return{workspace:r,status:t,waitedMs:n,scopes:e,busyScopes:e.filter(o=>o.status==="busy").map(o=>o.scope)}}function k3(r,e){return r===void 0?MO:Math.max(0,r-e)}function w3(r){return new Promise(e=>setTimeout(e,r))}I();O();F();V();var _k=class extends je{configuredActiveServer;toOptions(e){return{projectNames:e.values("project"),force:e.has("force")}}async prepareSyncCommand(e,t,n){if(this.configuredActiveServer=void 0,await e.config.ensureLoaded(),e.activeServerUrl||!t.config.server){await super.prepareSyncCommand(e,t,n);return}let o=De("server"),i=yn(t.config.server,{input:o,option:o,flag:"server"});this.configuredActiveServer=await e.addServer(i)}async executeSyncCommand(e,t,n,o){await R3(t,o);let i=await t.clone({projectNames:o.projectNames.length>0?[...o.projectNames]:void 0,task:n.task}),a=this.configuredActiveServer,s=a?{activeServerConfigured:!0,configuredActiveServer:a}:{};return n.output.result({workspace:e.root,server:e.activeServerUrl,summary:{projects:i.projectNames.length,oldFiles:i.oldFiles.length},...s,projects:i.projectNames,oldFiles:i.oldFiles.map(vo)},()=>this.renderCloneResultText(i)),0}renderCloneResultText(e){let t=e.projectNames.length>0?e.projectNames.join(", "):d("cli.out.value.none"),n=[];return this.configuredActiveServer&&n.push(d("cli.cmd.workspace.proj.clone.configuredActive",this.configuredActiveServer)),n.push(d("cli.cmd.workspace.proj.clone.cloned",t)),e.oldFiles.length>0&&n.push(d("cli.cmd.workspace.proj.clone.oldMetaNotice",{count:e.oldFiles.length,command:P3(e.projectNames)})),n.join(`
|
|
118
|
+
`)}},_O={path:["workspace","project","clone"],domain:"workspace",spec:{name:"workspace project clone",flags:[{name:"force",alias:"f",takesValue:!1,helpGroup:"options"}],positionals:[{name:"project",repeatable:!0}],usageArgs:"[<options>] [--] [<project>...]",examples:["succapp workspace project clone","succapp workspace project clone DEMO","succapp workspace project clone DEMO --force","succapp workspace project clone DEMO OTHER --json"]},workspaceTarget:"required",serverTarget:"required",lockUsage:"workspace-write",createExecutor:()=>new _k};function P3(r){return`succapp workspace file upgrade${r.length>0?` ${r.join(" ")}`:""}`}async function R3(r,e){if(e.force)return;let[t,n]=await Promise.all([r.listWorkspaceProjects(),r.listBaselineProjects()]),o=new Set([...t,...n].map(IO)),a=(e.projectNames.length>0?[...new Set(e.projectNames.map(IO))]:[...o]).filter(s=>o.has(s));if(a.length!==0)throw new P("err.cli.confirmationRequired",{reason:"cloneOverwrite",flag:"--force",projectNames:a.join(", ")})}function IO(r){return Bt(r).slice(1)}I();var Dk=class extends je{async executeSyncCommand(e,t,n,o){let[i,a]=await Promise.all([t.listWorkspaceProjects(),t.listBaselineProjects()]),s=b3(i,a),c=s.length===0?{reason:"emptyCollection",message:d("cli.cmd.workspace.proj.list.empty")}:void 0;return n.output.result({workspace:e.root,server:e.activeServerUrl,...c===void 0?{}:{empty:c},projects:s},()=>E3(s,c)),0}},DO={path:["workspace","project","list"],domain:"workspace",spec:{name:"workspace project list",flags:[],positionals:[],usageArgs:"[<options>]",examples:["succapp workspace project list","succapp workspace project list --json"]},workspaceTarget:"required",serverTarget:"none",createExecutor:()=>new Dk};function b3(r,e){let t=new Set(r),n=new Set(e);return Array.from(new Set([...r,...e])).sort((o,i)=>o.localeCompare(i)).map(o=>({name:o,workspace:t.has(o),baseline:n.has(o)}))}function E3(r,e){return{columns:[d("cli.out.header.project"),d("cli.out.common.workspace"),d("cli.out.common.baseline")],rows:r.map(t=>[t.name,d(t.workspace?"cli.out.value.yes":"cli.out.value.no"),d(t.baseline?"cli.out.value.yes":"cli.out.value.no")]),...e===void 0?{}:{empty:e}}}O();F();I();var Fk=class extends je{toOptions(e){return{projectNames:e.values("project"),force:e.has("force")}}validateOptions(e,t){if(!t.force)throw new P("err.cli.confirmationRequired",{reason:"projRemove",flag:"--force",projectNames:t.projectNames.join(", ")})}async executeSyncCommand(e,t,n,o){let i=await t.removeProject({projectNames:[...o.projectNames],task:n.task});return n.output.result({workspace:e.root,server:e.activeServerUrl,projectNames:i.projectNames},()=>d("cli.cmd.workspace.proj.remove.removed",i.projectNames.join(", ")||d("cli.out.value.none"))),0}},FO={path:["workspace","project","remove"],domain:"workspace",spec:{name:"workspace project remove",flags:[{name:"force",alias:"f",takesValue:!1,helpGroup:"options"}],positionals:[{name:"project",param:{required:!0},repeatable:!0}],usageArgs:"[<options>] <project>...",examples:["succapp workspace project remove DEMO_BLANK --force","succapp workspace project remove DEMO_BLANK OTHER --force --json"]},workspaceTarget:"required",serverTarget:"none",lockUsage:"workspace-write",createExecutor:()=>new Fk};F();O();var an=class extends Te{async executeWorkspaceCommand(e,t,n){return await e.config.ensureLoaded(),this.executeServerCommand(e,t,n)}async requireConfiguredServerUrl(e,t,n){let o=await Ka(t,{explicitServerUrl:n}),i=e.config.resolveServerUrl(o);if(!i)throw new P("err.cli.unconfiguredServer",{inputId:"server",value:o,context:{target:o}});return i}};I();var Ak=class extends an{toOptions(e){return{url:e.value("url")}}async executeServerCommand(e,t,n){let o=yn(n.url),i=e.config.hasServer(o),a=await e.addServer(o);return t.output.result({workspace:e.root,server:a,activeServer:a,added:!i},()=>d("cli.cmd.workspace.remote.add.active",a)),0}},AO={path:["workspace","remote","add"],domain:"workspace",spec:{name:"workspace remote add",flags:[],positionals:[{name:"url",param:{required:!0},role:"server-url"}],usageArgs:"[<options>] <url>",examples:["succapp workspace remote add http://localhost:8180","succapp workspace remote add https://bi.example.com --json"]},workspaceTarget:"required",serverTarget:"none",lockUsage:"workspace-write",createExecutor:()=>new Ak};I();var Ok=class extends an{async executeServerCommand(e,t,n){let o=e.activeServerUrl,i=e.config.getServers().map(s=>({url:s,active:s===o})),a=i.length===0?{reason:"emptyCollection",message:d("cli.out.common.noServers")}:void 0;return t.output.result({workspace:e.root,activeServer:o||void 0,...a===void 0?{}:{empty:a},servers:i.map(T3)},()=>M3(i,a)),0}},OO={path:["workspace","remote","list"],domain:"workspace",spec:{name:"workspace remote list",flags:[],positionals:[],usageArgs:"[<options>]",examples:["succapp workspace remote list","succapp workspace remote list --json"]},workspaceTarget:"required",serverTarget:"none",createExecutor:()=>new Ok};function T3(r){return{url:r.url,active:r.active}}function M3(r,e){return r.length===0?e?.message??d("cli.out.common.noServers"):{columns:[d("cli.out.common.server"),d("cli.out.common.active")],rows:r.map(t=>[t.url,d(t.active?"cli.out.value.yes":"cli.out.value.no")])}}I();var Lk=class extends an{toOptions(e){return{url:e.value("url")}}async executeServerCommand(e,t,n){let o=await this.requireConfiguredServerUrl(e,t,n.url),i=await e.removeServer(o);return t.output.result({workspace:e.root,server:o,removedActive:i,activeServer:e.activeServerUrl||void 0},()=>e.activeServerUrl?d("cli.cmd.workspace.remote.remove.active",o,e.activeServerUrl):d("cli.cmd.workspace.remote.remove.removed",o)),0}},LO={path:["workspace","remote","remove"],domain:"workspace",spec:{name:"workspace remote remove",flags:[],positionals:[{name:"url",param:{required:!0},role:"server-url"}],usageArgs:"[<options>] <url>",examples:["succapp workspace remote remove http://localhost:8180","succapp workspace remote remove https://bi.example.com --json"]},workspaceTarget:"required",serverTarget:"none",lockUsage:"workspace-write",createExecutor:()=>new Lk};I();var Nk=class extends an{toOptions(e){return{oldUrl:e.value("old-url"),newUrl:e.value("new-url")}}async executeServerCommand(e,t,n){let o=await this.requireConfiguredServerUrl(e,t,n.oldUrl),i=yn(n.newUrl),a=await e.changeServerUrl(o,i);return t.output.result({workspace:e.root,oldServer:o,server:a,activeServer:e.activeServerUrl||void 0},()=>d("cli.cmd.workspace.remote.setUrl.changed",o,a)),0}},NO={path:["workspace","remote","set-url"],domain:"workspace",spec:{name:"workspace remote set-url",flags:[],positionals:[{name:"old-url",param:{required:!0},role:"server-url"},{name:"new-url",param:{required:!0},role:"server-url"}],usageArgs:"[<options>] <old-url> <new-url>",examples:["succapp workspace remote set-url http://localhost:8080 http://localhost:8180","succapp workspace remote set-url https://old.example.com https://new.example.com --json"]},workspaceTarget:"required",serverTarget:"none",lockUsage:"workspace-write",createExecutor:()=>new Nk};I();var Wk=class extends an{toOptions(e){return{url:e.value("url")}}async executeServerCommand(e,t,n){let o=await this.requireConfiguredServerUrl(e,t,n.url),i=await e.switchActiveServer(o);return t.output.result({workspace:e.root,server:o,activeServer:i},()=>d("cli.cmd.workspace.remote.use.active",i)),0}},WO={path:["workspace","remote","use"],domain:"workspace",spec:{name:"workspace remote use",flags:[],positionals:[{name:"url",param:{required:!0},role:"server-url"}],usageArgs:"[<options>] <url>",examples:["succapp workspace remote use http://localhost:8180","succapp workspace remote use https://bi.example.com --json"]},workspaceTarget:"required",serverTarget:"none",lockUsage:"workspace-write",createExecutor:()=>new Wk};var UO=[eD,yD,rD,nD,iD,CO,SO,PO,vO,kO,wO,RO,_O,DO,FO,gD,AO,OO,WO,NO,LO,xD,ID,_D,EO,bO,xO,ED,bD,vD];var $O=[...UO,...Q_,...qM,...Px,...Qx];var Tf=[{path:["server","file"]},{path:["server","cache"]},{path:["server","project"]},{path:["server","script"]},{path:["server","settings"]},{path:["server","extension"]},{path:["server","extension","template"]},{path:["db","source"]},{path:["db","schema"]},{path:["db","table"]},{path:["model"]},{path:["workspace","project"]},{path:["workspace","file"]},{path:["workspace","remote"]},{path:["workspace","lock"]},{path:["workspace","backup"]},{path:["workspace","extension"]}];ze();ze();var x3="cli.out.help.commands",I3={extension:"ext",project:"proj"};function Mf(r){return r.spec.summary??_3(r.path)}function xf(r){return r.spec.description??D3(r.path)}function If(r){return r.help?.section??x3}function jO(r){return r.title??Df(r.path)}function VO(r){return r.summary??gu(r.path)}function qO(r){return r.description??Ff(r.path)}function _f(r,e){return r.description?r.description:(K(e,`flag --${r.name} description requires command context`),F3(e.path,r.name))}function BO(r){return`cli.out.help.group.${r}`}function _3(r){return gu(r)}function D3(r){return Ff(r)}function Df(r){return`cli.cmd.${Af(r)}.title`}function gu(r){return`cli.cmd.${Af(r)}.summary`}function Ff(r){return`cli.cmd.${Af(r)}.desc`}function F3(r,e){return`cli.cmd.${Af(r)}.${HO(e)}`}function Af(r){return r.map(A3).join(".")}function A3(r){return I3[r]??HO(r)}function HO(r){return r.replace(/-([a-z0-9])/g,(e,t)=>t.toUpperCase())}function GO(r){let e=new Map;for(let t of r){let n=t.path.join(" ");K(!e.has(n),`Duplicate CLI command path: ${n}`),e.set(n,t),O3(t,n),L3(t,n),N3(t,n)}}function O3(r,e){K(r.path.length>0,"CLI command path must not be empty."),r.domain!=="common"&&K(r.path[0]===r.domain,`CLI command domain/path mismatch: ${e}`)}function L3(r,e){K(If(r).trim(),`CLI command help section must not be empty: ${e}`),K(r.spec.name.trim(),`CLI command spec name must not be empty: ${e}`)}function N3(r,e){K(typeof r.createExecutor=="function",`CLI command createExecutor must be a function: ${e}`)}var zO=["workspace","server","model","db","auth"];function KO(){return zO.map(r=>{let e=[r];return{title:Df(e),commands:[{name:r,summary:gu(e)}]}})}function Of(r,e=[]){let t=zO.map(o=>{let i=[o],a=r.filter(s=>s.domain===o);return{path:i,title:Df(i),summary:gu(i),description:Ff(i),sections:W3(a)}}),n=e.flatMap(o=>{let i=r.filter(a=>$3(a,o.path));return i.length===0?[]:[{path:o.path,title:jO(o),summary:VO(o),description:qO(o),sections:U3(o.path,i)}]});return V3([...t,...n])}function W3(r){return JO(r,e=>e.help?.entry??e.path.slice(1).join(" "))}function U3(r,e){return JO(e,t=>t.help?.entry??t.path.slice(r.length).join(" "))}function JO(r,e){let t=new Map;for(let n of r){let o=If(n),i=t.get(o)??[];i.push({name:e(n),summary:Mf(n)}),t.set(o,i)}return Array.from(t,([n,o])=>({title:n,commands:j3(o)}))}function $3(r,e){return r.path.length>e.length&&e.every((t,n)=>r.path[n]===t)}function j3(r){let e=[],t=new Set;for(let n of r)t.has(n.name)||(t.add(n.name),e.push(n));return e}function V3(r){let e=[],t=new Set;for(let n of r){let o=n.path.join(" ");t.has(o)||(t.add(o),e.push(n))}return e}var Uk=class{commands;namespaces;topLevelHelpGroups;commandsByPath=new Map;namespacesByPath=new Map;constructor(e){GO(e),this.commands=[...e],this.namespaces=Of(this.commands,Tf),this.topLevelHelpGroups=KO();for(let t of this.commands)this.commandsByPath.set(t.path.join(" "),t);for(let t of this.namespaces)this.namespacesByPath.set(t.path.join(" "),t)}findCommand(e){return this.commandsByPath.get(e.join(" "))}findNamespace(e){return this.namespacesByPath.get(e.join(" "))}},$k=new Uk($O),QO=$k.commands,YO=$k.topLevelHelpGroups,jbe=$k.namespaces;I();function ZO(r,e={}){return qk.renderCommandHelp(r,e)}function eL(r,e={}){return qk.renderTopLevelHelp(r,e)}function tL(r,e={}){return qk.renderNamespaceHelp(r,e)}var Ra=2,Lf=" ".repeat(Ra),q3="[<options>]",XO="value",B3=100,H3=24,G3=36,Nf=2,Vk=class{renderCommandHelp(e,t){let n=e.spec,o=this.mergeGlobalFlags(e),i=n.usageArgs??q3,a=jk(t.maxWidth),s=this.wrapUsageText(d("cli.out.help.usageLine",{command:n.name,usageArgs:i}),a);return this.appendCommandDescription(s,e,a),this.appendPositionals(s,n.positionals,a),this.appendFlags(s,o,e,a),this.appendExamples(s,n.examples),this.renderLines(s)}renderTopLevelHelp(e,t){let n=jk(t.maxWidth),o=this.renderTopLevelUsage(n);this.appendFlags(o,_a,void 0,n);for(let i of e)this.appendCommandGroup(o,i,n);return o.push("",...this.wrapStandaloneText(d("cli.out.help.commandHelpSee"),n)),this.renderLines(o)}renderNamespaceHelp(e,t){let n=e.path.join(" "),o=jk(t.maxWidth),i=[...this.wrapUsageText(`${d("cli.out.help.usageHeader")} succapp ${n} <command> [<args>]`,o),"",...this.wrapStandaloneText(d(e.description),o)];for(let a of e.sections){if(a.commands.length===0)continue;i.push("",d(a.title));let s=a.commands.map(c=>({left:c.name,description:d(c.summary)}));i.push(...this.renderRows(s,this.createRowLayout(s,o)))}return i.push("",...this.wrapStandaloneText(d("cli.out.help.commandHelpRead",n),o)),this.renderLines(i)}renderTopLevelUsage(e){let t=`${d("cli.out.help.usageHeader")} succapp `,n=[..._a.map(s=>{let c=s.takesValue?` <${s.valueHint??XO}>`:"";return`[--${s.name}${c}]`}),"<command>","[<args>]"];if(e===void 0)return[`${t}${n.join(" ")}`];let o=" ".repeat(rt(t)),i=[],a=t;for(let s of n){let l=`${a}${a===t?"":" "}${s}`;if(a!==t&&rt(l)>e){i.push(a),a=`${o}${s}`;continue}a=l}return i.push(a),i}appendCommandDescription(e,t,n){e.push("",...this.renderIndentedText(d(xf(t)),n))}appendPositionals(e,t,n){let o=t.filter(a=>a.description!==void 0);if(o.length===0)return;e.push("",d("cli.out.help.arguments"));let i=o.map(a=>({left:`<${a.name}>${a.repeatable?"...":""}`,description:d(a.description)}));e.push(...this.renderRows(i,this.createRowLayout(i,n)))}appendFlags(e,t,n,o){if(t.length===0)return;let i=new Map;for(let c of t){let l=c.helpGroup,u=i.get(l)??[];u.push({left:this.renderFlagLeft(c),description:d(_f(c,n))}),i.set(l,u)}let a=[...i.values()].flat(),s=this.createRowLayout(a,o);for(let c of Ew){let l=i.get(c);!l||l.length===0||(e.push("",d(BO(c))),e.push(...this.renderRows(l,s)))}}appendExamples(e,t){if(!(!t||t.length===0)){e.push("",d("cli.out.help.examples"));for(let n of t)e.push(...this.indentExplicitLines(n,Ra))}}appendCommandGroup(e,t,n){if(t.commands.length===0)return;e.push("",d(t.title));let o=t.commands.map(i=>({left:i.name,description:d(i.summary)}));e.push(...this.renderRows(o,this.createRowLayout(o,n)))}createRowLayout(e,t){if(t===void 0){let a=Math.max(0,...e.map(s=>rt(s.left)));return{maxWidth:t,inlineLimit:Number.POSITIVE_INFINITY,columnWidth:a,descriptionIndent:Ra+a+Nf}}let n=Math.max(0,Math.min(H3,t-Ra-Nf-G3)),o=e.map(a=>rt(a.left)).filter(a=>a<=n),i=Math.max(0,...o);return{maxWidth:t,inlineLimit:n,columnWidth:i,descriptionIndent:i>0?Ra+i+Nf:Ra*2}}renderRows(e,t){return e.flatMap(n=>this.renderRow(n,t))}renderRow(e,t){let n=t.columnWidth>0&&rt(e.left)<=t.inlineLimit,o=" ".repeat(t.descriptionIndent);if(!n){let s=[`${Lf}${e.left}`];return e.description!==""&&s.push(...this.wrapDescription(e.description,t.descriptionIndent,t.maxWidth).map(c=>`${o}${c}`)),s}if(e.description==="")return[`${Lf}${e.left}`];let i=this.wrapDescription(e.description,t.descriptionIndent,t.maxWidth),a=i[0]??"";return[`${Lf}${Mu(e.left,t.columnWidth)}${" ".repeat(Nf)}${a}`,...i.slice(1).map(s=>`${o}${s}`)]}splitRawLines(e){return e.replace(/\r\n?/g,`
|
|
119
|
+
`).split(`
|
|
120
|
+
`)}wrapDescription(e,t,n){return n===void 0?this.splitRawLines(e):Cc(e,Math.max(1,n-t))}renderIndentedText(e,t){return(t===void 0?this.splitRawLines(e):Cc(e,Math.max(1,t-Ra))).map(o=>`${Lf}${o}`)}wrapStandaloneText(e,t){return t===void 0?this.splitRawLines(e):Cc(e,t)}wrapUsageText(e,t){if(t===void 0)return this.splitRawLines(e);let n=" ".repeat(rt(d("cli.out.help.usageHeader"))+1);return Cc(e,Math.max(1,t-rt(n))).map((i,a)=>a===0?i:`${n}${i}`)}indentExplicitLines(e,t){let n=" ".repeat(t);return this.splitRawLines(e).map(o=>o===""?o:`${n}${o}`)}renderFlagLeft(e){let t=e.takesValue?` <${e.valueHint??XO}>`:"",n=`--${e.name}${t}`;return e.alias?`-${e.alias}, ${n}`:n}mergeGlobalFlags(e){let t=new Set(e.spec.flags.map(n=>n.name));return[...e.spec.flags,...Ur.filter(n=>!t.has(n.name)&&ln(e,n.name))]}renderLines(e){return`${e.join(`
|
|
107
121
|
`)}
|
|
108
|
-
`}},
|
|
109
|
-
`).map(n=>n.length===0?n:`${t}${n}`).join(`
|
|
110
|
-
`)}function jT(r,e){let t=WT(e);r.result({help:t},()=>t)}function VT(r,e){let t=NT(e);r.result({help:t},()=>t)}function BT(r,e){let t=UT(e);r.result({help:t},()=>t)}function qT(r){r.result({version:In},()=>`succapp ${In}`)}F();_();function HT(r){return new Ng(r).parse()}var Ng=class{constructor(e){this.args=e}parse(){let e=this.args.parsed,t=this.args.globalOptions;return this.checkCliInvocationUsage(t),{rawArgv:this.args.rawArgv,kind:this.args.kind,command:this.args.command,namespace:this.args.namespace,token:this.args.token,unknownCommand:this.args.unknownCommand,commandArgv:this.args.commandArgv,parsed:e,globalOptions:t}}validateGlobalOptions(e){let t=[],n=this.args.command;if(!n)return e.logLevel!==void 0&&si(e.logLevel)===void 0&&t.push(new R("err.cli.invalidChoice",$T(e.logLevel))),this.args.kind==="unknown"||this.validateGlobalOptionsWithoutCommand(e,t),t;if(e.lockTimeout!==void 0&&nn(n,"lock-timeout")&&ci(e.lockTimeout,Eo)===void 0){let o=Se("lock-timeout");t.push(new R("err.cli.invalidNonNegativeIntegerRange",{input:o,option:o,value:e.lockTimeout,max:Eo}))}return e.logLevel!==void 0&&si(e.logLevel)===void 0&&t.push(new R("err.cli.invalidChoice",$T(e.logLevel))),e.workspace!==void 0&&!nn(n,"workspace")&&t.push(new R("err.cli.unknownOption",{option:Se("workspace")})),e.server!==void 0&&!nn(n,"server")&&t.push(new R("err.cli.unknownOption",{option:Se("server")})),e.lockTimeout!==void 0&&!nn(n,"lock-timeout")&&t.push(new R("err.cli.unknownOption",{option:Se("lock-timeout")})),t}validateGlobalOptionsWithoutCommand(e,t){e.workspace!==void 0&&this.args.kind!=="top-help"&&t.push(new R("err.cli.unknownOption",{option:Se("workspace")})),e.server!==void 0&&t.push(new R("err.cli.unknownOption",{option:Se("server")})),e.lockTimeout!==void 0&&t.push(new R("err.cli.unknownOption",{option:Se("lock-timeout")}))}checkCliInvocationUsage(e){if(this.args.helpOrVersionRequested)return;if(this.args.kind==="unknown")throw bU(this.args);let t=[...this.args.issues,...this.validateGlobalOptions(e)];if(t.length>0)throw EU(t)}};function bU(r){let e=r.unknownCommand,t=e?.path.join(" ")||r.token||"";return new R("err.cli.unknownCommand",{commandName:t,path:e?.path,helpCommand:e?.hint,suggestedCommands:e?.suggestedCommands})}function EU(r){return r.length===1?r[0]:new R("err.cli.invalidInvocation",{count:r.length,issues:r.map(e=>({errorCode:e.errorCode,properties:e.properties}))})}function $T(r){let e=Se("log-level");return{input:e,option:e,value:r,allowedValues:wa}}var md=class{async run(e,t){let n=HT(e),o=await this.createWorkspaceForCommand(n,t);try{return await this.executeInvocation(n,t,o)}finally{o?.dispose()}}async executeInvocation(e,t,n){switch(e.kind){case"top-help":return jT(t.output,OT),0;case"command-help":return VT(t.output,zT(e)),0;case"namespace-help":return BT(t.output,TU(e)),0;case"version":return qT(t.output),await ra({trigger:"version",context:t,output:t.output}),0;case"unknown":ii("Unknown command invocation should be rejected before runner.");case"run":{let o=zT(e),i=o.createExecutor(),a={cwd:t.cwd,env:t.env,config:t.config,output:new Ug(t.output,o,n),task:t.task,eventBus:t.eventBus,workspace:n,parsed:e.parsed,command:o,abortSignal:t.abortSignal},s=await i.execute(a,i.toOptions(e.parsed));return await ra({trigger:"command",context:t,command:o,output:t.output}),s}}}async createWorkspaceForCommand(e,t){if(e.kind!=="run"||!e.command)return;let n=e.command.workspaceTarget;if(n==="none")return;let o=e.command.allowUninitializedWorkspaceTarget===!0,i=await $c({cwd:t.cwd,workspace:t.config.workspace,env:t.env,required:n!=="optional"||!!t.config.workspace&&!o});if(i)return ea({root:i,eventBus:t.eventBus,lockWait:t.config.lockTimeout})}},Ug=class{constructor(e,t,n){this.delegate=e;this.command=t;this.workspace=n}result(e,t){this.delegate.result(this.withCommandInfo(e),t)}resultStream(e,t,n){return this.delegate.resultStream(this.withCommandInfo(e),t,n)}content(e,t,n){this.delegate.content(this.withCommandInfo(e),t,n)}progress(e,t){this.delegate.progress(e,t)}detail(e,t){this.delegate.detail(this.withCommandInfo(e),t)}info(e){this.delegate.info(e)}warning(e){this.delegate.warning(e)}error(e){this.delegate.error(e)}withCommandInfo(e){let t={...e};return Object.hasOwn(t,"command")||(t.command=this.command.spec.name),t}};function zT(r){return H(r.command,`Missing command for CLI invocation kind: ${r.kind}`),r.command}function TU(r){return H(r.namespace,`Missing namespace for CLI invocation kind: ${r.kind}`),r.namespace}D();function GT(r){MU(r),gC()}function MU(r){let e=r.localizer.unresolvedLocale;!e||!r.args.parsed.has("locale")||r.formatter.warning(d("cli.host.localeFallback",e))}D();function KT(r){return{yellow:e=>Vs(e,33,r),green:e=>Vs(e,32,r),red:e=>Vs(e,31,r),dim:e=>Vs(e,2,r),bold:e=>Vs(e,1,r)}}function Vs(r,e,t){return t?`\x1B[${e}m${r}\x1B[0m`:r}var jg="\r\x1B[2K",fd=class{constructor(e,t,n){this.env=e;this.logFile=t;this.errorDisplayContext=n;this.colors=KT(e.color)}colors;progressActive=!1;lastProgressText="";result(e,t){this.finishProgressLine();let n=t?xU(t()):JSON.stringify(e,null,2);n&&this.env.writeOut(Bs(n))}async resultStream(e,t,n){let o=await IU(t);this.result({...e,...o},n?()=>n(o):void 0)}content(e,t,n){this.finishProgressLine(),this.env.writeOut(n?n():t)}progress(e,t){if(!this.env.isTty||!(this.env.isErrTty??this.env.isTty)||!t)return;let n=t();if(e.retained===!0){this.writeRetainedProgressLine(n);return}n?this.writeProgressLine(n):this.clearProgressLine()}detail(e,t){this.finishProgressLine();let n=t?.();n&&this.env.writeOut(Bs(n))}info(e){this.finishProgressLine(),this.env.writeErr(Bs(d("cli.out.human.info",e)))}warning(e){this.finishProgressLine(),this.env.writeErr(Bs(this.colors.yellow(d("cli.out.human.warning",e))))}error(e){this.finishProgressLine();let t=xc(e,this.errorDisplayContext),n=[this.colors.red(d("cli.out.human.error",t.message))];t.details&&t.details.length>0&&n.push(...t.details.map(o=>this.colors.dim(` - ${o}`))),t.hint&&n.push(this.colors.dim(d("cli.out.human.hint",t.hint))),t.internal&&this.logFile&&n.push(this.colors.dim(d("cli.out.human.seeLogs",this.logFile))),this.env.writeErr(`${n.join(`
|
|
122
|
+
`}},qk=new Vk;function jk(r){if(!(r===void 0||!Number.isFinite(r)||r<=0))return Math.min(B3,Math.floor(r))}I();var Hk=1;function rL(r,e,t){let n=eL(e,t);Gk(r,z3(e),n)}function nL(r,e,t){let n=ZO(e,t);Gk(r,J3(e),n)}function oL(r,e,t){let n=tL(e,t);Gk(r,K3(e),n)}function iL(r){r.result({version:cn},()=>`succapp ${cn}`)}function Gk(r,e,t){r.result({help:e},()=>t)}function z3(r){return{schemaVersion:Hk,cliVersion:cn,type:"root",path:[],name:"succapp",usage:["succapp",..._a.map(X3),"<command>","[<args>]"].join(" "),flags:_a.map(e=>Bk(e,"global")),children:r.flatMap(e=>e.commands.map(t=>{let n=[t.name];return{type:"namespace",path:n,name:t.name,summary:d(t.summary),group:d(e.title),helpArgs:aL(n)}}))}}function K3(r){let e=r.path.join(" ");return{schemaVersion:Hk,cliVersion:cn,type:"namespace",path:r.path,name:e,title:d(r.title),summary:d(r.summary),description:d(r.description),usage:`succapp ${e} <command> [<args>]`,children:r.sections.flatMap(t=>t.commands.map(n=>{let o=[...r.path,...n.name.split(" ")];return{type:"command",path:o,name:n.name,summary:d(n.summary),group:d(t.title),helpArgs:aL(o)}}))}}function J3(r){let e=r.spec,t=e.flags,n=new Set(t.map(a=>a.name)),o=Ur.filter(a=>ln(r,a.name)&&!n.has(a.name)),i=[...t.map(a=>Bk(a,"command",r)),...o.map(a=>Bk(a,"global",r))];return{schemaVersion:Hk,cliVersion:cn,type:"command",path:r.path,name:e.name,summary:d(Mf(r)),description:d(xf(r)),usage:`succapp ${e.name} ${e.usageArgs??"[<options>]"}`,usageArgs:e.usageArgs,execution:{workspace:r.workspaceTarget,server:r.serverTarget,lock:r.lockUsage??"none",sideEffects:r.sideEffects},positionals:e.positionals.map(Y3),flags:i,inputGroups:e.inputGroups,examples:e.examples}}function Bk(r,e,t){let n=e==="global"?Q3(r):r;return{name:n.name,alias:n.alias,takesValue:n.takesValue,valueHint:n.valueHint,repeatable:n.repeatable,description:d(_f(r,t)),param:n.param,scope:e,helpGroup:n.helpGroup}}function Q3(r){let e={...r};return delete e.acceptDomains,delete e.acceptWorkspaceTarget,delete e.acceptServerTarget,delete e.acceptLockUsages,delete e.showInTopLevelHelp,e}function Y3(r){return{name:r.name,role:r.role,repeatable:r.repeatable,description:r.description?d(r.description):void 0,param:r.param}}function X3(r){let e=r.takesValue?` <${r.valueHint??"value"}>`:"";return`[--${r.name}${e}]`}function aL(r){return["--json",...r,"--help"]}F();O();function cL(r){return new zk(r).parse()}var zk=class{constructor(e){this.args=e}parse(){let e=this.args.parsed,t=this.args.globalOptions;return this.checkCliInvocationUsage(t),{rawArgv:this.args.rawArgv,kind:this.args.kind,command:this.args.command,namespace:this.args.namespace,token:this.args.token,unknownCommand:this.args.unknownCommand,commandArgv:this.args.commandArgv,parsed:e,globalOptions:t}}validateGlobalOptions(e){let t=[],n=this.args.command;if(!n)return e.logLevel!==void 0&&xa(e.logLevel)===void 0&&t.push(new P("err.cli.invalidChoice",sL(e.logLevel))),this.args.kind==="unknown"||this.validateGlobalOptionsWithoutCommand(e,t),t;if(e.lockTimeout!==void 0&&ln(n,"lock-timeout")&&Ia(e.lockTimeout,_i)===void 0){let o=De("lock-timeout");t.push(new P("err.cli.invalidNonNegativeIntegerRange",{input:o,option:o,value:e.lockTimeout,min:0,max:_i}))}return e.logLevel!==void 0&&xa(e.logLevel)===void 0&&t.push(new P("err.cli.invalidChoice",sL(e.logLevel))),e.workspace!==void 0&&!ln(n,"workspace")&&t.push(new P("err.cli.unknownOption",{option:De("workspace")})),e.server!==void 0&&!ln(n,"server")&&t.push(new P("err.cli.unknownOption",{option:De("server")})),e.lockTimeout!==void 0&&!ln(n,"lock-timeout")&&t.push(new P("err.cli.unknownOption",{option:De("lock-timeout")})),t}validateGlobalOptionsWithoutCommand(e,t){e.workspace!==void 0&&this.args.kind!=="top-help"&&t.push(new P("err.cli.unknownOption",{option:De("workspace")})),e.server!==void 0&&t.push(new P("err.cli.unknownOption",{option:De("server")})),e.lockTimeout!==void 0&&t.push(new P("err.cli.unknownOption",{option:De("lock-timeout")}))}checkCliInvocationUsage(e){if(this.args.helpOrVersionRequested)return;if(this.args.kind==="unknown")throw Z3(this.args);let t=[...this.args.issues,...this.validateGlobalOptions(e)];if(t.length>0)throw e5(t)}};function Z3(r){let e=r.unknownCommand,t=e?.path.join(" ")||r.token||"";return new P("err.cli.unknownCommand",{commandName:t,path:e?.path,helpCommand:e?.hint,suggestedCommands:e?.suggestedCommands})}function e5(r){return r.length===1?r[0]:new P("err.cli.invalidInvocation",{count:r.length,issues:r.map(e=>({errorCode:e.errorCode,properties:e.properties}))})}function sL(r){let e=De("log-level");return{input:e,option:e,value:r,allowedValues:gc}}var t5=80,Wf=class{async run(e,t){let n=cL(e),o=await this.createWorkspaceForCommand(n,t);try{return await this.executeInvocation(n,t,o)}finally{o?.dispose()}}async executeInvocation(e,t,n){let o=t.config.outputMode==="json"?{}:{maxWidth:t.terminalColumns??t5};switch(e.kind){case"top-help":return rL(t.output,YO,o),0;case"command-help":return nL(t.output,lL(e),o),0;case"namespace-help":return oL(t.output,r5(e),o),0;case"version":return iL(t.output),await Es({trigger:"version",context:t,output:t.output}),0;case"unknown":Ta("Unknown command invocation should be rejected before runner.");case"run":{let i=lL(e),a=i.createExecutor(),s={cwd:t.cwd,env:t.env,config:t.config,output:new Jk(t.output,i,n),task:t.task,eventBus:t.eventBus,workspace:n,parsed:e.parsed,command:i,abortSignal:t.abortSignal},c=await a.execute(s,a.toOptions(e.parsed));return await Es({trigger:"command",context:t,command:i,output:t.output}),c}}}async createWorkspaceForCommand(e,t){if(e.kind!=="run"||!e.command)return;let n=e.command.workspaceTarget;if(n==="none")return;let o=e.command.allowUninitializedWorkspaceTarget===!0,i=await vd({cwd:t.cwd,workspace:t.config.workspace,env:t.env,required:n!=="optional"||!!t.config.workspace&&!o});if(i)return Rs({root:i,eventBus:t.eventBus,lockWait:t.config.lockTimeout})}},Jk=class{constructor(e,t,n){this.delegate=e;this.command=t;this.workspace=n}result(e,t){this.delegate.result(this.withCommandInfo(e),t)}resultStream(e,t,n){return this.delegate.resultStream(this.withCommandInfo(e),t,n)}content(e,t,n){this.delegate.content(this.withCommandInfo(e),t,n)}progress(e,t){this.delegate.progress(e,t)}detail(e,t){this.delegate.detail(this.withCommandInfo(e),t)}info(e){this.delegate.info(e)}warning(e){this.delegate.warning(e)}error(e){this.delegate.error(e)}withCommandInfo(e){let t={...e};return Object.hasOwn(t,"command")||(t.command=this.command.spec.name),t}};function lL(r){return K(r.command,`Missing command for CLI invocation kind: ${r.kind}`),r.command}function r5(r){return K(r.namespace,`Missing namespace for CLI invocation kind: ${r.kind}`),r.namespace}I();function uL(r){n5(r),DP()}function n5(r){let e=r.localizer.unresolvedLocale;!e||!r.args.parsed.has("locale")||r.formatter.warning(d("cli.host.localeFallback",e))}I();function dL(r){return{yellow:e=>yu(e,33,r),green:e=>yu(e,32,r),red:e=>yu(e,31,r),dim:e=>yu(e,2,r),bold:e=>yu(e,1,r)}}function yu(r,e,t){return t?`\x1B[${e}m${r}\x1B[0m`:r}var Qk="\r\x1B[2K",Uf=class{constructor(e,t,n){this.env=e;this.logFile=t;this.errorDisplayContext=n;this.colors=dL(e.color)}colors;progressActive=!1;lastProgressText="";result(e,t){this.finishProgressLine();let n=t?o5(t()):JSON.stringify(e,null,2);n&&this.env.writeOut(Cu(n))}async resultStream(e,t,n){let o=await a5(t);this.result({...e,...o},n?()=>n(o):void 0)}content(e,t,n){this.finishProgressLine(),this.env.writeOut(n?n():t)}progress(e,t){if(!this.env.isTty||!(this.env.isErrTty??this.env.isTty)||!t)return;let n=t();if(e.retained===!0){this.writeRetainedProgressLine(n);return}n?this.writeProgressLine(n):this.clearProgressLine()}detail(e,t){this.finishProgressLine();let n=t?.();n&&this.env.writeOut(Cu(n))}info(e){this.finishProgressLine(),this.env.writeErr(Cu(d("cli.out.human.info",e)))}warning(e){this.finishProgressLine(),this.env.writeErr(Cu(this.colors.yellow(d("cli.out.human.warning",e))))}error(e){this.finishProgressLine();let t=od(e,this.errorDisplayContext),n=[this.colors.red(d("cli.out.human.error",t.message))];t.details&&t.details.length>0&&n.push(...t.details.map(o=>this.colors.dim(` - ${o}`))),t.hint&&n.push(this.colors.dim(d("cli.out.human.hint",t.hint))),t.internal&&this.logFile&&n.push(this.colors.dim(d("cli.out.human.seeLogs",this.logFile))),this.env.writeErr(`${n.join(`
|
|
111
123
|
`)}
|
|
112
|
-
`)}writeProgressLine(e){e!==this.lastProgressText&&(this.env.writeErr(`${
|
|
113
|
-
`),this.progressActive=!1,this.lastProgressText="")}clearProgressLine(){this.progressActive&&(this.env.writeErr(
|
|
124
|
+
`)}writeProgressLine(e){e!==this.lastProgressText&&(this.env.writeErr(`${Qk}${this.colors.dim(e)}`),this.progressActive=!0,this.lastProgressText=e)}writeRetainedProgressLine(e){if(e){this.env.writeErr(`${Qk}${Cu(this.colors.dim(e))}`),this.progressActive=!1,this.lastProgressText="";return}this.finishProgressLine()}finishProgressLine(){this.progressActive&&(this.env.writeErr(`
|
|
125
|
+
`),this.progressActive=!1,this.lastProgressText="")}clearProgressLine(){this.progressActive&&(this.env.writeErr(Qk),this.progressActive=!1,this.lastProgressText="")}};function o5(r){return typeof r=="string"?r:r.rows.length===0?i5(r.empty??{reason:"emptyCollection",message:d("cli.out.common.noResults")}):Re(r)}function i5(r){let e=[r.message];return r.hint&&e.push(d("cli.out.human.hint",r.hint)),e.join(`
|
|
126
|
+
`)}function Cu(r){return r.endsWith(`
|
|
114
127
|
`)?r:`${r}
|
|
115
|
-
`}async function
|
|
116
|
-
`)}content(e,t,n){this.writeJson("result",{...e,encoding:"base64",content:t.toString("base64")})}progress(e,t){}detail(e,t){this.writeErrJson("log",
|
|
117
|
-
`)}writeErrJson(e,t){
|
|
118
|
-
`)}async writeMergedObjectBody(e){let t=!1;for await(let n of e){let o=FU(n);if(t){await this.writeOut(o);continue}let i=DU(o);i<0||(await this.writeOut(","),i+1<o.length&&await this.writeOut(o.subarray(i+1)),t=!0)}H(t,"Streaming JSON result body is empty")}async writeOut(e){await this.env.writeOut(e)}};function Vg(r){H(!Object.hasOwn(r,"kind"),"Output data cannot contain reserved field: kind")}function FU(r){return Buffer.isBuffer(r)?r:typeof r=="string"?Buffer.from(r,"utf-8"):Buffer.from(r)}function DU(r){for(let e=0;e<r.length;e++){let t=r[e];if(t===123)return e;AU(t)||H(!1,"Streaming JSON result body must be an object")}return-1}function AU(r){return r===32||r===10||r===13||r===9}function hd(r){return yd(r,new WeakSet)}function yd(r,e){if(r==null||typeof r=="string"||typeof r=="number"||typeof r=="boolean")return r;if(typeof r=="bigint")return r.toString();if(typeof r=="symbol")return String(r);if(typeof r=="function")return`[Function ${r.name||"anonymous"}]`;if(r instanceof Error)return OU(r,e);if(Array.isArray(r))return e.has(r)?"[Circular]":(e.add(r),r.map(t=>yd(t,e)));if(typeof r=="object"){if(e.has(r))return"[Circular]";e.add(r);let t={};for(let[n,o]of Object.entries(r))t[n]=yd(o,e);return t}return String(r)}function OU(r,e){if(e.has(r))return"[Circular]";e.add(r);let t={name:r.name,message:r.message};r.stack&&(t.stack=r.stack);let n="cause"in r?r.cause:void 0;return n!==void 0&&(t.cause=yd(n,e)),t}var Cd=class{constructor(e){this.delegate=e}result(e,t){this.delegate.result(e,t)}resultStream(e,t,n){return this.delegate.resultStream(e,t,n)}content(e,t,n){this.delegate.content(e,t,n)}progress(e,t){}detail(e,t){}info(e){}warning(e){this.delegate.warning(e)}error(e){this.delegate.error(e)}};var JT={cat:["show"],delete:["remove"],desc:["describe"],ls:["list"],read:["show"],rm:["remove"],run:["exec"],view:["open","show"]},Sd=class{constructor(e){this.commands=e}resolve(e){let t=KU(e.argv),n=this.commands.filter(i=>!e.namespacePath||zU(i.path,e.namespacePath)).map(i=>({command:i,score:LU(i,e.inputPath,t)})).filter(i=>i.score>=18).sort(_U)[0];if(!n)return;let o=NU(n.command,e.inputPath,t);return o.length>0?o:void 0}};function _U(r,e){return r.score!==e.score?e.score-r.score:r.command.path.length-e.command.path.length}function LU(r,e,t){let n=r.path,o=qU(n,e),i=$U(n,e),a=JU(n,e),s=HU(r.spec,t),c=e.some(l=>QT(l,n[n.length-1]));return 10+o*8+i*3+s*4+(c?8:0)-a*3}function NU(r,e,t){let n=WU(r,e),o=VU(r.spec,t),a=[BU(r.path,n,o),...r.spec.examples??[]];return XT(a).slice(0,2)}function WU(r,e){let t=r.path[r.path.length-1],n=e.findIndex(c=>ho(c,t));if(r.spec.positionals.length===0)return[];let o=jU(r.spec),i=n>=0?n+1:UU(r.path,e),s=e.slice(i).filter(c=>!r.path.some(l=>ho(l,c)));return o===void 0?s:s.slice(0,o)}function UU(r,e){let t=0;for(;t<r.length&&t<e.length&&ho(r[t],e[t]);)t++;return t<e.length?t+1:e.length}function jU(r){if(!r.positionals.some(t=>t.repeatable))return r.positionals.length}function VU(r,e){let t=new Set(r.flags.map(i=>i.name)),n=new Set(r.flags.flatMap(i=>i.alias?[i.alias]:[])),o=e.filter(i=>i.name==="help"||i.name&&t.has(i.name)?!0:!!i.alias&&n.has(i.alias));return XT(o.map(i=>i.display))}function BU(r,e,t){return["succapp",...r,...e,...t].join(" ")}function qU(r,e){return r.filter(t=>e.some(n=>ho(t,n))).length}function $U(r,e){let t=0;for(let n of r)e.some(o=>!ho(n,o)&&QT(n,o))&&t++;return t}function HU(r,e){let t=new Set(r.flags.map(o=>o.name)),n=new Set(r.flags.flatMap(o=>o.alias?[o.alias]:[]));return e.filter(o=>o.name&&t.has(o.name)?!0:!!o.alias&&n.has(o.alias)).length}function zU(r,e){return e.every((t,n)=>ho(r[n],t))}function ho(r,e){return r!==void 0&&e!==void 0&&r.toLowerCase()===e.toLowerCase()}function QT(r,e){if(ho(r,e))return!0;if(r===void 0||e===void 0)return!1;let t=r.toLowerCase(),n=e.toLowerCase();return GU(t,n)||t.length>=2&&n.length>=2&&(t.startsWith(n)||n.startsWith(t))?!0:QU(t,n)<=2}function GU(r,e){return(JT[r]??[]).includes(e)?!0:(JT[e]??[]).includes(r)}function KU(r){let e=[];for(let t of r){if(t==="--")break;if(t.startsWith("--")&&t.length>2){let n=t.indexOf("="),o=n>=0?t.slice(2,n):t.slice(2);e.push({name:o,display:n>=0?t.slice(0,n):t});continue}if(t.startsWith("-")&&t.length>1)for(let n of t.slice(1))e.push({alias:n,display:`-${n}`})}return e}function JU(r,e){return YT(r,e,(t,n)=>ho(t,n)?0:1)}function QU(r,e){return YT([...r.toLowerCase()],[...e.toLowerCase()],(t,n)=>t===n?0:1)}function YT(r,e,t){let n=Array.from({length:e.length+1},(i,a)=>a),o=Array.from({length:e.length+1},()=>0);for(let i=1;i<=r.length;i++){o[0]=i;for(let a=1;a<=e.length;a++)o[a]=Math.min(n[a]+1,o[a-1]+1,n[a-1]+t(r[i-1],e[a-1]));for(let a=0;a<o.length;a++)n[a]=o[a]}return n[e.length]}function XT(r){let e=[],t=new Set;for(let n of r)t.has(n)||(t.add(n),e.push(n));return e}Ie();var vd=class{constructor(e,t){this.argv=e;this.commands=[...t].sort((n,o)=>o.path.length-n.path.length),this.namespaces=[...ud(t,sd)].sort((n,o)=>o.path.length-n.path.length);for(let n of Nr)this.globalFlagsByName.set(n.name,n),n.alias&&this.globalFlagsByAlias.set(n.alias,n)}commands;namespaces;globalFlagsByName=new Map;globalFlagsByAlias=new Map;resolve(){let e=this.locateCommandPath(this.argv);if(e.helpToken)return this.resolveHelpCommand(e.helpToken);if(e.command)return{kind:"run",command:e.command,commandArgv:Mn(this.argv,e.commandIndexes)};if(e.namespace&&this.shouldShowNamespaceHelp(e))return{kind:"namespace-help",namespace:e.namespace,commandArgv:Mn(this.argv,e.namespaceIndexes)};if(e.namespace){let t=this.createNamespaceUnknownCommand(e);return{kind:"unknown",token:t.path[0],unknownCommand:t,commandArgv:Mn(this.argv,e.tokens.map(n=>n.index))}}if(e.firstToken){let t=this.createTopLevelUnknownCommand(e);return{kind:"unknown",token:e.firstToken.value,unknownCommand:t,commandArgv:Mn(this.argv,[e.firstToken.index])}}return{kind:"top-help",commandArgv:this.argv}}resolveHelpCommand(e){let t=Mn(this.argv,[e.index]),n=this.locateCommandPath(t);if(!n.firstToken)return{kind:"top-help",commandArgv:t,fromHelpToken:!0};if(n.command)return{kind:"command-help",command:n.command,commandArgv:Mn(t,n.commandIndexes),fromHelpToken:!0};if(n.namespace&&this.shouldShowNamespaceHelp(n))return{kind:"namespace-help",namespace:n.namespace,commandArgv:Mn(t,n.namespaceIndexes),fromHelpToken:!0};if(n.namespace){let i=this.createNamespaceUnknownCommand(n);return{kind:"unknown",token:i.path[0],unknownCommand:i,commandArgv:Mn(t,n.tokens.map(a=>a.index))}}let o=this.createTopLevelUnknownCommand(n);return{kind:"unknown",token:n.firstToken.value,unknownCommand:o,commandArgv:Mn(t,[n.firstToken.index])}}shouldShowNamespaceHelp(e){return!e.stoppedAtDoubleDash&&e.tokens.length===e.namespaceIndexes.length}createNamespaceUnknownCommand(e){let t=YU(e),n=e.tokens.length>0?e.tokens.map(a=>a.value):t.path,o=t.path.join(" "),i=this.createUnknownCommandSuggestions(e,t);return{path:n,hint:`succapp ${o} --help`,...i?{suggestedCommands:i}:{}}}createTopLevelUnknownCommand(e){let t=e.firstToken?.value??"",n=this.createUnknownCommandSuggestions(e);return{path:[t],hint:"succapp --help",...n?{suggestedCommands:n}:{}}}createUnknownCommandSuggestions(e,t){return new Sd(this.commands).resolve({argv:this.argv,inputPath:e.tokens.map(n=>n.value),namespacePath:t?.path})}locateCommandPath(e){let t=this.collectPathTokens(e),n=t.tokens,o=n[0];if(!o)return{commandIndexes:[],namespaceIndexes:[],tokens:n,stoppedAtDoubleDash:t.stoppedAtDoubleDash};if(o.value==="help")return{firstToken:o,helpToken:o,commandIndexes:[],namespaceIndexes:[],tokens:n,stoppedAtDoubleDash:t.stoppedAtDoubleDash};let i=this.findCommandByPath(n),a=this.findNamespaceByPath(n);return{command:i,commandIndexes:i?n.slice(0,i.path.length).map(s=>s.index):[],namespace:a,namespaceIndexes:a?n.slice(0,a.path.length).map(s=>s.index):[],tokens:n,firstToken:o,stoppedAtDoubleDash:t.stoppedAtDoubleDash}}findCommandByPath(e){return this.commands.find(t=>t.path.every((n,o)=>e[o]?.value===n))}findNamespaceByPath(e){return this.namespaces.find(t=>t.path.every((n,o)=>e[o]?.value===n))}collectPathTokens(e){let t=[],n=!1;for(let o=0;o<e.length;o++){let i=e[o];if(i==="--"){n=!0;break}if(!eM(i)){t.push({value:i,index:o});continue}let a=this.consumeKnownGlobalToken(e,o);a!==void 0&&(o=a)}return{tokens:t,stoppedAtDoubleDash:n}}consumeKnownGlobalToken(e,t){let n=e[t];return n.startsWith("--")?this.consumeKnownLongGlobalToken(e,n,t):this.consumeKnownShortGlobalToken(e,n,t)}consumeKnownLongGlobalToken(e,t,n){let o=t.indexOf("="),i=o>=0?t.slice(2,o):t.slice(2),a=this.globalFlagsByName.get(i);if(a)return a.takesValue&&o<0&&ZT(e[n+1])?n+1:n}consumeKnownShortGlobalToken(e,t,n){let o=t.slice(1);for(let i=0;i<o.length;i++){let a=this.globalFlagsByAlias.get(o[i]);if(!a)return;if(a.takesValue)return i<o.length-1?n:ZT(e[n+1])?n+1:n}return n}};function Mn(r,e){if(e.length===0)return r;let t=new Set(e);return r.filter((n,o)=>!t.has(o))}function YU(r){return H(r.namespace,"Missing namespace for located command path."),r.namespace}function ZT(r){return r!==void 0&&r!=="--"&&!eM(r)}function eM(r){return r.startsWith("-")&&r!=="-"}D();Ie();F();_();function nM(r,e=AT){return new Bg(r,e).read()}var XU={name:"succapp",flags:Nr,positionals:[],summary:"cli.cmd.root.summary"},ZU={name:"succapp",flags:Nr,positionals:[{name:"arg",repeatable:!0}],summary:"cli.cmd.root.summary"},Bg=class{constructor(e,t){this.argv=e;this.commands=t}commands;read(){let e=new vd(this.argv,this.commands).resolve(),t=rj(ej(e),e.commandArgv),n=py(t.parsed),o=this.resolveDispatch(e,n);return{rawArgv:this.argv,kind:o.kind,command:e.command,namespace:e.namespace,token:e.token,unknownCommand:e.unknownCommand,commandArgv:e.commandArgv,parsed:t.parsed,globalOptions:n,issues:t.issues,helpOrVersionRequested:o.helpOrVersionRequested}}resolveDispatch(e,t){return e.fromHelpToken?{kind:e.kind,helpOrVersionRequested:!0}:e.kind==="namespace-help"?t.version&&!t.help?{kind:"version",helpOrVersionRequested:!0}:{kind:e.kind,helpOrVersionRequested:t.help}:t.help&&e.command?{kind:"command-help",helpOrVersionRequested:!0}:t.help&&!e.token?{kind:"top-help",helpOrVersionRequested:!0}:t.version&&(e.command||!e.token)?{kind:"version",helpOrVersionRequested:!0}:{kind:e.kind,helpOrVersionRequested:!1}}};function ej(r){return(r.kind==="run"||r.kind==="command-help")&&r.command?tj(r.command.spec):r.kind==="unknown"?ZU:XU}function tj(r){let e=new Set(r.flags.map(t=>t.name));return{...r,flags:[...r.flags,...Nr.filter(t=>!e.has(t.name))]}}function rj(r,e){return new qg(r).parse(e)}var qg=class{constructor(e){this.spec=e;for(let t of e.flags)this.addFlag(t)}longFlags=new Map;aliasFlags=new Map;issues=[];parse(e){let t=new $g(this.spec);for(let n=0;n<e.length;n++){let o=e[n];if(o==="--"){t.pushPositionals(e.slice(n+1));break}if(o.startsWith("--")&&o.length>2){n=this.parseLongFlag(o,e,n,t);continue}if(o.startsWith("-")&&o.length>1){n=this.parseShortFlags(o,e,n,t);continue}t.pushPositional(o)}return this.validatePositionals(t),this.issues.push(...ij(t)),{parsed:t,issues:this.issues.slice()}}addFlag(e){H(!this.longFlags.has(e.name),`duplicate flag name: ${e.name}`),this.longFlags.set(e.name,e),e.alias&&(H(e.alias.length===1,`flag alias must be a single character: ${e.name}`),H(!this.aliasFlags.has(e.alias),`duplicate flag alias: ${e.alias}`),this.aliasFlags.set(e.alias,e))}parseLongFlag(e,t,n,o){let i=e.indexOf("="),a=i>=0?e.slice(2,i):e.slice(2),s=this.longFlags.get(a);if(!s)return this.pushIssue("err.cli.unknownOption",{option:`--${a}`}),n;if(s.takesValue){if(o.markFlag(s),i>=0)return o.addFlagValue(s,e.slice(i+1)),n;let c=t[n+1];return c===void 0||c==="--"||tM(c)?(this.pushIssue("err.cli.missingOptionValue",{option:`--${s.name}`}),n):(o.addFlagValue(s,c),n+1)}return i>=0?(this.pushIssue("err.cli.unexpectedOptionValue",{option:`--${s.name}`}),n):(o.addBooleanFlag(s),n)}parseShortFlags(e,t,n,o){let i=e.slice(1);for(let a=0;a<i.length;a++){let s=i[a],c=this.aliasFlags.get(s);if(!c){this.pushIssue("err.cli.unknownOption",{option:`-${s}`});continue}if(!c.takesValue){o.addBooleanFlag(c);continue}o.markFlag(c);let l=i.slice(a+1);if(l){let u=l.startsWith("=")?l.slice(1):l;return o.addFlagValue(c,u),n}let p=t[n+1];return p===void 0||p==="--"||tM(p)?(this.pushIssue("err.cli.missingOptionValue",{option:`-${s}`}),n):(o.addFlagValue(c,p),n+1)}return n}validatePositionals(e){let t=e.positional.length,n=this.spec.positionals.filter(qs).length,i=this.spec.positionals.some(a=>a.repeatable===!0)?void 0:this.spec.positionals.length;if(t<n){let a=this.spec.positionals.find((s,c)=>qs(s)&&c>=t);if(a){let s=this.spec.usageArgs?` ${this.spec.usageArgs}`:"";this.issues.push(new R("err.cli.missingArgument",{argument:_r("<{name}>{repeatable}",{name:a.name,repeatable:a.repeatable===!0?"...":""}),usage:_r("succapp {name}{usageArgs}",{name:this.spec.name,usageArgs:s})}))}else this.pushIssue("err.cli.missingArgument",{command:this.spec.name,min:n})}i!==void 0&&t>i&&this.pushIssue("err.cli.tooManyArguments",{command:this.spec.name,max:i})}pushIssue(e,t){this.issues.push(new R(e,t))}};function qs(r){return r.param?.required===!0}var $g=class{constructor(e){this.spec=e}positionalValues=[];flags=new Map;get positional(){return this.positionalValues.slice()}has(e){let t=iM(this.spec,e);return t?t.kind==="flag"?this.flags.has(t.flag.name):ni(this,t).length>0:!1}value(e){return oM(this,e)}values(e){return nj(this,e)}integer(e){return oj(this,e)}resolveInput(e){return aj(this,e)}rawValue(e){let t=this.flags.get(e);return t&&t.length>0?t[t.length-1]:void 0}rawValues(e){return(this.flags.get(e)??[]).slice()}pushPositional(e){this.positionalValues.push(e)}pushPositionals(e){this.positionalValues.push(...e)}addBooleanFlag(e){this.ensureFlagPresent(e)}markFlag(e){this.ensureFlagPresent(e)}ensureFlagPresent(e){this.flags.has(e.name)||this.flags.set(e.name,[])}addFlagValue(e,t){if(!e.repeatable){this.flags.set(e.name,[t]);return}let n=this.flags.get(e.name)??[];n.push(t),this.flags.set(e.name,n)}};function tM(r){return r.startsWith("-")&&r!=="-"}function oM(r,e){let t=wd(r.spec,e),o=ni(r,t).at(-1);if(o!==void 0)return kd(r.spec,t,o);let i=Pd(t.param);if(i!==void 0)return kd(r.spec,t,i);zg(t)&&!Rd(r,t)&&lM(r.spec,t)}function nj(r,e){let t=wd(r.spec,e),n=ni(r,t);if(n.length===0){let o=Pd(t.param);return o!==void 0?[kd(r.spec,t,o)]:(zg(t)&&!Rd(r,t)&&lM(r.spec,t),[])}return n.map(o=>kd(r.spec,t,o))}function oj(r,e){let t=wd(r.spec,e),n=t.param;if(!n||n.type!=="integer")throw new Error(`CLI parameter is not declared as integer: ${ya(t)}`);let o=oM(r,e);return o===void 0?void 0:Kg(r.spec,t,n,o)}function ij(r){let e=[];for(let t of r.spec.flags){if(!t.param)continue;let n={kind:"flag",ref:`--${t.name}`,flag:t,param:t.param},o;try{o=r.values(t.name)}catch(i){if(i instanceof R){e.push(i);continue}throw i}t.param.required===!0&&!Rd(r,n)&&!Gg(r,n)&&e.push(new R("err.cli.missingInput",{inputId:t.param.inputId??"value",sources:Jg(n)}));for(let i of o)rM(n,i,e)}r.spec.positionals.forEach((t,n)=>{if(!t.param)return;let o={kind:"positional",ref:`<${t.name}>`,positional:t,index:n,param:t.param};for(let i of ni(r,o))rM(o,i,e)});for(let t of r.spec.inputGroups??[]){let n=aM(r,t);n.issue&&e.push(n.issue)}return e}function wd(r,e){let t=iM(r,e);if(!t)throw new Error(`Unknown CLI parameter: ${e}`);return t}function iM(r,e){if(e.startsWith("--")){let i=r.flags.find(a=>a.name===e.slice(2));return i?{kind:"flag",ref:`--${i.name}`,flag:i,param:i.param}:null}let t;if(e.startsWith("<")&&e.endsWith(">"))t=e.slice(1,-1);else{let i=r.flags.find(a=>a.name===e);if(i)return{kind:"flag",ref:`--${i.name}`,flag:i,param:i.param};t=e}let n=r.positionals.findIndex(i=>i.name===t);if(n<0)return null;let o=r.positionals[n];return{kind:"positional",ref:`<${o.name}>`,positional:o,index:n,param:o.param}}function aj(r,e){let t=r.spec.inputGroups?.find(o=>o.name===e);if(t)return sj(r,t);let n=wd(r.spec,e);return cj(r,n)}function sj(r,e){let t=aM(r,e);if(t.issue)throw t.issue;if(!t.input)throw new R("err.cli.missingInput",{inputId:e.inputId,sources:cM(r.spec,e)});return t.input}function cj(r,e){let t=e.param,n=t?.inputId??"value",o=Jg(e);if(!Gg(r,e))throw new R("err.cli.missingInput",{inputId:n,sources:o});if(t?.source==="stdin")return Hg(e,"",n,o);let i=ni(r,e).at(-1)??Pd(t)??"";return Hg(e,i,n,o)}function aM(r,e){let t=cM(r.spec,e),n=e.members.map(s=>{let c=uM(r.spec,s);return{resolved:c,present:Gg(r,c),missingExplicitValue:Rd(r,c)}}),o=n.filter(s=>s.present);if(o.length===0)return e.defaultSource==="stdin"?{input:sM(e.members[0],e.inputId,t),issue:null}:e.mode==="atMostOne"||n.some(s=>s.missingExplicitValue)?{input:null,issue:null}:{input:null,issue:new R("err.cli.missingInput",{inputId:e.inputId,sources:t})};if((e.mode==="exactlyOne"||e.mode==="atMostOne")&&o.length>1)return{input:null,issue:new R("err.cli.conflictingInputs",{inputs:o.map(s=>ya(s.resolved))})};let i=o[0],a=ni(r,i.resolved).at(-1)??Pd(i.resolved.param)??"";return{input:Hg(i.resolved,a,e.inputId,t),issue:null}}function Hg(r,e,t,n){let o=r.param?.source,i=r.ref;return o==="stdin"||o==="file-or-stdin"&&e==="-"?sM(i,t,n):o==="file"||o==="file-or-stdin"?{kind:"file",ref:i,filePath:e,label:e,inputId:t,sources:n}:{kind:"value",ref:i,value:e,label:i,inputId:t,sources:n}}function sM(r,e,t){return{kind:"stdin",ref:r,label:"stdin",inputId:e,sources:t}}function cM(r,e){if(e.sources)return e.defaultSource==="stdin"?[...e.sources,"stdin"]:e.sources;let t=e.members.map(n=>ya(uM(r,n)));return e.defaultSource==="stdin"?[...t,"stdin"]:t}function ni(r,e){if(e.kind==="flag"){let t=e.param?.list,n=r.rawValues(e.flag.name);if(!t)return n.slice();if(t.separator.length===0)throw new Error(`CLI list separator must not be empty: --${e.flag.name}`);let o=[],i=new Set;for(let a of n)for(let s of a.split(t.separator)){let c=s.trim();if(!c){t.empty==="error"&&pj(e.flag,c);continue}if(t.dedupe===!0){if(i.has(c))continue;i.add(c)}o.push(c)}return o}return lj(r.spec.positionals,r.positional)[e.index]??[]}function lj(r,e){let t=r.map(()=>[]),n=0;for(let o=0;o<r.length;o++){let i=r[o],a=e.length-n;if(a<=0)break;let s=r.slice(o+1).filter(qs).length;if(i.repeatable===!0){let c=Math.max(0,a-s);t[o].push(...e.slice(n,n+c)),n+=c;continue}(qs(i)||a>s)&&(t[o].push(e[n]),n++)}return t}function kd(r,e,t){let n=e.param;return n&&(n.type==="integer"&&Kg(r,e,n,t),pM(e,t),dM(e,t)),t}function zg(r){return r.kind==="positional"?qs(r.positional):r.param?.required===!0}function lM(r,e){if(e.kind==="positional"&&zg(e)){let t=r.usageArgs?` ${r.usageArgs}`:"";throw new R("err.cli.missingArgument",{argument:_r("<{name}>{repeatable}",{name:e.positional.name,repeatable:e.positional.repeatable===!0?"...":""}),usage:_r("succapp {name}{usageArgs}",{name:r.name,usageArgs:t})})}throw new R("err.cli.missingInput",{inputId:e.param?.inputId??"value",sources:Jg(e)})}function pj(r,e){let t=r.param?.choices,n=Se(r.name);throw t?new R("err.cli.invalidChoice",{input:n,option:n,flag:r.name,value:e,allowedValues:t}):new R("err.cli.missingOptionValue",{option:n})}function rM(r,e,t){try{r.param.type==="integer"&&Kg(void 0,r,r.param,e),pM(r,e),dM(r,e)}catch(n){if(n instanceof R){t.push(n);return}throw n}}function pM(r,e){let t=r.param?.choices;if(!(!t||t.includes(e)))throw new R("err.cli.invalidChoice",{input:mM(r),...r.kind==="flag"?{option:Se(r.flag.name),flag:r.flag.name}:{},value:e,allowedValues:t})}function dM(r,e){let t=r.param;if(!(t?.nonEmpty!==!0||Pe(e)))throw new R("err.cli.missingInput",{inputId:t.inputId??"value",sources:[ya(r)]})}function Pd(r){return r?.defaultValue===void 0?void 0:String(r.defaultValue)}function Gg(r,e){if(e.kind==="positional")return ni(r,e).length>0;let t=e.param;return t?.source==="stdin"||!e.flag.takesValue?r.has(e.flag.name):r.rawValue(e.flag.name)!==void 0||t?.defaultValue!==void 0}function Rd(r,e){return e.kind==="flag"&&e.flag.takesValue&&r.has(e.flag.name)&&r.rawValue(e.flag.name)===void 0}function Kg(r,e,t,n){let o=dj(n);if(o===void 0||typeof n=="string"&&(t.min??Number.NEGATIVE_INFINITY)>=0&&n.trim().startsWith("-")||t.min!==void 0&&o<t.min||t.max!==void 0&&o>t.max){let i=mM(e);throw new R(uj(t),{inputId:t.inputId??"value",input:i,...e.kind==="flag"?{option:i,flag:e.flag.name}:{},...e.kind==="positional"&&r?{argument:ya(e)}:{},value:String(n),...t.max!==void 0?{...t.min!==void 0?{min:t.min}:{},max:t.max}:{}})}return o}function dj(r){if(typeof r=="number")return Number.isSafeInteger(r)?r:void 0;let e=r.trim();if(!/^-?\d+$/.test(e))return;let t=Number(e);return Number.isSafeInteger(t)?t:void 0}function uj(r){return r.max!==void 0?"err.cli.invalidNonNegativeIntegerRange":r.min===0?"err.cli.invalidNonNegativeInteger":"err.cli.invalidPositiveInteger"}function uM(r,e){if(e.startsWith("--")){let i=mj(r,e.slice(2));if(!i.param)throw new Error(`Missing CLI parameter contract: ${e}`);return{kind:"flag",ref:e,flag:i,param:i.param}}let t=e.slice(1,-1),n=r.positionals.findIndex(i=>i.name===t);if(n<0)throw new Error(`Unknown CLI positional parameter: ${e}`);let o=r.positionals[n];if(!o.param)throw new Error(`Missing CLI parameter contract: ${e}`);return{kind:"positional",ref:e,positional:o,index:n,param:o.param}}function mj(r,e){let t=r.flags.find(n=>n.name===e);if(!t)throw new Error(`Unknown CLI flag: --${e}`);return t}function Jg(r){if(r.kind!=="flag"||r.param?.source!=="file-or-stdin")return[ya(r)];let e=Se(r.flag.name),t=r.flag.valueHint?.split("|")[0]??r.flag.valueHint??"value";return[`${e}=<${t}>`,`${e}=-`]}function ya(r){if(r.kind==="positional")return`<${r.positional.name}>`;let e=Se(r.flag.name);return r.flag.takesValue?`${e}=<${r.flag.valueHint??"value"}>`:e}function mM(r){return r.kind==="positional"?`<${r.positional.name}>`:Se(r.flag.name)}async function gM(r,e={}){let t=e.env??process.env,n=e.cwd??process.cwd(),o=e.signal??new AbortController().signal;gj();let i=yj(t,e.stdio),a=nM(r),s=hC({args:a,env:t}),c,l,p;try{l=await fj(s,t,n),c=fM(s,i,l.logFile,a);let u=await hj(s.locale);return GT({args:a,localizer:u,formatter:c}),p=new Sa,await new md().run(a,{cwd:n,config:s,output:c,task:new Tc(c,o),eventBus:p,abortSignal:o,env:t})}catch(u){return l?.error(u instanceof Error?u:String(u)),(c??fM(s,i,l?.logFile,a)).error(u),AC(u)}finally{p?.dispose(),await l?.close()}}async function fj(r,e,t){let n=await bC({level:r.logLevel,cwd:t,env:e});return ry(n),n}async function hj(r){let e=await Pc.create({locale:r,bundleDir:Sj()});return oy(e),e}function gj(){Zg(Td("cli"))}function yj(r,e){if(e){let o=e.isTty??!1,i=e.isErrTty??o;return{writeOut:a=>e.writeOut(a),writeErr:a=>e.writeErr(a),isTty:o,isErrTty:i,color:o&&i&&!r.NO_COLOR}}let t=!!process.stdout.isTTY,n=!!process.stderr.isTTY;return{writeOut:o=>{process.stdout.write(o)},writeErr:o=>{process.stderr.write(o)},isTty:t,isErrTty:n,color:t&&n&&!r.NO_COLOR}}function fM(r,e,t,n){let o=r.outputMode==="json"?new gd(e):new fd(e,t,Cj(n));return r.quiet?new Cd(o):o}function Cj(r){if(r.command)return{commandArgv:r.commandArgv,commandSpec:r.command.spec}}function Sj(){return Id(__dirname)??hM.join(__dirname,"l10n")}async function vj(){let r=new AbortController,e=kj(r);try{process.exitCode=await gM(process.argv.slice(2),{cwd:process.cwd(),env:process.env,signal:r.signal})}finally{e()}}function kj(r){let e=()=>{r.abort()};return process.once("SIGINT",e),process.once("SIGTERM",e),()=>{process.off("SIGINT",e),process.off("SIGTERM",e)}}require.main===module&&vj();0&&(module.exports={runCli});
|
|
128
|
+
`}async function a5(r){let e=[];for await(let n of r)e.push(Buffer.isBuffer(n)?n:Buffer.from(n));let t=JSON.parse(Buffer.concat(e).toString("utf-8"));return t&&typeof t=="object"&&!Array.isArray(t)?t:{result:t}}ze();re();var Vf=class{constructor(e,t={}){this.env=e;this.pretty=t.pretty===!0}pretty;result(e,t){this.writeJson("result",e)}async resultStream(e,t,n){if($f(e),this.pretty){let i=await s5(t);$f(i),await this.writeOutJson({kind:"result",...e,...i});return}let o=JSON.stringify({kind:"result",...e});await this.writeOut(o.slice(0,-1)),await this.writeMergedObjectBody(t),await this.writeOut(`
|
|
129
|
+
`)}content(e,t,n){this.writeJson("result",{...e,encoding:"base64",content:t.toString("base64")})}progress(e,t){}detail(e,t){this.writeErrJson("log",D({level:"info",message:t?.(),...e}))}info(e){this.writeErrJson("log",{level:"info",message:e})}warning(e){this.writeErrJson("log",{level:"warn",message:e})}error(e){let t=od(e);this.writeJson("error",D({code:t.code,name:t.name,message:t.message,hint:t.hint,details:jf(t.details),errorType:t.errorType,errorDialogStyle:t.errorDialogStyle,hintMessage:t.hintMessage,locationPath:jf(t.locationPath),internal:t.internal,category:t.category,style:t.style,properties:jf(t.properties),stack:t.stack,cause:jf(t.cause)}))}writeJson(e,t){$f(t),this.env.writeOut(`${this.stringifyJson({kind:e,...t})}
|
|
130
|
+
`)}writeErrJson(e,t){$f(t),this.env.writeErr(`${this.stringifyJson({kind:e,...t})}
|
|
131
|
+
`)}async writeOutJson(e){await this.writeOut(`${this.stringifyJson(e)}
|
|
132
|
+
`)}async writeMergedObjectBody(e){let t=!1;for await(let n of e){let o=pL(n);if(t){await this.writeOut(o);continue}let i=c5(o);i<0||(await this.writeOut(","),i+1<o.length&&await this.writeOut(o.subarray(i+1)),t=!0)}K(t,"Streaming JSON result body is empty")}async writeOut(e){await this.env.writeOut(e)}stringifyJson(e){return JSON.stringify(e,void 0,this.pretty?2:void 0)}};function $f(r){K(!Object.hasOwn(r,"kind"),"Output data cannot contain reserved field: kind")}function pL(r){return Buffer.isBuffer(r)?r:typeof r=="string"?Buffer.from(r,"utf-8"):Buffer.from(r)}async function s5(r){let e=[];for await(let n of r)e.push(pL(n));let t=JSON.parse(Buffer.concat(e).toString("utf-8"));return K(W(t),"Streaming JSON result body must be an object"),t}function c5(r){for(let e=0;e<r.length;e++){let t=r[e];if(t===123)return e;l5(t)||K(!1,"Streaming JSON result body must be an object")}return-1}function l5(r){return r===32||r===10||r===13||r===9}function jf(r){return qf(r,new WeakSet)}function qf(r,e){if(r==null||typeof r=="string"||typeof r=="number"||typeof r=="boolean")return r;if(typeof r=="bigint")return r.toString();if(typeof r=="symbol")return String(r);if(typeof r=="function")return`[Function ${r.name||"anonymous"}]`;if(r instanceof Error)return u5(r,e);if(Array.isArray(r))return e.has(r)?"[Circular]":(e.add(r),r.map(t=>qf(t,e)));if(typeof r=="object"){if(e.has(r))return"[Circular]";e.add(r);let t={};for(let[n,o]of Object.entries(r))t[n]=qf(o,e);return t}return String(r)}function u5(r,e){if(e.has(r))return"[Circular]";e.add(r);let t={name:r.name,message:r.message};r.stack&&(t.stack=r.stack);let n="cause"in r?r.cause:void 0;return n!==void 0&&(t.cause=qf(n,e)),t}var Bf=class{constructor(e){this.delegate=e}result(e,t){this.delegate.result(e,t)}resultStream(e,t,n){return this.delegate.resultStream(e,t,n)}content(e,t,n){this.delegate.content(e,t,n)}progress(e,t){}detail(e,t){}info(e){}warning(e){this.delegate.warning(e)}error(e){this.delegate.error(e)}};var mL={cat:["show"],delete:["remove"],desc:["describe"],ls:["list"],read:["show"],rm:["remove"],run:["exec"],view:["open","show"]},Hf=class{constructor(e){this.commands=e}resolve(e){let t=R5(e.argv),n=this.commands.filter(i=>!e.namespacePath||w5(i.path,e.namespacePath)).map(i=>({command:i,score:p5(i,e.inputPath,t)})).filter(i=>i.score>=18).sort(d5)[0];if(!n)return;let o=m5(n.command,e.inputPath,t);return o.length>0?o:void 0}};function d5(r,e){return r.score!==e.score?e.score-r.score:r.command.path.length-e.command.path.length}function p5(r,e,t){let n=r.path,o=S5(n,e),i=v5(n,e),a=b5(n,e),s=k5(r.spec,t),c=e.some(l=>fL(l,n[n.length-1]));return 10+o*8+i*3+s*4+(c?8:0)-a*3}function m5(r,e,t){let n=f5(r,e),o=y5(r.spec,t),a=[C5(r.path,n,o),...r.spec.examples??[]];return gL(a).slice(0,2)}function f5(r,e){let t=r.path[r.path.length-1],n=e.findIndex(c=>Si(c,t));if(r.spec.positionals.length===0)return[];let o=g5(r.spec),i=n>=0?n+1:h5(r.path,e),s=e.slice(i).filter(c=>!r.path.some(l=>Si(l,c)));return o===void 0?s:s.slice(0,o)}function h5(r,e){let t=0;for(;t<r.length&&t<e.length&&Si(r[t],e[t]);)t++;return t<e.length?t+1:e.length}function g5(r){if(!r.positionals.some(t=>t.repeatable))return r.positionals.length}function y5(r,e){let t=new Set(r.flags.map(i=>i.name)),n=new Set(r.flags.flatMap(i=>i.alias?[i.alias]:[])),o=e.filter(i=>i.name==="help"||i.name&&t.has(i.name)?!0:!!i.alias&&n.has(i.alias));return gL(o.map(i=>i.display))}function C5(r,e,t){return["succapp",...r,...e,...t].join(" ")}function S5(r,e){return r.filter(t=>e.some(n=>Si(t,n))).length}function v5(r,e){let t=0;for(let n of r)e.some(o=>!Si(n,o)&&fL(n,o))&&t++;return t}function k5(r,e){let t=new Set(r.flags.map(o=>o.name)),n=new Set(r.flags.flatMap(o=>o.alias?[o.alias]:[]));return e.filter(o=>o.name&&t.has(o.name)?!0:!!o.alias&&n.has(o.alias)).length}function w5(r,e){return e.every((t,n)=>Si(r[n],t))}function Si(r,e){return r!==void 0&&e!==void 0&&r.toLowerCase()===e.toLowerCase()}function fL(r,e){if(Si(r,e))return!0;if(r===void 0||e===void 0)return!1;let t=r.toLowerCase(),n=e.toLowerCase();return P5(t,n)||t.length>=2&&n.length>=2&&(t.startsWith(n)||n.startsWith(t))?!0:E5(t,n)<=2}function P5(r,e){return(mL[r]??[]).includes(e)?!0:(mL[e]??[]).includes(r)}function R5(r){let e=[];for(let t of r){if(t==="--")break;if(t.startsWith("--")&&t.length>2){let n=t.indexOf("="),o=n>=0?t.slice(2,n):t.slice(2);e.push({name:o,display:n>=0?t.slice(0,n):t});continue}if(t.startsWith("-")&&t.length>1)for(let n of t.slice(1))e.push({alias:n,display:`-${n}`})}return e}function b5(r,e){return hL(r,e,(t,n)=>Si(t,n)?0:1)}function E5(r,e){return hL([...r.toLowerCase()],[...e.toLowerCase()],(t,n)=>t===n?0:1)}function hL(r,e,t){let n=Array.from({length:e.length+1},(i,a)=>a),o=Array.from({length:e.length+1},()=>0);for(let i=1;i<=r.length;i++){o[0]=i;for(let a=1;a<=e.length;a++)o[a]=Math.min(n[a]+1,o[a-1]+1,n[a-1]+t(r[i-1],e[a-1]));for(let a=0;a<o.length;a++)n[a]=o[a]}return n[e.length]}function gL(r){let e=[],t=new Set;for(let n of r)t.has(n)||(t.add(n),e.push(n));return e}ze();var Gf=class{constructor(e,t){this.argv=e;this.commands=[...t].sort((n,o)=>o.path.length-n.path.length),this.namespaces=[...Of(t,Tf)].sort((n,o)=>o.path.length-n.path.length);for(let n of Ur)this.globalFlagsByName.set(n.name,n),n.alias&&this.globalFlagsByAlias.set(n.alias,n)}commands;namespaces;globalFlagsByName=new Map;globalFlagsByAlias=new Map;resolve(){let e=this.locateCommandPath(this.argv);if(e.helpToken)return this.resolveHelpCommand(e.helpToken);if(e.command)return{kind:"run",command:e.command,commandArgv:_o(this.argv,e.commandIndexes)};if(e.namespace&&this.shouldShowNamespaceHelp(e))return{kind:"namespace-help",namespace:e.namespace,commandArgv:_o(this.argv,e.namespaceIndexes)};if(e.namespace){let t=this.createNamespaceUnknownCommand(e);return{kind:"unknown",token:t.path[0],unknownCommand:t,commandArgv:_o(this.argv,e.tokens.map(n=>n.index))}}if(e.firstToken){let t=this.createTopLevelUnknownCommand(e);return{kind:"unknown",token:e.firstToken.value,unknownCommand:t,commandArgv:_o(this.argv,[e.firstToken.index])}}return{kind:"top-help",commandArgv:this.argv}}resolveHelpCommand(e){let t=_o(this.argv,[e.index]),n=this.locateCommandPath(t);if(!n.firstToken)return{kind:"top-help",commandArgv:t,fromHelpToken:!0};if(n.command)return{kind:"command-help",command:n.command,commandArgv:_o(t,n.commandIndexes),fromHelpToken:!0};if(n.namespace&&this.shouldShowNamespaceHelp(n))return{kind:"namespace-help",namespace:n.namespace,commandArgv:_o(t,n.namespaceIndexes),fromHelpToken:!0};if(n.namespace){let i=this.createNamespaceUnknownCommand(n);return{kind:"unknown",token:i.path[0],unknownCommand:i,commandArgv:_o(t,n.tokens.map(a=>a.index))}}let o=this.createTopLevelUnknownCommand(n);return{kind:"unknown",token:n.firstToken.value,unknownCommand:o,commandArgv:_o(t,[n.firstToken.index])}}shouldShowNamespaceHelp(e){return!e.stoppedAtDoubleDash&&e.tokens.length===e.namespaceIndexes.length}createNamespaceUnknownCommand(e){let t=T5(e),n=e.tokens.length>0?e.tokens.map(a=>a.value):t.path,o=t.path.join(" "),i=this.createUnknownCommandSuggestions(e,t);return{path:n,hint:`succapp ${o} --help`,...i?{suggestedCommands:i}:{}}}createTopLevelUnknownCommand(e){let t=e.firstToken?.value??"",n=this.createUnknownCommandSuggestions(e);return{path:[t],hint:"succapp --help",...n?{suggestedCommands:n}:{}}}createUnknownCommandSuggestions(e,t){return new Hf(this.commands).resolve({argv:this.argv,inputPath:e.tokens.map(n=>n.value),namespacePath:t?.path})}locateCommandPath(e){let t=this.collectPathTokens(e),n=t.tokens,o=n[0];if(!o)return{commandIndexes:[],namespaceIndexes:[],tokens:n,stoppedAtDoubleDash:t.stoppedAtDoubleDash};if(o.value==="help")return{firstToken:o,helpToken:o,commandIndexes:[],namespaceIndexes:[],tokens:n,stoppedAtDoubleDash:t.stoppedAtDoubleDash};let i=this.findCommandByPath(n),a=this.findNamespaceByPath(n);return{command:i,commandIndexes:i?n.slice(0,i.path.length).map(s=>s.index):[],namespace:a,namespaceIndexes:a?n.slice(0,a.path.length).map(s=>s.index):[],tokens:n,firstToken:o,stoppedAtDoubleDash:t.stoppedAtDoubleDash}}findCommandByPath(e){return this.commands.find(t=>t.path.every((n,o)=>e[o]?.value===n))}findNamespaceByPath(e){return this.namespaces.find(t=>t.path.every((n,o)=>e[o]?.value===n))}collectPathTokens(e){let t=[],n=!1;for(let o=0;o<e.length;o++){let i=e[o];if(i==="--"){n=!0;break}if(!CL(i)){t.push({value:i,index:o});continue}let a=this.consumeKnownGlobalToken(e,o);a!==void 0&&(o=a)}return{tokens:t,stoppedAtDoubleDash:n}}consumeKnownGlobalToken(e,t){let n=e[t];return n.startsWith("--")?this.consumeKnownLongGlobalToken(e,n,t):this.consumeKnownShortGlobalToken(e,n,t)}consumeKnownLongGlobalToken(e,t,n){let o=t.indexOf("="),i=o>=0?t.slice(2,o):t.slice(2),a=this.globalFlagsByName.get(i);if(a)return a.takesValue&&o<0&&yL(e[n+1])?n+1:n}consumeKnownShortGlobalToken(e,t,n){let o=t.slice(1);for(let i=0;i<o.length;i++){let a=this.globalFlagsByAlias.get(o[i]);if(!a)return;if(a.takesValue)return i<o.length-1?n:yL(e[n+1])?n+1:n}return n}};function _o(r,e){if(e.length===0)return r;let t=new Set(e);return r.filter((n,o)=>!t.has(o))}function T5(r){return K(r.namespace,"Missing namespace for located command path."),r.namespace}function yL(r){return r!==void 0&&r!=="--"&&!CL(r)}function CL(r){return r.startsWith("-")&&r!=="-"}I();ze();F();O();function wL(r,e=QO){return new Yk(r,e).read()}var M5={name:"succapp",flags:Ur,positionals:[],summary:"cli.cmd.root.summary"},x5={name:"succapp",flags:Ur,positionals:[{name:"arg",repeatable:!0}],summary:"cli.cmd.root.summary"},Yk=class{constructor(e,t){this.argv=e;this.commands=t}commands;read(){let e=new Gf(this.argv,this.commands).resolve(),t=D5(I5(e),e.commandArgv),n=Tw(t.parsed),o=this.resolveDispatch(e,n);return{rawArgv:this.argv,kind:o.kind,command:e.command,namespace:e.namespace,token:e.token,unknownCommand:e.unknownCommand,commandArgv:e.commandArgv,parsed:t.parsed,globalOptions:n,issues:t.issues,helpOrVersionRequested:o.helpOrVersionRequested}}resolveDispatch(e,t){return e.fromHelpToken?{kind:e.kind,helpOrVersionRequested:!0}:e.kind==="namespace-help"?t.version&&!t.help?{kind:"version",helpOrVersionRequested:!0}:{kind:e.kind,helpOrVersionRequested:t.help}:t.help&&e.command?{kind:"command-help",helpOrVersionRequested:!0}:t.help&&!e.token?{kind:"top-help",helpOrVersionRequested:!0}:t.version&&(e.command||!e.token)?{kind:"version",helpOrVersionRequested:!0}:{kind:e.kind,helpOrVersionRequested:!1}}};function I5(r){return(r.kind==="run"||r.kind==="command-help")&&r.command?_5(r.command.spec):r.kind==="unknown"?x5:M5}function _5(r){let e=new Set(r.flags.map(t=>t.name));return{...r,flags:[...r.flags,...Ur.filter(t=>!e.has(t.name))]}}function D5(r,e){return new Xk(r).parse(e)}var Xk=class{constructor(e){this.spec=e;for(let t of e.flags)this.addFlag(t)}longFlags=new Map;aliasFlags=new Map;issues=[];parse(e){let t=new Zk(this.spec);for(let n=0;n<e.length;n++){let o=e[n];if(o==="--"){t.pushPositionals(e.slice(n+1));break}if(o.startsWith("--")&&o.length>2){n=this.parseLongFlag(o,e,n,t);continue}if(o.startsWith("-")&&o.length>1){n=this.parseShortFlags(o,e,n,t);continue}t.pushPositional(o)}return this.validatePositionals(t),this.issues.push(...O5(t)),{parsed:t,issues:this.issues.slice()}}addFlag(e){K(!this.longFlags.has(e.name),`duplicate flag name: ${e.name}`),this.longFlags.set(e.name,e),e.alias&&(K(e.alias.length===1,`flag alias must be a single character: ${e.name}`),K(!this.aliasFlags.has(e.alias),`duplicate flag alias: ${e.alias}`),this.aliasFlags.set(e.alias,e))}parseLongFlag(e,t,n,o){let i=e.indexOf("="),a=i>=0?e.slice(2,i):e.slice(2),s=this.longFlags.get(a);if(!s)return this.pushIssue("err.cli.unknownOption",{option:`--${a}`}),n;if(s.takesValue){if(o.markFlag(s),i>=0)return o.addFlagValue(s,e.slice(i+1)),n;let c=t[n+1];return c===void 0||c==="--"||SL(c)?(this.pushIssue("err.cli.missingOptionValue",{option:`--${s.name}`}),n):(o.addFlagValue(s,c),n+1)}return i>=0?(this.pushIssue("err.cli.unexpectedOptionValue",{option:`--${s.name}`}),n):(o.addBooleanFlag(s),n)}parseShortFlags(e,t,n,o){let i=e.slice(1);for(let a=0;a<i.length;a++){let s=i[a],c=this.aliasFlags.get(s);if(!c){this.pushIssue("err.cli.unknownOption",{option:`-${s}`});continue}if(!c.takesValue){o.addBooleanFlag(c);continue}o.markFlag(c);let l=i.slice(a+1);if(l){let p=l.startsWith("=")?l.slice(1):l;return o.addFlagValue(c,p),n}let u=t[n+1];return u===void 0||u==="--"||SL(u)?(this.pushIssue("err.cli.missingOptionValue",{option:`-${s}`}),n):(o.addFlagValue(c,u),n+1)}return n}validatePositionals(e){let t=e.positional.length,n=this.spec.positionals.filter(Su).length,i=this.spec.positionals.some(a=>a.repeatable===!0)?void 0:this.spec.positionals.length;if(t<n){let a=this.spec.positionals.find((s,c)=>Su(s)&&c>=t);if(a){let s=this.spec.usageArgs?` ${this.spec.usageArgs}`:"";this.issues.push(new P("err.cli.missingArgument",{argument:Fn("<{name}>{repeatable}",{name:a.name,repeatable:a.repeatable===!0?"...":""}),usage:Fn("succapp {name}{usageArgs}",{name:this.spec.name,usageArgs:s})}))}else this.pushIssue("err.cli.missingArgument",{command:this.spec.name,min:n})}i!==void 0&&t>i&&this.pushIssue("err.cli.tooManyArguments",{command:this.spec.name,max:i})}pushIssue(e,t){this.issues.push(new P(e,t))}};function Su(r){return r.param?.required===!0}var Zk=class{constructor(e){this.spec=e}positionalValues=[];flags=new Map;get positional(){return this.positionalValues.slice()}has(e){let t=RL(this.spec,e);return t?t.kind==="flag"?this.flags.has(t.flag.name):ba(this,t).length>0:!1}value(e){return PL(this,e)}values(e){return F5(this,e)}integer(e){return A5(this,e)}resolveInput(e){return L5(this,e)}rawValue(e){let t=this.flags.get(e);return t&&t.length>0?t[t.length-1]:void 0}rawValues(e){return(this.flags.get(e)??[]).slice()}pushPositional(e){this.positionalValues.push(e)}pushPositionals(e){this.positionalValues.push(...e)}addBooleanFlag(e){this.ensureFlagPresent(e)}markFlag(e){this.ensureFlagPresent(e)}ensureFlagPresent(e){this.flags.has(e.name)||this.flags.set(e.name,[])}addFlagValue(e,t){if(!e.repeatable){this.flags.set(e.name,[t]);return}let n=this.flags.get(e.name)??[];n.push(t),this.flags.set(e.name,n)}};function SL(r){return r.startsWith("-")&&r!=="-"}function PL(r,e){let t=Kf(r.spec,e),o=ba(r,t).at(-1);if(o!==void 0)return zf(r.spec,t,o);let i=Jf(t.param);if(i!==void 0)return zf(r.spec,t,i);tw(t)&&!Qf(r,t)&&ML(r.spec,t)}function F5(r,e){let t=Kf(r.spec,e),n=ba(r,t);if(n.length===0){let o=Jf(t.param);return o!==void 0?[zf(r.spec,t,o)]:(tw(t)&&!Qf(r,t)&&ML(r.spec,t),[])}return n.map(o=>zf(r.spec,t,o))}function A5(r,e){let t=Kf(r.spec,e),n=t.param;if(!n||n.type!=="integer")throw new Error(`CLI parameter is not declared as integer: ${dc(t)}`);let o=PL(r,e);return o===void 0?void 0:ow(r.spec,t,n,o)}function O5(r){let e=[];for(let t of r.spec.flags){if(!t.param)continue;let n={kind:"flag",ref:`--${t.name}`,flag:t,param:t.param},o;try{o=r.values(t.name)}catch(i){if(i instanceof P){e.push(i);continue}throw i}t.param.required===!0&&!Qf(r,n)&&!nw(r,n)&&e.push(new P("err.cli.missingInput",{inputId:t.param.inputId??"value",sources:iw(n)})),kL(n,o,e);for(let i of o)vL(n,i,e)}r.spec.positionals.forEach((t,n)=>{if(!t.param)return;let o={kind:"positional",ref:`<${t.name}>`,positional:t,index:n,param:t.param},i=ba(r,o);kL(o,i,e);for(let a of i)vL(o,a,e)});for(let t of r.spec.inputGroups??[]){let n=bL(r,t);n.issue&&e.push(n.issue)}return e}function Kf(r,e){let t=RL(r,e);if(!t)throw new Error(`Unknown CLI parameter: ${e}`);return t}function RL(r,e){if(e.startsWith("--")){let i=r.flags.find(a=>a.name===e.slice(2));return i?{kind:"flag",ref:`--${i.name}`,flag:i,param:i.param}:null}let t;if(e.startsWith("<")&&e.endsWith(">"))t=e.slice(1,-1);else{let i=r.flags.find(a=>a.name===e);if(i)return{kind:"flag",ref:`--${i.name}`,flag:i,param:i.param};t=e}let n=r.positionals.findIndex(i=>i.name===t);if(n<0)return null;let o=r.positionals[n];return{kind:"positional",ref:`<${o.name}>`,positional:o,index:n,param:o.param}}function L5(r,e){let t=r.spec.inputGroups?.find(o=>o.name===e);if(t)return N5(r,t);let n=Kf(r.spec,e);return W5(r,n)}function N5(r,e){let t=bL(r,e);if(t.issue)throw t.issue;if(!t.input)throw new P("err.cli.missingInput",{inputId:e.inputId,sources:TL(r.spec,e)});return t.input}function W5(r,e){let t=e.param,n=t?.inputId??"value",o=iw(e);if(!nw(r,e))throw new P("err.cli.missingInput",{inputId:n,sources:o});if(t?.source==="stdin")return ew(e,"",n,o);let i=ba(r,e).at(-1)??Jf(t)??"";return ew(e,i,n,o)}function bL(r,e){let t=TL(r.spec,e),n=e.members.map(s=>{let c=IL(r.spec,s);return{resolved:c,present:nw(r,c),missingExplicitValue:Qf(r,c)}}),o=n.filter(s=>s.present);if(o.length===0)return e.defaultSource==="stdin"?{input:EL(e.members[0],e.inputId,t),issue:null}:e.mode==="atMostOne"||n.some(s=>s.missingExplicitValue)?{input:null,issue:null}:{input:null,issue:new P("err.cli.missingInput",{inputId:e.inputId,sources:t})};if((e.mode==="exactlyOne"||e.mode==="atMostOne")&&o.length>1)return{input:null,issue:new P("err.cli.conflictingInputs",{inputs:o.map(s=>dc(s.resolved))})};let i=o[0],a=ba(r,i.resolved).at(-1)??Jf(i.resolved.param)??"";return{input:ew(i.resolved,a,e.inputId,t),issue:null}}function ew(r,e,t,n){let o=r.param?.source,i=r.ref;return o==="stdin"||o==="file-or-stdin"&&e==="-"?EL(i,t,n):o==="file"||o==="file-or-stdin"?{kind:"file",ref:i,filePath:e,label:e,inputId:t,sources:n}:{kind:"value",ref:i,value:e,label:i,inputId:t,sources:n}}function EL(r,e,t){return{kind:"stdin",ref:r,label:"stdin",inputId:e,sources:t}}function TL(r,e){if(e.sources)return e.defaultSource==="stdin"?[...e.sources,"stdin"]:e.sources;let t=e.members.map(n=>dc(IL(r,n)));return e.defaultSource==="stdin"?[...t,"stdin"]:t}function ba(r,e){if(e.kind==="flag"){let t=e.param?.list,n=r.rawValues(e.flag.name);if(!t)return n.slice();if(t.separator.length===0)throw new Error(`CLI list separator must not be empty: --${e.flag.name}`);let o=[],i=new Set;for(let a of n)for(let s of a.split(t.separator)){let c=s.trim();if(!c){t.empty==="error"&&$5(e.flag,c);continue}if(t.dedupe===!0){if(i.has(c))continue;i.add(c)}o.push(c)}return o.length===0&&n.length>0&&e.param?.nonEmpty===!0&&rw(e,""),o}return U5(r.spec.positionals,r.positional)[e.index]??[]}function U5(r,e){let t=r.map(()=>[]),n=0;for(let o=0;o<r.length;o++){let i=r[o],a=e.length-n;if(a<=0)break;let s=r.slice(o+1).filter(Su).length;if(i.repeatable===!0){let c=Math.max(0,a-s);t[o].push(...e.slice(n,n+c)),n+=c;continue}(Su(i)||a>s)&&(t[o].push(e[n]),n++)}return t}function zf(r,e,t){let n=e.param;return n&&(n.type==="integer"&&ow(r,e,n,t),xL(e,t),rw(e,t)),t}function tw(r){return r.kind==="positional"?Su(r.positional):r.param?.required===!0}function ML(r,e){if(e.kind==="positional"&&tw(e)){let t=r.usageArgs?` ${r.usageArgs}`:"";throw new P("err.cli.missingArgument",{argument:Fn("<{name}>{repeatable}",{name:e.positional.name,repeatable:e.positional.repeatable===!0?"...":""}),usage:Fn("succapp {name}{usageArgs}",{name:r.name,usageArgs:t})})}throw new P("err.cli.missingInput",{inputId:e.param?.inputId??"value",sources:iw(e)})}function $5(r,e){let t=r.param?.choices,n=De(r.name);throw t?new P("err.cli.invalidChoice",{input:n,option:n,flag:r.name,value:e,allowedValues:t}):new P("err.cli.missingOptionValue",{option:n})}function vL(r,e,t){try{r.param.type==="integer"&&ow(void 0,r,r.param,e),xL(r,e),rw(r,e)}catch(n){if(n instanceof P){t.push(n);return}throw n}}function kL(r,e,t){let n=r.param.maxItems;n===void 0||e.length<=n||t.push(new P("err.cli.tooManyValues",{input:aw(r),maxItems:n,actualItems:e.length}))}function xL(r,e){let t=r.param?.choices;if(!(!t||t.includes(e)))throw new P("err.cli.invalidChoice",{input:aw(r),...r.kind==="flag"?{option:De(r.flag.name),flag:r.flag.name}:{},value:e,allowedValues:t})}function rw(r,e){let t=r.param;if(!(t?.nonEmpty!==!0||Ce(e)))throw new P("err.cli.missingInput",{inputId:t.inputId??"value",sources:[dc(r)]})}function Jf(r){return r?.defaultValue===void 0?void 0:String(r.defaultValue)}function nw(r,e){if(e.kind==="positional")return ba(r,e).length>0;let t=e.param;return t?.source==="stdin"||!e.flag.takesValue?r.has(e.flag.name):r.rawValue(e.flag.name)!==void 0||t?.defaultValue!==void 0}function Qf(r,e){return e.kind==="flag"&&e.flag.takesValue&&r.has(e.flag.name)&&r.rawValue(e.flag.name)===void 0}function ow(r,e,t,n){let o=j5(n);if(o===void 0||typeof n=="string"&&(t.min??Number.NEGATIVE_INFINITY)>=0&&n.trim().startsWith("-")||t.min!==void 0&&o<t.min||t.max!==void 0&&o>t.max){let i=aw(e);throw new P(V5(t),{inputId:t.inputId??"value",input:i,...e.kind==="flag"?{option:i,flag:e.flag.name}:{},...e.kind==="positional"&&r?{argument:dc(e)}:{},value:String(n),...t.max!==void 0?{min:t.min??0,max:t.max}:{}})}return o}function j5(r){if(typeof r=="number")return Number.isSafeInteger(r)?r:void 0;let e=r.trim();if(!/^-?\d+$/.test(e))return;let t=Number(e);return Number.isSafeInteger(t)?t:void 0}function V5(r){return r.max!==void 0?"err.cli.invalidNonNegativeIntegerRange":r.min===0?"err.cli.invalidNonNegativeInteger":"err.cli.invalidPositiveInteger"}function IL(r,e){if(e.startsWith("--")){let i=q5(r,e.slice(2));if(!i.param)throw new Error(`Missing CLI parameter contract: ${e}`);return{kind:"flag",ref:e,flag:i,param:i.param}}let t=e.slice(1,-1),n=r.positionals.findIndex(i=>i.name===t);if(n<0)throw new Error(`Unknown CLI positional parameter: ${e}`);let o=r.positionals[n];if(!o.param)throw new Error(`Missing CLI parameter contract: ${e}`);return{kind:"positional",ref:e,positional:o,index:n,param:o.param}}function q5(r,e){let t=r.flags.find(n=>n.name===e);if(!t)throw new Error(`Unknown CLI flag: --${e}`);return t}function iw(r){if(r.kind!=="flag"||r.param?.source!=="file-or-stdin")return[dc(r)];let e=De(r.flag.name),t=r.flag.valueHint?.split("|")[0]??r.flag.valueHint??"value";return[`${e}=<${t}>`,`${e}=-`]}function dc(r){if(r.kind==="positional")return`<${r.positional.name}>`;let e=De(r.flag.name);return r.flag.takesValue?`${e}=<${r.flag.valueHint??"value"}>`:e}function aw(r){return r.kind==="positional"?`<${r.positional.name}>`:De(r.flag.name)}async function AL(r,e={}){let t=e.env??process.env,n=e.cwd??process.cwd(),o=e.signal??new AbortController().signal;G5();let i=z5(t,e.stdio),a=wL(r),s=_P({args:a,env:t}),c,l,u;try{l=await B5(s,t,n),c=DL(s,i,l.logFile,a);let p=await H5(s.locale);return uL({args:a,localizer:p,formatter:c}),u=new mc,await new Wf().run(a,{cwd:n,config:s,output:c,terminalColumns:i.columns,task:new rd(c,o),eventBus:u,abortSignal:o,env:t})}catch(p){return l?.error(p instanceof Error?p:String(p)),(c??DL(s,i,l?.logFile,a)).error(p),JP(p)}finally{u?.dispose(),await l?.close()}}async function B5(r,e,t){let n=await jP({level:r.logLevel,cwd:t,env:e});return mw(n),n}async function H5(r){let e=await Xu.create({locale:r,bundleDir:J5()});return hw(e),e}function G5(){uw(Zf("cli"))}function z5(r,e){if(e){let o=e.isTty??!1,i=e.isErrTty??o;return{writeOut:a=>e.writeOut(a),writeErr:a=>e.writeErr(a),isTty:o,isErrTty:i,columns:_L(e.columns,r.COLUMNS),color:o&&i&&!r.NO_COLOR}}let t=!!process.stdout.isTTY,n=!!process.stderr.isTTY;return{writeOut:o=>{process.stdout.write(o)},writeErr:o=>{process.stderr.write(o)},isTty:t,isErrTty:n,columns:_L(process.stdout.columns,r.COLUMNS),color:t&&n&&!r.NO_COLOR}}function _L(r,e){for(let t of[r,Number(e)])if(typeof t=="number"&&Number.isFinite(t)&&t>0)return Math.floor(t)}function DL(r,e,t,n){let o=r.outputMode==="json"?new Vf(e,{pretty:r.jsonFormat==="pretty"}):new Uf(e,t,K5(n));return r.quiet?new Bf(o):o}function K5(r){if(r.command)return{commandArgv:r.commandArgv,commandSpec:r.command.spec}}function J5(){return rh(__dirname)??FL.join(__dirname,"l10n")}async function Q5(){let r=new AbortController,e=Y5(r);try{process.exitCode=await AL(process.argv.slice(2),{cwd:process.cwd(),env:process.env,signal:r.signal})}finally{e()}}function Y5(r){let e=()=>{r.abort()};return process.once("SIGINT",e),process.once("SIGTERM",e),()=>{process.off("SIGINT",e),process.off("SIGTERM",e)}}require.main===module&&Q5();0&&(module.exports={runCli});
|