diff --git a/CHANGELOG.md b/CHANGELOG.md index de079971..9de56161 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,21 @@ Versioning: [Semantic Versioning 2.0](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Changed + +- **Incremental TS gate — tsc `--incremental` + eslint `--cache`** (`F-bfe14aac`) — the + TypeScript type and lint gates re-ran from scratch every time. They now reuse a build + cache: `tsc --noEmit --incremental` (build-info file) and `eslint --cache`, both written + under `.cladding/cache/` (already gitignored, so the managed project's tree stays clean). + On an unchanged re-run — the local pre-commit/pre-push loop — measured on cladding's own + repo: **tsc 2.7s → 1.1s, eslint 2.5s → 0.6s (~3.4s saved)**. **Sound, not a shortcut:** a + newly-introduced type error is still caught with a stale build-info present (verified — + `tsc --incremental` rebuilds the affected program slice; `eslint --cache` keys on + file+config hash). Cold runs (fresh CI checkout) just rebuild the cache — no regression. + Test execution is deliberately **not** scoped — a gate must run the whole suite, so + changed-files/test-selection (unsound for a gate) was intentionally avoided. + + ## [0.7.0] — 2026-07-01 — Knowledge Graph ### Knowledge graph (spec↔code↔doc) diff --git a/plugins/claude-code/dist/clad.js b/plugins/claude-code/dist/clad.js index 52afbb20..5a97191a 100755 --- a/plugins/claude-code/dist/clad.js +++ b/plugins/claude-code/dist/clad.js @@ -232,7 +232,7 @@ For example, you can use the \`pathToFileURL()\` method of the \`url\` core modu `,LF:` `,concatBytes:cO},g_e=(t,e)=>{let r=new Uint8Array(t.length+e.length);return r.set(t,0),r.set(e,t.length),r},y_e={windowsNewline:new Uint8Array([13,10]),unixNewline:new Uint8Array([10]),LF:10,concatBytes:g_e}});import{Buffer as __e}from"node:buffer";var RG,v_e,CG,b_e,S_e,DG,NG=y(()=>{Br();RG=(t,e)=>t?void 0:v_e.bind(void 0,e),v_e=function*(t,e){if(typeof e!="string"&&!Mt(e)&&!__e.isBuffer(e))throw new TypeError(`The \`${t}\` option's transform must use "objectMode: true" to receive as input: ${typeof e}.`);yield e},CG=(t,e)=>t?b_e.bind(void 0,e):S_e.bind(void 0,e),b_e=function*(t,e){DG(t,e),yield e},S_e=function*(t,e){if(DG(t,e),typeof e!="string"&&!Mt(e))throw new TypeError(`The \`${t}\` option's function must yield a string or an Uint8Array, not ${typeof e}.`);yield e},DG=(t,e)=>{if(e==null)throw new TypeError(`The \`${t}\` option's function must not call \`yield ${e}\`. Instead, \`yield\` should either be called with a value, or not be called at all. For example: - if (condition) { yield value; }`)}});import{Buffer as w_e}from"node:buffer";import{StringDecoder as x_e}from"node:string_decoder";var y_,$_e,k_e,E_e,uO=y(()=>{Br();y_=(t,e,r)=>{if(r)return;if(t)return{transform:$_e.bind(void 0,new TextEncoder)};let n=new x_e(e);return{transform:k_e.bind(void 0,n),final:E_e.bind(void 0,n)}},$_e=function*(t,e){w_e.isBuffer(e)?yield Vi(e):typeof e=="string"?yield t.encode(e):yield e},k_e=function*(t,e){yield Mt(e)?t.write(e):e},E_e=function*(t){let e=t.end();e!==""&&(yield e)}});import{callbackify as jG}from"node:util";var dO,__,MG,A_e,FG,T_e,zG=y(()=>{dO=jG(async(t,e,r,n)=>{e.currentIterable=t(...r);try{for await(let i of e.currentIterable)n.push(i)}finally{delete e.currentIterable}}),__=async function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=T_e}=e[r];for await(let i of n(t))yield*__(i,e,r+1)},MG=async function*(t){for(let[e,{final:r}]of Object.entries(t))yield*A_e(r,Number(e),t)},A_e=async function*(t,e,r){if(t!==void 0)for await(let n of t())yield*__(n,r,e+1)},FG=jG(async({currentIterable:t},e)=>{if(t!==void 0){await(e?t.throw(e):t.return());return}if(e)throw e}),T_e=function*(t){yield t}});var fO,LG,ea,Jd,O_e,I_e,pO=y(()=>{fO=(t,e,r,n)=>{try{for(let i of t(...e))r.push(i);n()}catch(i){n(i)}},LG=(t,e)=>[...e.flatMap(r=>[...ea(r,t,0)]),...Jd(t)],ea=function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=I_e}=e[r];for(let i of n(t))yield*ea(i,e,r+1)},Jd=function*(t){for(let[e,{final:r}]of Object.entries(t))yield*O_e(r,Number(e),t)},O_e=function*(t,e,r){if(t!==void 0)for(let n of t())yield*ea(n,r,e+1)},I_e=function*(t){yield t}});import{Transform as P_e,getDefaultHighWaterMark as UG}from"node:stream";var mO,v_,qG,b_=y(()=>{dr();g_();NG();uO();zG();pO();mO=({value:t,value:{transform:e,final:r,writableObjectMode:n,readableObjectMode:i},optionName:o},{encoding:s})=>{let a={},c=qG(t,s,o),l=Qs(e),u=Qs(r),d=l?dO.bind(void 0,__,a):fO.bind(void 0,ea),f=l||u?dO.bind(void 0,MG,a):fO.bind(void 0,Jd),p=l||u?FG.bind(void 0,a):void 0;return{stream:new P_e({writableObjectMode:n,writableHighWaterMark:UG(n),readableObjectMode:i,readableHighWaterMark:UG(i),transform(h,g,v){d([h,c,0],this,v)},flush(h){f([c],this,h)},destroy:p})}},v_=(t,e,r,n)=>{let i=e.filter(({type:s})=>s==="generator"),o=n?i.reverse():i;for(let{value:s,optionName:a}of o){let c=qG(s,r,a);t=LG(c,t)}return t},qG=({transform:t,final:e,binary:r,writableObjectMode:n,readableObjectMode:i,preserveNewlines:o},s,a)=>{let c={};return[{transform:RG(n,a)},y_(r,s,n),h_(r,o,n,c),{transform:t,final:e},{transform:CG(i,a)},PG({binary:r,preserveNewlines:o,readableObjectMode:i,state:c})].filter(Boolean)}});var BG,R_e,C_e,D_e,N_e,HG=y(()=>{b_();Br();dr();BG=(t,e)=>{for(let r of R_e(t))C_e(t,r,e)},R_e=t=>new Set(Object.entries(t).filter(([,{direction:e}])=>e==="input").map(([e])=>Number(e))),C_e=(t,e,r)=>{let{stdioItems:n}=t[e],i=n.filter(({contents:a})=>a!==void 0);if(i.length===0)return;if(e!==0){let[{type:a,optionName:c}]=i;throw new TypeError(`Only the \`stdin\` option, not \`${c}\`, can be ${Lo[a]} with synchronous methods.`)}let s=i.map(({contents:a})=>a).map(a=>D_e(a,n));r.input=Dd(s)},D_e=(t,e)=>{let r=v_(t,e,"utf8",!0);return N_e(r),Dd(r)},N_e=t=>{let e=t.find(r=>typeof r!="string"&&!Mt(r));if(e!==void 0)throw new TypeError(`The \`stdin\` option is invalid: when passing objects as input, a transform must be used to serialize them to strings or Uint8Arrays: ${e}.`)}});var S_,j_e,M_e,ZG,GG,F_e,VG,hO=y(()=>{Ks();dr();Sc();jo();S_=({stdioItems:t,encoding:e,verboseInfo:r,fdNumber:n})=>n!=="all"&&bc(r,n)&&!Hr.has(e)&&j_e(n)&&(t.some(({type:i,value:o})=>i==="native"&&M_e.has(o))||t.every(({type:i})=>pn.has(i))),j_e=t=>t===1||t===2,M_e=new Set(["pipe","overlapped"]),ZG=async(t,e,r,n)=>{for await(let i of t)F_e(e)||VG(i,r,n)},GG=(t,e,r)=>{for(let n of t)VG(n,e,r)},F_e=t=>t._readableState.pipes.length>0,VG=(t,e,r)=>{let n=by(t);li({type:"output",verboseMessage:n,fdNumber:e,verboseInfo:r})}});import{writeFileSync as z_e,appendFileSync as L_e}from"node:fs";var WG,U_e,q_e,B_e,H_e,Z_e,KG=y(()=>{hO();b_();g_();Br();dr();Xs();WG=({fileDescriptors:t,syncResult:{output:e},options:r,isMaxBuffer:n,verboseInfo:i})=>{if(e===null)return{output:Array.from({length:3})};let o={},s=new Set([]);return{output:e.map((c,l)=>U_e({result:c,fileDescriptors:t,fdNumber:l,state:o,outputFiles:s,isMaxBuffer:n,verboseInfo:i},r)),...o}},U_e=({result:t,fileDescriptors:e,fdNumber:r,state:n,outputFiles:i,isMaxBuffer:o,verboseInfo:s},{buffer:a,encoding:c,lines:l,stripFinalNewline:u,maxBuffer:d})=>{if(t===null)return;let f=CZ(t,o,d),p=Vi(f),{stdioItems:m,objectMode:h}=e[r],g=q_e([p],m,c,n),{serializedResult:v,finalResult:_=v}=B_e({chunks:g,objectMode:h,encoding:c,lines:l,stripFinalNewline:u,fdNumber:r});H_e({serializedResult:v,fdNumber:r,state:n,verboseInfo:s,encoding:c,stdioItems:m,objectMode:h});let S=a[r]?_:void 0;try{return n.error===void 0&&Z_e(v,m,i),S}catch(w){return n.error=w,S}},q_e=(t,e,r,n)=>{try{return v_(t,e,r,!1)}catch(i){return n.error=i,t}},B_e=({chunks:t,objectMode:e,encoding:r,lines:n,stripFinalNewline:i,fdNumber:o})=>{if(e)return{serializedResult:t};if(r==="buffer")return{serializedResult:Dd(t)};let s=x6(t,r);return n[o]?{serializedResult:s,finalResult:lO(s,!i[o],e)}:{serializedResult:s}},H_e=({serializedResult:t,fdNumber:e,state:r,verboseInfo:n,encoding:i,stdioItems:o,objectMode:s})=>{if(!S_({stdioItems:o,encoding:i,verboseInfo:n,fdNumber:e}))return;let a=lO(t,!1,s);try{GG(a,e,n)}catch(c){r.error??=c}},Z_e=(t,e,r)=>{for(let{path:n,append:i}of e.filter(({type:o})=>f_.has(o))){let o=typeof n=="string"?n:n.toString();i||r.has(o)?L_e(n,t):(r.add(o),z_e(n,t))}}});var JG,YG=y(()=>{Br();Kd();JG=([,t,e],r)=>{if(r.all)return t===void 0?e:e===void 0?t:Array.isArray(t)?Array.isArray(e)?[...t,...e]:[...t,Xi(e,r,"all")]:Array.isArray(e)?[Xi(t,r,"all"),...e]:Mt(t)&&Mt(e)?iT([t,e]):`${t}${e}`}});import{once as gO}from"node:events";var XG,G_e,QG,e9,V_e,yO,_O=y(()=>{Vs();XG=async(t,e)=>{let[r,n]=await G_e(t);return e.isForcefullyTerminated??=!1,[r,n]},G_e=async t=>{let[e,r]=await Promise.allSettled([gO(t,"spawn"),gO(t,"exit")]);return e.status==="rejected"?[]:r.status==="rejected"?QG(t):r.value},QG=async t=>{try{return await gO(t,"exit")}catch{return QG(t)}},e9=async t=>{let[e,r]=await t;if(!V_e(e,r)&&yO(e,r))throw new Mn;return[e,r]},V_e=(t,e)=>t===void 0&&e===void 0,yO=(t,e)=>t!==0||e!==null});var t9,W_e,r9=y(()=>{Vs();Xs();_O();t9=({error:t,status:e,signal:r,output:n},{maxBuffer:i})=>{let o=W_e(t,e,r),s=o?.code==="ETIMEDOUT",a=RZ(o,n,i);return{resultError:o,exitCode:e,signal:r,timedOut:s,isMaxBuffer:a}},W_e=(t,e,r)=>t!==void 0?t:yO(e,r)?new Mn:void 0});import{spawnSync as K_e}from"node:child_process";var n9,J_e,Y_e,X_e,w_,Q_e,eve,tve,rve,i9=y(()=>{pT();UT();qT();Wd();l_();TG();Kd();HG();KG();Xs();YG();r9();n9=(t,e,r)=>{let{file:n,commandArguments:i,command:o,escapedCommand:s,startTime:a,verboseInfo:c,options:l,fileDescriptors:u}=J_e(t,e,r),d=Q_e({file:n,commandArguments:i,options:l,command:o,escapedCommand:s,verboseInfo:c,fileDescriptors:u,startTime:a});return Rc(d,c,l)},J_e=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:o,verboseInfo:s}=xy(t,e,r),a=Y_e(r),{file:c,commandArguments:l,options:u}=Jy(t,e,a);X_e(u);let d=EG(u,s);return{file:c,commandArguments:l,command:n,escapedCommand:i,startTime:o,verboseInfo:s,options:u,fileDescriptors:d}},Y_e=t=>t.node&&!t.ipc?{...t,ipc:!1}:t,X_e=({ipc:t,ipcInput:e,detached:r,cancelSignal:n})=>{e&&w_("ipcInput"),t&&w_("ipc: true"),r&&w_("detached: true"),n&&w_("cancelSignal")},w_=t=>{throw new TypeError(`The "${t}" option cannot be used with synchronous methods.`)},Q_e=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,verboseInfo:o,fileDescriptors:s,startTime:a})=>{let c=eve({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:s,startTime:a});if(c.failed)return c;let{resultError:l,exitCode:u,signal:d,timedOut:f,isMaxBuffer:p}=t9(c,r),{output:m,error:h=l}=WG({fileDescriptors:s,syncResult:c,options:r,isMaxBuffer:p,verboseInfo:o}),g=m.map((_,S)=>Xi(_,r,S)),v=Xi(JG(m,r),r,"all");return rve({error:h,exitCode:u,signal:d,timedOut:f,isMaxBuffer:p,stdio:g,all:v,options:r,command:n,escapedCommand:i,startTime:a})},eve=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:o,startTime:s})=>{try{BG(o,r);let a=tve(r);return K_e(...Yy(t,e,a))}catch(a){return Pc({error:a,command:n,escapedCommand:i,fileDescriptors:o,options:r,startTime:s,isSync:!0})}},tve=({encoding:t,maxBuffer:e,...r})=>({...r,encoding:"buffer",maxBuffer:a_(e)}),rve=({error:t,exitCode:e,signal:r,timedOut:n,isMaxBuffer:i,stdio:o,all:s,options:a,command:c,escapedCommand:l,startTime:u})=>t===void 0?c_({command:c,escapedCommand:l,stdio:o,all:s,ipcOutput:[],options:a,startTime:u}):Vd({error:t,command:c,escapedCommand:l,timedOut:n,isCanceled:!1,isGracefullyCanceled:!1,isMaxBuffer:i,isForcefullyTerminated:!1,exitCode:e,signal:r,stdio:o,all:s,ipcOutput:[],options:a,startTime:u,isSync:!0})});import{once as vO,on as nve}from"node:events";var o9,ive,ove,sve,ave,s9=y(()=>{Ec();qd();Ud();o9=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0,filter:o}={})=>($c({methodName:"getOneMessage",isSubprocess:r,ipc:n,isConnected:By(t)}),ive({anyProcess:t,channel:e,isSubprocess:r,filter:o,reference:i})),ive=async({anyProcess:t,channel:e,isSubprocess:r,filter:n,reference:i})=>{jy(e,i);let o=zo(t,e,r),s=new AbortController;try{return await Promise.race([ove(o,n,s),sve(o,r,s),ave(o,r,s)])}catch(a){throw kc(t),a}finally{s.abort(),My(e,i)}},ove=async(t,e,{signal:r})=>{if(e===void 0){let[n]=await vO(t,"message",{signal:r});return n}for await(let[n]of nve(t,"message",{signal:r}))if(e(n))return n},sve=async(t,e,{signal:r})=>{await vO(t,"disconnect",{signal:r}),yH(e)},ave=async(t,e,{signal:r})=>{let[n]=await vO(t,"strict:error",{signal:r});throw Ry(n,e)}});import{once as c9,on as cve}from"node:events";var l9,bO,lve,uve,dve,a9,SO=y(()=>{Ec();qd();Ud();l9=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0}={})=>bO({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:!r,reference:i}),bO=({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:i,reference:o})=>{$c({methodName:"getEachMessage",isSubprocess:r,ipc:n,isConnected:By(t)}),jy(e,o);let s=zo(t,e,r),a=new AbortController,c={};return lve(t,s,a),uve({ipcEmitter:s,isSubprocess:r,controller:a,state:c}),dve({anyProcess:t,channel:e,ipcEmitter:s,isSubprocess:r,shouldAwait:i,controller:a,state:c,reference:o})},lve=async(t,e,r)=>{try{await c9(e,"disconnect",{signal:r.signal}),r.abort()}catch{}},uve=async({ipcEmitter:t,isSubprocess:e,controller:r,state:n})=>{try{let[i]=await c9(t,"strict:error",{signal:r.signal});n.error=Ry(i,e),r.abort()}catch{}},dve=async function*({anyProcess:t,channel:e,ipcEmitter:r,isSubprocess:n,shouldAwait:i,controller:o,state:s,reference:a}){try{for await(let[c]of cve(r,"message",{signal:o.signal}))a9(s),yield c}catch{a9(s)}finally{o.abort(),My(e,a),n||kc(t),i&&await t}},a9=({error:t})=>{if(t)throw t}});import u9 from"node:process";var d9,f9,p9,wO=y(()=>{Wy();s9();SO();Uy();d9=(t,{ipc:e})=>{Object.assign(t,p9(t,!1,e))},f9=()=>{let t=u9,e=!0,r=u9.channel!==void 0;return{...p9(t,e,r),getCancelSignal:ZH.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})}},p9=(t,e,r)=>({sendMessage:Vy.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getOneMessage:o9.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getEachMessage:l9.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})})});import{ChildProcess as fve}from"node:child_process";import{PassThrough as pve,Readable as mve,Writable as hve,Duplex as gve}from"node:stream";var m9,yve,Yd,_ve,vve,bve,Sve,h9=y(()=>{m_();Wd();l_();m9=({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:o,verboseInfo:s})=>{sO(n);let a=new fve;yve(a,n),Object.assign(a,{readable:_ve,writable:vve,duplex:bve});let c=Pc({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:o,isSync:!1}),l=Sve(c,s,i);return{subprocess:a,promise:l}},yve=(t,e)=>{let r=Yd(),n=Yd(),i=Yd(),o=Array.from({length:e.length-3},Yd),s=Yd(),a=[r,n,i,...o];Object.assign(t,{stdin:r,stdout:n,stderr:i,all:s,stdio:a})},Yd=()=>{let t=new pve;return t.end(),t},_ve=()=>new mve({read(){}}),vve=()=>new hve({write(){}}),bve=()=>new gve({read(){},write(){}}),Sve=async(t,e,r)=>Rc(t,e,r)});import{createReadStream as g9,createWriteStream as y9}from"node:fs";import{Buffer as wve}from"node:buffer";import{Readable as Xd,Writable as xve,Duplex as $ve}from"node:stream";var v9,Qd,_9,kve,b9=y(()=>{b_();m_();dr();v9=(t,e)=>p_(kve,t,e,!1),Qd=({type:t,optionName:e})=>{throw new TypeError(`The \`${e}\` option cannot be ${Lo[t]}.`)},_9={fileNumber:Qd,generator:mO,asyncGenerator:mO,nodeStream:({value:t})=>({stream:t}),webTransform({value:{transform:t,writableObjectMode:e,readableObjectMode:r}}){let n=e||r;return{stream:$ve.fromWeb(t,{objectMode:n})}},duplex:({value:{transform:t}})=>({stream:t}),native(){}},kve={input:{..._9,fileUrl:({value:t})=>({stream:g9(t)}),filePath:({value:{file:t}})=>({stream:g9(t)}),webStream:({value:t})=>({stream:Xd.fromWeb(t)}),iterable:({value:t})=>({stream:Xd.from(t)}),asyncIterable:({value:t})=>({stream:Xd.from(t)}),string:({value:t})=>({stream:Xd.from(t)}),uint8Array:({value:t})=>({stream:Xd.from(wve.from(t))})},output:{..._9,fileUrl:({value:t})=>({stream:y9(t)}),filePath:({value:{file:t,append:e}})=>({stream:y9(t,e?{flags:"a"}:{})}),webStream:({value:t})=>({stream:xve.fromWeb(t)}),iterable:Qd,asyncIterable:Qd,string:Qd,uint8Array:Qd}}});import{on as Eve,once as S9}from"node:events";import{PassThrough as Ave,getDefaultHighWaterMark as Tve}from"node:stream";import{finished as $9}from"node:stream/promises";function ta(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let i of t)$O(i);let e=t.some(({readableObjectMode:i})=>i),r=Ove(t,e),n=new xO({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return n}var Ove,xO,Ive,Pve,Rve,$O,Cve,Dve,Nve,jve,Mve,k9,E9,kO,A9,Fve,x_,w9,x9,$_=y(()=>{Ove=(t,e)=>{if(t.length===0)return Tve(e);let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},xO=class extends Ave{#t=new Set([]);#r=new Set([]);#e=new Set([]);#n;#o=Symbol("unpipe");#i=new WeakMap;add(e){if($O(e),this.#t.has(e))return;this.#t.add(e),this.#n??=Ive(this,this.#t,this.#o);let r=Cve({passThroughStream:this,stream:e,streams:this.#t,ended:this.#r,aborted:this.#e,onFinished:this.#n,unpipeEvent:this.#o});this.#i.set(e,r),e.pipe(this,{end:!1})}async remove(e){if($O(e),!this.#t.has(e))return!1;let r=this.#i.get(e);return r===void 0?!1:(this.#i.delete(e),e.unpipe(this),await r,!0)}},Ive=async(t,e,r)=>{x_(t,w9);let n=new AbortController;try{await Promise.race([Pve(t,n),Rve(t,e,r,n)])}finally{n.abort(),x_(t,-w9)}},Pve=async(t,{signal:e})=>{try{await $9(t,{signal:e,cleanup:!0})}catch(r){throw k9(t,r),r}},Rve=async(t,e,r,{signal:n})=>{for await(let[i]of Eve(t,"unpipe",{signal:n}))e.has(i)&&i.emit(r)},$O=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},Cve=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:o,unpipeEvent:s})=>{x_(t,x9);let a=new AbortController;try{await Promise.race([Dve(o,e,a),Nve({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:a}),jve({stream:e,streams:r,ended:n,aborted:i,unpipeEvent:s,controller:a})])}finally{a.abort(),x_(t,-x9)}r.size>0&&r.size===n.size+i.size&&(n.size===0&&i.size>0?kO(t):Mve(t))},Dve=async(t,e,{signal:r})=>{try{await t,r.aborted||kO(e)}catch(n){r.aborted||k9(e,n)}},Nve=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:o}})=>{try{await $9(e,{signal:o,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(s){if(o.aborted||!r.has(e))return;E9(s)?i.add(e):A9(t,s)}},jve=async({stream:t,streams:e,ended:r,aborted:n,unpipeEvent:i,controller:{signal:o}})=>{if(await S9(t,i,{signal:o}),!t.readable)return S9(o,"abort",{signal:o});e.delete(t),r.delete(t),n.delete(t)},Mve=t=>{t.writable&&t.end()},k9=(t,e)=>{E9(e)?kO(t):A9(t,e)},E9=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",kO=t=>{(t.readable||t.writable)&&t.destroy()},A9=(t,e)=>{t.destroyed||(t.once("error",Fve),t.destroy(e))},Fve=()=>{},x_=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},w9=2,x9=1});import{finished as T9}from"node:stream/promises";var Dc,zve,EO,Lve,AO,k_=y(()=>{Wi();Dc=(t,e)=>{t.pipe(e),zve(t,e),Lve(t,e)},zve=async(t,e)=>{if(!(jn(t)||jn(e))){try{await T9(t,{cleanup:!0,readable:!0,writable:!1})}catch{}EO(e)}},EO=t=>{t.writable&&t.end()},Lve=async(t,e)=>{if(!(jn(t)||jn(e))){try{await T9(e,{cleanup:!0,readable:!1,writable:!0})}catch{}AO(t)}},AO=t=>{t.readable&&t.destroy()}});var O9,Uve,qve,Bve,Hve,Zve,I9=y(()=>{$_();Wi();Ny();dr();k_();O9=(t,e,r)=>{let n=new Map;for(let[i,{stdioItems:o,direction:s}]of Object.entries(e)){for(let{stream:a}of o.filter(({type:c})=>pn.has(c)))Uve(t,a,s,i);for(let{stream:a}of o.filter(({type:c})=>!pn.has(c)))Bve({subprocess:t,stream:a,direction:s,fdNumber:i,pipeGroups:n,controller:r})}for(let[i,o]of n.entries()){let s=o.length===1?o[0]:ta(o);Dc(s,i)}},Uve=(t,e,r,n)=>{r==="output"?Dc(t.stdio[n],e):Dc(e,t.stdio[n]);let i=qve[n];i!==void 0&&(t[i]=e),t.stdio[n]=e},qve=["stdin","stdout","stderr"],Bve=({subprocess:t,stream:e,direction:r,fdNumber:n,pipeGroups:i,controller:o})=>{if(e===void 0)return;Hve(e,o);let[s,a]=r==="output"?[e,t.stdio[n]]:[t.stdio[n],e],c=i.get(s)??[];i.set(s,[...c,a])},Hve=(t,{signal:e})=>{jn(t)&&Ws(t,Zve,e)},Zve=2});var ra,P9=y(()=>{ra=[];ra.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&ra.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&ra.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT")});var E_,TO,OO,Gve,IO,A_,Vve,PO,RO,CO,R9,ZXe,GXe,C9=y(()=>{P9();E_=t=>!!t&&typeof t=="object"&&typeof t.removeListener=="function"&&typeof t.emit=="function"&&typeof t.reallyExit=="function"&&typeof t.listeners=="function"&&typeof t.kill=="function"&&typeof t.pid=="number"&&typeof t.on=="function",TO=Symbol.for("signal-exit emitter"),OO=globalThis,Gve=Object.defineProperty.bind(Object),IO=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(OO[TO])return OO[TO];Gve(OO,TO,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(e,r){this.listeners[e].push(r)}removeListener(e,r){let n=this.listeners[e],i=n.indexOf(r);i!==-1&&(i===0&&n.length===1?n.length=0:n.splice(i,1))}emit(e,r,n){if(this.emitted[e])return!1;this.emitted[e]=!0;let i=!1;for(let o of this.listeners[e])i=o(r,n)===!0||i;return e==="exit"&&(i=this.emit("afterExit",r,n)||i),i}},A_=class{},Vve=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),PO=class extends A_{onExit(){return()=>{}}load(){}unload(){}},RO=class extends A_{#t=CO.platform==="win32"?"SIGINT":"SIGHUP";#r=new IO;#e;#n;#o;#i={};#s=!1;constructor(e){super(),this.#e=e,this.#i={};for(let r of ra)this.#i[r]=()=>{let n=this.#e.listeners(r),{count:i}=this.#r,o=e;if(typeof o.__signal_exit_emitter__=="object"&&typeof o.__signal_exit_emitter__.count=="number"&&(i+=o.__signal_exit_emitter__.count),n.length===i){this.unload();let s=this.#r.emit("exit",null,r),a=r==="SIGHUP"?this.#t:r;s||e.kill(e.pid,a)}};this.#o=e.reallyExit,this.#n=e.emit}onExit(e,r){if(!E_(this.#e))return()=>{};this.#s===!1&&this.load();let n=r?.alwaysLast?"afterExit":"exit";return this.#r.on(n,e),()=>{this.#r.removeListener(n,e),this.#r.listeners.exit.length===0&&this.#r.listeners.afterExit.length===0&&this.unload()}}load(){if(!this.#s){this.#s=!0,this.#r.count+=1;for(let e of ra)try{let r=this.#i[e];r&&this.#e.on(e,r)}catch{}this.#e.emit=(e,...r)=>this.#c(e,...r),this.#e.reallyExit=e=>this.#a(e)}}unload(){this.#s&&(this.#s=!1,ra.forEach(e=>{let r=this.#i[e];if(!r)throw new Error("Listener not defined for signal: "+e);try{this.#e.removeListener(e,r)}catch{}}),this.#e.emit=this.#n,this.#e.reallyExit=this.#o,this.#r.count-=1)}#a(e){return E_(this.#e)?(this.#e.exitCode=e||0,this.#r.emit("exit",this.#e.exitCode,null),this.#o.call(this.#e,this.#e.exitCode)):0}#c(e,...r){let n=this.#n;if(e==="exit"&&E_(this.#e)){typeof r[0]=="number"&&(this.#e.exitCode=r[0]);let i=n.call(this.#e,e,...r);return this.#r.emit("exit",this.#e.exitCode,null),i}else return n.call(this.#e,e,...r)}},CO=globalThis.process,{onExit:R9,load:ZXe,unload:GXe}=Vve(E_(CO)?new RO(CO):new PO)});import{addAbortListener as Wve}from"node:events";var D9,N9=y(()=>{C9();D9=(t,{cleanup:e,detached:r},{signal:n})=>{if(!e||r)return;let i=R9(()=>{t.kill()});Wve(n,()=>{i()})}});var M9,Kve,Jve,j9,Yve,F9=y(()=>{nT();wy();Fo();_c();M9=({source:t,sourcePromise:e,boundOptions:r,createNested:n},...i)=>{let o=Sy(),{destination:s,destinationStream:a,destinationError:c,from:l,unpipeSignal:u}=Kve(r,n,i),{sourceStream:d,sourceError:f}=Yve(t,l),{options:p,fileDescriptors:m}=di.get(t);return{sourcePromise:e,sourceStream:d,sourceOptions:p,sourceError:f,destination:s,destinationStream:a,destinationError:c,unpipeSignal:u,fileDescriptors:m,startTime:o}},Kve=(t,e,r)=>{try{let{destination:n,pipeOptions:{from:i,to:o,unpipeSignal:s}={}}=Jve(t,e,...r),a=Dy(n,o);return{destination:n,destinationStream:a,from:i,unpipeSignal:s}}catch(n){return{destinationError:n}}},Jve=(t,e,r,...n)=>{if(Array.isArray(r))return{destination:e(j9,t)(r,...n),pipeOptions:t};if(typeof r=="string"||r instanceof URL||tT(r)){if(Object.keys(t).length>0)throw new TypeError('Please use .pipe("file", ..., options) or .pipe(execa("file", ..., options)) instead of .pipe(options)("file", ...).');let[i,o,s]=uy(r,...n);return{destination:e(j9)(i,o,s),pipeOptions:s}}if(di.has(r)){if(Object.keys(t).length>0)throw new TypeError("Please use .pipe(options)`command` or .pipe($(options)`command`) instead of .pipe(options)($`command`).");return{destination:r,pipeOptions:n[0]}}throw new TypeError(`The first argument must be a template string, an options object, or an Execa subprocess: ${r}`)},j9=({options:t})=>({options:{...t,stdin:"pipe",piped:!0}}),Yve=(t,e)=>{try{return{sourceStream:Tc(t,e)}}catch(r){return{sourceError:r}}}});var L9,Xve,DO,z9,NO=y(()=>{Wd();k_();L9=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n,fileDescriptors:i,sourceOptions:o,startTime:s})=>{let a=Xve({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n});if(a!==void 0)throw DO({error:a,fileDescriptors:i,sourceOptions:o,startTime:s})},Xve=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n})=>{if(e!==void 0&&n!==void 0)return n;if(n!==void 0)return AO(t),n;if(e!==void 0)return EO(r),e},DO=({error:t,fileDescriptors:e,sourceOptions:r,startTime:n})=>Pc({error:t,command:z9,escapedCommand:z9,fileDescriptors:e,options:r,startTime:n,isSync:!1}),z9="source.pipe(destination)"});var U9,q9=y(()=>{U9=async t=>{let[{status:e,reason:r,value:n=r},{status:i,reason:o,value:s=o}]=await t;if(s.pipedFrom.includes(n)||s.pipedFrom.push(n),i==="rejected")throw s;if(e==="rejected")throw n;return s}});import{finished as Qve}from"node:stream/promises";var B9,ebe,tbe,rbe,T_,nbe,ibe,H9=y(()=>{$_();Ny();k_();B9=(t,e,r)=>{let n=T_.has(e)?tbe(t,e):ebe(t,e);return Ws(t,nbe,r.signal),Ws(e,ibe,r.signal),rbe(e),n},ebe=(t,e)=>{let r=ta([t]);return Dc(r,e),T_.set(e,r),r},tbe=(t,e)=>{let r=T_.get(e);return r.add(t),r},rbe=async t=>{try{await Qve(t,{cleanup:!0,readable:!1,writable:!0})}catch{}T_.delete(t)},T_=new WeakMap,nbe=2,ibe=1});import{aborted as obe}from"node:util";var Z9,sbe,G9=y(()=>{NO();Z9=(t,e)=>t===void 0?[]:[sbe(t,e)],sbe=async(t,{sourceStream:e,mergedStream:r,fileDescriptors:n,sourceOptions:i,startTime:o})=>{await obe(t,e),await r.remove(e);let s=new Error("Pipe canceled by `unpipeSignal` option.");throw DO({error:s,fileDescriptors:n,sourceOptions:i,startTime:o})}});var O_,abe,cbe,V9=y(()=>{Gi();F9();NO();q9();H9();G9();O_=(t,...e)=>{if(kt(e[0]))return O_.bind(void 0,{...t,boundOptions:{...t.boundOptions,...e[0]}});let{destination:r,...n}=M9(t,...e),i=abe({...n,destination:r});return i.pipe=O_.bind(void 0,{...t,source:r,sourcePromise:i,boundOptions:{}}),i},abe=async({sourcePromise:t,sourceStream:e,sourceOptions:r,sourceError:n,destination:i,destinationStream:o,destinationError:s,unpipeSignal:a,fileDescriptors:c,startTime:l})=>{let u=cbe(t,i);L9({sourceStream:e,sourceError:n,destinationStream:o,destinationError:s,fileDescriptors:c,sourceOptions:r,startTime:l});let d=new AbortController;try{let f=B9(e,o,d);return await Promise.race([U9(u),...Z9(a,{sourceStream:e,mergedStream:f,sourceOptions:r,fileDescriptors:c,startTime:l})])}finally{d.abort()}},cbe=(t,e)=>Promise.allSettled([t,e])});import{on as lbe}from"node:events";import{getDefaultHighWaterMark as ube}from"node:stream";var I_,dbe,jO,fbe,K9,MO,W9,pbe,mbe,P_=y(()=>{uO();g_();pO();I_=({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:n,encoding:i,preserveNewlines:o})=>{let s=new AbortController;return dbe(e,s),K9({stream:t,controller:s,binary:r,shouldEncode:!t.readableObjectMode&&n,encoding:i,shouldSplit:!t.readableObjectMode,preserveNewlines:o})},dbe=async(t,e)=>{try{await t}catch{}finally{e.abort()}},jO=({stream:t,onStreamEnd:e,lines:r,encoding:n,stripFinalNewline:i,allMixed:o})=>{let s=new AbortController;fbe(e,s,t);let a=t.readableObjectMode&&!o;return K9({stream:t,controller:s,binary:n==="buffer",shouldEncode:!a,encoding:n,shouldSplit:!a&&r,preserveNewlines:!i})},fbe=async(t,e,r)=>{try{await t}catch{r.destroy()}finally{e.abort()}},K9=({stream:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:o,preserveNewlines:s})=>{let a=lbe(t,"data",{signal:e.signal,highWaterMark:W9,highWatermark:W9});return pbe({onStdoutChunk:a,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:o,preserveNewlines:s})},MO=ube(!0),W9=MO,pbe=async function*({onStdoutChunk:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:o,preserveNewlines:s}){let a=mbe({binary:r,shouldEncode:n,encoding:i,shouldSplit:o,preserveNewlines:s});try{for await(let[c]of t)yield*ea(c,a,0)}catch(c){if(!e.signal.aborted)throw c}finally{yield*Jd(a)}},mbe=({binary:t,shouldEncode:e,encoding:r,shouldSplit:n,preserveNewlines:i})=>[y_(t,r,!e),h_(t,i,!n,{})].filter(Boolean)});import{setImmediate as hbe}from"node:timers/promises";var J9,gbe,ybe,_be,FO,Y9,zO=y(()=>{s_();Br();hO();P_();Xs();Kd();J9=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,buffer:i,maxBuffer:o,lines:s,allMixed:a,stripFinalNewline:c,verboseInfo:l,streamInfo:u})=>{let d=gbe({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:a,verboseInfo:l,streamInfo:u});if(!i){await Promise.all([ybe(t),d]);return}let f=aO(c,r),p=jO({stream:t,onStreamEnd:e,lines:s,encoding:n,stripFinalNewline:f,allMixed:a}),[m]=await Promise.all([_be({stream:t,iterable:p,fdNumber:r,encoding:n,maxBuffer:o,lines:s}),d]);return m},gbe=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:i,verboseInfo:o,streamInfo:{fileDescriptors:s}})=>{if(!S_({stdioItems:s[r]?.stdioItems,encoding:n,verboseInfo:o,fdNumber:r}))return;let a=jO({stream:t,onStreamEnd:e,lines:!0,encoding:n,stripFinalNewline:!0,allMixed:i});await ZG(a,t,r,o)},ybe=async t=>{await hbe(),t.readableFlowing===null&&t.resume()},_be=async({stream:t,stream:{readableObjectMode:e},iterable:r,fdNumber:n,encoding:i,maxBuffer:o,lines:s})=>{try{return e||s?await r_(r,{maxBuffer:o}):i==="buffer"?new Uint8Array(await n_(r,{maxBuffer:o})):await o_(r,{maxBuffer:o})}catch(a){return Y9(OZ({error:a,stream:t,readableObjectMode:e,lines:s,encoding:i,fdNumber:n}))}},FO=async t=>{try{return await t}catch(e){return Y9(e)}},Y9=({bufferedData:t})=>S6(t)?new Uint8Array(t):t});import{finished as vbe}from"node:stream/promises";var ef,bbe,Sbe,wbe,xbe,$be,LO,R_,X9,C_=y(()=>{ef=async(t,e,r,{isSameDirection:n,stopOnExit:i=!1}={})=>{let o=bbe(t,r),s=new AbortController;try{await Promise.race([...i?[r.exitPromise]:[],vbe(t,{cleanup:!0,signal:s.signal})])}catch(a){o.stdinCleanedUp||xbe(a,e,r,n)}finally{s.abort()}},bbe=(t,{originalStreams:[e],subprocess:r})=>{let n={stdinCleanedUp:!1};return t===e&&Sbe(t,r,n),n},Sbe=(t,e,r)=>{let{_destroy:n}=t;t._destroy=(...i)=>{wbe(e,r),n.call(t,...i)}},wbe=({exitCode:t,signalCode:e},r)=>{(t!==null||e!==null)&&(r.stdinCleanedUp=!0)},xbe=(t,e,r,n)=>{if(!$be(t,e,r,n))throw t},$be=(t,e,r,n=!0)=>r.propagating?X9(t)||R_(t):(r.propagating=!0,LO(r,e)===n?X9(t):R_(t)),LO=({fileDescriptors:t},e)=>e!=="all"&&t[e].direction==="input",R_=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",X9=t=>t?.code==="EPIPE"});var Q9,UO,qO=y(()=>{zO();C_();Q9=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:o,verboseInfo:s,streamInfo:a})=>t.stdio.map((c,l)=>UO({stream:c,fdNumber:l,encoding:e,buffer:r[l],maxBuffer:n[l],lines:i[l],allMixed:!1,stripFinalNewline:o,verboseInfo:s,streamInfo:a})),UO=async({stream:t,fdNumber:e,encoding:r,buffer:n,maxBuffer:i,lines:o,allMixed:s,stripFinalNewline:a,verboseInfo:c,streamInfo:l})=>{if(!t)return;let u=ef(t,e,l);if(LO(l,e)){await u;return}let[d]=await Promise.all([J9({stream:t,onStreamEnd:u,fdNumber:e,encoding:r,buffer:n,maxBuffer:i,lines:o,allMixed:s,stripFinalNewline:a,verboseInfo:c,streamInfo:l}),u]);return d}});var eV,tV,kbe,Ebe,BO=y(()=>{$_();qO();eV=({stdout:t,stderr:e},{all:r})=>r&&(t||e)?ta([t,e].filter(Boolean)):void 0,tV=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:o,verboseInfo:s,streamInfo:a})=>UO({...kbe(t,r),fdNumber:"all",encoding:e,maxBuffer:n[1]+n[2],lines:i[1]||i[2],allMixed:Ebe(t),stripFinalNewline:o,verboseInfo:s,streamInfo:a}),kbe=({stdout:t,stderr:e,all:r},[,n,i])=>{let o=n||i;return o?n?i?{stream:r,buffer:o}:{stream:t,buffer:o}:{stream:e,buffer:o}:{stream:r,buffer:o}},Ebe=({all:t,stdout:e,stderr:r})=>t&&e&&r&&e.readableObjectMode!==r.readableObjectMode});var rV,nV,iV=y(()=>{Sc();jo();rV=t=>bc(t,"ipc"),nV=(t,e)=>{let r=by(t);li({type:"ipc",verboseMessage:r,fdNumber:"ipc",verboseInfo:e})}});var oV,sV,aV=y(()=>{Xs();iV();Ji();SO();oV=async({subprocess:t,buffer:e,maxBuffer:r,ipc:n,ipcOutput:i,verboseInfo:o})=>{if(!n)return i;let s=rV(o),a=Ki(e,"ipc"),c=Ki(r,"ipc");for await(let l of bO({anyProcess:t,channel:t.channel,isSubprocess:!1,ipc:n,shouldAwait:!1,reference:!0}))a&&(IZ(t,i,c),i.push(l)),s&&nV(l,o);return i},sV=async(t,e)=>(await Promise.allSettled([t]),e)});import{once as Abe}from"node:events";var cV,Tbe,Obe,Ibe,lV=y(()=>{Ys();jT();AT();NT();Wi();dr();zO();aV();FT();BO();qO();_O();C_();cV=async({subprocess:t,options:{encoding:e,buffer:r,maxBuffer:n,lines:i,timeoutDuration:o,cancelSignal:s,gracefulCancel:a,forceKillAfterDelay:c,stripFinalNewline:l,ipc:u,ipcInput:d},context:f,verboseInfo:p,fileDescriptors:m,originalStreams:h,onInternalError:g,controller:v})=>{let _=XG(t,f),S={originalStreams:h,fileDescriptors:m,subprocess:t,exitPromise:_,propagating:!1},w=Q9({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:l,verboseInfo:p,streamInfo:S}),x=tV({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:l,verboseInfo:p,streamInfo:S}),I=[],T=oV({subprocess:t,buffer:r,maxBuffer:n,ipc:u,ipcOutput:I,verboseInfo:p}),k=Tbe(h,t,S),C=Obe(m,S);try{return await Promise.race([Promise.all([{},e9(_),Promise.all(w),x,T,tZ(t,d),...k,...C]),g,Ibe(t,v),...JH(t,o,f,v),...gH({subprocess:t,cancelSignal:s,gracefulCancel:a,context:f,controller:v}),...WH({subprocess:t,cancelSignal:s,gracefulCancel:a,forceKillAfterDelay:c,context:f,controller:v})])}catch(E){return f.terminationReason??="other",Promise.all([{error:E},_,Promise.all(w.map(Z=>FO(Z))),FO(x),sV(T,I),Promise.allSettled(k),Promise.allSettled(C)])}},Tbe=(t,e,r)=>t.map((n,i)=>n===e.stdio[i]?void 0:ef(n,i,r)),Obe=(t,e)=>t.flatMap(({stdioItems:r},n)=>r.filter(({value:i,stream:o=i})=>zn(o,{checkOpen:!1})&&!jn(o)).map(({type:i,value:o,stream:s=o})=>ef(s,n,e,{isSameDirection:pn.has(i),stopOnExit:i==="native"}))),Ibe=async(t,{signal:e})=>{let[r]=await Abe(t,"error",{signal:e});throw r}});var uV,tf,Nc,D_=y(()=>{Ac();uV=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),tf=(t,e,r)=>{let n=t[r];n.has(e)||n.set(e,[]);let i=n.get(e),o=ui();return i.push(o),{resolve:o.resolve.bind(o),promises:i}},Nc=async({resolve:t,promises:e},r)=>{t();let[n]=await Promise.race([Promise.allSettled([!0,r]),Promise.all([!1,...e])]);return!n}});import{finished as dV}from"node:stream/promises";var HO,fV,ZO,GO,N_,j_,VO=y(()=>{C_();HO=async t=>{if(t!==void 0)try{await ZO(t)}catch{}},fV=async t=>{if(t!==void 0)try{await GO(t)}catch{}},ZO=async t=>{await dV(t,{cleanup:!0,readable:!1,writable:!0})},GO=async t=>{await dV(t,{cleanup:!0,readable:!0,writable:!1})},N_=async(t,e)=>{if(await t,e)throw e},j_=(t,e,r)=>{r&&!R_(r)?t.destroy(r):e&&t.destroy()}});import{Readable as Pbe}from"node:stream";import{callbackify as Rbe}from"node:util";var pV,WO,KO,JO,Cbe,YO,XO,mV,QO=y(()=>{Ks();Fo();P_();Ac();D_();VO();pV=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,binary:i=!0,preserveNewlines:o=!0}={})=>{let s=i||Hr.has(r),{subprocessStdout:a,waitReadableDestroy:c}=WO(t,n,e),{readableEncoding:l,readableObjectMode:u,readableHighWaterMark:d}=KO(a,s),{read:f,onStdoutDataDone:p}=JO({subprocessStdout:a,subprocess:t,binary:s,encoding:r,preserveNewlines:o}),m=new Pbe({read:f,destroy:Rbe(XO.bind(void 0,{subprocessStdout:a,subprocess:t,waitReadableDestroy:c})),highWaterMark:d,objectMode:u,encoding:l});return YO({subprocessStdout:a,onStdoutDataDone:p,readable:m,subprocess:t}),m},WO=(t,e,r)=>{let n=Tc(t,e),i=tf(r,n,"readableDestroy");return{subprocessStdout:n,waitReadableDestroy:i}},KO=({readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r},n)=>n?{readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r}:{readableEncoding:t,readableObjectMode:!0,readableHighWaterMark:MO},JO=({subprocessStdout:t,subprocess:e,binary:r,encoding:n,preserveNewlines:i})=>{let o=ui(),s=I_({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:!r,encoding:n,preserveNewlines:i});return{read(){Cbe(this,s,o)},onStdoutDataDone:o}},Cbe=async(t,e,r)=>{try{let{value:n,done:i}=await e.next();i?r.resolve():t.push(n)}catch{}},YO=async({subprocessStdout:t,onStdoutDataDone:e,readable:r,subprocess:n,subprocessStdin:i})=>{try{await GO(t),await n,await HO(i),await e,r.readable&&r.push(null)}catch(o){await HO(i),mV(r,o)}},XO=async({subprocessStdout:t,subprocess:e,waitReadableDestroy:r},n)=>{await Nc(r,e)&&(mV(t,n),await N_(e,n))},mV=(t,e)=>{j_(t,t.readable,e)}});import{Writable as Dbe}from"node:stream";import{callbackify as hV}from"node:util";var gV,eI,tI,Nbe,jbe,rI,nI,yV,iI=y(()=>{Fo();D_();VO();gV=({subprocess:t,concurrentStreams:e},{to:r}={})=>{let{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:o}=eI(t,r,e),s=new Dbe({...tI(n,t,i),destroy:hV(nI.bind(void 0,{subprocessStdin:n,subprocess:t,waitWritableFinal:i,waitWritableDestroy:o})),highWaterMark:n.writableHighWaterMark,objectMode:n.writableObjectMode});return rI(n,s),s},eI=(t,e,r)=>{let n=Dy(t,e),i=tf(r,n,"writableFinal"),o=tf(r,n,"writableDestroy");return{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:o}},tI=(t,e,r)=>({write:Nbe.bind(void 0,t),final:hV(jbe.bind(void 0,t,e,r))}),Nbe=(t,e,r,n)=>{t.write(e,r)?n():t.once("drain",n)},jbe=async(t,e,r)=>{await Nc(r,e)&&(t.writable&&t.end(),await e)},rI=async(t,e,r)=>{try{await ZO(t),e.writable&&e.end()}catch(n){await fV(r),yV(e,n)}},nI=async({subprocessStdin:t,subprocess:e,waitWritableFinal:r,waitWritableDestroy:n},i)=>{await Nc(r,e),await Nc(n,e)&&(yV(t,i),await N_(e,i))},yV=(t,e)=>{j_(t,t.writable,e)}});import{Duplex as Mbe}from"node:stream";import{callbackify as Fbe}from"node:util";var _V,zbe,vV=y(()=>{Ks();QO();iI();_V=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,to:i,binary:o=!0,preserveNewlines:s=!0}={})=>{let a=o||Hr.has(r),{subprocessStdout:c,waitReadableDestroy:l}=WO(t,n,e),{subprocessStdin:u,waitWritableFinal:d,waitWritableDestroy:f}=eI(t,i,e),{readableEncoding:p,readableObjectMode:m,readableHighWaterMark:h}=KO(c,a),{read:g,onStdoutDataDone:v}=JO({subprocessStdout:c,subprocess:t,binary:a,encoding:r,preserveNewlines:s}),_=new Mbe({read:g,...tI(u,t,d),destroy:Fbe(zbe.bind(void 0,{subprocessStdout:c,subprocessStdin:u,subprocess:t,waitReadableDestroy:l,waitWritableFinal:d,waitWritableDestroy:f})),readableHighWaterMark:h,writableHighWaterMark:u.writableHighWaterMark,readableObjectMode:m,writableObjectMode:u.writableObjectMode,encoding:p});return YO({subprocessStdout:c,onStdoutDataDone:v,readable:_,subprocess:t,subprocessStdin:u}),rI(u,_,c),_},zbe=async({subprocessStdout:t,subprocessStdin:e,subprocess:r,waitReadableDestroy:n,waitWritableFinal:i,waitWritableDestroy:o},s)=>{await Promise.all([XO({subprocessStdout:t,subprocess:r,waitReadableDestroy:n},s),nI({subprocessStdin:e,subprocess:r,waitWritableFinal:i,waitWritableDestroy:o},s)])}});var oI,Lbe,bV=y(()=>{Ks();Fo();P_();oI=(t,e,{from:r,binary:n=!1,preserveNewlines:i=!1}={})=>{let o=n||Hr.has(e),s=Tc(t,r),a=I_({subprocessStdout:s,subprocess:t,binary:o,shouldEncode:!0,encoding:e,preserveNewlines:i});return Lbe(a,s,t)},Lbe=async function*(t,e,r){try{yield*t}finally{e.readable&&e.destroy(),await r}}});var SV,wV=y(()=>{D_();QO();iI();vV();bV();SV=(t,{encoding:e})=>{let r=uV();t.readable=pV.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.writable=gV.bind(void 0,{subprocess:t,concurrentStreams:r}),t.duplex=_V.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.iterable=oI.bind(void 0,t,e),t[Symbol.asyncIterator]=oI.bind(void 0,t,e,{})}});var xV,Ube,qbe,$V=y(()=>{xV=(t,e)=>{for(let[r,n]of qbe){let i=n.value.bind(e);Reflect.defineProperty(t,r,{...n,value:i})}},Ube=(async()=>{})().constructor.prototype,qbe=["then","catch","finally"].map(t=>[t,Reflect.getOwnPropertyDescriptor(Ube,t)])});import{setMaxListeners as Bbe}from"node:events";import{spawn as Hbe}from"node:child_process";var kV,Zbe,Gbe,Vbe,Wbe,Kbe,EV=y(()=>{s_();pT();UT();Fo();qT();wO();Wd();l_();h9();b9();Kd();I9();Iy();N9();V9();BO();lV();wV();Ac();$V();kV=(t,e,r,n)=>{let{file:i,commandArguments:o,command:s,escapedCommand:a,startTime:c,verboseInfo:l,options:u,fileDescriptors:d}=Zbe(t,e,r),{subprocess:f,promise:p}=Vbe({file:i,commandArguments:o,options:u,startTime:c,verboseInfo:l,command:s,escapedCommand:a,fileDescriptors:d});return f.pipe=O_.bind(void 0,{source:f,sourcePromise:p,boundOptions:{},createNested:n}),xV(f,p),di.set(f,{options:u,fileDescriptors:d}),f},Zbe=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:o,verboseInfo:s}=xy(t,e,r),{file:a,commandArguments:c,options:l}=Jy(t,e,r),u=Gbe(l),d=v9(u,s);return{file:a,commandArguments:c,command:n,escapedCommand:i,startTime:o,verboseInfo:s,options:u,fileDescriptors:d}},Gbe=({timeout:t,signal:e,...r})=>{if(e!==void 0)throw new TypeError('The "signal" option has been renamed to "cancelSignal" instead.');return{...r,timeoutDuration:t}},Vbe=({file:t,commandArguments:e,options:r,startTime:n,verboseInfo:i,command:o,escapedCommand:s,fileDescriptors:a})=>{let c;try{c=Hbe(...Yy(t,e,r))}catch(m){return m9({error:m,command:o,escapedCommand:s,fileDescriptors:a,options:r,startTime:n,verboseInfo:i})}let l=new AbortController;Bbe(Number.POSITIVE_INFINITY,l.signal);let u=[...c.stdio];O9(c,a,l),D9(c,r,l);let d={},f=ui();c.kill=mH.bind(void 0,{kill:c.kill.bind(c),options:r,onInternalError:f,context:d,controller:l}),c.all=eV(c,r),SV(c,r),d9(c,r);let p=Wbe({subprocess:c,options:r,startTime:n,verboseInfo:i,fileDescriptors:a,originalStreams:u,command:o,escapedCommand:s,context:d,onInternalError:f,controller:l});return{subprocess:c,promise:p}},Wbe=async({subprocess:t,options:e,startTime:r,verboseInfo:n,fileDescriptors:i,originalStreams:o,command:s,escapedCommand:a,context:c,onInternalError:l,controller:u})=>{let[d,[f,p],m,h,g]=await cV({subprocess:t,options:e,context:c,verboseInfo:n,fileDescriptors:i,originalStreams:o,onInternalError:l,controller:u});u.abort(),l.resolve();let v=m.map((w,x)=>Xi(w,e,x)),_=Xi(h,e,"all"),S=Kbe({errorInfo:d,exitCode:f,signal:p,stdio:v,all:_,ipcOutput:g,context:c,options:e,command:s,escapedCommand:a,startTime:r});return Rc(S,n,e)},Kbe=({errorInfo:t,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:o,context:s,options:a,command:c,escapedCommand:l,startTime:u})=>"error"in t?Vd({error:t.error,command:c,escapedCommand:l,timedOut:s.terminationReason==="timeout",isCanceled:s.terminationReason==="cancel"||s.terminationReason==="gracefulCancel",isGracefullyCanceled:s.terminationReason==="gracefulCancel",isMaxBuffer:t.error instanceof fi,isForcefullyTerminated:s.isForcefullyTerminated,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:o,options:a,startTime:u,isSync:!1}):c_({command:c,escapedCommand:l,stdio:n,all:i,ipcOutput:o,options:a,startTime:u})});var M_,Jbe,Ybe,AV=y(()=>{Gi();Ji();M_=(t,e)=>{let r=Object.fromEntries(Object.entries(e).map(([n,i])=>[n,Jbe(n,t[n],i)]));return{...t,...r}},Jbe=(t,e,r)=>Ybe.has(t)&&kt(e)&&kt(r)?{...e,...r}:r,Ybe=new Set(["env",...cT])});var Uo,Xbe,Qbe,TV=y(()=>{Gi();nT();O6();i9();EV();AV();Uo=(t,e,r,n)=>{let i=(s,a,c)=>Uo(s,a,r,c),o=(...s)=>Xbe({mapArguments:t,deepOptions:r,boundOptions:e,setBoundExeca:n,createNested:i},...s);return n!==void 0&&n(o,i,e),o},Xbe=({mapArguments:t,deepOptions:e={},boundOptions:r={},setBoundExeca:n,createNested:i},o,...s)=>{if(kt(o))return i(t,M_(r,o),n);let{file:a,commandArguments:c,options:l,isSync:u}=Qbe({mapArguments:t,firstArgument:o,nextArguments:s,deepOptions:e,boundOptions:r});return u?n9(a,c,l):kV(a,c,l,i)},Qbe=({mapArguments:t,firstArgument:e,nextArguments:r,deepOptions:n,boundOptions:i})=>{let o=A6(e)?T6(e,r):[e,...r],[s,a,c]=uy(...o),l=M_(M_(n,i),c),{file:u=s,commandArguments:d=a,options:f=l,isSync:p=!1}=t({file:s,commandArguments:a,options:l});return{file:u,commandArguments:d,options:f,isSync:p}}});var OV,IV,PV,eSe,tSe,RV=y(()=>{OV=({file:t,commandArguments:e})=>PV(t,e),IV=({file:t,commandArguments:e})=>({...PV(t,e),isSync:!0}),PV=(t,e)=>{if(e.length>0)throw new TypeError(`The command and its arguments must be passed as a single string: ${t} ${e}.`);let[r,...n]=eSe(t);return{file:r,commandArguments:n}},eSe=t=>{if(typeof t!="string")throw new TypeError(`The command must be a string: ${String(t)}.`);let e=t.trim();if(e==="")return[];let r=[];for(let n of e.split(tSe)){let i=r.at(-1);i&&i.endsWith("\\")?r[r.length-1]=`${i.slice(0,-1)} ${n}`:r.push(n)}return r},tSe=/ +/g});var CV,DV,rSe,NV,nSe,jV,MV=y(()=>{CV=(t,e,r)=>{t.sync=e(rSe,r),t.s=t.sync},DV=({options:t})=>NV(t),rSe=({options:t})=>({...NV(t),isSync:!0}),NV=t=>({options:{...nSe(t),...t}}),nSe=({input:t,inputFile:e,stdio:r})=>t===void 0&&e===void 0&&r===void 0?{stdin:"inherit"}:{},jV={preferLocal:!0}});var Met,Qe,Fet,zet,Let,Uet,qet,Bet,Het,Zet,Ar=y(()=>{TV();RV();MT();MV();wO();Met=Uo(()=>({})),Qe=Uo(()=>({isSync:!0})),Fet=Uo(OV),zet=Uo(IV),Let=Uo(XH),Uet=Uo(DV,{},jV,CV),{sendMessage:qet,getOneMessage:Bet,getEachMessage:Het,getCancelSignal:Zet}=f9()});import{existsSync as F_,statSync as iSe}from"node:fs";import{dirname as sI,extname as oSe,isAbsolute as FV,join as aI,relative as cI,resolve as z_,sep as sSe}from"node:path";function L_(t){return t==="./gradlew"||t==="gradle"}function aSe(t){return(F_(aI(t,"build.gradle.kts"))||F_(aI(t,"build.gradle")))&&F_(aI(t,"gradle.properties"))}function cSe(t,e){let n=cI(t,e).split(sSe).filter(Boolean);return n.length===0?":":`:${n.join(":")}`}function qo(t,e){return t===":"?`:${e}`:`${t}:${e}`}function lSe(t,e){let r=z_(t,e),n=r;F_(r)?iSe(r).isFile()&&(n=sI(r)):oSe(r)!==""&&(n=sI(r));let i=cI(t,n);if(i.startsWith("..")||FV(i))return null;let o=n;for(;;){if(aSe(o))return o;if(z_(o)===z_(t))return null;let s=sI(o);if(s===o)return null;let a=cI(t,s);if(a.startsWith("..")||FV(a))return null;o=s}}function U_(t,e){let r=z_(t),n=new Map,i=[];for(let o of e){let s=lSe(r,o);if(!s){i.push(o);continue}let a=cSe(r,s);n.has(a)||n.set(a,{path:a,dir:s})}if(i.length>0)throw new Error(`cannot map module(s) to a Gradle project (no build.gradle[.kts] + gradle.properties ancestor under ${r}): ${i.join(", ")}`);return[...n.values()].sort((o,s)=>o.paths.path?1:0)}var q_=y(()=>{"use strict"});import{existsSync as uSe,readFileSync as dSe}from"node:fs";import{join as fSe}from"node:path";function jc(t="."){let e=fSe(t,".cladding","config.yaml");if(!uSe(e))return lI;try{let n=(0,zV.parse)(dSe(e,"utf8"))?.gate;if(!n)return lI;let i=n.scope==="repo"?"repo":"feature",o=n.coverage==="kover"||n.coverage==="jacoco"?n.coverage:void 0,s=typeof n.test_report=="string"?n.test_report:void 0,a={};if(n.commands&&typeof n.commands=="object")for(let l of pSe){let u=n.commands[l];Array.isArray(u)&&u.every(d=>typeof d=="string")&&(a[l]=u)}let c={scope:i};return Object.keys(a).length>0&&(c.commands=a),o&&(c.coverage=o),s&&(c.testReport=s),c}catch{return lI}}function LV(t,e){let r=[],n=!1;for(let i of t){let o=mSe.exec(i);if(o){n=!0;for(let s of e)r.push(qo(s.path,o[1]))}else r.push(i)}return n&&e.length===0||r.length===0?null:{cmd:r[0],args:r.slice(1)}}var zV,pSe,lI,mSe,B_=y(()=>{"use strict";zV=$t(rr(),1);q_();pSe=["type","lint","test","coverage"],lI={scope:"feature"};mSe=/^\{modules:([A-Za-z0-9_.:-]+)\}$/});import{existsSync as dI,readFileSync as UV,readdirSync as hSe,statSync as gSe}from"node:fs";import{join as H_}from"node:path";function mI(t){for(let e of["build.gradle.kts","build.gradle","gradle.properties"]){let r=H_(t,e);if(dI(r))try{if(qV.test(UV(r,"utf8")))return!0}catch{}}return!1}function BV(t){try{return dI(t)&&qV.test(UV(t,"utf8"))}catch{return!1}}function HV(t,e=0){if(e>4||!dI(t))return!1;let r;try{r=hSe(t)}catch{return!1}for(let n of r){let i=H_(t,n),o=!1;try{o=gSe(i).isDirectory()}catch{continue}if(o){if(n==="build"||n===".gradle"||n==="node_modules")continue;if(HV(i,e+1))return!0}else if(/\.(kts|gradle|toml)$/.test(n)&&BV(i))return!0}return!1}function vSe(t){if(mI(t))return!0;for(let e of ySe)if(BV(H_(t,e)))return!0;for(let e of _Se)if(HV(H_(t,e)))return!0;return!1}function ZV(t="."){let e=jc(t).coverage;return e||(vSe(t)?"kover":"jacoco")}function GV(t="."){return fI[ZV(t)]}function VV(t="."){return uI[ZV(t)]}var fI,uI,pI,qV,ySe,_Se,Z_=y(()=>{"use strict";B_();fI={kover:"koverXmlReport",jacoco:"jacocoTestReport"},uI={kover:"build/reports/kover/report.xml",jacoco:"build/reports/jacoco/test/jacocoTestReport.xml"},pI=[uI.kover,uI.jacoco],qV=/kover/i;ySe=["build.gradle.kts","build.gradle","settings.gradle.kts","settings.gradle","gradle/libs.versions.toml"],_Se=["buildSrc","build-logic"]});import{existsSync as hI,readdirSync as WV}from"node:fs";import{join as G_}from"node:path";function gI(t){return hI(G_(t,"gradlew"))?"./gradlew":"gradle"}function bSe(t){let e=gI(t);return{type:{cmd:e,args:["compileKotlin","compileTestKotlin"]},lint:{cmd:e,args:["ktlintCheck"]},test:{cmd:e,args:["test"]},coverage:{cmd:e,args:[GV(t)]},secret:{cmd:"gitleaks",args:["detect","--no-banner"]}}}function wSe(t,e){let r=[t],n=0,i=4e3;for(;r.length>0&&na.name.endsWith(c)))return!0}return!1}function kSe(t,e){for(let r of e)if(hI(G_(t,r)))return r}function ESe(t,e){try{return WV(t).find(n=>n.endsWith(e))}catch{return}}function TSe(t,e){for(let r of ASe)if(r.configs.some(n=>hI(G_(t,n))))return r.gate;return e}function pt(t="."){for(let e of xSe){let r;for(let o of e.manifests)if(o.startsWith(".")?r=ESe(t,o):r=kSe(t,[o]),r)break;if(!r||e.requiresSource&&!wSe(t,e.requiresSource))continue;let n=typeof e.gates=="function"?e.gates(t):e.gates,i=e.language==="typescript"&&n.lint?{...n,lint:TSe(t,n.lint)}:n;return{language:e.language,manifest:r,gates:i}}return $Se}var SSe,xSe,$Se,ASe,mn=y(()=>{"use strict";Z_();SSe=new Set(["node_modules",".git",".gradle",".idea","build","target","dist","out",".cladding"]);xSe=[{language:"typescript",manifests:["package.json"],gates:{type:{cmd:"npx",args:["--no-install","tsc","--noEmit"]},lint:{cmd:"npx",args:["--no-install","eslint","."]},test:{cmd:"npx",args:["--no-install","vitest","run"]},coverage:{cmd:"npx",args:["--no-install","vitest","run","--coverage"]},secret:{cmd:"npx",args:["--no-install","secretlint","**/*"]},arch:{cmd:"npx",args:["--no-install","madge","--circular","--extensions","ts","."]},smoke:{cmd:"npm",args:["run","--silent","smoke"]},perf:{cmd:"npm",args:["run","--silent","perf"]},visual:{cmd:"npm",args:["run","--silent","visual"]}}},{language:"python",manifests:["pyproject.toml","setup.py","requirements.txt"],gates:{type:{cmd:"mypy",args:["."]},lint:{cmd:"ruff",args:["check","."]},test:{cmd:"pytest",args:[]},coverage:{cmd:"coverage",args:["run","-m","pytest"]},secret:{cmd:"detect-secrets",args:["scan"]},arch:{cmd:"lint-imports",args:[]}}},{language:"rust",manifests:["Cargo.toml"],gates:{type:{cmd:"cargo",args:["check"]},lint:{cmd:"cargo",args:["clippy","--","-D","warnings"]},test:{cmd:"cargo",args:["test"]},coverage:{cmd:"cargo",args:["llvm-cov"]},secret:{cmd:"gitleaks",args:["detect","--no-banner"]}}},{language:"go",manifests:["go.mod"],gates:{type:{cmd:"go",args:["vet","./..."]},lint:{cmd:"golangci-lint",args:["run"]},test:{cmd:"go",args:["test","./..."]},coverage:{cmd:"go",args:["test","-cover","./..."]},secret:{cmd:"gitleaks",args:["detect","--no-banner"]}}},{language:"kotlin",manifests:["build.gradle.kts","build.gradle","pom.xml"],requiresSource:[".kt",".kts"],gates:bSe},{language:"java",manifests:["pom.xml","build.gradle","build.gradle.kts"],gates:{type:{cmd:"mvn",args:["compile","-q"]},lint:{cmd:"mvn",args:["checkstyle:check","-q"]},test:{cmd:"mvn",args:["test","-q"]},coverage:{cmd:"mvn",args:["jacoco:report","-q"]},secret:{cmd:"gitleaks",args:["detect","--no-banner"]}}},{language:"php",manifests:["composer.json"],gates:{type:{cmd:"phpstan",args:["analyse"]},lint:{cmd:"phpcs",args:[]},test:{cmd:"phpunit",args:[]},coverage:{cmd:"phpunit",args:["--coverage-text"]},secret:{cmd:"gitleaks",args:["detect","--no-banner"]}}},{language:"ruby",manifests:["Gemfile"],gates:{type:{cmd:"srb",args:["tc"]},lint:{cmd:"rubocop",args:[]},test:{cmd:"bundle",args:["exec","rspec"]},coverage:{cmd:"bundle",args:["exec","rspec","--format","documentation"]},secret:{cmd:"gitleaks",args:["detect","--no-banner"]}}},{language:"elixir",manifests:["mix.exs"],gates:{type:{cmd:"mix",args:["dialyzer"]},lint:{cmd:"mix",args:["credo"]},test:{cmd:"mix",args:["test"]},coverage:{cmd:"mix",args:["coveralls"]},secret:{cmd:"gitleaks",args:["detect","--no-banner"]}}},{language:"dotnet",manifests:[".csproj",".sln",".fsproj"],gates:{type:{cmd:"dotnet",args:["build","--nologo","-v","q"]},lint:{cmd:"dotnet",args:["format","--verify-no-changes"]},test:{cmd:"dotnet",args:["test","--nologo"]},coverage:{cmd:"dotnet",args:["test",'--collect:"XPlat Code Coverage"']},secret:{cmd:"gitleaks",args:["detect","--no-banner"]}}}],$Se={language:"unknown",manifest:"",gates:{}};ASe=[{configs:["biome.json","biome.jsonc"],gate:{cmd:"npx",args:["--no-install","biome","lint","."]}},{configs:[".oxlintrc.json",".oxlintrc.jsonc","oxlint.config.ts"],gate:{cmd:"npx",args:["--no-install","oxlint"]}}]});import{existsSync as OSe,readFileSync as ISe}from"node:fs";import{join as PSe}from"node:path";function rf(t){return t.code==="ENOENT"}function V_(t,e,r,n){let i=t.exitCode??1;if(i===0)return[];let o=(t.stderr??"").toString().trim(),s=(t.stdout??"").toString().trim(),a=(o||s||`exit ${i}`).slice(0,200);return KV.test(o)||KV.test(s)?[{detector:e,severity:"info",message:n(a)}]:[{detector:e,severity:"error",message:r(a)}]}function Ft(t,e,r){return rf(r)?{stage:t,pass:!1,exitCode:2,stderr:`'${e}' not installed`}:null}function nr(t,e){if((e.exitCode??1)===0)return{stage:t,pass:!0,exitCode:0};let n=String(e.stderr??"").trim()||String(e.stdout??"").trim();return n?{stage:t,pass:!1,exitCode:1,stderr:n}:{stage:t,pass:!1,exitCode:1}}function Mc(t,e){let r=PSe(t,"package.json");if(!OSe(r))return!1;try{return!!JSON.parse(ISe(r,"utf8")).scripts?.[e]}catch{return!1}}var KV,hn=y(()=>{"use strict";KV=/config (is |file )?not found|no such file|ENOENT|cannot find (a |the )?(config|module|package|preset)|require[sd]?\b.{0,40}\bconfig|canceled due to missing packages|could not determine executable/i});function RSe(t){let{cwd:e="."}=t,r=pt(e),n=r.gates.arch;if(!n)return[{detector:W_,severity:"info",message:`no architecture validator registered for language '${r.language}' (compiler may already enforce acyclic imports)`}];let i=Qe(n.cmd,[...n.args],{cwd:e,reject:!1});return rf(i)?[{detector:W_,severity:"info",message:`architecture validator '${n.cmd}' not installed`}]:V_(i,W_,o=>`${n.cmd} reported architecture violations: ${o}`,o=>`${n.cmd} could not validate (config/setup gap, not a violation): ${o}`)}var W_,K_,yI=y(()=>{"use strict";Ar();mn();hn();W_="ARCHITECTURE_VIOLATION";K_={name:W_,run:RSe}});import JV from"node:process";function na(t={}){let r=K_.run(t).filter(o=>o.severity==="error"),n=r.length===0,i={stage:CSe,pass:n,exitCode:n?0:1};return n?i:{...i,stderr:r.map(o=>o.message).join(` + if (condition) { yield value; }`)}});import{Buffer as w_e}from"node:buffer";import{StringDecoder as x_e}from"node:string_decoder";var y_,$_e,k_e,E_e,uO=y(()=>{Br();y_=(t,e,r)=>{if(r)return;if(t)return{transform:$_e.bind(void 0,new TextEncoder)};let n=new x_e(e);return{transform:k_e.bind(void 0,n),final:E_e.bind(void 0,n)}},$_e=function*(t,e){w_e.isBuffer(e)?yield Vi(e):typeof e=="string"?yield t.encode(e):yield e},k_e=function*(t,e){yield Mt(e)?t.write(e):e},E_e=function*(t){let e=t.end();e!==""&&(yield e)}});import{callbackify as jG}from"node:util";var dO,__,MG,A_e,FG,T_e,zG=y(()=>{dO=jG(async(t,e,r,n)=>{e.currentIterable=t(...r);try{for await(let i of e.currentIterable)n.push(i)}finally{delete e.currentIterable}}),__=async function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=T_e}=e[r];for await(let i of n(t))yield*__(i,e,r+1)},MG=async function*(t){for(let[e,{final:r}]of Object.entries(t))yield*A_e(r,Number(e),t)},A_e=async function*(t,e,r){if(t!==void 0)for await(let n of t())yield*__(n,r,e+1)},FG=jG(async({currentIterable:t},e)=>{if(t!==void 0){await(e?t.throw(e):t.return());return}if(e)throw e}),T_e=function*(t){yield t}});var fO,LG,ea,Jd,O_e,I_e,pO=y(()=>{fO=(t,e,r,n)=>{try{for(let i of t(...e))r.push(i);n()}catch(i){n(i)}},LG=(t,e)=>[...e.flatMap(r=>[...ea(r,t,0)]),...Jd(t)],ea=function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=I_e}=e[r];for(let i of n(t))yield*ea(i,e,r+1)},Jd=function*(t){for(let[e,{final:r}]of Object.entries(t))yield*O_e(r,Number(e),t)},O_e=function*(t,e,r){if(t!==void 0)for(let n of t())yield*ea(n,r,e+1)},I_e=function*(t){yield t}});import{Transform as P_e,getDefaultHighWaterMark as UG}from"node:stream";var mO,v_,qG,b_=y(()=>{dr();g_();NG();uO();zG();pO();mO=({value:t,value:{transform:e,final:r,writableObjectMode:n,readableObjectMode:i},optionName:o},{encoding:s})=>{let a={},c=qG(t,s,o),l=Qs(e),u=Qs(r),d=l?dO.bind(void 0,__,a):fO.bind(void 0,ea),f=l||u?dO.bind(void 0,MG,a):fO.bind(void 0,Jd),p=l||u?FG.bind(void 0,a):void 0;return{stream:new P_e({writableObjectMode:n,writableHighWaterMark:UG(n),readableObjectMode:i,readableHighWaterMark:UG(i),transform(h,g,v){d([h,c,0],this,v)},flush(h){f([c],this,h)},destroy:p})}},v_=(t,e,r,n)=>{let i=e.filter(({type:s})=>s==="generator"),o=n?i.reverse():i;for(let{value:s,optionName:a}of o){let c=qG(s,r,a);t=LG(c,t)}return t},qG=({transform:t,final:e,binary:r,writableObjectMode:n,readableObjectMode:i,preserveNewlines:o},s,a)=>{let c={};return[{transform:RG(n,a)},y_(r,s,n),h_(r,o,n,c),{transform:t,final:e},{transform:CG(i,a)},PG({binary:r,preserveNewlines:o,readableObjectMode:i,state:c})].filter(Boolean)}});var BG,R_e,C_e,D_e,N_e,HG=y(()=>{b_();Br();dr();BG=(t,e)=>{for(let r of R_e(t))C_e(t,r,e)},R_e=t=>new Set(Object.entries(t).filter(([,{direction:e}])=>e==="input").map(([e])=>Number(e))),C_e=(t,e,r)=>{let{stdioItems:n}=t[e],i=n.filter(({contents:a})=>a!==void 0);if(i.length===0)return;if(e!==0){let[{type:a,optionName:c}]=i;throw new TypeError(`Only the \`stdin\` option, not \`${c}\`, can be ${Lo[a]} with synchronous methods.`)}let s=i.map(({contents:a})=>a).map(a=>D_e(a,n));r.input=Dd(s)},D_e=(t,e)=>{let r=v_(t,e,"utf8",!0);return N_e(r),Dd(r)},N_e=t=>{let e=t.find(r=>typeof r!="string"&&!Mt(r));if(e!==void 0)throw new TypeError(`The \`stdin\` option is invalid: when passing objects as input, a transform must be used to serialize them to strings or Uint8Arrays: ${e}.`)}});var S_,j_e,M_e,ZG,GG,F_e,VG,hO=y(()=>{Ks();dr();Sc();jo();S_=({stdioItems:t,encoding:e,verboseInfo:r,fdNumber:n})=>n!=="all"&&bc(r,n)&&!Hr.has(e)&&j_e(n)&&(t.some(({type:i,value:o})=>i==="native"&&M_e.has(o))||t.every(({type:i})=>pn.has(i))),j_e=t=>t===1||t===2,M_e=new Set(["pipe","overlapped"]),ZG=async(t,e,r,n)=>{for await(let i of t)F_e(e)||VG(i,r,n)},GG=(t,e,r)=>{for(let n of t)VG(n,e,r)},F_e=t=>t._readableState.pipes.length>0,VG=(t,e,r)=>{let n=by(t);li({type:"output",verboseMessage:n,fdNumber:e,verboseInfo:r})}});import{writeFileSync as z_e,appendFileSync as L_e}from"node:fs";var WG,U_e,q_e,B_e,H_e,Z_e,KG=y(()=>{hO();b_();g_();Br();dr();Xs();WG=({fileDescriptors:t,syncResult:{output:e},options:r,isMaxBuffer:n,verboseInfo:i})=>{if(e===null)return{output:Array.from({length:3})};let o={},s=new Set([]);return{output:e.map((c,l)=>U_e({result:c,fileDescriptors:t,fdNumber:l,state:o,outputFiles:s,isMaxBuffer:n,verboseInfo:i},r)),...o}},U_e=({result:t,fileDescriptors:e,fdNumber:r,state:n,outputFiles:i,isMaxBuffer:o,verboseInfo:s},{buffer:a,encoding:c,lines:l,stripFinalNewline:u,maxBuffer:d})=>{if(t===null)return;let f=CZ(t,o,d),p=Vi(f),{stdioItems:m,objectMode:h}=e[r],g=q_e([p],m,c,n),{serializedResult:v,finalResult:_=v}=B_e({chunks:g,objectMode:h,encoding:c,lines:l,stripFinalNewline:u,fdNumber:r});H_e({serializedResult:v,fdNumber:r,state:n,verboseInfo:s,encoding:c,stdioItems:m,objectMode:h});let S=a[r]?_:void 0;try{return n.error===void 0&&Z_e(v,m,i),S}catch(w){return n.error=w,S}},q_e=(t,e,r,n)=>{try{return v_(t,e,r,!1)}catch(i){return n.error=i,t}},B_e=({chunks:t,objectMode:e,encoding:r,lines:n,stripFinalNewline:i,fdNumber:o})=>{if(e)return{serializedResult:t};if(r==="buffer")return{serializedResult:Dd(t)};let s=x6(t,r);return n[o]?{serializedResult:s,finalResult:lO(s,!i[o],e)}:{serializedResult:s}},H_e=({serializedResult:t,fdNumber:e,state:r,verboseInfo:n,encoding:i,stdioItems:o,objectMode:s})=>{if(!S_({stdioItems:o,encoding:i,verboseInfo:n,fdNumber:e}))return;let a=lO(t,!1,s);try{GG(a,e,n)}catch(c){r.error??=c}},Z_e=(t,e,r)=>{for(let{path:n,append:i}of e.filter(({type:o})=>f_.has(o))){let o=typeof n=="string"?n:n.toString();i||r.has(o)?L_e(n,t):(r.add(o),z_e(n,t))}}});var JG,YG=y(()=>{Br();Kd();JG=([,t,e],r)=>{if(r.all)return t===void 0?e:e===void 0?t:Array.isArray(t)?Array.isArray(e)?[...t,...e]:[...t,Xi(e,r,"all")]:Array.isArray(e)?[Xi(t,r,"all"),...e]:Mt(t)&&Mt(e)?iT([t,e]):`${t}${e}`}});import{once as gO}from"node:events";var XG,G_e,QG,e9,V_e,yO,_O=y(()=>{Vs();XG=async(t,e)=>{let[r,n]=await G_e(t);return e.isForcefullyTerminated??=!1,[r,n]},G_e=async t=>{let[e,r]=await Promise.allSettled([gO(t,"spawn"),gO(t,"exit")]);return e.status==="rejected"?[]:r.status==="rejected"?QG(t):r.value},QG=async t=>{try{return await gO(t,"exit")}catch{return QG(t)}},e9=async t=>{let[e,r]=await t;if(!V_e(e,r)&&yO(e,r))throw new Mn;return[e,r]},V_e=(t,e)=>t===void 0&&e===void 0,yO=(t,e)=>t!==0||e!==null});var t9,W_e,r9=y(()=>{Vs();Xs();_O();t9=({error:t,status:e,signal:r,output:n},{maxBuffer:i})=>{let o=W_e(t,e,r),s=o?.code==="ETIMEDOUT",a=RZ(o,n,i);return{resultError:o,exitCode:e,signal:r,timedOut:s,isMaxBuffer:a}},W_e=(t,e,r)=>t!==void 0?t:yO(e,r)?new Mn:void 0});import{spawnSync as K_e}from"node:child_process";var n9,J_e,Y_e,X_e,w_,Q_e,eve,tve,rve,i9=y(()=>{pT();UT();qT();Wd();l_();TG();Kd();HG();KG();Xs();YG();r9();n9=(t,e,r)=>{let{file:n,commandArguments:i,command:o,escapedCommand:s,startTime:a,verboseInfo:c,options:l,fileDescriptors:u}=J_e(t,e,r),d=Q_e({file:n,commandArguments:i,options:l,command:o,escapedCommand:s,verboseInfo:c,fileDescriptors:u,startTime:a});return Rc(d,c,l)},J_e=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:o,verboseInfo:s}=xy(t,e,r),a=Y_e(r),{file:c,commandArguments:l,options:u}=Jy(t,e,a);X_e(u);let d=EG(u,s);return{file:c,commandArguments:l,command:n,escapedCommand:i,startTime:o,verboseInfo:s,options:u,fileDescriptors:d}},Y_e=t=>t.node&&!t.ipc?{...t,ipc:!1}:t,X_e=({ipc:t,ipcInput:e,detached:r,cancelSignal:n})=>{e&&w_("ipcInput"),t&&w_("ipc: true"),r&&w_("detached: true"),n&&w_("cancelSignal")},w_=t=>{throw new TypeError(`The "${t}" option cannot be used with synchronous methods.`)},Q_e=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,verboseInfo:o,fileDescriptors:s,startTime:a})=>{let c=eve({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:s,startTime:a});if(c.failed)return c;let{resultError:l,exitCode:u,signal:d,timedOut:f,isMaxBuffer:p}=t9(c,r),{output:m,error:h=l}=WG({fileDescriptors:s,syncResult:c,options:r,isMaxBuffer:p,verboseInfo:o}),g=m.map((_,S)=>Xi(_,r,S)),v=Xi(JG(m,r),r,"all");return rve({error:h,exitCode:u,signal:d,timedOut:f,isMaxBuffer:p,stdio:g,all:v,options:r,command:n,escapedCommand:i,startTime:a})},eve=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:o,startTime:s})=>{try{BG(o,r);let a=tve(r);return K_e(...Yy(t,e,a))}catch(a){return Pc({error:a,command:n,escapedCommand:i,fileDescriptors:o,options:r,startTime:s,isSync:!0})}},tve=({encoding:t,maxBuffer:e,...r})=>({...r,encoding:"buffer",maxBuffer:a_(e)}),rve=({error:t,exitCode:e,signal:r,timedOut:n,isMaxBuffer:i,stdio:o,all:s,options:a,command:c,escapedCommand:l,startTime:u})=>t===void 0?c_({command:c,escapedCommand:l,stdio:o,all:s,ipcOutput:[],options:a,startTime:u}):Vd({error:t,command:c,escapedCommand:l,timedOut:n,isCanceled:!1,isGracefullyCanceled:!1,isMaxBuffer:i,isForcefullyTerminated:!1,exitCode:e,signal:r,stdio:o,all:s,ipcOutput:[],options:a,startTime:u,isSync:!0})});import{once as vO,on as nve}from"node:events";var o9,ive,ove,sve,ave,s9=y(()=>{Ec();qd();Ud();o9=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0,filter:o}={})=>($c({methodName:"getOneMessage",isSubprocess:r,ipc:n,isConnected:By(t)}),ive({anyProcess:t,channel:e,isSubprocess:r,filter:o,reference:i})),ive=async({anyProcess:t,channel:e,isSubprocess:r,filter:n,reference:i})=>{jy(e,i);let o=zo(t,e,r),s=new AbortController;try{return await Promise.race([ove(o,n,s),sve(o,r,s),ave(o,r,s)])}catch(a){throw kc(t),a}finally{s.abort(),My(e,i)}},ove=async(t,e,{signal:r})=>{if(e===void 0){let[n]=await vO(t,"message",{signal:r});return n}for await(let[n]of nve(t,"message",{signal:r}))if(e(n))return n},sve=async(t,e,{signal:r})=>{await vO(t,"disconnect",{signal:r}),yH(e)},ave=async(t,e,{signal:r})=>{let[n]=await vO(t,"strict:error",{signal:r});throw Ry(n,e)}});import{once as c9,on as cve}from"node:events";var l9,bO,lve,uve,dve,a9,SO=y(()=>{Ec();qd();Ud();l9=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0}={})=>bO({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:!r,reference:i}),bO=({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:i,reference:o})=>{$c({methodName:"getEachMessage",isSubprocess:r,ipc:n,isConnected:By(t)}),jy(e,o);let s=zo(t,e,r),a=new AbortController,c={};return lve(t,s,a),uve({ipcEmitter:s,isSubprocess:r,controller:a,state:c}),dve({anyProcess:t,channel:e,ipcEmitter:s,isSubprocess:r,shouldAwait:i,controller:a,state:c,reference:o})},lve=async(t,e,r)=>{try{await c9(e,"disconnect",{signal:r.signal}),r.abort()}catch{}},uve=async({ipcEmitter:t,isSubprocess:e,controller:r,state:n})=>{try{let[i]=await c9(t,"strict:error",{signal:r.signal});n.error=Ry(i,e),r.abort()}catch{}},dve=async function*({anyProcess:t,channel:e,ipcEmitter:r,isSubprocess:n,shouldAwait:i,controller:o,state:s,reference:a}){try{for await(let[c]of cve(r,"message",{signal:o.signal}))a9(s),yield c}catch{a9(s)}finally{o.abort(),My(e,a),n||kc(t),i&&await t}},a9=({error:t})=>{if(t)throw t}});import u9 from"node:process";var d9,f9,p9,wO=y(()=>{Wy();s9();SO();Uy();d9=(t,{ipc:e})=>{Object.assign(t,p9(t,!1,e))},f9=()=>{let t=u9,e=!0,r=u9.channel!==void 0;return{...p9(t,e,r),getCancelSignal:ZH.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})}},p9=(t,e,r)=>({sendMessage:Vy.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getOneMessage:o9.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getEachMessage:l9.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})})});import{ChildProcess as fve}from"node:child_process";import{PassThrough as pve,Readable as mve,Writable as hve,Duplex as gve}from"node:stream";var m9,yve,Yd,_ve,vve,bve,Sve,h9=y(()=>{m_();Wd();l_();m9=({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:o,verboseInfo:s})=>{sO(n);let a=new fve;yve(a,n),Object.assign(a,{readable:_ve,writable:vve,duplex:bve});let c=Pc({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:o,isSync:!1}),l=Sve(c,s,i);return{subprocess:a,promise:l}},yve=(t,e)=>{let r=Yd(),n=Yd(),i=Yd(),o=Array.from({length:e.length-3},Yd),s=Yd(),a=[r,n,i,...o];Object.assign(t,{stdin:r,stdout:n,stderr:i,all:s,stdio:a})},Yd=()=>{let t=new pve;return t.end(),t},_ve=()=>new mve({read(){}}),vve=()=>new hve({write(){}}),bve=()=>new gve({read(){},write(){}}),Sve=async(t,e,r)=>Rc(t,e,r)});import{createReadStream as g9,createWriteStream as y9}from"node:fs";import{Buffer as wve}from"node:buffer";import{Readable as Xd,Writable as xve,Duplex as $ve}from"node:stream";var v9,Qd,_9,kve,b9=y(()=>{b_();m_();dr();v9=(t,e)=>p_(kve,t,e,!1),Qd=({type:t,optionName:e})=>{throw new TypeError(`The \`${e}\` option cannot be ${Lo[t]}.`)},_9={fileNumber:Qd,generator:mO,asyncGenerator:mO,nodeStream:({value:t})=>({stream:t}),webTransform({value:{transform:t,writableObjectMode:e,readableObjectMode:r}}){let n=e||r;return{stream:$ve.fromWeb(t,{objectMode:n})}},duplex:({value:{transform:t}})=>({stream:t}),native(){}},kve={input:{..._9,fileUrl:({value:t})=>({stream:g9(t)}),filePath:({value:{file:t}})=>({stream:g9(t)}),webStream:({value:t})=>({stream:Xd.fromWeb(t)}),iterable:({value:t})=>({stream:Xd.from(t)}),asyncIterable:({value:t})=>({stream:Xd.from(t)}),string:({value:t})=>({stream:Xd.from(t)}),uint8Array:({value:t})=>({stream:Xd.from(wve.from(t))})},output:{..._9,fileUrl:({value:t})=>({stream:y9(t)}),filePath:({value:{file:t,append:e}})=>({stream:y9(t,e?{flags:"a"}:{})}),webStream:({value:t})=>({stream:xve.fromWeb(t)}),iterable:Qd,asyncIterable:Qd,string:Qd,uint8Array:Qd}}});import{on as Eve,once as S9}from"node:events";import{PassThrough as Ave,getDefaultHighWaterMark as Tve}from"node:stream";import{finished as $9}from"node:stream/promises";function ta(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let i of t)$O(i);let e=t.some(({readableObjectMode:i})=>i),r=Ove(t,e),n=new xO({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return n}var Ove,xO,Ive,Pve,Rve,$O,Cve,Dve,Nve,jve,Mve,k9,E9,kO,A9,Fve,x_,w9,x9,$_=y(()=>{Ove=(t,e)=>{if(t.length===0)return Tve(e);let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},xO=class extends Ave{#t=new Set([]);#r=new Set([]);#e=new Set([]);#n;#o=Symbol("unpipe");#i=new WeakMap;add(e){if($O(e),this.#t.has(e))return;this.#t.add(e),this.#n??=Ive(this,this.#t,this.#o);let r=Cve({passThroughStream:this,stream:e,streams:this.#t,ended:this.#r,aborted:this.#e,onFinished:this.#n,unpipeEvent:this.#o});this.#i.set(e,r),e.pipe(this,{end:!1})}async remove(e){if($O(e),!this.#t.has(e))return!1;let r=this.#i.get(e);return r===void 0?!1:(this.#i.delete(e),e.unpipe(this),await r,!0)}},Ive=async(t,e,r)=>{x_(t,w9);let n=new AbortController;try{await Promise.race([Pve(t,n),Rve(t,e,r,n)])}finally{n.abort(),x_(t,-w9)}},Pve=async(t,{signal:e})=>{try{await $9(t,{signal:e,cleanup:!0})}catch(r){throw k9(t,r),r}},Rve=async(t,e,r,{signal:n})=>{for await(let[i]of Eve(t,"unpipe",{signal:n}))e.has(i)&&i.emit(r)},$O=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},Cve=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:o,unpipeEvent:s})=>{x_(t,x9);let a=new AbortController;try{await Promise.race([Dve(o,e,a),Nve({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:a}),jve({stream:e,streams:r,ended:n,aborted:i,unpipeEvent:s,controller:a})])}finally{a.abort(),x_(t,-x9)}r.size>0&&r.size===n.size+i.size&&(n.size===0&&i.size>0?kO(t):Mve(t))},Dve=async(t,e,{signal:r})=>{try{await t,r.aborted||kO(e)}catch(n){r.aborted||k9(e,n)}},Nve=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:o}})=>{try{await $9(e,{signal:o,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(s){if(o.aborted||!r.has(e))return;E9(s)?i.add(e):A9(t,s)}},jve=async({stream:t,streams:e,ended:r,aborted:n,unpipeEvent:i,controller:{signal:o}})=>{if(await S9(t,i,{signal:o}),!t.readable)return S9(o,"abort",{signal:o});e.delete(t),r.delete(t),n.delete(t)},Mve=t=>{t.writable&&t.end()},k9=(t,e)=>{E9(e)?kO(t):A9(t,e)},E9=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",kO=t=>{(t.readable||t.writable)&&t.destroy()},A9=(t,e)=>{t.destroyed||(t.once("error",Fve),t.destroy(e))},Fve=()=>{},x_=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},w9=2,x9=1});import{finished as T9}from"node:stream/promises";var Dc,zve,EO,Lve,AO,k_=y(()=>{Wi();Dc=(t,e)=>{t.pipe(e),zve(t,e),Lve(t,e)},zve=async(t,e)=>{if(!(jn(t)||jn(e))){try{await T9(t,{cleanup:!0,readable:!0,writable:!1})}catch{}EO(e)}},EO=t=>{t.writable&&t.end()},Lve=async(t,e)=>{if(!(jn(t)||jn(e))){try{await T9(e,{cleanup:!0,readable:!1,writable:!0})}catch{}AO(t)}},AO=t=>{t.readable&&t.destroy()}});var O9,Uve,qve,Bve,Hve,Zve,I9=y(()=>{$_();Wi();Ny();dr();k_();O9=(t,e,r)=>{let n=new Map;for(let[i,{stdioItems:o,direction:s}]of Object.entries(e)){for(let{stream:a}of o.filter(({type:c})=>pn.has(c)))Uve(t,a,s,i);for(let{stream:a}of o.filter(({type:c})=>!pn.has(c)))Bve({subprocess:t,stream:a,direction:s,fdNumber:i,pipeGroups:n,controller:r})}for(let[i,o]of n.entries()){let s=o.length===1?o[0]:ta(o);Dc(s,i)}},Uve=(t,e,r,n)=>{r==="output"?Dc(t.stdio[n],e):Dc(e,t.stdio[n]);let i=qve[n];i!==void 0&&(t[i]=e),t.stdio[n]=e},qve=["stdin","stdout","stderr"],Bve=({subprocess:t,stream:e,direction:r,fdNumber:n,pipeGroups:i,controller:o})=>{if(e===void 0)return;Hve(e,o);let[s,a]=r==="output"?[e,t.stdio[n]]:[t.stdio[n],e],c=i.get(s)??[];i.set(s,[...c,a])},Hve=(t,{signal:e})=>{jn(t)&&Ws(t,Zve,e)},Zve=2});var ra,P9=y(()=>{ra=[];ra.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&ra.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&ra.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT")});var E_,TO,OO,Gve,IO,A_,Vve,PO,RO,CO,R9,ZXe,GXe,C9=y(()=>{P9();E_=t=>!!t&&typeof t=="object"&&typeof t.removeListener=="function"&&typeof t.emit=="function"&&typeof t.reallyExit=="function"&&typeof t.listeners=="function"&&typeof t.kill=="function"&&typeof t.pid=="number"&&typeof t.on=="function",TO=Symbol.for("signal-exit emitter"),OO=globalThis,Gve=Object.defineProperty.bind(Object),IO=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(OO[TO])return OO[TO];Gve(OO,TO,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(e,r){this.listeners[e].push(r)}removeListener(e,r){let n=this.listeners[e],i=n.indexOf(r);i!==-1&&(i===0&&n.length===1?n.length=0:n.splice(i,1))}emit(e,r,n){if(this.emitted[e])return!1;this.emitted[e]=!0;let i=!1;for(let o of this.listeners[e])i=o(r,n)===!0||i;return e==="exit"&&(i=this.emit("afterExit",r,n)||i),i}},A_=class{},Vve=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),PO=class extends A_{onExit(){return()=>{}}load(){}unload(){}},RO=class extends A_{#t=CO.platform==="win32"?"SIGINT":"SIGHUP";#r=new IO;#e;#n;#o;#i={};#s=!1;constructor(e){super(),this.#e=e,this.#i={};for(let r of ra)this.#i[r]=()=>{let n=this.#e.listeners(r),{count:i}=this.#r,o=e;if(typeof o.__signal_exit_emitter__=="object"&&typeof o.__signal_exit_emitter__.count=="number"&&(i+=o.__signal_exit_emitter__.count),n.length===i){this.unload();let s=this.#r.emit("exit",null,r),a=r==="SIGHUP"?this.#t:r;s||e.kill(e.pid,a)}};this.#o=e.reallyExit,this.#n=e.emit}onExit(e,r){if(!E_(this.#e))return()=>{};this.#s===!1&&this.load();let n=r?.alwaysLast?"afterExit":"exit";return this.#r.on(n,e),()=>{this.#r.removeListener(n,e),this.#r.listeners.exit.length===0&&this.#r.listeners.afterExit.length===0&&this.unload()}}load(){if(!this.#s){this.#s=!0,this.#r.count+=1;for(let e of ra)try{let r=this.#i[e];r&&this.#e.on(e,r)}catch{}this.#e.emit=(e,...r)=>this.#c(e,...r),this.#e.reallyExit=e=>this.#a(e)}}unload(){this.#s&&(this.#s=!1,ra.forEach(e=>{let r=this.#i[e];if(!r)throw new Error("Listener not defined for signal: "+e);try{this.#e.removeListener(e,r)}catch{}}),this.#e.emit=this.#n,this.#e.reallyExit=this.#o,this.#r.count-=1)}#a(e){return E_(this.#e)?(this.#e.exitCode=e||0,this.#r.emit("exit",this.#e.exitCode,null),this.#o.call(this.#e,this.#e.exitCode)):0}#c(e,...r){let n=this.#n;if(e==="exit"&&E_(this.#e)){typeof r[0]=="number"&&(this.#e.exitCode=r[0]);let i=n.call(this.#e,e,...r);return this.#r.emit("exit",this.#e.exitCode,null),i}else return n.call(this.#e,e,...r)}},CO=globalThis.process,{onExit:R9,load:ZXe,unload:GXe}=Vve(E_(CO)?new RO(CO):new PO)});import{addAbortListener as Wve}from"node:events";var D9,N9=y(()=>{C9();D9=(t,{cleanup:e,detached:r},{signal:n})=>{if(!e||r)return;let i=R9(()=>{t.kill()});Wve(n,()=>{i()})}});var M9,Kve,Jve,j9,Yve,F9=y(()=>{nT();wy();Fo();_c();M9=({source:t,sourcePromise:e,boundOptions:r,createNested:n},...i)=>{let o=Sy(),{destination:s,destinationStream:a,destinationError:c,from:l,unpipeSignal:u}=Kve(r,n,i),{sourceStream:d,sourceError:f}=Yve(t,l),{options:p,fileDescriptors:m}=di.get(t);return{sourcePromise:e,sourceStream:d,sourceOptions:p,sourceError:f,destination:s,destinationStream:a,destinationError:c,unpipeSignal:u,fileDescriptors:m,startTime:o}},Kve=(t,e,r)=>{try{let{destination:n,pipeOptions:{from:i,to:o,unpipeSignal:s}={}}=Jve(t,e,...r),a=Dy(n,o);return{destination:n,destinationStream:a,from:i,unpipeSignal:s}}catch(n){return{destinationError:n}}},Jve=(t,e,r,...n)=>{if(Array.isArray(r))return{destination:e(j9,t)(r,...n),pipeOptions:t};if(typeof r=="string"||r instanceof URL||tT(r)){if(Object.keys(t).length>0)throw new TypeError('Please use .pipe("file", ..., options) or .pipe(execa("file", ..., options)) instead of .pipe(options)("file", ...).');let[i,o,s]=uy(r,...n);return{destination:e(j9)(i,o,s),pipeOptions:s}}if(di.has(r)){if(Object.keys(t).length>0)throw new TypeError("Please use .pipe(options)`command` or .pipe($(options)`command`) instead of .pipe(options)($`command`).");return{destination:r,pipeOptions:n[0]}}throw new TypeError(`The first argument must be a template string, an options object, or an Execa subprocess: ${r}`)},j9=({options:t})=>({options:{...t,stdin:"pipe",piped:!0}}),Yve=(t,e)=>{try{return{sourceStream:Tc(t,e)}}catch(r){return{sourceError:r}}}});var L9,Xve,DO,z9,NO=y(()=>{Wd();k_();L9=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n,fileDescriptors:i,sourceOptions:o,startTime:s})=>{let a=Xve({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n});if(a!==void 0)throw DO({error:a,fileDescriptors:i,sourceOptions:o,startTime:s})},Xve=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n})=>{if(e!==void 0&&n!==void 0)return n;if(n!==void 0)return AO(t),n;if(e!==void 0)return EO(r),e},DO=({error:t,fileDescriptors:e,sourceOptions:r,startTime:n})=>Pc({error:t,command:z9,escapedCommand:z9,fileDescriptors:e,options:r,startTime:n,isSync:!1}),z9="source.pipe(destination)"});var U9,q9=y(()=>{U9=async t=>{let[{status:e,reason:r,value:n=r},{status:i,reason:o,value:s=o}]=await t;if(s.pipedFrom.includes(n)||s.pipedFrom.push(n),i==="rejected")throw s;if(e==="rejected")throw n;return s}});import{finished as Qve}from"node:stream/promises";var B9,ebe,tbe,rbe,T_,nbe,ibe,H9=y(()=>{$_();Ny();k_();B9=(t,e,r)=>{let n=T_.has(e)?tbe(t,e):ebe(t,e);return Ws(t,nbe,r.signal),Ws(e,ibe,r.signal),rbe(e),n},ebe=(t,e)=>{let r=ta([t]);return Dc(r,e),T_.set(e,r),r},tbe=(t,e)=>{let r=T_.get(e);return r.add(t),r},rbe=async t=>{try{await Qve(t,{cleanup:!0,readable:!1,writable:!0})}catch{}T_.delete(t)},T_=new WeakMap,nbe=2,ibe=1});import{aborted as obe}from"node:util";var Z9,sbe,G9=y(()=>{NO();Z9=(t,e)=>t===void 0?[]:[sbe(t,e)],sbe=async(t,{sourceStream:e,mergedStream:r,fileDescriptors:n,sourceOptions:i,startTime:o})=>{await obe(t,e),await r.remove(e);let s=new Error("Pipe canceled by `unpipeSignal` option.");throw DO({error:s,fileDescriptors:n,sourceOptions:i,startTime:o})}});var O_,abe,cbe,V9=y(()=>{Gi();F9();NO();q9();H9();G9();O_=(t,...e)=>{if(kt(e[0]))return O_.bind(void 0,{...t,boundOptions:{...t.boundOptions,...e[0]}});let{destination:r,...n}=M9(t,...e),i=abe({...n,destination:r});return i.pipe=O_.bind(void 0,{...t,source:r,sourcePromise:i,boundOptions:{}}),i},abe=async({sourcePromise:t,sourceStream:e,sourceOptions:r,sourceError:n,destination:i,destinationStream:o,destinationError:s,unpipeSignal:a,fileDescriptors:c,startTime:l})=>{let u=cbe(t,i);L9({sourceStream:e,sourceError:n,destinationStream:o,destinationError:s,fileDescriptors:c,sourceOptions:r,startTime:l});let d=new AbortController;try{let f=B9(e,o,d);return await Promise.race([U9(u),...Z9(a,{sourceStream:e,mergedStream:f,sourceOptions:r,fileDescriptors:c,startTime:l})])}finally{d.abort()}},cbe=(t,e)=>Promise.allSettled([t,e])});import{on as lbe}from"node:events";import{getDefaultHighWaterMark as ube}from"node:stream";var I_,dbe,jO,fbe,K9,MO,W9,pbe,mbe,P_=y(()=>{uO();g_();pO();I_=({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:n,encoding:i,preserveNewlines:o})=>{let s=new AbortController;return dbe(e,s),K9({stream:t,controller:s,binary:r,shouldEncode:!t.readableObjectMode&&n,encoding:i,shouldSplit:!t.readableObjectMode,preserveNewlines:o})},dbe=async(t,e)=>{try{await t}catch{}finally{e.abort()}},jO=({stream:t,onStreamEnd:e,lines:r,encoding:n,stripFinalNewline:i,allMixed:o})=>{let s=new AbortController;fbe(e,s,t);let a=t.readableObjectMode&&!o;return K9({stream:t,controller:s,binary:n==="buffer",shouldEncode:!a,encoding:n,shouldSplit:!a&&r,preserveNewlines:!i})},fbe=async(t,e,r)=>{try{await t}catch{r.destroy()}finally{e.abort()}},K9=({stream:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:o,preserveNewlines:s})=>{let a=lbe(t,"data",{signal:e.signal,highWaterMark:W9,highWatermark:W9});return pbe({onStdoutChunk:a,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:o,preserveNewlines:s})},MO=ube(!0),W9=MO,pbe=async function*({onStdoutChunk:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:o,preserveNewlines:s}){let a=mbe({binary:r,shouldEncode:n,encoding:i,shouldSplit:o,preserveNewlines:s});try{for await(let[c]of t)yield*ea(c,a,0)}catch(c){if(!e.signal.aborted)throw c}finally{yield*Jd(a)}},mbe=({binary:t,shouldEncode:e,encoding:r,shouldSplit:n,preserveNewlines:i})=>[y_(t,r,!e),h_(t,i,!n,{})].filter(Boolean)});import{setImmediate as hbe}from"node:timers/promises";var J9,gbe,ybe,_be,FO,Y9,zO=y(()=>{s_();Br();hO();P_();Xs();Kd();J9=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,buffer:i,maxBuffer:o,lines:s,allMixed:a,stripFinalNewline:c,verboseInfo:l,streamInfo:u})=>{let d=gbe({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:a,verboseInfo:l,streamInfo:u});if(!i){await Promise.all([ybe(t),d]);return}let f=aO(c,r),p=jO({stream:t,onStreamEnd:e,lines:s,encoding:n,stripFinalNewline:f,allMixed:a}),[m]=await Promise.all([_be({stream:t,iterable:p,fdNumber:r,encoding:n,maxBuffer:o,lines:s}),d]);return m},gbe=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:i,verboseInfo:o,streamInfo:{fileDescriptors:s}})=>{if(!S_({stdioItems:s[r]?.stdioItems,encoding:n,verboseInfo:o,fdNumber:r}))return;let a=jO({stream:t,onStreamEnd:e,lines:!0,encoding:n,stripFinalNewline:!0,allMixed:i});await ZG(a,t,r,o)},ybe=async t=>{await hbe(),t.readableFlowing===null&&t.resume()},_be=async({stream:t,stream:{readableObjectMode:e},iterable:r,fdNumber:n,encoding:i,maxBuffer:o,lines:s})=>{try{return e||s?await r_(r,{maxBuffer:o}):i==="buffer"?new Uint8Array(await n_(r,{maxBuffer:o})):await o_(r,{maxBuffer:o})}catch(a){return Y9(OZ({error:a,stream:t,readableObjectMode:e,lines:s,encoding:i,fdNumber:n}))}},FO=async t=>{try{return await t}catch(e){return Y9(e)}},Y9=({bufferedData:t})=>S6(t)?new Uint8Array(t):t});import{finished as vbe}from"node:stream/promises";var ef,bbe,Sbe,wbe,xbe,$be,LO,R_,X9,C_=y(()=>{ef=async(t,e,r,{isSameDirection:n,stopOnExit:i=!1}={})=>{let o=bbe(t,r),s=new AbortController;try{await Promise.race([...i?[r.exitPromise]:[],vbe(t,{cleanup:!0,signal:s.signal})])}catch(a){o.stdinCleanedUp||xbe(a,e,r,n)}finally{s.abort()}},bbe=(t,{originalStreams:[e],subprocess:r})=>{let n={stdinCleanedUp:!1};return t===e&&Sbe(t,r,n),n},Sbe=(t,e,r)=>{let{_destroy:n}=t;t._destroy=(...i)=>{wbe(e,r),n.call(t,...i)}},wbe=({exitCode:t,signalCode:e},r)=>{(t!==null||e!==null)&&(r.stdinCleanedUp=!0)},xbe=(t,e,r,n)=>{if(!$be(t,e,r,n))throw t},$be=(t,e,r,n=!0)=>r.propagating?X9(t)||R_(t):(r.propagating=!0,LO(r,e)===n?X9(t):R_(t)),LO=({fileDescriptors:t},e)=>e!=="all"&&t[e].direction==="input",R_=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",X9=t=>t?.code==="EPIPE"});var Q9,UO,qO=y(()=>{zO();C_();Q9=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:o,verboseInfo:s,streamInfo:a})=>t.stdio.map((c,l)=>UO({stream:c,fdNumber:l,encoding:e,buffer:r[l],maxBuffer:n[l],lines:i[l],allMixed:!1,stripFinalNewline:o,verboseInfo:s,streamInfo:a})),UO=async({stream:t,fdNumber:e,encoding:r,buffer:n,maxBuffer:i,lines:o,allMixed:s,stripFinalNewline:a,verboseInfo:c,streamInfo:l})=>{if(!t)return;let u=ef(t,e,l);if(LO(l,e)){await u;return}let[d]=await Promise.all([J9({stream:t,onStreamEnd:u,fdNumber:e,encoding:r,buffer:n,maxBuffer:i,lines:o,allMixed:s,stripFinalNewline:a,verboseInfo:c,streamInfo:l}),u]);return d}});var eV,tV,kbe,Ebe,BO=y(()=>{$_();qO();eV=({stdout:t,stderr:e},{all:r})=>r&&(t||e)?ta([t,e].filter(Boolean)):void 0,tV=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:o,verboseInfo:s,streamInfo:a})=>UO({...kbe(t,r),fdNumber:"all",encoding:e,maxBuffer:n[1]+n[2],lines:i[1]||i[2],allMixed:Ebe(t),stripFinalNewline:o,verboseInfo:s,streamInfo:a}),kbe=({stdout:t,stderr:e,all:r},[,n,i])=>{let o=n||i;return o?n?i?{stream:r,buffer:o}:{stream:t,buffer:o}:{stream:e,buffer:o}:{stream:r,buffer:o}},Ebe=({all:t,stdout:e,stderr:r})=>t&&e&&r&&e.readableObjectMode!==r.readableObjectMode});var rV,nV,iV=y(()=>{Sc();jo();rV=t=>bc(t,"ipc"),nV=(t,e)=>{let r=by(t);li({type:"ipc",verboseMessage:r,fdNumber:"ipc",verboseInfo:e})}});var oV,sV,aV=y(()=>{Xs();iV();Ji();SO();oV=async({subprocess:t,buffer:e,maxBuffer:r,ipc:n,ipcOutput:i,verboseInfo:o})=>{if(!n)return i;let s=rV(o),a=Ki(e,"ipc"),c=Ki(r,"ipc");for await(let l of bO({anyProcess:t,channel:t.channel,isSubprocess:!1,ipc:n,shouldAwait:!1,reference:!0}))a&&(IZ(t,i,c),i.push(l)),s&&nV(l,o);return i},sV=async(t,e)=>(await Promise.allSettled([t]),e)});import{once as Abe}from"node:events";var cV,Tbe,Obe,Ibe,lV=y(()=>{Ys();jT();AT();NT();Wi();dr();zO();aV();FT();BO();qO();_O();C_();cV=async({subprocess:t,options:{encoding:e,buffer:r,maxBuffer:n,lines:i,timeoutDuration:o,cancelSignal:s,gracefulCancel:a,forceKillAfterDelay:c,stripFinalNewline:l,ipc:u,ipcInput:d},context:f,verboseInfo:p,fileDescriptors:m,originalStreams:h,onInternalError:g,controller:v})=>{let _=XG(t,f),S={originalStreams:h,fileDescriptors:m,subprocess:t,exitPromise:_,propagating:!1},w=Q9({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:l,verboseInfo:p,streamInfo:S}),x=tV({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:l,verboseInfo:p,streamInfo:S}),I=[],T=oV({subprocess:t,buffer:r,maxBuffer:n,ipc:u,ipcOutput:I,verboseInfo:p}),k=Tbe(h,t,S),C=Obe(m,S);try{return await Promise.race([Promise.all([{},e9(_),Promise.all(w),x,T,tZ(t,d),...k,...C]),g,Ibe(t,v),...JH(t,o,f,v),...gH({subprocess:t,cancelSignal:s,gracefulCancel:a,context:f,controller:v}),...WH({subprocess:t,cancelSignal:s,gracefulCancel:a,forceKillAfterDelay:c,context:f,controller:v})])}catch(E){return f.terminationReason??="other",Promise.all([{error:E},_,Promise.all(w.map(Z=>FO(Z))),FO(x),sV(T,I),Promise.allSettled(k),Promise.allSettled(C)])}},Tbe=(t,e,r)=>t.map((n,i)=>n===e.stdio[i]?void 0:ef(n,i,r)),Obe=(t,e)=>t.flatMap(({stdioItems:r},n)=>r.filter(({value:i,stream:o=i})=>zn(o,{checkOpen:!1})&&!jn(o)).map(({type:i,value:o,stream:s=o})=>ef(s,n,e,{isSameDirection:pn.has(i),stopOnExit:i==="native"}))),Ibe=async(t,{signal:e})=>{let[r]=await Abe(t,"error",{signal:e});throw r}});var uV,tf,Nc,D_=y(()=>{Ac();uV=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),tf=(t,e,r)=>{let n=t[r];n.has(e)||n.set(e,[]);let i=n.get(e),o=ui();return i.push(o),{resolve:o.resolve.bind(o),promises:i}},Nc=async({resolve:t,promises:e},r)=>{t();let[n]=await Promise.race([Promise.allSettled([!0,r]),Promise.all([!1,...e])]);return!n}});import{finished as dV}from"node:stream/promises";var HO,fV,ZO,GO,N_,j_,VO=y(()=>{C_();HO=async t=>{if(t!==void 0)try{await ZO(t)}catch{}},fV=async t=>{if(t!==void 0)try{await GO(t)}catch{}},ZO=async t=>{await dV(t,{cleanup:!0,readable:!1,writable:!0})},GO=async t=>{await dV(t,{cleanup:!0,readable:!0,writable:!1})},N_=async(t,e)=>{if(await t,e)throw e},j_=(t,e,r)=>{r&&!R_(r)?t.destroy(r):e&&t.destroy()}});import{Readable as Pbe}from"node:stream";import{callbackify as Rbe}from"node:util";var pV,WO,KO,JO,Cbe,YO,XO,mV,QO=y(()=>{Ks();Fo();P_();Ac();D_();VO();pV=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,binary:i=!0,preserveNewlines:o=!0}={})=>{let s=i||Hr.has(r),{subprocessStdout:a,waitReadableDestroy:c}=WO(t,n,e),{readableEncoding:l,readableObjectMode:u,readableHighWaterMark:d}=KO(a,s),{read:f,onStdoutDataDone:p}=JO({subprocessStdout:a,subprocess:t,binary:s,encoding:r,preserveNewlines:o}),m=new Pbe({read:f,destroy:Rbe(XO.bind(void 0,{subprocessStdout:a,subprocess:t,waitReadableDestroy:c})),highWaterMark:d,objectMode:u,encoding:l});return YO({subprocessStdout:a,onStdoutDataDone:p,readable:m,subprocess:t}),m},WO=(t,e,r)=>{let n=Tc(t,e),i=tf(r,n,"readableDestroy");return{subprocessStdout:n,waitReadableDestroy:i}},KO=({readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r},n)=>n?{readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r}:{readableEncoding:t,readableObjectMode:!0,readableHighWaterMark:MO},JO=({subprocessStdout:t,subprocess:e,binary:r,encoding:n,preserveNewlines:i})=>{let o=ui(),s=I_({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:!r,encoding:n,preserveNewlines:i});return{read(){Cbe(this,s,o)},onStdoutDataDone:o}},Cbe=async(t,e,r)=>{try{let{value:n,done:i}=await e.next();i?r.resolve():t.push(n)}catch{}},YO=async({subprocessStdout:t,onStdoutDataDone:e,readable:r,subprocess:n,subprocessStdin:i})=>{try{await GO(t),await n,await HO(i),await e,r.readable&&r.push(null)}catch(o){await HO(i),mV(r,o)}},XO=async({subprocessStdout:t,subprocess:e,waitReadableDestroy:r},n)=>{await Nc(r,e)&&(mV(t,n),await N_(e,n))},mV=(t,e)=>{j_(t,t.readable,e)}});import{Writable as Dbe}from"node:stream";import{callbackify as hV}from"node:util";var gV,eI,tI,Nbe,jbe,rI,nI,yV,iI=y(()=>{Fo();D_();VO();gV=({subprocess:t,concurrentStreams:e},{to:r}={})=>{let{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:o}=eI(t,r,e),s=new Dbe({...tI(n,t,i),destroy:hV(nI.bind(void 0,{subprocessStdin:n,subprocess:t,waitWritableFinal:i,waitWritableDestroy:o})),highWaterMark:n.writableHighWaterMark,objectMode:n.writableObjectMode});return rI(n,s),s},eI=(t,e,r)=>{let n=Dy(t,e),i=tf(r,n,"writableFinal"),o=tf(r,n,"writableDestroy");return{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:o}},tI=(t,e,r)=>({write:Nbe.bind(void 0,t),final:hV(jbe.bind(void 0,t,e,r))}),Nbe=(t,e,r,n)=>{t.write(e,r)?n():t.once("drain",n)},jbe=async(t,e,r)=>{await Nc(r,e)&&(t.writable&&t.end(),await e)},rI=async(t,e,r)=>{try{await ZO(t),e.writable&&e.end()}catch(n){await fV(r),yV(e,n)}},nI=async({subprocessStdin:t,subprocess:e,waitWritableFinal:r,waitWritableDestroy:n},i)=>{await Nc(r,e),await Nc(n,e)&&(yV(t,i),await N_(e,i))},yV=(t,e)=>{j_(t,t.writable,e)}});import{Duplex as Mbe}from"node:stream";import{callbackify as Fbe}from"node:util";var _V,zbe,vV=y(()=>{Ks();QO();iI();_V=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,to:i,binary:o=!0,preserveNewlines:s=!0}={})=>{let a=o||Hr.has(r),{subprocessStdout:c,waitReadableDestroy:l}=WO(t,n,e),{subprocessStdin:u,waitWritableFinal:d,waitWritableDestroy:f}=eI(t,i,e),{readableEncoding:p,readableObjectMode:m,readableHighWaterMark:h}=KO(c,a),{read:g,onStdoutDataDone:v}=JO({subprocessStdout:c,subprocess:t,binary:a,encoding:r,preserveNewlines:s}),_=new Mbe({read:g,...tI(u,t,d),destroy:Fbe(zbe.bind(void 0,{subprocessStdout:c,subprocessStdin:u,subprocess:t,waitReadableDestroy:l,waitWritableFinal:d,waitWritableDestroy:f})),readableHighWaterMark:h,writableHighWaterMark:u.writableHighWaterMark,readableObjectMode:m,writableObjectMode:u.writableObjectMode,encoding:p});return YO({subprocessStdout:c,onStdoutDataDone:v,readable:_,subprocess:t,subprocessStdin:u}),rI(u,_,c),_},zbe=async({subprocessStdout:t,subprocessStdin:e,subprocess:r,waitReadableDestroy:n,waitWritableFinal:i,waitWritableDestroy:o},s)=>{await Promise.all([XO({subprocessStdout:t,subprocess:r,waitReadableDestroy:n},s),nI({subprocessStdin:e,subprocess:r,waitWritableFinal:i,waitWritableDestroy:o},s)])}});var oI,Lbe,bV=y(()=>{Ks();Fo();P_();oI=(t,e,{from:r,binary:n=!1,preserveNewlines:i=!1}={})=>{let o=n||Hr.has(e),s=Tc(t,r),a=I_({subprocessStdout:s,subprocess:t,binary:o,shouldEncode:!0,encoding:e,preserveNewlines:i});return Lbe(a,s,t)},Lbe=async function*(t,e,r){try{yield*t}finally{e.readable&&e.destroy(),await r}}});var SV,wV=y(()=>{D_();QO();iI();vV();bV();SV=(t,{encoding:e})=>{let r=uV();t.readable=pV.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.writable=gV.bind(void 0,{subprocess:t,concurrentStreams:r}),t.duplex=_V.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.iterable=oI.bind(void 0,t,e),t[Symbol.asyncIterator]=oI.bind(void 0,t,e,{})}});var xV,Ube,qbe,$V=y(()=>{xV=(t,e)=>{for(let[r,n]of qbe){let i=n.value.bind(e);Reflect.defineProperty(t,r,{...n,value:i})}},Ube=(async()=>{})().constructor.prototype,qbe=["then","catch","finally"].map(t=>[t,Reflect.getOwnPropertyDescriptor(Ube,t)])});import{setMaxListeners as Bbe}from"node:events";import{spawn as Hbe}from"node:child_process";var kV,Zbe,Gbe,Vbe,Wbe,Kbe,EV=y(()=>{s_();pT();UT();Fo();qT();wO();Wd();l_();h9();b9();Kd();I9();Iy();N9();V9();BO();lV();wV();Ac();$V();kV=(t,e,r,n)=>{let{file:i,commandArguments:o,command:s,escapedCommand:a,startTime:c,verboseInfo:l,options:u,fileDescriptors:d}=Zbe(t,e,r),{subprocess:f,promise:p}=Vbe({file:i,commandArguments:o,options:u,startTime:c,verboseInfo:l,command:s,escapedCommand:a,fileDescriptors:d});return f.pipe=O_.bind(void 0,{source:f,sourcePromise:p,boundOptions:{},createNested:n}),xV(f,p),di.set(f,{options:u,fileDescriptors:d}),f},Zbe=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:o,verboseInfo:s}=xy(t,e,r),{file:a,commandArguments:c,options:l}=Jy(t,e,r),u=Gbe(l),d=v9(u,s);return{file:a,commandArguments:c,command:n,escapedCommand:i,startTime:o,verboseInfo:s,options:u,fileDescriptors:d}},Gbe=({timeout:t,signal:e,...r})=>{if(e!==void 0)throw new TypeError('The "signal" option has been renamed to "cancelSignal" instead.');return{...r,timeoutDuration:t}},Vbe=({file:t,commandArguments:e,options:r,startTime:n,verboseInfo:i,command:o,escapedCommand:s,fileDescriptors:a})=>{let c;try{c=Hbe(...Yy(t,e,r))}catch(m){return m9({error:m,command:o,escapedCommand:s,fileDescriptors:a,options:r,startTime:n,verboseInfo:i})}let l=new AbortController;Bbe(Number.POSITIVE_INFINITY,l.signal);let u=[...c.stdio];O9(c,a,l),D9(c,r,l);let d={},f=ui();c.kill=mH.bind(void 0,{kill:c.kill.bind(c),options:r,onInternalError:f,context:d,controller:l}),c.all=eV(c,r),SV(c,r),d9(c,r);let p=Wbe({subprocess:c,options:r,startTime:n,verboseInfo:i,fileDescriptors:a,originalStreams:u,command:o,escapedCommand:s,context:d,onInternalError:f,controller:l});return{subprocess:c,promise:p}},Wbe=async({subprocess:t,options:e,startTime:r,verboseInfo:n,fileDescriptors:i,originalStreams:o,command:s,escapedCommand:a,context:c,onInternalError:l,controller:u})=>{let[d,[f,p],m,h,g]=await cV({subprocess:t,options:e,context:c,verboseInfo:n,fileDescriptors:i,originalStreams:o,onInternalError:l,controller:u});u.abort(),l.resolve();let v=m.map((w,x)=>Xi(w,e,x)),_=Xi(h,e,"all"),S=Kbe({errorInfo:d,exitCode:f,signal:p,stdio:v,all:_,ipcOutput:g,context:c,options:e,command:s,escapedCommand:a,startTime:r});return Rc(S,n,e)},Kbe=({errorInfo:t,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:o,context:s,options:a,command:c,escapedCommand:l,startTime:u})=>"error"in t?Vd({error:t.error,command:c,escapedCommand:l,timedOut:s.terminationReason==="timeout",isCanceled:s.terminationReason==="cancel"||s.terminationReason==="gracefulCancel",isGracefullyCanceled:s.terminationReason==="gracefulCancel",isMaxBuffer:t.error instanceof fi,isForcefullyTerminated:s.isForcefullyTerminated,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:o,options:a,startTime:u,isSync:!1}):c_({command:c,escapedCommand:l,stdio:n,all:i,ipcOutput:o,options:a,startTime:u})});var M_,Jbe,Ybe,AV=y(()=>{Gi();Ji();M_=(t,e)=>{let r=Object.fromEntries(Object.entries(e).map(([n,i])=>[n,Jbe(n,t[n],i)]));return{...t,...r}},Jbe=(t,e,r)=>Ybe.has(t)&&kt(e)&&kt(r)?{...e,...r}:r,Ybe=new Set(["env",...cT])});var Uo,Xbe,Qbe,TV=y(()=>{Gi();nT();O6();i9();EV();AV();Uo=(t,e,r,n)=>{let i=(s,a,c)=>Uo(s,a,r,c),o=(...s)=>Xbe({mapArguments:t,deepOptions:r,boundOptions:e,setBoundExeca:n,createNested:i},...s);return n!==void 0&&n(o,i,e),o},Xbe=({mapArguments:t,deepOptions:e={},boundOptions:r={},setBoundExeca:n,createNested:i},o,...s)=>{if(kt(o))return i(t,M_(r,o),n);let{file:a,commandArguments:c,options:l,isSync:u}=Qbe({mapArguments:t,firstArgument:o,nextArguments:s,deepOptions:e,boundOptions:r});return u?n9(a,c,l):kV(a,c,l,i)},Qbe=({mapArguments:t,firstArgument:e,nextArguments:r,deepOptions:n,boundOptions:i})=>{let o=A6(e)?T6(e,r):[e,...r],[s,a,c]=uy(...o),l=M_(M_(n,i),c),{file:u=s,commandArguments:d=a,options:f=l,isSync:p=!1}=t({file:s,commandArguments:a,options:l});return{file:u,commandArguments:d,options:f,isSync:p}}});var OV,IV,PV,eSe,tSe,RV=y(()=>{OV=({file:t,commandArguments:e})=>PV(t,e),IV=({file:t,commandArguments:e})=>({...PV(t,e),isSync:!0}),PV=(t,e)=>{if(e.length>0)throw new TypeError(`The command and its arguments must be passed as a single string: ${t} ${e}.`);let[r,...n]=eSe(t);return{file:r,commandArguments:n}},eSe=t=>{if(typeof t!="string")throw new TypeError(`The command must be a string: ${String(t)}.`);let e=t.trim();if(e==="")return[];let r=[];for(let n of e.split(tSe)){let i=r.at(-1);i&&i.endsWith("\\")?r[r.length-1]=`${i.slice(0,-1)} ${n}`:r.push(n)}return r},tSe=/ +/g});var CV,DV,rSe,NV,nSe,jV,MV=y(()=>{CV=(t,e,r)=>{t.sync=e(rSe,r),t.s=t.sync},DV=({options:t})=>NV(t),rSe=({options:t})=>({...NV(t),isSync:!0}),NV=t=>({options:{...nSe(t),...t}}),nSe=({input:t,inputFile:e,stdio:r})=>t===void 0&&e===void 0&&r===void 0?{stdin:"inherit"}:{},jV={preferLocal:!0}});var Met,Qe,Fet,zet,Let,Uet,qet,Bet,Het,Zet,Ar=y(()=>{TV();RV();MT();MV();wO();Met=Uo(()=>({})),Qe=Uo(()=>({isSync:!0})),Fet=Uo(OV),zet=Uo(IV),Let=Uo(XH),Uet=Uo(DV,{},jV,CV),{sendMessage:qet,getOneMessage:Bet,getEachMessage:Het,getCancelSignal:Zet}=f9()});import{existsSync as F_,statSync as iSe}from"node:fs";import{dirname as sI,extname as oSe,isAbsolute as FV,join as aI,relative as cI,resolve as z_,sep as sSe}from"node:path";function L_(t){return t==="./gradlew"||t==="gradle"}function aSe(t){return(F_(aI(t,"build.gradle.kts"))||F_(aI(t,"build.gradle")))&&F_(aI(t,"gradle.properties"))}function cSe(t,e){let n=cI(t,e).split(sSe).filter(Boolean);return n.length===0?":":`:${n.join(":")}`}function qo(t,e){return t===":"?`:${e}`:`${t}:${e}`}function lSe(t,e){let r=z_(t,e),n=r;F_(r)?iSe(r).isFile()&&(n=sI(r)):oSe(r)!==""&&(n=sI(r));let i=cI(t,n);if(i.startsWith("..")||FV(i))return null;let o=n;for(;;){if(aSe(o))return o;if(z_(o)===z_(t))return null;let s=sI(o);if(s===o)return null;let a=cI(t,s);if(a.startsWith("..")||FV(a))return null;o=s}}function U_(t,e){let r=z_(t),n=new Map,i=[];for(let o of e){let s=lSe(r,o);if(!s){i.push(o);continue}let a=cSe(r,s);n.has(a)||n.set(a,{path:a,dir:s})}if(i.length>0)throw new Error(`cannot map module(s) to a Gradle project (no build.gradle[.kts] + gradle.properties ancestor under ${r}): ${i.join(", ")}`);return[...n.values()].sort((o,s)=>o.paths.path?1:0)}var q_=y(()=>{"use strict"});import{existsSync as uSe,readFileSync as dSe}from"node:fs";import{join as fSe}from"node:path";function jc(t="."){let e=fSe(t,".cladding","config.yaml");if(!uSe(e))return lI;try{let n=(0,zV.parse)(dSe(e,"utf8"))?.gate;if(!n)return lI;let i=n.scope==="repo"?"repo":"feature",o=n.coverage==="kover"||n.coverage==="jacoco"?n.coverage:void 0,s=typeof n.test_report=="string"?n.test_report:void 0,a={};if(n.commands&&typeof n.commands=="object")for(let l of pSe){let u=n.commands[l];Array.isArray(u)&&u.every(d=>typeof d=="string")&&(a[l]=u)}let c={scope:i};return Object.keys(a).length>0&&(c.commands=a),o&&(c.coverage=o),s&&(c.testReport=s),c}catch{return lI}}function LV(t,e){let r=[],n=!1;for(let i of t){let o=mSe.exec(i);if(o){n=!0;for(let s of e)r.push(qo(s.path,o[1]))}else r.push(i)}return n&&e.length===0||r.length===0?null:{cmd:r[0],args:r.slice(1)}}var zV,pSe,lI,mSe,B_=y(()=>{"use strict";zV=$t(rr(),1);q_();pSe=["type","lint","test","coverage"],lI={scope:"feature"};mSe=/^\{modules:([A-Za-z0-9_.:-]+)\}$/});import{existsSync as dI,readFileSync as UV,readdirSync as hSe,statSync as gSe}from"node:fs";import{join as H_}from"node:path";function mI(t){for(let e of["build.gradle.kts","build.gradle","gradle.properties"]){let r=H_(t,e);if(dI(r))try{if(qV.test(UV(r,"utf8")))return!0}catch{}}return!1}function BV(t){try{return dI(t)&&qV.test(UV(t,"utf8"))}catch{return!1}}function HV(t,e=0){if(e>4||!dI(t))return!1;let r;try{r=hSe(t)}catch{return!1}for(let n of r){let i=H_(t,n),o=!1;try{o=gSe(i).isDirectory()}catch{continue}if(o){if(n==="build"||n===".gradle"||n==="node_modules")continue;if(HV(i,e+1))return!0}else if(/\.(kts|gradle|toml)$/.test(n)&&BV(i))return!0}return!1}function vSe(t){if(mI(t))return!0;for(let e of ySe)if(BV(H_(t,e)))return!0;for(let e of _Se)if(HV(H_(t,e)))return!0;return!1}function ZV(t="."){let e=jc(t).coverage;return e||(vSe(t)?"kover":"jacoco")}function GV(t="."){return fI[ZV(t)]}function VV(t="."){return uI[ZV(t)]}var fI,uI,pI,qV,ySe,_Se,Z_=y(()=>{"use strict";B_();fI={kover:"koverXmlReport",jacoco:"jacocoTestReport"},uI={kover:"build/reports/kover/report.xml",jacoco:"build/reports/jacoco/test/jacocoTestReport.xml"},pI=[uI.kover,uI.jacoco],qV=/kover/i;ySe=["build.gradle.kts","build.gradle","settings.gradle.kts","settings.gradle","gradle/libs.versions.toml"],_Se=["buildSrc","build-logic"]});import{existsSync as hI,readdirSync as WV}from"node:fs";import{join as G_}from"node:path";function gI(t){return hI(G_(t,"gradlew"))?"./gradlew":"gradle"}function bSe(t){let e=gI(t);return{type:{cmd:e,args:["compileKotlin","compileTestKotlin"]},lint:{cmd:e,args:["ktlintCheck"]},test:{cmd:e,args:["test"]},coverage:{cmd:e,args:[GV(t)]},secret:{cmd:"gitleaks",args:["detect","--no-banner"]}}}function wSe(t,e){let r=[t],n=0,i=4e3;for(;r.length>0&&na.name.endsWith(c)))return!0}return!1}function kSe(t,e){for(let r of e)if(hI(G_(t,r)))return r}function ESe(t,e){try{return WV(t).find(n=>n.endsWith(e))}catch{return}}function TSe(t,e){for(let r of ASe)if(r.configs.some(n=>hI(G_(t,n))))return r.gate;return e}function pt(t="."){for(let e of xSe){let r;for(let o of e.manifests)if(o.startsWith(".")?r=ESe(t,o):r=kSe(t,[o]),r)break;if(!r||e.requiresSource&&!wSe(t,e.requiresSource))continue;let n=typeof e.gates=="function"?e.gates(t):e.gates,i=e.language==="typescript"&&n.lint?{...n,lint:TSe(t,n.lint)}:n;return{language:e.language,manifest:r,gates:i}}return $Se}var SSe,xSe,$Se,ASe,mn=y(()=>{"use strict";Z_();SSe=new Set(["node_modules",".git",".gradle",".idea","build","target","dist","out",".cladding"]);xSe=[{language:"typescript",manifests:["package.json"],gates:{type:{cmd:"npx",args:["--no-install","tsc","--noEmit","--incremental","--tsBuildInfoFile",".cladding/cache/tsc.tsbuildinfo"]},lint:{cmd:"npx",args:["--no-install","eslint",".","--cache","--cache-location",".cladding/cache/eslint"]},test:{cmd:"npx",args:["--no-install","vitest","run"]},coverage:{cmd:"npx",args:["--no-install","vitest","run","--coverage"]},secret:{cmd:"npx",args:["--no-install","secretlint","**/*"]},arch:{cmd:"npx",args:["--no-install","madge","--circular","--extensions","ts","."]},smoke:{cmd:"npm",args:["run","--silent","smoke"]},perf:{cmd:"npm",args:["run","--silent","perf"]},visual:{cmd:"npm",args:["run","--silent","visual"]}}},{language:"python",manifests:["pyproject.toml","setup.py","requirements.txt"],gates:{type:{cmd:"mypy",args:["."]},lint:{cmd:"ruff",args:["check","."]},test:{cmd:"pytest",args:[]},coverage:{cmd:"coverage",args:["run","-m","pytest"]},secret:{cmd:"detect-secrets",args:["scan"]},arch:{cmd:"lint-imports",args:[]}}},{language:"rust",manifests:["Cargo.toml"],gates:{type:{cmd:"cargo",args:["check"]},lint:{cmd:"cargo",args:["clippy","--","-D","warnings"]},test:{cmd:"cargo",args:["test"]},coverage:{cmd:"cargo",args:["llvm-cov"]},secret:{cmd:"gitleaks",args:["detect","--no-banner"]}}},{language:"go",manifests:["go.mod"],gates:{type:{cmd:"go",args:["vet","./..."]},lint:{cmd:"golangci-lint",args:["run"]},test:{cmd:"go",args:["test","./..."]},coverage:{cmd:"go",args:["test","-cover","./..."]},secret:{cmd:"gitleaks",args:["detect","--no-banner"]}}},{language:"kotlin",manifests:["build.gradle.kts","build.gradle","pom.xml"],requiresSource:[".kt",".kts"],gates:bSe},{language:"java",manifests:["pom.xml","build.gradle","build.gradle.kts"],gates:{type:{cmd:"mvn",args:["compile","-q"]},lint:{cmd:"mvn",args:["checkstyle:check","-q"]},test:{cmd:"mvn",args:["test","-q"]},coverage:{cmd:"mvn",args:["jacoco:report","-q"]},secret:{cmd:"gitleaks",args:["detect","--no-banner"]}}},{language:"php",manifests:["composer.json"],gates:{type:{cmd:"phpstan",args:["analyse"]},lint:{cmd:"phpcs",args:[]},test:{cmd:"phpunit",args:[]},coverage:{cmd:"phpunit",args:["--coverage-text"]},secret:{cmd:"gitleaks",args:["detect","--no-banner"]}}},{language:"ruby",manifests:["Gemfile"],gates:{type:{cmd:"srb",args:["tc"]},lint:{cmd:"rubocop",args:[]},test:{cmd:"bundle",args:["exec","rspec"]},coverage:{cmd:"bundle",args:["exec","rspec","--format","documentation"]},secret:{cmd:"gitleaks",args:["detect","--no-banner"]}}},{language:"elixir",manifests:["mix.exs"],gates:{type:{cmd:"mix",args:["dialyzer"]},lint:{cmd:"mix",args:["credo"]},test:{cmd:"mix",args:["test"]},coverage:{cmd:"mix",args:["coveralls"]},secret:{cmd:"gitleaks",args:["detect","--no-banner"]}}},{language:"dotnet",manifests:[".csproj",".sln",".fsproj"],gates:{type:{cmd:"dotnet",args:["build","--nologo","-v","q"]},lint:{cmd:"dotnet",args:["format","--verify-no-changes"]},test:{cmd:"dotnet",args:["test","--nologo"]},coverage:{cmd:"dotnet",args:["test",'--collect:"XPlat Code Coverage"']},secret:{cmd:"gitleaks",args:["detect","--no-banner"]}}}],$Se={language:"unknown",manifest:"",gates:{}};ASe=[{configs:["biome.json","biome.jsonc"],gate:{cmd:"npx",args:["--no-install","biome","lint","."]}},{configs:[".oxlintrc.json",".oxlintrc.jsonc","oxlint.config.ts"],gate:{cmd:"npx",args:["--no-install","oxlint"]}}]});import{existsSync as OSe,readFileSync as ISe}from"node:fs";import{join as PSe}from"node:path";function rf(t){return t.code==="ENOENT"}function V_(t,e,r,n){let i=t.exitCode??1;if(i===0)return[];let o=(t.stderr??"").toString().trim(),s=(t.stdout??"").toString().trim(),a=(o||s||`exit ${i}`).slice(0,200);return KV.test(o)||KV.test(s)?[{detector:e,severity:"info",message:n(a)}]:[{detector:e,severity:"error",message:r(a)}]}function Ft(t,e,r){return rf(r)?{stage:t,pass:!1,exitCode:2,stderr:`'${e}' not installed`}:null}function nr(t,e){if((e.exitCode??1)===0)return{stage:t,pass:!0,exitCode:0};let n=String(e.stderr??"").trim()||String(e.stdout??"").trim();return n?{stage:t,pass:!1,exitCode:1,stderr:n}:{stage:t,pass:!1,exitCode:1}}function Mc(t,e){let r=PSe(t,"package.json");if(!OSe(r))return!1;try{return!!JSON.parse(ISe(r,"utf8")).scripts?.[e]}catch{return!1}}var KV,hn=y(()=>{"use strict";KV=/config (is |file )?not found|no such file|ENOENT|cannot find (a |the )?(config|module|package|preset)|require[sd]?\b.{0,40}\bconfig|canceled due to missing packages|could not determine executable/i});function RSe(t){let{cwd:e="."}=t,r=pt(e),n=r.gates.arch;if(!n)return[{detector:W_,severity:"info",message:`no architecture validator registered for language '${r.language}' (compiler may already enforce acyclic imports)`}];let i=Qe(n.cmd,[...n.args],{cwd:e,reject:!1});return rf(i)?[{detector:W_,severity:"info",message:`architecture validator '${n.cmd}' not installed`}]:V_(i,W_,o=>`${n.cmd} reported architecture violations: ${o}`,o=>`${n.cmd} could not validate (config/setup gap, not a violation): ${o}`)}var W_,K_,yI=y(()=>{"use strict";Ar();mn();hn();W_="ARCHITECTURE_VIOLATION";K_={name:W_,run:RSe}});import JV from"node:process";function na(t={}){let r=K_.run(t).filter(o=>o.severity==="error"),n=r.length===0,i={stage:CSe,pass:n,exitCode:n?0:1};return n?i:{...i,stderr:r.map(o=>o.message).join(` `)}}var CSe,DSe,J_=y(()=>{"use strict";yI();CSe="stage_1.5";DSe=!globalThis.__CLADDING_BUNDLED&&import.meta.url===`file://${JV.argv[1]}`;if(DSe){let t=na();console.log(JSON.stringify(t)),JV.exit(t.exitCode)}});import{existsSync as _I,readdirSync as YV}from"node:fs";import{join as Y_}from"node:path";function jSe(t,e){let r=Y_(t,e.path);if(!_I(r))return!0;if(e.isDirectory)try{return YV(r).filter(i=>i.endsWith(".yaml")||i.endsWith(".yml")).length===0}catch{return!0}return!1}function MSe(t){let{cwd:e="."}=t,r=[];for(let i of NSe)jSe(e,i)&&r.push({detector:nf,severity:i.severity,path:i.path,message:`${i.path} is absent \u2014 cladding scaffold incomplete (${i.purpose}). Run \`clad init --intent ""\` to populate it.`});let n=Y_(e,"spec.yaml");if(_I(n)){let i=LSe(n),o=i?null:FSe(e);if(i)r.push({detector:nf,severity:"error",path:"spec.yaml",message:`spec.yaml is present but unreadable (${i}) \u2014 cladding is governing nothing. Fix the SSoT root, then \`clad sync\` to validate.`});else if(o)r.push({detector:nf,severity:"error",path:o.path,message:`spec shard '${o.path}' is present but unparseable (${o.reason}) \u2014 loadSpec throws on it, so every spec-gated detector silently passes. Fix it, then \`clad sync\`.`});else{let s=zSe(e);s&&r.push({detector:nf,severity:"error",path:"spec.yaml",message:`spec.yaml is present and parses, but the assembled spec does not load (${s}) \u2014 every spec-gated detector then degrades to non-blocking info, so the gate would pass GREEN on an unloadable SSoT. Fix it, then \`clad sync\` to validate.`})}}return r}function FSe(t){for(let e of["spec/features","spec/scenarios"]){let r=Y_(t,e);if(!_I(r))continue;let n;try{n=YV(r).filter(i=>i.endsWith(".yaml")||i.endsWith(".yml"))}catch{continue}for(let i of[...n].sort())try{si(Y_(r,i))}catch(o){return{path:`${e}/${i}`,reason:o.message}}}return null}function zSe(t){try{return J(t),null}catch(e){return e.message}}function LSe(t){let e;try{e=si(t)}catch(r){return`unparseable: ${r.message}`}return e===null||typeof e!="object"||Array.isArray(e)?"empty or not a YAML mapping":null}var nf,NSe,XV,QV=y(()=>{"use strict";lt();iy();nf="ABSENCE_OF_GOVERNANCE",NSe=[{path:"spec.yaml",severity:"error",purpose:"SSoT root \u2014 every spec-gated detector needs it"},{path:"spec/architecture.yaml",severity:"warn",purpose:"architecture invariants (layers + forbidden_imports)"},{path:"spec/capabilities.yaml",severity:"warn",purpose:"capability \u2194 feature traceability"},{path:"docs/project-context.md",severity:"warn",purpose:"intent narrative + decision history"},{path:"docs/conventions.md",severity:"info",purpose:"project style guide (recommended)"},{path:"spec/scenarios",severity:"info",purpose:"user-journey scenarios (recommended)",isDirectory:!0}];XV={name:nf,run:MSe}});function X_(t){let e=t.trim().match(/^(\S+)/);return e?e[1].toLowerCase():""}function vI(t,e){let r=e?.trim()??"";if(!t)return r.length>0?"condition is present but ears pattern is not declared":null;if(t==="ubiquitous")return r.length>0?`ears='ubiquitous' but condition is present ('${r.slice(0,40)}\u2026')`:null;if(t==="complex"){if(r.length===0)return"ears='complex' requires a 'while' precondition and a 'when' trigger \u2014 empty";let i=X_(r)==="while",o=qSe.test(r);return i?o?null:"ears='complex' requires a 'when' trigger clause after the 'while' precondition \u2014 none found":`ears='complex' requires the condition to start with 'while' (precondition) \u2014 got '${X_(r)}'`}let n=USe[t];return r.length===0?`ears='${t}' requires condition starting with '${n}' \u2014 empty`:X_(r)!==n?`ears='${t}' requires condition to start with '${n}' \u2014 got '${X_(r)}'`:null}function BSe(t,e){let r=vI(e.ears,e.condition);return r?[{featureId:t.id,acId:e.id,pattern:e.ears??"unspecified",message:r}]:[]}function eW(t){let e=[];for(let r of t)for(let n of r.acceptance_criteria??[])e.push(...BSe(r,n));return e}var USe,qSe,bI=y(()=>{"use strict";USe={event:"when",state:"while",optional:"where",unwanted:"if"},qSe=/\bwhen\b/i});function pe(t,e,r){let n;try{n=J(t)}catch(i){return[{detector:e,severity:"info",message:`spec.yaml not loaded: ${i.message}`}]}return r(n)}var _t=y(()=>{"use strict";lt()});function HSe(t){let{cwd:e="."}=t;return pe(e,Q_,ZSe)}function ZSe(t){let e=[];for(let r of t.features)for(let n of r.acceptance_criteria??[]){let i=!!n.text?.trim(),o=!!(n.condition?.trim()||n.action?.trim()||n.response?.trim());!i&&!o&&e.push({detector:Q_,severity:"error",message:`${r.id}.${n.id} has neither rendered text nor any EARS field (condition/action/response) \u2014 structurally empty AC`})}for(let r of eW(t.features))e.push({detector:Q_,severity:"error",message:`${r.featureId}.${r.acId} EARS: ${r.message}`});return e}var Q_,tW,rW=y(()=>{"use strict";bI();_t();Q_="AC_DRIFT";tW={name:Q_,run:HSe}});function mi(t=".",e){let n=(e??"").trim().toLowerCase()||pt(t).language;return KSe[n]??nW}var GSe,VSe,nW,WSe,KSe,Fc=y(()=>{"use strict";mn();GSe=/(?:import\s+(?:[\s\S]*?\sfrom\s+)?|import\s*\()['"]([^'"]+)['"]\)?/g,VSe=/^[ \t]*import\s+([\w.]+)/gm,nW={ext:"ts",extensions:[".ts",".tsx"],sourceRoots:["src"],mainRoot:"src",testGlobs:["tests/**/*.test.ts"],coverageSummary:"coverage/coverage-summary.json",coverageFormat:"istanbul-json",importMatcher:GSe,importStyle:"relative"},WSe={ext:"kt",extensions:[".kt",".kts"],sourceRoots:["src/main/kotlin","src/test/kotlin"],mainRoot:"src/main/kotlin",testGlobs:["src/test/kotlin/**/*Test.kt","src/test/kotlin/**/*Tests.kt"],coverageSummary:"build/reports/jacoco/test/jacocoTestReport.xml",coverageFormat:"jacoco-xml",importMatcher:VSe,importStyle:"dotted"},KSe={typescript:nW,kotlin:WSe}});import{existsSync as JSe,readFileSync as YSe,readdirSync as XSe,statSync as QSe}from"node:fs";import{join as oW,relative as iW}from"node:path";function ewe(t,e){if(!JSe(t))return[];let r=[],n=[t];for(;n.length>0;){let i=n.pop(),o;try{o=XSe(i)}catch{continue}for(let s of o){if(s==="node_modules"||s===".cladding"||s.startsWith("."))continue;let a=oW(i,s),c;try{c=QSe(a)}catch{continue}c.isDirectory()?n.push(a):e.some(l=>s.endsWith(l))&&r.push(a)}}return r}function twe(t){let e=t.trim();return e.startsWith("//")||e.startsWith("/*")||e.startsWith("*")}function nwe(t){return rwe.test(t)}function iwe(t){let{cwd:e="."}=t,r;try{r=J(e)}catch{return[]}let n=r.project.ai_hints?.forbidden_patterns;if(!n||n.length===0)return[];let i=mi(e,r.project?.language),o=i.sourceRoots.flatMap(a=>ewe(oW(e,a),i.extensions));if(o.length===0)return[];let s=[];for(let a of o){let c;try{c=YSe(a,"utf8")}catch{continue}let l=c.split(` `);for(let u=0;u{"use strict";lt();Fc();sW="AI_HINTS_FORBIDDEN_PATTERN";rwe=/\/\/\s*cladding-disable[:\s]+AI_HINTS_FORBIDDEN_PATTERN\b/;aW={name:sW,run:iwe}});function owe(t){let{cwd:e="."}=t,r;try{r=J(e)}catch{return[]}let n=[];for(let i of r.features){let o=(i.acceptance_criteria??[]).map(a=>a.id),s=new Map;for(let a of o)s.set(a,(s.get(a)??0)+1);for(let[a,c]of s)c>1&&n.push({detector:lW,severity:"error",message:`${i.id}.${a} appears ${c} times \u2014 AC ids must be unique within a feature`})}return n}var lW,uW,dW=y(()=>{"use strict";lt();lW="AC_DUPLICATE_WITHIN_FEATURE";uW={name:lW,run:owe}});import{createRequire as swe}from"module";import{basename as awe,dirname as wI,normalize as cwe,relative as lwe,resolve as uwe,sep as mW}from"path";import*as dwe from"fs";function fwe(t){let e=cwe(t);return e.length>1&&e[e.length-1]===mW&&(e=e.substring(0,e.length-1)),e}function hW(t,e){return t.replace(pwe,e)}function hwe(t){return t==="/"||mwe.test(t)}function SI(t,e){let{resolvePaths:r,normalizePath:n,pathSeparator:i}=e,o=process.platform==="win32"&&t.includes("/")||t.startsWith(".");if(r&&(t=uwe(t)),(n||o)&&(t=fwe(t)),t===".")return"";let s=t[t.length-1]!==i;return hW(s?t+i:t,i)}function gW(t,e){return e+t}function gwe(t,e){return function(r,n){return n.startsWith(t)?n.slice(t.length)+r:hW(lwe(t,n),e.pathSeparator)+e.pathSeparator+r}}function ywe(t){return t}function _we(t,e,r){return e+t+r}function vwe(t,e){let{relativePaths:r,includeBasePath:n}=e;return r&&t?gwe(t,e):n?gW:ywe}function bwe(t){return function(e,r){r.push(e.substring(t.length)||".")}}function Swe(t){return function(e,r,n){let i=e.substring(t.length)||".";n.every(o=>o(i,!0))&&r.push(i)}}function kwe(t,e){let{includeDirs:r,filters:n,relativePaths:i}=e;return r?i?n&&n.length?Swe(t):bwe(t):n&&n.length?xwe:wwe:$we}function Pwe(t){let{excludeFiles:e,filters:r,onlyCounts:n}=t;return e?Iwe:r&&r.length?n?Ewe:Awe:n?Twe:Owe}function Dwe(t){return t.group?Cwe:Rwe}function Mwe(t){return t.group?Nwe:jwe}function Lwe(t,e){return!t.resolveSymlinks||t.excludeSymlinks?null:e?zwe:Fwe}function yW(t,e,r){if(r.options.useRealPaths)return Uwe(e,r);let n=wI(t),i=1;for(;n!==r.root&&i<2;){let o=r.symlinks.get(n);!!o&&(o===e||o.startsWith(e)||e.startsWith(o))?i++:n=wI(n)}return r.symlinks.set(t,e),i>1}function Uwe(t,e){return e.visited.includes(t+e.options.pathSeparator)}function ev(t,e,r,n){e(t&&!n?t:null,r)}function Jwe(t,e){let{onlyCounts:r,group:n,maxFiles:i}=t;return r?e?qwe:Gwe:n?e?Bwe:Kwe:i?e?Zwe:Wwe:e?Hwe:Vwe}function Qwe(t){return t?Xwe:Ywe}function nxe(t,e){return new Promise((r,n)=>{bW(t,e,(i,o)=>{if(i)return n(i);r(o)})})}function bW(t,e,r){new vW(t,e,r).start()}function ixe(t,e){return new vW(t,e).start()}var fW,pwe,mwe,wwe,xwe,$we,Ewe,Awe,Twe,Owe,Iwe,Rwe,Cwe,Nwe,jwe,Fwe,zwe,qwe,Bwe,Hwe,Zwe,Gwe,Vwe,Wwe,Kwe,_W,Ywe,Xwe,exe,txe,rxe,vW,pW,SW,wW,xW=y(()=>{fW=swe(import.meta.url);pwe=/[\\/]/g;mwe=/^[a-z]:[\\/]$/i;wwe=(t,e)=>{e.push(t||".")},xwe=(t,e,r)=>{let n=t||".";r.every(i=>i(n,!0))&&e.push(n)},$we=()=>{};Ewe=(t,e,r,n)=>{n.every(i=>i(t,!1))&&r.files++},Awe=(t,e,r,n)=>{n.every(i=>i(t,!1))&&e.push(t)},Twe=(t,e,r,n)=>{r.files++},Owe=(t,e)=>{e.push(t)},Iwe=()=>{};Rwe=t=>t,Cwe=()=>[""].slice(0,0);Nwe=(t,e,r)=>{t.push({directory:e,files:r,dir:e})},jwe=()=>{};Fwe=function(t,e,r){let{queue:n,fs:i,options:{suppressErrors:o}}=e;n.enqueue(),i.realpath(t,(s,a)=>{if(s)return n.dequeue(o?null:s,e);i.stat(a,(c,l)=>{if(c)return n.dequeue(o?null:c,e);if(l.isDirectory()&&yW(t,a,e))return n.dequeue(null,e);r(l,a),n.dequeue(null,e)})})},zwe=function(t,e,r){let{queue:n,fs:i,options:{suppressErrors:o}}=e;n.enqueue();try{let s=i.realpathSync(t),a=i.statSync(s);if(a.isDirectory()&&yW(t,s,e))return;r(a,s)}catch(s){if(!o)throw s}};qwe=t=>t.counts,Bwe=t=>t.groups,Hwe=t=>t.paths,Zwe=t=>t.paths.slice(0,t.options.maxFiles),Gwe=(t,e,r)=>(ev(e,r,t.counts,t.options.suppressErrors),null),Vwe=(t,e,r)=>(ev(e,r,t.paths,t.options.suppressErrors),null),Wwe=(t,e,r)=>(ev(e,r,t.paths.slice(0,t.options.maxFiles),t.options.suppressErrors),null),Kwe=(t,e,r)=>(ev(e,r,t.groups,t.options.suppressErrors),null);_W={withFileTypes:!0},Ywe=(t,e,r,n,i)=>{if(t.queue.enqueue(),n<0)return t.queue.dequeue(null,t);let{fs:o}=t;t.visited.push(e),t.counts.directories++,o.readdir(e||".",_W,(s,a=[])=>{i(a,r,n),t.queue.dequeue(t.options.suppressErrors?null:s,t)})},Xwe=(t,e,r,n,i)=>{let{fs:o}=t;if(n<0)return;t.visited.push(e),t.counts.directories++;let s=[];try{s=o.readdirSync(e||".",_W)}catch(a){if(!t.options.suppressErrors)throw a}i(s,r,n)};exe=class{count=0;constructor(t){this.onQueueEmpty=t}enqueue(){return this.count++,this.count}dequeue(t,e){this.onQueueEmpty&&(--this.count<=0||t)&&(this.onQueueEmpty(t,e),t&&(e.controller.abort(),this.onQueueEmpty=void 0))}},txe=class{_files=0;_directories=0;set files(t){this._files=t}get files(){return this._files}set directories(t){this._directories=t}get directories(){return this._directories}get dirs(){return this._directories}},rxe=class{aborted=!1;abort(){this.aborted=!0}},vW=class{root;isSynchronous;state;joinPath;pushDirectory;pushFile;getArray;groupFiles;resolveSymlink;walkDirectory;callbackInvoker;constructor(t,e,r){this.isSynchronous=!r,this.callbackInvoker=Jwe(e,this.isSynchronous),this.root=SI(t,e),this.state={root:hwe(this.root)?this.root:this.root.slice(0,-1),paths:[""].slice(0,0),groups:[],counts:new txe,options:e,queue:new exe((n,i)=>this.callbackInvoker(i,n,r)),symlinks:new Map,visited:[""].slice(0,0),controller:new rxe,fs:e.fs||dwe},this.joinPath=vwe(this.root,e),this.pushDirectory=kwe(this.root,e),this.pushFile=Pwe(e),this.getArray=Dwe(e),this.groupFiles=Mwe(e),this.resolveSymlink=Lwe(e,this.isSynchronous),this.walkDirectory=Qwe(this.isSynchronous)}start(){return this.pushDirectory(this.root,this.state.paths,this.state.options.filters),this.walkDirectory(this.state,this.root,this.root,this.state.options.maxDepth,this.walk),this.isSynchronous?this.callbackInvoker(this.state,null):null}walk=(t,e,r)=>{let{paths:n,options:{filters:i,resolveSymlinks:o,excludeSymlinks:s,exclude:a,maxFiles:c,signal:l,useRealPaths:u,pathSeparator:d},controller:f}=this.state;if(f.aborted||l&&l.aborted||c&&n.length>c)return;let p=this.getArray(this.state.paths);for(let m=0;m{if(v.isDirectory()){if(_=SI(_,this.state.options),a&&a(h.name,u?_:g+d))return;this.walkDirectory(this.state,_,u?_:g+d,r-1,this.walk)}else{_=u?_:g;let S=awe(_),w=SI(wI(_),this.state.options);_=this.joinPath(S,w),this.pushFile(_,p,this.state.counts,i)}})}}this.groupFiles(this.state.groups,e,p)}};pW=class{constructor(t,e){this.root=t,this.options=e}withPromise(){return nxe(this.root,this.options)}withCallback(t){bW(this.root,this.options,t)}sync(){return ixe(this.root,this.options)}},SW=null;try{fW.resolve("picomatch"),SW=fW("picomatch")}catch{}wW=class{globCache={};options={maxDepth:1/0,suppressErrors:!0,pathSeparator:mW,filters:[]};globFunction;constructor(t){this.options={...this.options,...t},this.globFunction=this.options.globFunction}group(){return this.options.group=!0,this}withPathSeparator(t){return this.options.pathSeparator=t,this}withBasePath(){return this.options.includeBasePath=!0,this}withRelativePaths(){return this.options.relativePaths=!0,this}withDirs(){return this.options.includeDirs=!0,this}withMaxDepth(t){return this.options.maxDepth=t,this}withMaxFiles(t){return this.options.maxFiles=t,this}withFullPaths(){return this.options.resolvePaths=!0,this.options.includeBasePath=!0,this}withErrors(){return this.options.suppressErrors=!1,this}withSymlinks({resolvePaths:t=!0}={}){return this.options.resolveSymlinks=!0,this.options.useRealPaths=t,this.withFullPaths()}withAbortSignal(t){return this.options.signal=t,this}normalize(){return this.options.normalizePath=!0,this}filter(t){return this.options.filters.push(t),this}onlyDirs(){return this.options.excludeFiles=!0,this.options.includeDirs=!0,this}exclude(t){return this.options.exclude=t,this}onlyCounts(){return this.options.onlyCounts=!0,this}crawl(t){return new pW(t||".",this.options)}withGlobFunction(t){return this.globFunction=t,this}crawlWithOptions(t,e){return this.options={...this.options,...e},new pW(t||".",this.options)}glob(...t){return this.globFunction?this.globWithOptions(t):this.globWithOptions(t,{dot:!0})}globWithOptions(t,...e){let r=this.globFunction||SW;if(!r)throw new Error("Please specify a glob function to use glob matching.");var n=this.globCache[t.join("\0")];return n||(n=r(t,...e),this.globCache[t.join("\0")]=n),this.options.filters.push(i=>n(i)),this}}});var of=b((Vtt,TW)=>{"use strict";var $W="[^\\\\/]",oxe="(?=.)",kW="[^/]",xI="(?:\\/|$)",EW="(?:^|\\/)",$I=`\\.{1,2}${xI}`,sxe="(?!\\.)",axe=`(?!${EW}${$I})`,cxe=`(?!\\.{0,1}${xI})`,lxe=`(?!${$I})`,uxe="[^.\\/]",dxe=`${kW}*?`,fxe="/",AW={DOT_LITERAL:"\\.",PLUS_LITERAL:"\\+",QMARK_LITERAL:"\\?",SLASH_LITERAL:"\\/",ONE_CHAR:oxe,QMARK:kW,END_ANCHOR:xI,DOTS_SLASH:$I,NO_DOT:sxe,NO_DOTS:axe,NO_DOT_SLASH:cxe,NO_DOTS_SLASH:lxe,QMARK_NO_DOT:uxe,STAR:dxe,START_ANCHOR:EW,SEP:fxe},pxe={...AW,SLASH_LITERAL:"[\\\\/]",QMARK:$W,STAR:`${$W}*?`,DOTS_SLASH:"\\.{1,2}(?:[\\\\/]|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|[\\\\/])\\.{1,2}(?:[\\\\/]|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:[\\\\/]|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:[\\\\/]|$))",QMARK_NO_DOT:"[^.\\\\/]",START_ANCHOR:"(?:^|[\\\\/])",END_ANCHOR:"(?:[\\\\/]|$)",SEP:"\\"},mxe={__proto__:null,alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};TW.exports={DEFAULT_MAX_EXTGLOB_RECURSION:0,MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:mxe,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{__proto__:null,"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?pxe:AW}}});var sf=b(Tr=>{"use strict";var{REGEX_BACKSLASH:hxe,REGEX_REMOVE_BACKSLASH:gxe,REGEX_SPECIAL_CHARS:yxe,REGEX_SPECIAL_CHARS_GLOBAL:_xe}=of();Tr.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);Tr.hasRegexChars=t=>yxe.test(t);Tr.isRegexChar=t=>t.length===1&&Tr.hasRegexChars(t);Tr.escapeRegex=t=>t.replace(_xe,"\\$1");Tr.toPosixSlashes=t=>t.replace(hxe,"/");Tr.isWindows=()=>{if(typeof navigator<"u"&&navigator.platform){let t=navigator.platform.toLowerCase();return t==="win32"||t==="windows"}return typeof process<"u"&&process.platform?process.platform==="win32":!1};Tr.removeBackslashes=t=>t.replace(gxe,e=>e==="\\"?"":e);Tr.escapeLast=(t,e,r)=>{let n=t.lastIndexOf(e,r);return n===-1?t:t[n-1]==="\\"?Tr.escapeLast(t,e,n-1):`${t.slice(0,n)}\\${t.slice(n)}`};Tr.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};Tr.wrapOutput=(t,e={},r={})=>{let n=r.contains?"":"^",i=r.contains?"":"$",o=`${n}(?:${t})${i}`;return e.negated===!0&&(o=`(?:^(?!${o}).*$)`),o};Tr.basename=(t,{windows:e}={})=>{let r=t.split(e?/[\\/]/:"/"),n=r[r.length-1];return n===""?r[r.length-2]:n}});var jW=b((Ktt,NW)=>{"use strict";var OW=sf(),{CHAR_ASTERISK:kI,CHAR_AT:vxe,CHAR_BACKWARD_SLASH:af,CHAR_COMMA:bxe,CHAR_DOT:EI,CHAR_EXCLAMATION_MARK:AI,CHAR_FORWARD_SLASH:DW,CHAR_LEFT_CURLY_BRACE:TI,CHAR_LEFT_PARENTHESES:OI,CHAR_LEFT_SQUARE_BRACKET:Sxe,CHAR_PLUS:wxe,CHAR_QUESTION_MARK:IW,CHAR_RIGHT_CURLY_BRACE:xxe,CHAR_RIGHT_PARENTHESES:PW,CHAR_RIGHT_SQUARE_BRACKET:$xe}=of(),RW=t=>t===DW||t===af,CW=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},kxe=(t,e)=>{let r=e||{},n=t.length-1,i=r.parts===!0||r.scanToEnd===!0,o=[],s=[],a=[],c=t,l=-1,u=0,d=0,f=!1,p=!1,m=!1,h=!1,g=!1,v=!1,_=!1,S=!1,w=!1,x=!1,I=0,T,k,C={value:"",depth:0,isGlob:!1},E=()=>l>=n,Z=()=>c.charCodeAt(l+1),ie=()=>(T=k,c.charCodeAt(++l));for(;l0&&(P=c.slice(0,u),c=c.slice(u),d-=u),xe&&m===!0&&d>0?(xe=c.slice(0,d),R=c.slice(d)):m===!0?(xe="",R=c):xe=c,xe&&xe!==""&&xe!=="/"&&xe!==c&&RW(xe.charCodeAt(xe.length-1))&&(xe=xe.slice(0,-1)),r.unescape===!0&&(R&&(R=OW.removeBackslashes(R)),xe&&_===!0&&(xe=OW.removeBackslashes(xe)));let cn={prefix:P,input:t,start:u,base:xe,glob:R,isBrace:f,isBracket:p,isGlob:m,isExtglob:h,isGlobstar:g,negated:S,negatedExtglob:w};if(r.tokens===!0&&(cn.maxDepth=0,RW(k)||s.push(C),cn.tokens=s),r.parts===!0||r.tokens===!0){let Ge;for(let ft=0;ft{"use strict";var cf=of(),Zr=sf(),{MAX_LENGTH:tv,POSIX_REGEX_SOURCE:Exe,REGEX_NON_SPECIAL_CHARS:Axe,REGEX_SPECIAL_CHARS_BACKREF:Txe,REPLACEMENTS:MW}=cf,Oxe=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch{return t.map(i=>Zr.escapeRegex(i)).join("..")}return r},zc=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,FW=t=>{let e=[],r=0,n=0,i=0,o="",s=!1;for(let a of t){if(s===!0){o+=a,s=!1;continue}if(a==="\\"){o+=a,s=!0;continue}if(a==='"'){i=i===1?0:1,o+=a;continue}if(i===0){if(a==="[")r++;else if(a==="]"&&r>0)r--;else if(r===0){if(a==="(")n++;else if(a===")"&&n>0)n--;else if(a==="|"&&n===0){e.push(o),o="";continue}}}o+=a}return e.push(o),e},Ixe=t=>{let e=!1;for(let r of t){if(e===!0){e=!1;continue}if(r==="\\"){e=!0;continue}if(/[?*+@!()[\]{}]/.test(r))return!1}return!0},zW=t=>{let e=t.trim(),r=!0;for(;r===!0;)r=!1,/^@\([^\\()[\]{}|]+\)$/.test(e)&&(e=e.slice(2,-1),r=!0);if(Ixe(e))return e.replace(/\\(.)/g,"$1")},Pxe=t=>{let e=t.map(zW).filter(Boolean);for(let r=0;r{if(t[0]!=="+"&&t[0]!=="*"||t[1]!=="(")return;let r=0,n=0,i=0,o=!1;for(let s=1;s0){r--;continue}if(!(r>0)){if(a==="("){n++;continue}if(a===")"&&(n--,n===0))return e===!0&&s!==t.length-1?void 0:{type:t[0],body:t.slice(2,s),end:s}}}}},Rxe=t=>{let e=0,r=[];for(;ea.trim());if(o.length!==1)return;let s=zW(o[0]);if(!s||s.length!==1)return;r.push(s),e+=i.end+1}return r.length<1?void 0:`${r.length===1?Zr.escapeRegex(r[0]):`[${r.map(i=>Zr.escapeRegex(i)).join("")}]`}*`},Cxe=t=>{let e=0,r=t.trim(),n=II(r);for(;n;)e++,r=n.body.trim(),n=II(r);return e},Dxe=(t,e)=>{if(e.maxExtglobRecursion===!1)return{risky:!1};let r=typeof e.maxExtglobRecursion=="number"?e.maxExtglobRecursion:cf.DEFAULT_MAX_EXTGLOB_RECURSION,n=FW(t).map(i=>i.trim());if(n.length>1&&(n.some(i=>i==="")||n.some(i=>/^[*?]+$/.test(i))||Pxe(n)))return{risky:!0};for(let i of n){let o=Rxe(i);if(o)return{risky:!0,safeOutput:o};if(Cxe(i)>r)return{risky:!0}}return{risky:!1}},PI=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=MW[t]||t;let r={...e},n=typeof r.maxLength=="number"?Math.min(tv,r.maxLength):tv,i=t.length;if(i>n)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${n}`);let o={type:"bos",value:"",output:r.prepend||""},s=[o],a=r.capture?"":"?:",c=cf.globChars(r.windows),l=cf.extglobChars(c),{DOT_LITERAL:u,PLUS_LITERAL:d,SLASH_LITERAL:f,ONE_CHAR:p,DOTS_SLASH:m,NO_DOT:h,NO_DOT_SLASH:g,NO_DOTS_SLASH:v,QMARK:_,QMARK_NO_DOT:S,STAR:w,START_ANCHOR:x}=c,I=U=>`(${a}(?:(?!${x}${U.dot?m:u}).)*?)`,T=r.dot?"":h,k=r.dot?_:S,C=r.bash===!0?I(r):w;r.capture&&(C=`(${C})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let E={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:s};t=Zr.removePrefix(t,E),i=t.length;let Z=[],ie=[],xe=[],P=o,R,cn=()=>E.index===i-1,Ge=E.peek=(U=1)=>t[E.index+U],ft=E.advance=()=>t[++E.index]||"",zi=()=>t.slice(E.index+1),ln=(U="",ct=0)=>{E.consumed+=U,E.index+=ct},bo=U=>{E.output+=U.output!=null?U.output:U.value,ln(U.value)},xae=()=>{let U=1;for(;Ge()==="!"&&(Ge(2)!=="("||Ge(3)==="?");)ft(),E.start++,U++;return U%2===0?!1:(E.negated=!0,E.start++,!0)},Gh=U=>{E[U]++,xe.push(U)},So=U=>{E[U]--,xe.pop()},Ee=U=>{if(P.type==="globstar"){let ct=E.braces>0&&(U.type==="comma"||U.type==="brace"),L=U.extglob===!0||Z.length&&(U.type==="pipe"||U.type==="paren");U.type!=="slash"&&U.type!=="paren"&&!ct&&!L&&(E.output=E.output.slice(0,-P.output.length),P.type="star",P.value="*",P.output=C,E.output+=P.output)}if(Z.length&&U.type!=="paren"&&(Z[Z.length-1].inner+=U.value),(U.value||U.output)&&bo(U),P&&P.type==="text"&&U.type==="text"){P.output=(P.output||P.value)+U.value,P.value+=U.value;return}U.prev=P,s.push(U),P=U},Vh=(U,ct)=>{let L={...l[ct],conditions:1,inner:""};L.prev=P,L.parens=E.parens,L.output=E.output,L.startIndex=E.index,L.tokensIndex=s.length;let Ae=(r.capture?"(":"")+L.open;Gh("parens"),Ee({type:U,value:ct,output:E.output?"":p}),Ee({type:"paren",extglob:!0,value:ft(),output:Ae}),Z.push(L)},$ae=U=>{let ct=t.slice(U.startIndex,E.index+1),L=t.slice(U.startIndex+2,E.index),Ae=Dxe(L,r);if((U.type==="plus"||U.type==="star")&&Ae.risky){let it=Ae.safeOutput?(U.output?"":p)+(r.capture?`(${Ae.safeOutput})`:Ae.safeOutput):void 0,ri=s[U.tokensIndex];ri.type="text",ri.value=ct,ri.output=it||Zr.escapeRegex(ct);for(let ni=U.tokensIndex+1;ni1&&U.inner.includes("/")&&(it=I(r)),(it!==C||cn()||/^\)+$/.test(zi()))&&(ot=U.close=`)$))${it}`),U.inner.includes("*")&&(Nt=zi())&&/^\.[^\\/.]+$/.test(Nt)){let ri=PI(Nt,{...e,fastpaths:!1}).output;ot=U.close=`)${ri})${it})`}U.prev.type==="bos"&&(E.negatedExtglob=!0)}Ee({type:"paren",extglob:!0,value:R,output:ot}),So("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let U=!1,ct=t.replace(Txe,(L,Ae,ot,Nt,it,ri)=>Nt==="\\"?(U=!0,L):Nt==="?"?Ae?Ae+Nt+(it?_.repeat(it.length):""):ri===0?k+(it?_.repeat(it.length):""):_.repeat(ot.length):Nt==="."?u.repeat(ot.length):Nt==="*"?Ae?Ae+Nt+(it?C:""):C:Ae?L:`\\${L}`);return U===!0&&(r.unescape===!0?ct=ct.replace(/\\/g,""):ct=ct.replace(/\\+/g,L=>L.length%2===0?"\\\\":L?"\\":"")),ct===t&&r.contains===!0?(E.output=t,E):(E.output=Zr.wrapOutput(ct,E,e),E)}for(;!cn();){if(R=ft(),R==="\0")continue;if(R==="\\"){let L=Ge();if(L==="/"&&r.bash!==!0||L==="."||L===";")continue;if(!L){R+="\\",Ee({type:"text",value:R});continue}let Ae=/^\\+/.exec(zi()),ot=0;if(Ae&&Ae[0].length>2&&(ot=Ae[0].length,E.index+=ot,ot%2!==0&&(R+="\\")),r.unescape===!0?R=ft():R+=ft(),E.brackets===0){Ee({type:"text",value:R});continue}}if(E.brackets>0&&(R!=="]"||P.value==="["||P.value==="[^")){if(r.posix!==!1&&R===":"){let L=P.value.slice(1);if(L.includes("[")&&(P.posix=!0,L.includes(":"))){let Ae=P.value.lastIndexOf("["),ot=P.value.slice(0,Ae),Nt=P.value.slice(Ae+2),it=Exe[Nt];if(it){P.value=ot+it,E.backtrack=!0,ft(),!o.output&&s.indexOf(P)===1&&(o.output=p);continue}}}(R==="["&&Ge()!==":"||R==="-"&&Ge()==="]")&&(R=`\\${R}`),R==="]"&&(P.value==="["||P.value==="[^")&&(R=`\\${R}`),r.posix===!0&&R==="!"&&P.value==="["&&(R="^"),P.value+=R,bo({value:R});continue}if(E.quotes===1&&R!=='"'){R=Zr.escapeRegex(R),P.value+=R,bo({value:R});continue}if(R==='"'){E.quotes=E.quotes===1?0:1,r.keepQuotes===!0&&Ee({type:"text",value:R});continue}if(R==="("){Gh("parens"),Ee({type:"paren",value:R});continue}if(R===")"){if(E.parens===0&&r.strictBrackets===!0)throw new SyntaxError(zc("opening","("));let L=Z[Z.length-1];if(L&&E.parens===L.parens+1){$ae(Z.pop());continue}Ee({type:"paren",value:R,output:E.parens?")":"\\)"}),So("parens");continue}if(R==="["){if(r.nobracket===!0||!zi().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(zc("closing","]"));R=`\\${R}`}else Gh("brackets");Ee({type:"bracket",value:R});continue}if(R==="]"){if(r.nobracket===!0||P&&P.type==="bracket"&&P.value.length===1){Ee({type:"text",value:R,output:`\\${R}`});continue}if(E.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(zc("opening","["));Ee({type:"text",value:R,output:`\\${R}`});continue}So("brackets");let L=P.value.slice(1);if(P.posix!==!0&&L[0]==="^"&&!L.includes("/")&&(R=`/${R}`),P.value+=R,bo({value:R}),r.literalBrackets===!1||Zr.hasRegexChars(L))continue;let Ae=Zr.escapeRegex(P.value);if(E.output=E.output.slice(0,-P.value.length),r.literalBrackets===!0){E.output+=Ae,P.value=Ae;continue}P.value=`(${a}${Ae}|${P.value})`,E.output+=P.value;continue}if(R==="{"&&r.nobrace!==!0){Gh("braces");let L={type:"brace",value:R,output:"(",outputIndex:E.output.length,tokensIndex:E.tokens.length};ie.push(L),Ee(L);continue}if(R==="}"){let L=ie[ie.length-1];if(r.nobrace===!0||!L){Ee({type:"text",value:R,output:R});continue}let Ae=")";if(L.dots===!0){let ot=s.slice(),Nt=[];for(let it=ot.length-1;it>=0&&(s.pop(),ot[it].type!=="brace");it--)ot[it].type!=="dots"&&Nt.unshift(ot[it].value);Ae=Oxe(Nt,r),E.backtrack=!0}if(L.comma!==!0&&L.dots!==!0){let ot=E.output.slice(0,L.outputIndex),Nt=E.tokens.slice(L.tokensIndex);L.value=L.output="\\{",R=Ae="\\}",E.output=ot;for(let it of Nt)E.output+=it.output||it.value}Ee({type:"brace",value:R,output:Ae}),So("braces"),ie.pop();continue}if(R==="|"){Z.length>0&&Z[Z.length-1].conditions++,Ee({type:"text",value:R});continue}if(R===","){let L=R,Ae=ie[ie.length-1];Ae&&xe[xe.length-1]==="braces"&&(Ae.comma=!0,L="|"),Ee({type:"comma",value:R,output:L});continue}if(R==="/"){if(P.type==="dot"&&E.index===E.start+1){E.start=E.index+1,E.consumed="",E.output="",s.pop(),P=o;continue}Ee({type:"slash",value:R,output:f});continue}if(R==="."){if(E.braces>0&&P.type==="dot"){P.value==="."&&(P.output=u);let L=ie[ie.length-1];P.type="dots",P.output+=R,P.value+=R,L.dots=!0;continue}if(E.braces+E.parens===0&&P.type!=="bos"&&P.type!=="slash"){Ee({type:"text",value:R,output:u});continue}Ee({type:"dot",value:R,output:u});continue}if(R==="?"){if(!(P&&P.value==="(")&&r.noextglob!==!0&&Ge()==="("&&Ge(2)!=="?"){Vh("qmark",R);continue}if(P&&P.type==="paren"){let Ae=Ge(),ot=R;(P.value==="("&&!/[!=<:]/.test(Ae)||Ae==="<"&&!/<([!=]|\w+>)/.test(zi()))&&(ot=`\\${R}`),Ee({type:"text",value:R,output:ot});continue}if(r.dot!==!0&&(P.type==="slash"||P.type==="bos")){Ee({type:"qmark",value:R,output:S});continue}Ee({type:"qmark",value:R,output:_});continue}if(R==="!"){if(r.noextglob!==!0&&Ge()==="("&&(Ge(2)!=="?"||!/[!=<:]/.test(Ge(3)))){Vh("negate",R);continue}if(r.nonegate!==!0&&E.index===0){xae();continue}}if(R==="+"){if(r.noextglob!==!0&&Ge()==="("&&Ge(2)!=="?"){Vh("plus",R);continue}if(P&&P.value==="("||r.regex===!1){Ee({type:"plus",value:R,output:d});continue}if(P&&(P.type==="bracket"||P.type==="paren"||P.type==="brace")||E.parens>0){Ee({type:"plus",value:R});continue}Ee({type:"plus",value:d});continue}if(R==="@"){if(r.noextglob!==!0&&Ge()==="("&&Ge(2)!=="?"){Ee({type:"at",extglob:!0,value:R,output:""});continue}Ee({type:"text",value:R});continue}if(R!=="*"){(R==="$"||R==="^")&&(R=`\\${R}`);let L=Axe.exec(zi());L&&(R+=L[0],E.index+=L[0].length),Ee({type:"text",value:R});continue}if(P&&(P.type==="globstar"||P.star===!0)){P.type="star",P.star=!0,P.value+=R,P.output=C,E.backtrack=!0,E.globstar=!0,ln(R);continue}let U=zi();if(r.noextglob!==!0&&/^\([^?]/.test(U)){Vh("star",R);continue}if(P.type==="star"){if(r.noglobstar===!0){ln(R);continue}let L=P.prev,Ae=L.prev,ot=L.type==="slash"||L.type==="bos",Nt=Ae&&(Ae.type==="star"||Ae.type==="globstar");if(r.bash===!0&&(!ot||U[0]&&U[0]!=="/")){Ee({type:"star",value:R,output:""});continue}let it=E.braces>0&&(L.type==="comma"||L.type==="brace"),ri=Z.length&&(L.type==="pipe"||L.type==="paren");if(!ot&&L.type!=="paren"&&!it&&!ri){Ee({type:"star",value:R,output:""});continue}for(;U.slice(0,3)==="/**";){let ni=t[E.index+4];if(ni&&ni!=="/")break;U=U.slice(3),ln("/**",3)}if(L.type==="bos"&&cn()){P.type="globstar",P.value+=R,P.output=I(r),E.output=P.output,E.globstar=!0,ln(R);continue}if(L.type==="slash"&&L.prev.type!=="bos"&&!Nt&&cn()){E.output=E.output.slice(0,-(L.output+P.output).length),L.output=`(?:${L.output}`,P.type="globstar",P.output=I(r)+(r.strictSlashes?")":"|$)"),P.value+=R,E.globstar=!0,E.output+=L.output+P.output,ln(R);continue}if(L.type==="slash"&&L.prev.type!=="bos"&&U[0]==="/"){let ni=U[1]!==void 0?"|$":"";E.output=E.output.slice(0,-(L.output+P.output).length),L.output=`(?:${L.output}`,P.type="globstar",P.output=`${I(r)}${f}|${f}${ni})`,P.value+=R,E.output+=L.output+P.output,E.globstar=!0,ln(R+ft()),Ee({type:"slash",value:"/",output:""});continue}if(L.type==="bos"&&U[0]==="/"){P.type="globstar",P.value+=R,P.output=`(?:^|${f}|${I(r)}${f})`,E.output=P.output,E.globstar=!0,ln(R+ft()),Ee({type:"slash",value:"/",output:""});continue}E.output=E.output.slice(0,-P.output.length),P.type="globstar",P.output=I(r),P.value+=R,E.output+=P.output,E.globstar=!0,ln(R);continue}let ct={type:"star",value:R,output:C};if(r.bash===!0){ct.output=".*?",(P.type==="bos"||P.type==="slash")&&(ct.output=T+ct.output),Ee(ct);continue}if(P&&(P.type==="bracket"||P.type==="paren")&&r.regex===!0){ct.output=R,Ee(ct);continue}(E.index===E.start||P.type==="slash"||P.type==="dot")&&(P.type==="dot"?(E.output+=g,P.output+=g):r.dot===!0?(E.output+=v,P.output+=v):(E.output+=T,P.output+=T),Ge()!=="*"&&(E.output+=p,P.output+=p)),Ee(ct)}for(;E.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(zc("closing","]"));E.output=Zr.escapeLast(E.output,"["),So("brackets")}for(;E.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(zc("closing",")"));E.output=Zr.escapeLast(E.output,"("),So("parens")}for(;E.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(zc("closing","}"));E.output=Zr.escapeLast(E.output,"{"),So("braces")}if(r.strictSlashes!==!0&&(P.type==="star"||P.type==="bracket")&&Ee({type:"maybe_slash",value:"",output:`${f}?`}),E.backtrack===!0){E.output="";for(let U of E.tokens)E.output+=U.output!=null?U.output:U.value,U.suffix&&(E.output+=U.suffix)}return E};PI.fastpaths=(t,e)=>{let r={...e},n=typeof r.maxLength=="number"?Math.min(tv,r.maxLength):tv,i=t.length;if(i>n)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${n}`);t=MW[t]||t;let{DOT_LITERAL:o,SLASH_LITERAL:s,ONE_CHAR:a,DOTS_SLASH:c,NO_DOT:l,NO_DOTS:u,NO_DOTS_SLASH:d,STAR:f,START_ANCHOR:p}=cf.globChars(r.windows),m=r.dot?u:l,h=r.dot?d:l,g=r.capture?"":"?:",v={negated:!1,prefix:""},_=r.bash===!0?".*?":f;r.capture&&(_=`(${_})`);let S=T=>T.noglobstar===!0?_:`(${g}(?:(?!${p}${T.dot?c:o}).)*?)`,w=T=>{switch(T){case"*":return`${m}${a}${_}`;case".*":return`${o}${a}${_}`;case"*.*":return`${m}${_}${o}${a}${_}`;case"*/*":return`${m}${_}${s}${a}${h}${_}`;case"**":return m+S(r);case"**/*":return`(?:${m}${S(r)}${s})?${h}${a}${_}`;case"**/*.*":return`(?:${m}${S(r)}${s})?${h}${_}${o}${a}${_}`;case"**/.*":return`(?:${m}${S(r)}${s})?${o}${a}${_}`;default:{let k=/^(.*?)\.(\w+)$/.exec(T);if(!k)return;let C=w(k[1]);return C?C+o+k[2]:void 0}}},x=Zr.removePrefix(t,v),I=w(x);return I&&r.strictSlashes!==!0&&(I+=`${s}?`),I};LW.exports=PI});var HW=b((Ytt,BW)=>{"use strict";var Nxe=jW(),RI=UW(),qW=sf(),jxe=of(),Mxe=t=>t&&typeof t=="object"&&!Array.isArray(t),Et=(t,e,r=!1)=>{if(Array.isArray(t)){let u=t.map(f=>Et(f,e,r));return f=>{for(let p of u){let m=p(f);if(m)return m}return!1}}let n=Mxe(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!n)throw new TypeError("Expected pattern to be a non-empty string");let i=e||{},o=i.windows,s=n?Et.compileRe(t,e):Et.makeRe(t,e,!1,!0),a=s.state;delete s.state;let c=()=>!1;if(i.ignore){let u={...e,ignore:null,onMatch:null,onResult:null};c=Et(i.ignore,u,r)}let l=(u,d=!1)=>{let{isMatch:f,match:p,output:m}=Et.test(u,s,e,{glob:t,posix:o}),h={glob:t,state:a,regex:s,posix:o,input:u,output:m,match:p,isMatch:f};return typeof i.onResult=="function"&&i.onResult(h),f===!1?(h.isMatch=!1,d?h:!1):c(u)?(typeof i.onIgnore=="function"&&i.onIgnore(h),h.isMatch=!1,d?h:!1):(typeof i.onMatch=="function"&&i.onMatch(h),d?h:!0)};return r&&(l.state=a),l};Et.test=(t,e,r,{glob:n,posix:i}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let o=r||{},s=o.format||(i?qW.toPosixSlashes:null),a=t===n,c=a&&s?s(t):t;return a===!1&&(c=s?s(t):t,a=c===n),(a===!1||o.capture===!0)&&(o.matchBase===!0||o.basename===!0?a=Et.matchBase(t,e,r,i):a=e.exec(c)),{isMatch:!!a,match:a,output:c}};Et.matchBase=(t,e,r)=>(e instanceof RegExp?e:Et.makeRe(e,r)).test(qW.basename(t));Et.isMatch=(t,e,r)=>Et(e,r)(t);Et.parse=(t,e)=>Array.isArray(t)?t.map(r=>Et.parse(r,e)):RI(t,{...e,fastpaths:!1});Et.scan=(t,e)=>Nxe(t,e);Et.compileRe=(t,e,r=!1,n=!1)=>{if(r===!0)return t.output;let i=e||{},o=i.contains?"":"^",s=i.contains?"":"$",a=`${o}(?:${t.output})${s}`;t&&t.negated===!0&&(a=`^(?!${a}).*$`);let c=Et.toRegex(a,e);return n===!0&&(c.state=t),c};Et.makeRe=(t,e={},r=!1,n=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let i={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(i.output=RI.fastpaths(t,e)),i.output||(i=RI(t,e)),Et.compileRe(i,e,r,n)};Et.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Et.constants=jxe;BW.exports=Et});var WW=b((Xtt,VW)=>{"use strict";var ZW=HW(),Fxe=sf();function GW(t,e,r=!1){return e&&(e.windows===null||e.windows===void 0)&&(e={...e,windows:Fxe.isWindows()}),ZW(t,e,r)}Object.assign(GW,ZW);VW.exports=GW});import{readdir as zxe,readdirSync as Lxe,realpath as Uxe,realpathSync as qxe,stat as Bxe,statSync as Hxe}from"fs";import{isAbsolute as Zxe,posix as ia,resolve as Gxe}from"path";import{fileURLToPath as Vxe}from"url";function Jxe(t,e={}){let r=t.length,n=Array(r),i=Array(r),o,s;for(o=0;o{let c=a.split("/");if(c[0]===".."&&Kxe.test(a))return!0;for(o=0;oo.slice(i,s?-1:void 0)||"."}let n=e.slice(t.length+1);return n?(i,o)=>{if(i===".")return n;let s=`${n}/${i}`;return o?s.slice(0,-1):s}:(i,o)=>o&&i!=="."?i.slice(0,-1):i}return r?n=>ia.relative(t,n)||".":n=>ia.relative(t,`${e}/${n}`)||"."}function Qxe(t,e){if(e.startsWith(`${t}/`)){let r=e.slice(t.length+1);return n=>`${r}/${n}`}return r=>{let n=ia.relative(t,`${e}/${r}`);return r[r.length-1]==="/"&&n!==""?`${n}/`:n||"."}}function XW(t){var e;let r=Lc.default.scan(t,e$e);return!((e=r.parts)===null||e===void 0)&&e.length?r.parts:[t]}function s$e(t,e){if(e?.caseSensitiveMatch===!1)return!0;let r=Lc.default.scan(t);return r.isGlob||r.negated}function lf(...t){console.log(`[tinyglobby ${new Date().toLocaleTimeString("es")}]`,...t)}function QW(t){return typeof t=="string"?[t]:t??[]}function CI(t,e,r,n){var i;let o=e.cwd,s=t;t[t.length-1]==="/"&&(s=t.slice(0,-1)),s[s.length-1]!=="*"&&e.expandDirectories&&(s+="/**");let a=o$e(o);s=Zxe(s.replace(c$e,""))?ia.relative(a,s):ia.normalize(s);let c=(i=a$e.exec(s))===null||i===void 0?void 0:i[0],l=XW(s);if(c){let d=(c.length+1)/3,f=0,p=a.split("/");for(;fm.length&&(r.root=m,r.depthOffset=-d+f)}if(!n&&r.depthOffset>=0){var u;(u=r.commonPath)!==null&&u!==void 0||(r.commonPath=l);let d=[],f=Math.min(r.commonPath.length,l.length);for(let p=0;p0?ia.join(o,...d):o}return s}function l$e(t,e,r){let n=[],i=[];for(let o of t.ignore)o&&(o[0]!=="!"||o[1]==="(")&&i.push(CI(o,t,r,!0));for(let o of e)o&&(o[0]!=="!"||o[1]==="("?n.push(CI(o,t,r,!1)):(o[1]!=="!"||o[2]==="(")&&i.push(CI(o.slice(1),t,r,!0)));return{match:n,ignore:i}}function u$e(t,e){let r=t.cwd,n={root:r,depthOffset:0},i=l$e(t,e,n);t.debug&&lf("internal processing patterns:",i);let{absolute:o,caseSensitiveMatch:s,debug:a,dot:c,followSymbolicLinks:l,onlyDirectories:u}=t,d=n.root.replace(JW,""),f={dot:c,nobrace:t.braceExpansion===!1,nocase:!s,noextglob:t.extglob===!1,noglobstar:t.globstar===!1,posix:!0},p=(0,Lc.default)(i.match,f),m=(0,Lc.default)(i.ignore,f),h=Jxe(i.match,f),g=KW(r,d,o),v=o?g:KW(r,d,!0),_=(x,I)=>{let T=v(I,!0);return T!=="."&&!h(T)||m(T)},S;t.deep!==void 0&&(S=Math.round(t.deep-n.depthOffset));let w=new wW({filters:[a?(x,I)=>{let T=g(x,I),k=p(T)&&!m(T);return k&&lf(`matched ${T}`),k}:(x,I)=>{let T=g(x,I);return p(T)&&!m(T)}],exclude:a?(x,I)=>{let T=_(x,I);return lf(`${T?"skipped":"crawling"} ${I}`),T}:_,fs:t.fs,pathSeparator:"/",relativePaths:!o,resolvePaths:o,includeBasePath:o,resolveSymlinks:l,excludeSymlinks:!l,excludeFiles:u,includeDirs:u||!t.onlyFiles,maxDepth:S,signal:t.signal}).crawl(d);return t.debug&&lf("internal properties:",{...n,root:d}),[w,r!==d&&!o&&Qxe(r,d)]}function d$e(t,e){if(e)for(let r=t.length-1;r>=0;r--)t[r]=e(t[r]);return t}function p$e(t){let e={...f$e,...t};return e.cwd=(e.cwd instanceof URL?Vxe(e.cwd):Gxe(e.cwd)).replace(JW,"/"),e.ignore=QW(e.ignore),e.fs&&(e.fs={readdir:e.fs.readdir||zxe,readdirSync:e.fs.readdirSync||Lxe,realpath:e.fs.realpath||Uxe,realpathSync:e.fs.realpathSync||qxe,stat:e.fs.stat||Bxe,statSync:e.fs.statSync||Hxe}),e.debug&&lf("globbing with options:",e),e}function m$e(t,e={}){var r;if(t&&e?.patterns)throw new Error("Cannot pass patterns as both an argument and an option");let n=Wxe(t)||typeof t=="string",i=QW((r=n?t:t.patterns)!==null&&r!==void 0?r:"**/*"),o=p$e(n?e:t);return i.length>0?u$e(o,i):[]}function Bo(t,e){let[r,n]=m$e(t,e);return r?d$e(r.sync(),n):[]}var Lc,Wxe,JW,YW,Kxe,Yxe,Xxe,e$e,t$e,r$e,n$e,i$e,o$e,a$e,c$e,f$e,uf=y(()=>{xW();Lc=$t(WW(),1),Wxe=Array.isArray,JW=/\\/g,YW=process.platform==="win32",Kxe=/^(\/?\.\.)+$/;Yxe=/^[A-Z]:\/$/i,Xxe=YW?t=>Yxe.test(t):t=>t==="/";e$e={parts:!0};t$e=/(?t.replace(t$e,"\\$&"),i$e=t=>t.replace(r$e,"\\$&"),o$e=YW?i$e:n$e;a$e=/^(\/?\.\.)+/,c$e=/\\(?=[()[\]{}!*+?@|])/g;f$e={caseSensitiveMatch:!0,cwd:process.cwd(),debug:!!process.env.TINYGLOBBY_DEBUG,expandDirectories:!0,followSymbolicLinks:!0,onlyFiles:!0}});import{existsSync as rv,readFileSync as h$e,readdirSync as g$e,statSync as eK}from"node:fs";import{join as Uc}from"node:path";function y$e(t){let{cwd:e="."}=t,r,n;try{let c=J(e);r=c.architecture,n=c.project?.language}catch{return[]}if(!r)return[];let i=mi(e,n),o=[],{layers:s,forbiddenImports:a}=DI(r);return s.size>0&&(_$e(e,i,s,o),v$e(e,i,s,o)),a.length>0&&b$e(e,i,a,o),o}function DI(t){let e=new Set,r=[];for(let i of t.layers??[])if(Array.isArray(i))for(let o of i)e.add(o);else{let o=i;if(typeof o.name=="string"&&o.name.length>0){e.add(o.name);for(let s of o.forbidden_imports??[])typeof s=="string"&&r.push({from:o.name,to:s})}}let n=t.forbidden_imports??[];return{layers:e,forbiddenImports:[...n,...r]}}function _$e(t,e,r,n){let i=e.mainRoot,o=Uc(t,i);if(rv(o))for(let s of g$e(o)){let a=Uc(o,s);eK(a).isDirectory()&&(r.has(s)||n.push({detector:nv,severity:"warn",path:`${i}/${s}/`,message:`${i}/${s}/ is not declared in spec/architecture.yaml layers \u2014 add it or remove the directory`}))}}function v$e(t,e,r,n){let i=e.mainRoot,o=Uc(t,i);if(rv(o))for(let s of r){let a=Uc(o,s);rv(a)&&eK(a).isDirectory()||n.push({detector:nv,severity:"warn",path:`${i}/${s}/`,message:`spec/architecture.yaml declares layer '${s}' but ${i}/${s}/ does not exist \u2014 fix the spec or create the directory`})}}function b$e(t,e,r,n){let i=e.mainRoot,o=e.importMatcher;for(let s of r){let a=Uc(t,i,s.from);if(!rv(a))continue;let c=Bo([`**/*.${e.ext}`],{cwd:a,dot:!1});for(let l of c){let u=Uc(a,l),d;try{d=h$e(u,"utf8")}catch{continue}let f;for(o.lastIndex=0;(f=o.exec(d))!==null;){let p=f[1];S$e(p,s.to,e.importStyle)&&n.push({detector:nv,severity:"error",path:`${i}/${s.from}/${l}`,message:`${i}/${s.from}/${l} imports from '${p}' which crosses into the '${s.to}' layer \u2014 spec/architecture.yaml forbids imports from '${s.from}' to '${s.to}'`})}}}}function S$e(t,e,r){return r==="dotted"?t.split(".").includes(e):t.startsWith(".")?t.split("/").includes(e):!1}var nv,tK,NI=y(()=>{"use strict";uf();lt();Fc();nv="ARCHITECTURE_FROM_SPEC";tK={name:nv,run:y$e}});import{existsSync as w$e,readFileSync as x$e}from"node:fs";import{join as $$e}from"node:path";function k$e(t){let{cwd:e="."}=t,r=$$e(e,"spec/capabilities.yaml");if(!w$e(r))return[];let n;try{let c=x$e(r,"utf8"),l=rK.default.parse(c);if(!l||typeof l!="object")return[];n=l}catch{return[]}let i=n.capabilities??[];if(i.length===0)return[];let o;try{let c=J(e);o=new Set(c.features.map(l=>l.id))}catch{return[]}let s=[],a=new Set;for(let c of i){if(typeof c!="object"||c===null)continue;let l=String(c.id??"(unnamed)"),u=Array.isArray(c.features)?c.features:[];if(u.length===0){s.push({detector:iv,severity:"warn",path:"spec/capabilities.yaml",message:`capability "${l}" has no features mapped \u2014 bind at least one feature via the features[] field, or remove the capability if it's no longer relevant`});continue}for(let d of u){let f=String(d);o.has(f)?a.add(f):s.push({detector:iv,severity:"error",path:"spec/capabilities.yaml",message:`capability "${l}" references feature ${f} which does not exist in spec.yaml \u2014 either add the feature or remove it from this capability's features[]`})}}for(let c of o)a.has(c)||s.push({detector:iv,severity:"info",path:"spec.yaml",message:`feature ${c} is not claimed by any capability \u2014 if it's user-facing, consider adding it to a capability's features[] in spec/capabilities.yaml`});return s}var rK,iv,nK,iK=y(()=>{"use strict";rK=$t(rr(),1);lt();iv="CAPABILITIES_FEATURE_MAPPING";nK={name:iv,run:k$e}});import{existsSync as E$e,readFileSync as A$e}from"node:fs";import{join as T$e}from"node:path";function O$e(t){let e=t.trimStart();return e.startsWith("//")||e.startsWith("/*")}function I$e(t){let{cwd:e="."}=t;return pe(e,jI,r=>P$e(r,e))}function P$e(t,e){let r=mi(e,t.project?.language),n=[];for(let i of t.features)for(let o of i.modules??[]){if(!r.extensions.some(c=>o.endsWith(c)))continue;let s=T$e(e,o);if(!E$e(s))continue;let a=A$e(s,"utf8");O$e(a)||n.push({detector:jI,severity:"warn",path:o,message:`${o} has no file-header comment \u2014 Why>What guardrail recommends a one-line intent`})}return n}var jI,oK,sK=y(()=>{"use strict";Fc();_t();jI="CONVENTION_DRIFT";oK={name:jI,run:I$e}});import{existsSync as MI,readFileSync as aK}from"node:fs";import{join as ov}from"node:path";function R$e(t){return JSON.parse(t).total?.lines?.pct??0}function cK(t){let e=/MI(ov(c.dir,d)));if(!l){s.push(c.path);continue}let u=cK(aK(ov(c.dir,l),"utf8"));u&&(n+=u.missed,i+=u.covered,o++)}if(o===0)return[{detector:Qi,severity:"info",message:`no module coverage report present for ${r.map(c=>c.path).join(", ")} \u2014 run stage_2.2 first`}];let a=lK(n,i);return a0?[{detector:Qi,severity:"info",message:`module coverage ${a.toFixed(1)}% OK; no report yet for ${s.join(", ")}`}]:[]}function N$e(t){let{cwd:e="."}=t;if(t.focusModules&&t.focusModules.length>0){let s=D$e(e,t.focusModules);if(s)return s}let r=mi(e),n=pt(e).language==="kotlin"?pI.find(s=>MI(ov(e,s)))??VV(e):r.coverageSummary,i=ov(e,n);if(!MI(i))return[{detector:Qi,severity:"info",message:`${n} not present \u2014 run stage_2.2 first`}];let o;try{let s=aK(i,"utf8");o=r.coverageFormat==="jacoco-xml"?C$e(s):R$e(s)}catch(s){return[{detector:Qi,severity:"warn",message:`${n} unparseable: ${s.message}`}]}return o===null?[{detector:Qi,severity:"warn",message:`${n} contained no line-coverage counter`}]:o>=sv?[]:[{detector:Qi,severity:"warn",message:`line coverage ${o.toFixed(1)}% < floor ${sv}%`}]}var Qi,sv,uK,dK=y(()=>{"use strict";Z_();Fc();q_();mn();Qi="COVERAGE_DROP",sv=70;uK={name:Qi,run:N$e}});import{existsSync as j$e}from"node:fs";import{join as M$e}from"node:path";function F$e(t){let{cwd:e="."}=t;return pe(e,av,r=>z$e(r,e))}function z$e(t,e){let r=t.project.deliverable,n=t.features.filter(i=>i.status==="done"&&(i.modules?.length??0)>0);return r?j$e(M$e(e,r.path))?[]:[{detector:av,severity:"error",path:r.path,message:`project.deliverable.path '${r.path}' is declared but does not exist on disk.`}]:n.length===0?[]:[{detector:av,severity:"warn",message:`${n.length} done feature(s) ship modules but project.deliverable is not declared \u2014 the gate cannot smoke-test the shipped entry, so a broken entry point could ship green. Declare project.deliverable {path, is_safe_to_smoke: true} to enable DELIVERABLE_SMOKE (stage_2.4).`}]}var av,fK,pK=y(()=>{"use strict";_t();av="DELIVERABLE_INTEGRITY";fK={name:av,run:F$e}});function L$e(t){let e=(t.features??[]).filter(i=>i.status==="done");return e.length===0?[]:!t.project?.deliverable?[]:(t.project?.smoke??[]).length>0?[]:[{detector:FI,severity:"warn",path:"spec.yaml",message:`${e.length} feature(s) are done and the project ships a runnable deliverable, but no functional smoke probe is declared (project.smoke) \u2014 an exit-only deliverable is liveness, not AC-verification. Declare a smoke probe with an expect.token so the gate re-executes the shipped entry against its AC result.`}]}function U$e(t){let{cwd:e="."}=t;return pe(e,FI,r=>L$e(r))}var FI,mK,hK=y(()=>{"use strict";_t();FI="SMOKE_PROBE_DEMAND";mK={name:FI,run:U$e}});function q$e(t){let{cwd:e="."}=t;return pe(e,cv,r=>B$e(r,e))}function B$e(t,e){let r=(t.features??[]).filter(o=>o.status==="done"&&(o.modules??[]).length>0);if(r.length===0)return[];let n=gc(e);if(n===null)return[{detector:cv,severity:"info",path:"spec/attestation.yaml",message:"no verification attestation \u2014 when this tree was last verified is unknown. Run `clad check --tier=pre-push --strict` GREEN once to attest (the gate writes spec/attestation.yaml)."}];let i=[];for(let o of r){let s=n.get(o.id),a=Rd(e,o.modules??[]);s!==a&&i.push({detector:cv,severity:"warn",path:"spec/attestation.yaml",message:s===void 0?`${o.id} is done but has no attestation entry \u2014 its modules were never verified by an attested gate. Run \`clad check --tier=pre-push --strict\` to attest.`:`${o.id}'s modules changed since the last attested verification \u2014 shipped code is running ahead of its verification. Run \`clad check --tier=pre-push --strict\` to re-verify and re-attest.`})}return i}var cv,lv,zI=y(()=>{"use strict";Cd();_t();cv="STALE_ATTESTATION";lv={name:cv,run:q$e}});function H$e(t){let{cwd:e="."}=t,r;try{r=J(e)}catch{return[]}return Z$e(r)}function Z$e(t){let e=new Set(t.features.map(d=>d.id)),r=new Map;for(let d of t.features)r.set(d.id,(d.depends_on??[]).filter(f=>e.has(f)));let n=0,i=1,o=2,s=new Map;for(let d of r.keys())s.set(d,n);let a=[],c=new Set,l=[];function u(d){s.set(d,i),l.push(d);for(let f of r.get(d)??[]){let p=s.get(f);if(p===i){let m=l.indexOf(f),h=l.slice(m).concat(f),g=[...h].sort().join(",");c.has(g)||(c.add(g),a.push({detector:gK,severity:"error",path:"spec.yaml",message:`circular depends_on cycle: ${h.join(" \u2192 ")} \u2014 these features can never all become ready, so the drive loop deadlocks. Break the cycle by removing one edge.`}))}else p===n&&u(f)}l.pop(),s.set(d,o)}for(let d of r.keys())s.get(d)===n&&u(d);return a}var gK,uv,LI=y(()=>{"use strict";lt();gK="DEPENDENCY_CYCLE";uv={name:gK,run:H$e}});import{appendFileSync as G$e,existsSync as yK,mkdirSync as V$e,readFileSync as W$e}from"node:fs";import{dirname as K$e,join as J$e}from"node:path";function _K(t){return J$e(t,Y$e,X$e)}function vK(t){return UI.add(t),()=>UI.delete(t)}function oa(t,e){let r=_K(t),n=K$e(r);yK(n)||V$e(n,{recursive:!0}),G$e(r,`${JSON.stringify(e)} `,"utf8");for(let i of UI)try{i(t,e)}catch{}}function gn(t){let e=_K(t);if(!yK(e))return[];let r=W$e(e,"utf8").trim();return r.length===0?[]:r.split(` diff --git a/spec.yaml b/spec.yaml index e84f4682..738776f3 100644 --- a/spec.yaml +++ b/spec.yaml @@ -49,8 +49,8 @@ project: # Auto-maintained by `clad sync` (F-5b9f9f). Do not edit by hand. inventory: - features: 199 + features: 200 scenarios: 2 capabilities: 6 - test_files: 170 - last_synced: "2026-07-01" + test_files: 171 + last_synced: "2026-07-02" diff --git a/spec/attestation.yaml b/spec/attestation.yaml index e1fdf1df..778fd537 100644 --- a/spec/attestation.yaml +++ b/spec/attestation.yaml @@ -4,10 +4,10 @@ # --tier=pre-push --strict` GREEN refreshes. Content-anchored: survives # fresh clones and squash/rebase (suggested .gitattributes: merge=union). attested: - F-001: 1eb56cee6b065fbe + F-001: 830ae324d89c3fce F-002: c116a9d32f862ee9 F-003: c9578f9a6e70dcdf - F-004: 791125e674b98fb5 + F-004: b6e68a1ab2d8fe81 F-005: 70c3b7166f297bff F-006: 488cb6f2d452a286 F-007: d1c159c46d5a454f @@ -29,7 +29,7 @@ attested: F-021: 8a1a82a59a1c45c7 F-022: 8f596a1c737f6d42 F-02343cd1: 77875ee09a7ea3bf - F-023: 0c14948e5a91bb0f + F-023: c347678282dafd98 F-024: f67a86816b06f8ee F-025: 187339b684896b8e F-026: bb35faf43ba582cb @@ -50,7 +50,7 @@ attested: F-041: cddb50fc41e49066 F-042: d1f661281bb9fb6e F-043: 2c5f4a94e3e57e9b - F-044: 2f5ee0e3cee5f762 + F-044: 95085e0995009f41 F-045: b494c9a80442ac20 F-046: 4b563fce74b6bb4b F-047: baf5a2dbb9bb5a4b @@ -85,7 +85,7 @@ attested: F-076: 0061ab2d4b4991a8 F-077: 7aac44757146b695 F-078: c6af3d128b98f4e6 - F-079: eaa08d9aeeb2a263 + F-079: f3188948e53e942f F-080: 1c19da74d32894e6 F-081: 248f9660cfb1b02b F-098d3b: 42d61bf806ce462b @@ -107,10 +107,10 @@ attested: F-2de65d: 84ad71574d306c81 F-315fd7: c3b042c80fa7c187 F-31eeb8: d88a9880d29ae411 - F-32b1e0: 9b29e21313d121b1 + F-32b1e0: 4cc7240778eaae75 F-3788c2: af9778dea8687b29 F-37b4a8: e067655bad681488 - F-3a5339: b2b2ea8775f99267 + F-3a5339: 7d790460b97b35a7 F-3b3690: 6a36aad282d36f3a F-40327b: 8295358f7b813c8a F-417ff0: 0cc5eeefc5e08377 @@ -125,7 +125,7 @@ attested: F-570a3f: 3f60012b22c9b715 F-59f093: 26735424fba6308c F-5b188856: 92b72281c248eba3 - F-5b9f9f: 0b972209be8b642f + F-5b9f9f: cad717b88efe592a F-5d3ed2: 9452eac28760fb99 F-5f6b45: 15323c4f5b619de7 F-64a5c159: adedb516a257c7ec @@ -163,7 +163,7 @@ attested: F-aee61f: e009b9eb07addd30 F-af45042a: 9c61ca116a28cbb6 F-af96b1: e75ca2cb3412a7a5 - F-b2094740: f379bf4feef6771a + F-b2094740: 2ea89b77e7c8e740 F-b43066: 9402b630adcf1eae F-b61449: 7095ce00662e987d F-b84c38: 61a41c3f765e8a92 @@ -173,6 +173,7 @@ attested: F-bb15e6: 9b629bd8910007fa F-bd07d7: 4bf7e1baddf5d754 F-bdcd90: 826853f7885a5a08 + F-bfe14aac: 2ea89b77e7c8e740 F-c037ae: 6a58cdcfd0474e5f F-c2c996: 5c73fa010b1502fa F-c48eb2: 6a581a63e255c279 @@ -184,11 +185,11 @@ attested: F-d2c806: b3d8668905855a6c F-d3bde4: 915d13b33258d3fc F-d49585: 11e3ac2dce796fc6 - F-d6b93648: f755a47c66e07635 + F-d6b93648: 2acbd4024d0f37ca F-d7312b: 000237d094145b6a F-d8223c: 0501e9564231899b F-d980359c: 8f1559276afc5c03 - F-dd51b42c: 496eeffa2641169d + F-dd51b42c: 30b7e2a656892648 F-dddb89: f5625354e55eba9b F-e0f6c7: fe68521cda464f23 F-eb732f: d8abb536ff850a7a diff --git a/spec/features/incremental-ts-gate-bfe14aac.yaml b/spec/features/incremental-ts-gate-bfe14aac.yaml new file mode 100644 index 00000000..96ea7885 --- /dev/null +++ b/spec/features/incremental-ts-gate-bfe14aac.yaml @@ -0,0 +1,33 @@ +id: F-bfe14aac +slug: incremental-ts-gate +title: "Incremental TS gate — tsc --incremental + eslint --cache (sound; ~3.4s faster on warm re-runs)" +status: done +modules: + - src/stages/toolchain/detect.ts +acceptance_criteria: + - id: AC-41107118 + ears: ubiquitous + action: "run the TypeScript type gate as tsc --noEmit --incremental with a tsBuildInfoFile under .cladding/cache, so an unchanged re-check reuses the build cache" + response: "detectToolchain's typescript gates.type carries --incremental + --tsBuildInfoFile .cladding/cache/tsc.tsbuildinfo" + text: "The system shall run the TS type gate with tsc --incremental and a .cladding/cache build-info file." + test_refs: ["tests/stages/incremental-gate.test.ts"] + - id: AC-1f2116fa + ears: ubiquitous + action: "run the TypeScript lint gate as eslint --cache with a cache-location under .cladding/cache, so unchanged files reuse cached lint results" + response: "detectToolchain's typescript gates.lint carries --cache + --cache-location .cladding/cache/eslint" + text: "The system shall run the TS lint gate with eslint --cache and a .cladding/cache cache-location." + test_refs: ["tests/stages/incremental-gate.test.ts"] + - id: AC-f253b9fa + ears: state + condition: "while a build cache from a prior run exists and the tree is unchanged" + action: "still catch a newly-introduced type/lint error (incremental is sound, not a correctness shortcut)" + response: "tsc --incremental rebuilds the affected program slice and eslint --cache keys on file+config hash, so a real error is never masked — the cache only skips proven-unchanged work" + text: "While a cache exists, the system shall still catch any real type/lint error (sound incrementality)." + test_refs: ["tests/stages/incremental-gate.test.ts"] + - id: AC-dd80d585 + ears: unwanted + condition: "if the gate writes its incremental caches" + action: "keep them under the .cladding/ namespace so they never pollute the managed project's git status" + response: "both cache paths live under .cladding/cache (already gitignored), not the project root" + text: "If the gate caches, then it shall write under .cladding/ so the project tree stays clean." + test_refs: ["tests/stages/incremental-gate.test.ts"] diff --git a/spec/index.yaml b/spec/index.yaml index f254aa46..1f9c16ab 100644 --- a/spec/index.yaml +++ b/spec/index.yaml @@ -174,6 +174,7 @@ features: F-bb15e6: {slug: clad-doctor, status: done, modules: 3} F-bd07d7: {slug: greenfield-seeds, status: done, modules: 5} F-bdcd90: {slug: oracle-policy-risk-weighted, status: done, modules: 8} + F-bfe14aac: {slug: incremental-ts-gate, status: done, modules: 1} F-c037ae: {slug: test-refs-repair, status: done, modules: 4} F-c2c996: {slug: checkpoint-events, status: done, modules: 3} F-c48eb2: {slug: scan-source-roots, status: done, modules: 5} diff --git a/src/stages/toolchain/detect.ts b/src/stages/toolchain/detect.ts index 0d243a5c..fcbd1594 100644 --- a/src/stages/toolchain/detect.ts +++ b/src/stages/toolchain/detect.ts @@ -111,8 +111,15 @@ const CHAIN: readonly Entry[] = [ // "not found" → the stage's missing-tool classification → skip (exit 2), // which the strict demand table (F-67d2e9) escalates when the spec // relies on the stage. - type: {cmd: 'npx', args: ['--no-install', 'tsc', '--noEmit']}, - lint: {cmd: 'npx', args: ['--no-install', 'eslint', '.']}, + // Incremental caches (F-bfe14aac): tsc --incremental reuses a build-info + // file and eslint --cache reuses per-file results, so an unchanged re-run + // (the local pre-commit/pre-push loop) skips proven-unchanged work — + // ~3.4s faster on cladding's own tree. SOUND, not a shortcut: tsc rebuilds + // the affected program slice (a new type error is still caught) and eslint + // keys the cache on file+config hash. Caches live under .cladding/ (already + // gitignored) so they never pollute the managed project's git status. + type: {cmd: 'npx', args: ['--no-install', 'tsc', '--noEmit', '--incremental', '--tsBuildInfoFile', '.cladding/cache/tsc.tsbuildinfo']}, + lint: {cmd: 'npx', args: ['--no-install', 'eslint', '.', '--cache', '--cache-location', '.cladding/cache/eslint']}, test: {cmd: 'npx', args: ['--no-install', 'vitest', 'run']}, coverage: {cmd: 'npx', args: ['--no-install', 'vitest', 'run', '--coverage']}, secret: {cmd: 'npx', args: ['--no-install', 'secretlint', '**/*']}, diff --git a/tests/stages/incremental-gate.test.ts b/tests/stages/incremental-gate.test.ts new file mode 100644 index 00000000..420bcd7f --- /dev/null +++ b/tests/stages/incremental-gate.test.ts @@ -0,0 +1,77 @@ +import {afterEach, beforeEach, describe, expect, it} from 'vitest'; +import {mkdtempSync, rmSync, writeFileSync} from 'node:fs'; +import {tmpdir} from 'node:os'; +import {join} from 'node:path'; + +import {detectToolchain} from '../../src/stages/toolchain/detect.js'; + +let dir: string; +beforeEach(() => { + dir = mkdtempSync(join(tmpdir(), 'incr-gate-')); +}); +afterEach(() => { + rmSync(dir, {recursive: true, force: true}); +}); + +const ts = () => writeFileSync(join(dir, 'package.json'), '{}'); +const py = () => writeFileSync(join(dir, 'pyproject.toml'), ''); + +const after = (args: readonly string[], flag: string) => + args[args.indexOf(flag) + 1]; + +describe('incremental TS gate (F-bfe14aac)', () => { + it('type gate uses incremental with cladding tsbuildinfo', () => { + ts(); + const {gates} = detectToolchain(dir); + expect(gates.type).toBeDefined(); + const {cmd, args} = gates.type!; + expect(cmd).toBe('npx'); + expect(args.slice(0, 3)).toEqual(['--no-install', 'tsc', '--noEmit']); + expect(args).toContain('--incremental'); + expect(args).toContain('--tsBuildInfoFile'); + expect(after(args, '--tsBuildInfoFile')).toBe( + '.cladding/cache/tsc.tsbuildinfo', + ); + }); + + it('lint gate uses eslint cache under cladding', () => { + ts(); + const {gates} = detectToolchain(dir); + expect(gates.lint).toBeDefined(); + const {args} = gates.lint!; + expect(args.slice(0, 3)).toEqual(['--no-install', 'eslint', '.']); + expect(args).toContain('--cache'); + expect(args).toContain('--cache-location'); + expect(after(args, '--cache-location')).toBe('.cladding/cache/eslint'); + }); + + it('all cache paths stay under .cladding/ (no project-root pollution)', () => { + ts(); + const {gates} = detectToolchain(dir); + const tsCache = after(gates.type!.args, '--tsBuildInfoFile'); + const lintCache = after(gates.lint!.args, '--cache-location'); + expect(tsCache.startsWith('.cladding/')).toBe(true); + expect(lintCache.startsWith('.cladding/')).toBe(true); + }); + + it('test and coverage gates are unchanged', () => { + ts(); + const {gates} = detectToolchain(dir); + expect(gates.test).toBeDefined(); + expect(gates.coverage).toBeDefined(); + expect(gates.test!.args).toEqual(['--no-install', 'vitest', 'run']); + expect(gates.coverage!.args).toEqual([ + '--no-install', + 'vitest', + 'run', + '--coverage', + ]); + }); + + it('non-TS (python) project is unaffected by incremental flags', () => { + py(); + const {gates} = detectToolchain(dir); + expect(gates.type?.args).not.toContain('--incremental'); + expect(gates.lint?.args).not.toContain('--cache'); + }); +}); diff --git a/tests/stages/toolchain.test.ts b/tests/stages/toolchain.test.ts index ac1b1a40..2b0cbfdb 100644 --- a/tests/stages/toolchain.test.ts +++ b/tests/stages/toolchain.test.ts @@ -146,7 +146,7 @@ describe('detectToolchain', () => { // State-transition: proves resolveTsLint actually reads the filesystem each call, // not a hard-coded return (defeats the one-way-test critique). writeFileSync(join(dir, 'package.json'), '{}'); - const eslintGate = {cmd: 'npx', args: ['--no-install', 'eslint', '.']}; + const eslintGate = {cmd: 'npx', args: ['--no-install', 'eslint', '.', '--cache', '--cache-location', '.cladding/cache/eslint']}; expect(detectToolchain(dir).gates.lint).toEqual(eslintGate); writeFileSync(join(dir, 'biome.json'), '{}'); expect(detectToolchain(dir).gates.lint).toEqual({cmd: 'npx', args: ['--no-install', 'biome', 'lint', '.']}); @@ -156,7 +156,7 @@ describe('detectToolchain', () => { test('typescript with no linter config → lint gate stays eslint (default preserved)', () => { writeFileSync(join(dir, 'package.json'), '{}'); - expect(detectToolchain(dir).gates.lint).toEqual({cmd: 'npx', args: ['--no-install', 'eslint', '.']}); + expect(detectToolchain(dir).gates.lint).toEqual({cmd: 'npx', args: ['--no-install', 'eslint', '.', '--cache', '--cache-location', '.cladding/cache/eslint']}); }); test('biome takes precedence over oxlint when both configs present', () => { @@ -170,7 +170,7 @@ describe('detectToolchain', () => { writeFileSync(join(dir, 'package.json'), '{}'); writeFileSync(join(dir, 'biome.json'), '{}'); const tc = detectToolchain(dir); - expect(tc.gates.type).toEqual({cmd: 'npx', args: ['--no-install', 'tsc', '--noEmit']}); + expect(tc.gates.type).toEqual({cmd: 'npx', args: ['--no-install', 'tsc', '--noEmit', '--incremental', '--tsBuildInfoFile', '.cladding/cache/tsc.tsbuildinfo']}); expect(tc.gates.test).toEqual({cmd: 'npx', args: ['--no-install', 'vitest', 'run']}); });