makecoder 2.0.82 → 2.0.83

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env -S node --no-warnings=DEP0040
2
2
  const require = (await import('node:module')).createRequire(import.meta.url); const __chunk_filename = (await import('node:url')).fileURLToPath(import.meta.url); const __chunk_dirname = (await import('node:path')).dirname(__chunk_filename);
3
- import{$ as va,A as xa,Ba as Na,C as is,Ca as At,D as Ca,Da as $a,E as cn,Ea as La,Fa as Da,Ga as ja,Ia as ue,Ja as as,Ka as dn,La as Pn,Ma as st,Na as Fa,Oa as Ua,Pa as Ga,Qa as ou,Ra as za,Sa as Wa,T as Sa,Ta as ls,U as Ea,Ua as qa,Va as Ha,W as So,Wa as Ba,Xa as un,Y as jt,_ as _a,a as Co,ab as Va,ad as Za,bd as Qa,ca as Aa,cb as Ya,cd as el,da as Je,dd as tl,eb as Xa,ed as cs,fa as Oa,fb as Ka,ga as te,ha as Ia,hd as nl,ia as Mn,ja as Eo,jd as sl,ka as ut,la as Ta,ma as de,na as Ma,nb as _o,pa as ka,qa as wt,ra as Pa,sa as rs,ta as kn,ua as be,wa as Ra,xa as Oe,z as wa}from"./chunk-3S73IM76.js";import{$l as Dt,$m as ha,Af as Rr,Ak as Xr,Al as nt,Bc as Or,Bm as Me,Cb as _r,Ci as es,Ck as Kr,Db as mo,Dj as Ae,Ec as Ir,Ej as De,Fi as Br,Gm as pa,Hg as jr,If as go,Ih as Qn,Im as ss,Jh as Wr,Jm as su,Km as ma,Li as _t,Mf as Nr,Mm as fa,Pe as ho,Tl as Qr,Wg as Ke,Wh as qr,Wl as bo,Xf as $r,Xg as Fr,Yk as an,Zk as ts,Zl as ea,_l as vt,am as wo,b as ir,be as Tn,bm as ta,fd as Tr,fe as Xe,fh as zr,fj as yo,gc as bt,gg as Lr,gj as Vr,hc as me,hm as na,ic as vr,im as sa,ja as Sr,jc as Zn,jn as ln,ka as Et,kn as ga,md as Mr,mn as ya,nm as oa,nn as os,oe as Pr,om as ia,pe as fo,pm as ra,qm as aa,qn as ba,rm as la,s as sn,sg as Dr,sm as xo,t as gr,tm as ca,ud as kr,ul as Jr,vl as Zr,wd as Ye,x as yr,xc as Ar,xi as Hr,xm as da,yc as In,ym as ns,zb as Er,zf as i,zg as rn,zm as ua}from"./chunk-ZF44RIRK.js";import{$ as gt,$d as Ve,Aa as ro,Ad as hr,Ba as ao,C as Le,Ca as lo,Da as co,Fa as An,Ga as Yn,Gd as Kn,Ha as pr,Id as B,Jd as Jn,Kd as br,La as mr,Md as On,Nd as fe,Od as on,Pa as yt,Pd as wr,Qd as xr,Rd as Cr,X as pe,Y as We,Yc as uo,Zb as fr,a as Pe,b as y,ba as ct,be as q,c as rr,d as ar,de as Ur,ee as Gr,la as Vn,pa as lr,se as Yr,tc as Xn,wa as cr,xa as dr,ya as ur,za as io,zd as po}from"./chunk-5OV5S6OY.js";import"./chunk-TWIC4BKL.js";import{c as Ja}from"./chunk-LP5C4GJE.js";import"./chunk-JAFVB6DI.js";import"./chunk-A5A5SUZN.js";import{a as Ge,c as or,e as ze}from"./chunk-YUXORC52.js";var Uc=or((Ux,pi)=>{"use strict";var Lc=Ge("child_process").exec,Dc=Ge("child_process").execSync,Ps=Ge("fs"),$c=Ge("path"),jc=Ps.access,Fc=Ps.accessSync,wn=Ps.constants||Ps,di=process.platform=="win32",Wp=function(n,e){jc(n,wn.F_OK,function(t){e(!t)})},qp=function(n){try{return Fc(n,wn.F_OK),!1}catch{return!0}},Hp=function(n,e){jc(n,wn.F_OK|wn.X_OK,function(t){e(null,!t)})},Bp=function(n){try{return Fc(n,wn.F_OK|wn.X_OK),!0}catch{return!1}},Vp=function(n,e,t){Wp(n,function(s){if(!s){var o=Lc("command -v "+e+" 2>/dev/null && { echo >&1 "+e+"; exit 0; }",function(r,a,l){t(null,!!a)});return}Hp(n,t)})},Yp=function(n,e,t){if(!/^(?!(?:.*\s|.*\.|\W+)$)(?:[a-zA-Z]:)?(?:(?:[^<>:"\|\?\*\n])+(?:\/\/|\/|\\\\|\\)?)+$/m.test(n)){t(null,!1);return}var s=Lc("where "+e,function(o){o!==null?t(null,!1):t(null,!0)})},Xp=function(n,e){if(qp(n))try{var t=Dc("command -v "+e+" 2>/dev/null && { echo >&1 "+e+"; exit 0; }");return!!t}catch{return!1}return Bp(n)},Kp=function(n,e,t){if(!/^(?!(?:.*\s|.*\.|\W+)$)(?:[a-zA-Z]:)?(?:(?:[^<>:"\|\?\*\n])+(?:\/\/|\/|\\\\|\\)?)+$/m.test(n))return!1;try{var s=Dc("where "+e,{stdio:[]});return!!s}catch{return!1}},ui=function(n){return/[^A-Za-z0-9_\/:=-]/.test(n)&&(n="'"+n.replace(/'/g,"'\\''")+"'",n=n.replace(/^(?:'')+/g,"").replace(/\\'''/g,"\\'")),n};di&&(ui=function(n){var e=/[\\]/.test(n);if(e){var t='"'+$c.dirname(n)+'"',s='"'+$c.basename(n)+'"';return t+":"+s}return'"'+n+'"'});pi.exports=function n(e,t){var s=ui(e);if(!t&&typeof Promise<"u")return new Promise(function(o,r){n(e,function(a,l){l?o(e):r(a)})});di?Yp(e,s,t):Vp(e,s,t)};pi.exports.sync=function(n){var e=ui(n);return di?Kp(n,e):Xp(n,e)}});var zc=or((Gx,Gc)=>{Gc.exports=Uc()});import{notStrictEqual as Tu,strictEqual as Mu}from"assert";var iu={right:du,center:uu},ru=0,ds=1,au=2,us=3,vo=class{constructor(e){var t;this.width=e.width,this.wrap=(t=e.wrap)!==null&&t!==void 0?t:!0,this.rows=[]}span(...e){let t=this.div(...e);t.span=!0}resetOutput(){this.rows=[]}div(...e){if(e.length===0&&this.div(""),this.wrap&&this.shouldApplyLayoutDSL(...e)&&typeof e[0]=="string")return this.applyLayoutDSL(e[0]);let t=e.map(s=>typeof s=="string"?this.colFromString(s):s);return this.rows.push(t),t}shouldApplyLayoutDSL(...e){return e.length===1&&typeof e[0]=="string"&&/[\t\n]/.test(e[0])}applyLayoutDSL(e){let t=e.split(`
3
+ import{$ as Ma,A as va,Ba as Fa,C as rs,Ca as Ot,D as Aa,Da as Ua,E as dn,Ea as Ga,Fa as za,Ga as Wa,Ia as ue,Ja as ls,Ka as un,La as Rn,Ma as st,Na as qa,Oa as Ha,Pa as Ba,Qa as cu,Ra as Va,Sa as Ya,T as Oa,Ta as cs,U as Ia,Ua as Xa,Va as Ka,W as vo,Wa as Ja,Xa as mn,Y as Ft,_ as Ta,a as _o,ab as Za,ad as sl,bd as ol,ca as ka,cb as Qa,cd as il,da as Je,dd as rl,eb as el,ed as ds,fa as Pa,fb as tl,ga as te,ha as Ra,hd as al,ia as kn,ja as Ao,jd as ll,ka as ut,la as Na,ma as de,na as $a,nb as Oo,pa as La,qa as wt,ra as Da,sa as as,ta as Pn,ua as be,wa as ja,xa as Oe,z as _a}from"./chunk-UYYXENF2.js";import{$l as jt,$m as xa,Af as Dr,Ak as ea,Al as nt,Bc as kr,Bm as Me,Cb as Ir,Ci as ts,Ck as ta,Db as go,Dj as Ae,Ec as Pr,Ej as De,Ff as jr,Fi as Jr,Gm as ya,Hg as Wr,If as wo,Ih as es,Im as os,Jh as Yr,Jm as lu,Km as ba,Li as vt,Mf as Fr,Mm as wa,Pe as bo,Tl as oa,Wg as Ke,Wh as Xr,Wl as Co,Xf as Ur,Xg as qr,Yk as ln,Zk as ns,Zl as ia,_l as At,am as Eo,b as lr,be as Mn,bm as ra,fd as Rr,fe as Xe,fh as Vr,fj as xo,gc as bt,gg as Gr,gj as Zr,hc as pe,hm as aa,ia as vr,ic as Tr,im as la,ja as Ar,jc as Qn,jn as cn,ka as St,kn as Ca,md as Nr,mn as Ea,nm as ca,nn as is,oe as Lr,om as da,pe as yo,pm as ua,qm as ma,qn as Sa,rm as pa,s as rn,sg as zr,sm as So,t as wr,tm as fa,ud as $r,ul as na,vl as sa,wd as Ye,x as xr,xc as Mr,xi as Kr,xm as ha,yc as Tn,ym as ss,zb as Or,zf as i,zg as _t,zm as ga}from"./chunk-EBB2IYKE.js";import{$ as gt,$d as Ve,Aa as co,Ad as br,Ba as uo,C as Le,Ca as mo,Da as po,Fa as On,Ga as Xn,Gd as Jn,Ha as hr,Id as B,Jd as Zn,Kd as Cr,La as gr,Md as In,Nd as fe,Od as an,Pa as yt,Pd as Er,Qd as Sr,Rd as _r,X as me,Y as We,Yc as fo,Zb as yr,a as Pe,b as y,ba as ct,be as q,c as cr,d as dr,de as Hr,ee as Br,la as Yn,pa as ur,se as Qr,tc as Kn,wa as mr,xa as pr,ya as fr,za as lo,zd as ho}from"./chunk-5OV5S6OY.js";import"./chunk-TWIC4BKL.js";import{c as nl}from"./chunk-LP5C4GJE.js";import"./chunk-JAFVB6DI.js";import"./chunk-A5A5SUZN.js";import{a as Ge,c as ar,e as ze}from"./chunk-YUXORC52.js";var Hc=ar((Bx,hi)=>{"use strict";var Gc=Ge("child_process").exec,zc=Ge("child_process").execSync,Rs=Ge("fs"),Uc=Ge("path"),Wc=Rs.access,qc=Rs.accessSync,xn=Rs.constants||Rs,pi=process.platform=="win32",Ym=function(n,e){Wc(n,xn.F_OK,function(t){e(!t)})},Xm=function(n){try{return qc(n,xn.F_OK),!1}catch{return!0}},Km=function(n,e){Wc(n,xn.F_OK|xn.X_OK,function(t){e(null,!t)})},Jm=function(n){try{return qc(n,xn.F_OK|xn.X_OK),!0}catch{return!1}},Zm=function(n,e,t){Ym(n,function(s){if(!s){var o=Gc("command -v "+e+" 2>/dev/null && { echo >&1 "+e+"; exit 0; }",function(r,a,l){t(null,!!a)});return}Km(n,t)})},Qm=function(n,e,t){if(!/^(?!(?:.*\s|.*\.|\W+)$)(?:[a-zA-Z]:)?(?:(?:[^<>:"\|\?\*\n])+(?:\/\/|\/|\\\\|\\)?)+$/m.test(n)){t(null,!1);return}var s=Gc("where "+e,function(o){o!==null?t(null,!1):t(null,!0)})},ep=function(n,e){if(Xm(n))try{var t=zc("command -v "+e+" 2>/dev/null && { echo >&1 "+e+"; exit 0; }");return!!t}catch{return!1}return Jm(n)},tp=function(n,e,t){if(!/^(?!(?:.*\s|.*\.|\W+)$)(?:[a-zA-Z]:)?(?:(?:[^<>:"\|\?\*\n])+(?:\/\/|\/|\\\\|\\)?)+$/m.test(n))return!1;try{var s=zc("where "+e,{stdio:[]});return!!s}catch{return!1}},fi=function(n){return/[^A-Za-z0-9_\/:=-]/.test(n)&&(n="'"+n.replace(/'/g,"'\\''")+"'",n=n.replace(/^(?:'')+/g,"").replace(/\\'''/g,"\\'")),n};pi&&(fi=function(n){var e=/[\\]/.test(n);if(e){var t='"'+Uc.dirname(n)+'"',s='"'+Uc.basename(n)+'"';return t+":"+s}return'"'+n+'"'});hi.exports=function n(e,t){var s=fi(e);if(!t&&typeof Promise<"u")return new Promise(function(o,r){n(e,function(a,l){l?o(e):r(a)})});pi?Qm(e,s,t):Zm(e,s,t)};hi.exports.sync=function(n){var e=fi(n);return pi?tp(n,e):ep(n,e)}});var Vc=ar((Vx,Bc)=>{Bc.exports=Hc()});import{notStrictEqual as Nu,strictEqual as $u}from"assert";var du={right:hu,center:gu},uu=0,us=1,mu=2,ms=3,Io=class{constructor(e){var t;this.width=e.width,this.wrap=(t=e.wrap)!==null&&t!==void 0?t:!0,this.rows=[]}span(...e){let t=this.div(...e);t.span=!0}resetOutput(){this.rows=[]}div(...e){if(e.length===0&&this.div(""),this.wrap&&this.shouldApplyLayoutDSL(...e)&&typeof e[0]=="string")return this.applyLayoutDSL(e[0]);let t=e.map(s=>typeof s=="string"?this.colFromString(s):s);return this.rows.push(t),t}shouldApplyLayoutDSL(...e){return e.length===1&&typeof e[0]=="string"&&/[\t\n]/.test(e[0])}applyLayoutDSL(e){let t=e.split(`
4
4
  `).map(o=>o.split(" ")),s=0;return t.forEach(o=>{o.length>1&&Ze.stringWidth(o[0])>s&&(s=Math.min(Math.floor(this.width*.5),Ze.stringWidth(o[0])))}),t.forEach(o=>{this.div(...o.map((r,a)=>({text:r.trim(),padding:this.measurePadding(r),width:a===0&&o.length>1?s:void 0})))}),this.rows[this.rows.length-1]}colFromString(e){return{text:e,padding:this.measurePadding(e)}}measurePadding(e){let t=Ze.stripAnsi(e);return[0,t.match(/\s*$/)[0].length,0,t.match(/^\s*/)[0].length]}toString(){let e=[];return this.rows.forEach(t=>{this.rowToString(t,e)}),e.filter(t=>!t.hidden).map(t=>t.text).join(`
5
- `)}rowToString(e,t){return this.rasterize(e).forEach((s,o)=>{let r="";s.forEach((a,l)=>{let{width:c}=e[l],p=this.negatePadding(e[l]),d=a;if(p>Ze.stringWidth(a)&&(d+=" ".repeat(p-Ze.stringWidth(a))),e[l].align&&e[l].align!=="left"&&this.wrap){let f=iu[e[l].align];d=f(d,p),Ze.stringWidth(d)<p&&(d+=" ".repeat((c||0)-Ze.stringWidth(d)-1))}let m=e[l].padding||[0,0,0,0];m[us]&&(r+=" ".repeat(m[us])),r+=ol(e[l],d,"| "),r+=d,r+=ol(e[l],d," |"),m[ds]&&(r+=" ".repeat(m[ds])),o===0&&t.length>0&&(r=this.renderInline(r,t[t.length-1]))}),t.push({text:r.replace(/ +$/,""),span:e.span})}),t}renderInline(e,t){let s=e.match(/^ */),o=s?s[0].length:0,r=t.text,a=Ze.stringWidth(r.trimRight());return t.span?this.wrap?o<a?e:(t.hidden=!0,r.trimRight()+" ".repeat(o-a)+e.trimLeft()):(t.hidden=!0,r+e):e}rasterize(e){let t=[],s=this.columnWidths(e),o;return e.forEach((r,a)=>{r.width=s[a],this.wrap?o=Ze.wrap(r.text,this.negatePadding(r),{hard:!0}).split(`
5
+ `)}rowToString(e,t){return this.rasterize(e).forEach((s,o)=>{let r="";s.forEach((a,l)=>{let{width:c}=e[l],m=this.negatePadding(e[l]),d=a;if(m>Ze.stringWidth(a)&&(d+=" ".repeat(m-Ze.stringWidth(a))),e[l].align&&e[l].align!=="left"&&this.wrap){let f=du[e[l].align];d=f(d,m),Ze.stringWidth(d)<m&&(d+=" ".repeat((c||0)-Ze.stringWidth(d)-1))}let p=e[l].padding||[0,0,0,0];p[ms]&&(r+=" ".repeat(p[ms])),r+=cl(e[l],d,"| "),r+=d,r+=cl(e[l],d," |"),p[us]&&(r+=" ".repeat(p[us])),o===0&&t.length>0&&(r=this.renderInline(r,t[t.length-1]))}),t.push({text:r.replace(/ +$/,""),span:e.span})}),t}renderInline(e,t){let s=e.match(/^ */),o=s?s[0].length:0,r=t.text,a=Ze.stringWidth(r.trimRight());return t.span?this.wrap?o<a?e:(t.hidden=!0,r.trimRight()+" ".repeat(o-a)+e.trimLeft()):(t.hidden=!0,r+e):e}rasterize(e){let t=[],s=this.columnWidths(e),o;return e.forEach((r,a)=>{r.width=s[a],this.wrap?o=Ze.wrap(r.text,this.negatePadding(r),{hard:!0}).split(`
6
6
  `):o=r.text.split(`
7
- `),r.border&&(o.unshift("."+"-".repeat(this.negatePadding(r)+2)+"."),o.push("'"+"-".repeat(this.negatePadding(r)+2)+"'")),r.padding&&(o.unshift(...new Array(r.padding[ru]||0).fill("")),o.push(...new Array(r.padding[au]||0).fill(""))),o.forEach((l,c)=>{t[c]||t.push([]);let p=t[c];for(let d=0;d<a;d++)p[d]===void 0&&p.push("");p.push(l)})}),t}negatePadding(e){let t=e.width||0;return e.padding&&(t-=(e.padding[us]||0)+(e.padding[ds]||0)),e.border&&(t-=4),t}columnWidths(e){if(!this.wrap)return e.map(a=>a.width||Ze.stringWidth(a.text));let t=e.length,s=this.width,o=e.map(a=>{if(a.width)return t--,s-=a.width,a.width}),r=t?Math.floor(s/t):0;return o.map((a,l)=>a===void 0?Math.max(r,lu(e[l])):a)}};function ol(n,e,t){return n.border?/[.']-+[.']/.test(e)?"":e.trim().length!==0?t:" ":""}function lu(n){let e=n.padding||[],t=1+(e[us]||0)+(e[ds]||0);return n.border?t+4:t}function cu(){return typeof process=="object"&&process.stdout&&process.stdout.columns?process.stdout.columns:80}function du(n,e){n=n.trim();let t=Ze.stringWidth(n);return t<e?" ".repeat(e-t)+n:n}function uu(n,e){n=n.trim();let t=Ze.stringWidth(n);return t>=e?n:" ".repeat(e-t>>1)+n}var Ze;function il(n,e){return Ze=e,new vo({width:n?.width||cu(),wrap:n?.wrap})}var rl=new RegExp("\x1B(?:\\[(?:\\d+[ABCDEFGJKSTm]|\\d+;\\d+[Hfm]|\\d+;\\d+;\\d+m|6n|s|u|\\?25[lh])|\\w)","g");function Ao(n){return n.replace(rl,"")}function al(n,e){let[t,s]=n.match(rl)||["",""];n=Ao(n);let o="";for(let r=0;r<n.length;r++)r!==0&&r%e===0&&(o+=`
8
- `),o+=n.charAt(r);return t&&s&&(o=`${t}${o}${s}`),o}function Oo(n){return il(n,{stringWidth:e=>[...e].length,stripAnsi:Ao,wrap:al})}import{dirname as ll,resolve as cl}from"path";import{readdirSync as pu,statSync as mu}from"fs";function dl(n,e){let t=cl(".",n),s;for(mu(t).isDirectory()||(t=ll(t));;){if(s=e(t,pu(t)),s)return cl(t,s);if(t=ll(s=t),s===t)break}}import{inspect as ku}from"util";import{readFileSync as Pu}from"fs";import{fileURLToPath as Ru}from"url";import{format as gu}from"util";import{normalize as yu,resolve as bu}from"path";function Ft(n){if(n!==n.toLowerCase()&&n!==n.toUpperCase()||(n=n.toLowerCase()),n.indexOf("-")===-1&&n.indexOf("_")===-1)return n;{let t="",s=!1,o=n.match(/^-+/);for(let r=o?o[0].length:0;r<n.length;r++){let a=n.charAt(r);s&&(s=!1,a=a.toUpperCase()),r!==0&&(a==="-"||a==="_")?s=!0:a!=="-"&&a!=="_"&&(t+=a)}return t}}function ps(n,e){let t=n.toLowerCase();e=e||"-";let s="";for(let o=0;o<n.length;o++){let r=t.charAt(o),a=n.charAt(o);r!==a&&o>0?s+=`${e}${t.charAt(o)}`:s+=a}return s}function ms(n){return n==null?!1:typeof n=="number"||/^0x[0-9a-f]+$/i.test(n)?!0:/^0[^.]/.test(n)?!1:/^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(n)}function ul(n){if(Array.isArray(n))return n.map(a=>typeof a!="string"?a+"":a);n=n.trim();let e=0,t=null,s=null,o=null,r=[];for(let a=0;a<n.length;a++){if(t=s,s=n.charAt(a),s===" "&&!o){t!==" "&&e++;continue}s===o?o=null:(s==="'"||s==='"')&&!o&&(o=s),r[e]||(r[e]=""),r[e]+=s}return r}var ot;(function(n){n.BOOLEAN="boolean",n.STRING="string",n.NUMBER="number",n.ARRAY="array"})(ot||(ot={}));var xt,fs=class{constructor(e){xt=e}parse(e,t){let s=Object.assign({alias:void 0,array:void 0,boolean:void 0,config:void 0,configObjects:void 0,configuration:void 0,coerce:void 0,count:void 0,default:void 0,envPrefix:void 0,narg:void 0,normalize:void 0,string:void 0,number:void 0,__:void 0,key:void 0},t),o=ul(e),r=typeof e=="string",a=fu(Object.assign(Object.create(null),s.alias)),l=Object.assign({"boolean-negation":!0,"camel-case-expansion":!0,"combine-arrays":!1,"dot-notation":!0,"duplicate-arguments-array":!0,"flatten-duplicate-arrays":!0,"greedy-arrays":!0,"halt-at-non-option":!1,"nargs-eats-options":!1,"negation-prefix":"no-","parse-numbers":!0,"parse-positional-numbers":!0,"populate--":!1,"set-placeholder-key":!1,"short-option-groups":!0,"strip-aliased":!1,"strip-dashed":!1,"unknown-options-as-args":!1},s.configuration),c=Object.assign(Object.create(null),s.default),p=s.configObjects||[],d=s.envPrefix,m=l["populate--"],f=m?"--":"_",h=Object.create(null),I=Object.create(null),E=s.__||xt.format,x={aliases:Object.create(null),arrays:Object.create(null),bools:Object.create(null),strings:Object.create(null),numbers:Object.create(null),counts:Object.create(null),normalize:Object.create(null),configs:Object.create(null),nargs:Object.create(null),coercions:Object.create(null),keys:[]},k=/^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/,M=new RegExp("^--"+l["negation-prefix"]+"(.+)");[].concat(s.array||[]).filter(Boolean).forEach(function(g){let S=typeof g=="object"?g.key:g,O=Object.keys(g).map(function(A){return{boolean:"bools",string:"strings",number:"numbers"}[A]}).filter(Boolean).pop();O&&(x[O][S]=!0),x.arrays[S]=!0,x.keys.push(S)}),[].concat(s.boolean||[]).filter(Boolean).forEach(function(g){x.bools[g]=!0,x.keys.push(g)}),[].concat(s.string||[]).filter(Boolean).forEach(function(g){x.strings[g]=!0,x.keys.push(g)}),[].concat(s.number||[]).filter(Boolean).forEach(function(g){x.numbers[g]=!0,x.keys.push(g)}),[].concat(s.count||[]).filter(Boolean).forEach(function(g){x.counts[g]=!0,x.keys.push(g)}),[].concat(s.normalize||[]).filter(Boolean).forEach(function(g){x.normalize[g]=!0,x.keys.push(g)}),typeof s.narg=="object"&&Object.entries(s.narg).forEach(([g,S])=>{typeof S=="number"&&(x.nargs[g]=S,x.keys.push(g))}),typeof s.coerce=="object"&&Object.entries(s.coerce).forEach(([g,S])=>{typeof S=="function"&&(x.coercions[g]=S,x.keys.push(g))}),typeof s.config<"u"&&(Array.isArray(s.config)||typeof s.config=="string"?[].concat(s.config).filter(Boolean).forEach(function(g){x.configs[g]=!0}):typeof s.config=="object"&&Object.entries(s.config).forEach(([g,S])=>{(typeof S=="boolean"||typeof S=="function")&&(x.configs[g]=S)})),J(s.key,a,s.default,x.arrays),Object.keys(c).forEach(function(g){(x.aliases[g]||[]).forEach(function(S){c[S]=c[g]})});let v=null;Lt();let b=[],P=Object.assign(Object.create(null),{_:[]}),ee={};for(let g=0;g<o.length;g++){let S=o[g],O=S.replace(/^-{3,}/,"---"),A,C,D,$,W,ke;if(S!=="--"&&/^-/.test(S)&&re(S))Q(S);else if(O.match(/^---+(=|$)/)){Q(S);continue}else if(S.match(/^--.+=/)||!l["short-option-groups"]&&S.match(/^-.+=/))$=S.match(/^--?([^=]+)=([\s\S]*)$/),$!==null&&Array.isArray($)&&$.length>=3&&(L($[1],x.arrays)?g=K(g,$[1],o,$[2]):L($[1],x.nargs)!==!1?g=H(g,$[1],o,$[2]):N($[1],$[2],!0));else if(S.match(M)&&l["boolean-negation"])$=S.match(M),$!==null&&Array.isArray($)&&$.length>=2&&(C=$[1],N(C,L(C,x.arrays)?[!1]:!1));else if(S.match(/^--.+/)||!l["short-option-groups"]&&S.match(/^-[^-]+/))$=S.match(/^--?(.+)/),$!==null&&Array.isArray($)&&$.length>=2&&(C=$[1],L(C,x.arrays)?g=K(g,C,o):L(C,x.nargs)!==!1?g=H(g,C,o):(W=o[g+1],W!==void 0&&(!W.match(/^-/)||W.match(k))&&!L(C,x.bools)&&!L(C,x.counts)||/^(true|false)$/.test(W)?(N(C,W),g++):N(C,ye(C))));else if(S.match(/^-.\..+=/))$=S.match(/^-([^=]+)=([\s\S]*)$/),$!==null&&Array.isArray($)&&$.length>=3&&N($[1],$[2]);else if(S.match(/^-.\..+/)&&!S.match(k))W=o[g+1],$=S.match(/^-(.\..+)/),$!==null&&Array.isArray($)&&$.length>=2&&(C=$[1],W!==void 0&&!W.match(/^-/)&&!L(C,x.bools)&&!L(C,x.counts)?(N(C,W),g++):N(C,ye(C)));else if(S.match(/^-[^-]+/)&&!S.match(k)){D=S.slice(1,-1).split(""),A=!1;for(let Fe=0;Fe<D.length;Fe++){if(W=S.slice(Fe+2),D[Fe+1]&&D[Fe+1]==="="){ke=S.slice(Fe+3),C=D[Fe],L(C,x.arrays)?g=K(g,C,o,ke):L(C,x.nargs)!==!1?g=H(g,C,o,ke):N(C,ke),A=!0;break}if(W==="-"){N(D[Fe],W);continue}if(/[A-Za-z]/.test(D[Fe])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(W)&&L(W,x.bools)===!1){N(D[Fe],W),A=!0;break}if(D[Fe+1]&&D[Fe+1].match(/\W/)){N(D[Fe],W),A=!0;break}else N(D[Fe],ye(D[Fe]))}C=S.slice(-1)[0],!A&&C!=="-"&&(L(C,x.arrays)?g=K(g,C,o):L(C,x.nargs)!==!1?g=H(g,C,o):(W=o[g+1],W!==void 0&&(!/^(-|--)[^-]/.test(W)||W.match(k))&&!L(C,x.bools)&&!L(C,x.counts)||/^(true|false)$/.test(W)?(N(C,W),g++):N(C,ye(C))))}else if(S.match(/^-[0-9]$/)&&S.match(k)&&L(S.slice(1),x.bools))C=S.slice(1),N(C,ye(C));else if(S==="--"){b=o.slice(g+1);break}else if(l["halt-at-non-option"]){b=o.slice(g);break}else Q(S)}V(P,!0),V(P,!1),R(P),ne(),ie(P,x.aliases,c,!0),ce(P),l["set-placeholder-key"]&&$e(P),Object.keys(x.counts).forEach(function(g){Te(P,g.split("."))||N(g,0)}),m&&b.length&&(P[f]=[]),b.forEach(function(g){P[f].push(g)}),l["camel-case-expansion"]&&l["strip-dashed"]&&Object.keys(P).filter(g=>g!=="--"&&g.includes("-")).forEach(g=>{delete P[g]}),l["strip-aliased"]&&[].concat(...Object.keys(a).map(g=>a[g])).forEach(g=>{l["camel-case-expansion"]&&g.includes("-")&&delete P[g.split(".").map(S=>Ft(S)).join(".")],delete P[g]});function Q(g){let S=T("_",g);(typeof S=="string"||typeof S=="number")&&P._.push(S)}function H(g,S,O,A){let C,D=L(S,x.nargs);if(D=typeof D!="number"||isNaN(D)?1:D,D===0)return je(A)||(v=Error(E("Argument unexpected for: %s",S))),N(S,ye(S)),g;let $=je(A)?0:1;if(l["nargs-eats-options"])O.length-(g+1)+$<D&&(v=Error(E("Not enough arguments following: %s",S))),$=D;else{for(C=g+1;C<O.length&&(!O[C].match(/^-[^0-9]/)||O[C].match(k)||re(O[C]));C++)$++;$<D&&(v=Error(E("Not enough arguments following: %s",S)))}let W=Math.min($,D);for(!je(A)&&W>0&&(N(S,A),W--),C=g+1;C<W+g+1;C++)N(S,O[C]);return g+W}function K(g,S,O,A){let C=[],D=A||O[g+1],$=L(S,x.nargs);if(L(S,x.bools)&&!/^(true|false)$/.test(D))C.push(!0);else if(je(D)||je(A)&&/^-/.test(D)&&!k.test(D)&&!re(D)){if(c[S]!==void 0){let W=c[S];C=Array.isArray(W)?W:[W]}}else{je(A)||C.push(_(S,A,!0));for(let W=g+1;W<O.length&&!(!l["greedy-arrays"]&&C.length>0||$&&typeof $=="number"&&C.length>=$||(D=O[W],/^-/.test(D)&&!k.test(D)&&!re(D)));W++)g=W,C.push(_(S,D,r))}return typeof $=="number"&&($&&C.length<$||isNaN($)&&C.length===0)&&(v=Error(E("Not enough arguments following: %s",S))),N(S,C),g}function N(g,S,O=r){if(/-/.test(g)&&l["camel-case-expansion"]){let D=g.split(".").map(function($){return Ft($)}).join(".");w(g,D)}let A=_(g,S,O),C=g.split(".");se(P,C,A),x.aliases[g]&&x.aliases[g].forEach(function(D){let $=D.split(".");se(P,$,A)}),C.length>1&&l["dot-notation"]&&(x.aliases[C[0]]||[]).forEach(function(D){let $=D.split("."),W=[].concat(C);W.shift(),$=$.concat(W),(x.aliases[g]||[]).includes($.join("."))||se(P,$,A)}),L(g,x.normalize)&&!L(g,x.arrays)&&[g].concat(x.aliases[g]||[]).forEach(function($){Object.defineProperty(ee,$,{enumerable:!0,get(){return S},set(W){S=typeof W=="string"?xt.normalize(W):W}})})}function w(g,S){x.aliases[g]&&x.aliases[g].length||(x.aliases[g]=[S],h[S]=!0),x.aliases[S]&&x.aliases[S].length||w(S,g)}function _(g,S,O){O&&(S=hu(S)),(L(g,x.bools)||L(g,x.counts))&&typeof S=="string"&&(S=S==="true");let A=Array.isArray(S)?S.map(function(C){return T(g,C)}):T(g,S);return L(g,x.counts)&&(je(A)||typeof A=="boolean")&&(A=Io()),L(g,x.normalize)&&L(g,x.arrays)&&(Array.isArray(S)?A=S.map(C=>xt.normalize(C)):A=xt.normalize(S)),A}function T(g,S){return!l["parse-positional-numbers"]&&g==="_"||!L(g,x.strings)&&!L(g,x.bools)&&!Array.isArray(S)&&(ms(S)&&l["parse-numbers"]&&Number.isSafeInteger(Math.floor(parseFloat(`${S}`)))||!je(S)&&L(g,x.numbers))&&(S=Number(S)),S}function R(g){let S=Object.create(null);ie(S,x.aliases,c),Object.keys(x.configs).forEach(function(O){let A=g[O]||S[O];if(A)try{let C=null,D=xt.resolve(xt.cwd(),A),$=x.configs[O];if(typeof $=="function"){try{C=$(D)}catch(W){C=W}if(C instanceof Error){v=C;return}}else C=xt.require(D);U(C)}catch(C){C.name==="PermissionDenied"?v=C:g[O]&&(v=Error(E("Invalid JSON config file: %s",A)))}})}function U(g,S){Object.keys(g).forEach(function(O){let A=g[O],C=S?S+"."+O:O;typeof A=="object"&&A!==null&&!Array.isArray(A)&&l["dot-notation"]?U(A,C):(!Te(P,C.split("."))||L(C,x.arrays)&&l["combine-arrays"])&&N(C,A)})}function ne(){typeof p<"u"&&p.forEach(function(g){U(g)})}function V(g,S){if(typeof d>"u")return;let O=typeof d=="string"?d:"",A=xt.env();Object.keys(A).forEach(function(C){if(O===""||C.lastIndexOf(O,0)===0){let D=C.split("__").map(function($,W){return W===0&&($=$.substring(O.length)),Ft($)});(S&&x.configs[D.join(".")]||!S)&&!Te(g,D)&&N(D.join("."),A[C])}})}function ce(g){let S,O=new Set;Object.keys(g).forEach(function(A){if(!O.has(A)&&(S=L(A,x.coercions),typeof S=="function"))try{let C=T(A,S(g[A]));[].concat(x.aliases[A]||[],A).forEach(D=>{O.add(D),g[D]=C})}catch(C){v=C}})}function $e(g){return x.keys.forEach(S=>{~S.indexOf(".")||typeof g[S]>"u"&&(g[S]=void 0)}),g}function ie(g,S,O,A=!1){Object.keys(O).forEach(function(C){Te(g,C.split("."))||(se(g,C.split("."),O[C]),A&&(I[C]=!0),(S[C]||[]).forEach(function(D){Te(g,D.split("."))||se(g,D.split("."),O[C])}))})}function Te(g,S){let O=g;l["dot-notation"]||(S=[S.join(".")]),S.slice(0,-1).forEach(function(C){O=O[C]||{}});let A=S[S.length-1];return typeof O!="object"?!1:A in O}function se(g,S,O){let A=g;l["dot-notation"]||(S=[S.join(".")]),S.slice(0,-1).forEach(function(ke){ke=pl(ke),typeof A=="object"&&A[ke]===void 0&&(A[ke]={}),typeof A[ke]!="object"||Array.isArray(A[ke])?(Array.isArray(A[ke])?A[ke].push({}):A[ke]=[A[ke],{}],A=A[ke][A[ke].length-1]):A=A[ke]});let C=pl(S[S.length-1]),D=L(S.join("."),x.arrays),$=Array.isArray(O),W=l["duplicate-arguments-array"];!W&&L(C,x.nargs)&&(W=!0,(!je(A[C])&&x.nargs[C]===1||Array.isArray(A[C])&&A[C].length===x.nargs[C])&&(A[C]=void 0)),O===Io()?A[C]=Io(A[C]):Array.isArray(A[C])?W&&D&&$?A[C]=l["flatten-duplicate-arrays"]?A[C].concat(O):(Array.isArray(A[C][0])?A[C]:[A[C]]).concat([O]):!W&&!!D==!!$?A[C]=O:A[C]=A[C].concat([O]):A[C]===void 0&&D?A[C]=$?O:[O]:W&&!(A[C]===void 0||L(C,x.counts)||L(C,x.bools))?A[C]=[A[C],O]:A[C]=O}function J(...g){g.forEach(function(S){Object.keys(S||{}).forEach(function(O){x.aliases[O]||(x.aliases[O]=[].concat(a[O]||[]),x.aliases[O].concat(O).forEach(function(A){if(/-/.test(A)&&l["camel-case-expansion"]){let C=Ft(A);C!==O&&x.aliases[O].indexOf(C)===-1&&(x.aliases[O].push(C),h[C]=!0)}}),x.aliases[O].concat(O).forEach(function(A){if(A.length>1&&/[A-Z]/.test(A)&&l["camel-case-expansion"]){let C=ps(A,"-");C!==O&&x.aliases[O].indexOf(C)===-1&&(x.aliases[O].push(C),h[C]=!0)}}),x.aliases[O].forEach(function(A){x.aliases[A]=[O].concat(x.aliases[O].filter(function(C){return A!==C}))}))})})}function L(g,S){let O=[].concat(x.aliases[g]||[],g),A=Object.keys(S),C=O.find(D=>A.includes(D));return C?S[C]:!1}function Ee(g){let S=Object.keys(x);return[].concat(S.map(A=>x[A])).some(function(A){return Array.isArray(A)?A.includes(g):A[g]})}function G(g,...S){return[].concat(...S).some(function(A){let C=g.match(A);return C&&Ee(C[1])})}function ae(g){if(g.match(k)||!g.match(/^-[^-]+/))return!1;let S=!0,O,A=g.slice(1).split("");for(let C=0;C<A.length;C++){if(O=g.slice(C+2),!Ee(A[C])){S=!1;break}if(A[C+1]&&A[C+1]==="="||O==="-"||/[A-Za-z]/.test(A[C])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(O)||A[C+1]&&A[C+1].match(/\W/))break}return S}function re(g){return l["unknown-options-as-args"]&&oe(g)}function oe(g){return g=g.replace(/^-{3,}/,"--"),g.match(k)||ae(g)?!1:!G(g,/^-+([^=]+?)=[\s\S]*$/,M,/^-+([^=]+?)$/,/^-+([^=]+?)-$/,/^-+([^=]+?\d+)$/,/^-+([^=]+?)\W+.*$/)}function ye(g){return!L(g,x.bools)&&!L(g,x.counts)&&`${g}`in c?c[g]:xe(Be(g))}function xe(g){return{[ot.BOOLEAN]:!0,[ot.STRING]:"",[ot.NUMBER]:void 0,[ot.ARRAY]:[]}[g]}function Be(g){let S=ot.BOOLEAN;return L(g,x.strings)?S=ot.STRING:L(g,x.numbers)?S=ot.NUMBER:L(g,x.bools)?S=ot.BOOLEAN:L(g,x.arrays)&&(S=ot.ARRAY),S}function je(g){return g===void 0}function Lt(){Object.keys(x.counts).find(g=>L(g,x.arrays)?(v=Error(E("Invalid configuration: %s, opts.count excludes opts.array.",g)),!0):L(g,x.nargs)?(v=Error(E("Invalid configuration: %s, opts.count excludes opts.narg.",g)),!0):!1)}return{aliases:Object.assign({},x.aliases),argv:Object.assign(ee,P),configuration:l,defaulted:Object.assign({},I),error:v,newAliases:Object.assign({},h)}}};function fu(n){let e=[],t=Object.create(null),s=!0;for(Object.keys(n).forEach(function(o){e.push([].concat(n[o],o))});s;){s=!1;for(let o=0;o<e.length;o++)for(let r=o+1;r<e.length;r++)if(e[o].filter(function(l){return e[r].indexOf(l)!==-1}).length){e[o]=e[o].concat(e[r]),e.splice(r,1),s=!0;break}}return e.forEach(function(o){o=o.filter(function(a,l,c){return c.indexOf(a)===l});let r=o.pop();r!==void 0&&typeof r=="string"&&(t[r]=o)}),t}function Io(n){return n!==void 0?n+1:1}function pl(n){return n==="__proto__"?"___proto___":n}function hu(n){return typeof n=="string"&&(n[0]==="'"||n[0]==='"')&&n[n.length-1]===n[0]?n.substring(1,n.length-1):n}import{readFileSync as wu}from"fs";var To,Mo,ko,ml=process&&process.env&&process.env.YARGS_MIN_NODE_VERSION?Number(process.env.YARGS_MIN_NODE_VERSION):12,fl=(Mo=(To=process==null?void 0:process.versions)===null||To===void 0?void 0:To.node)!==null&&Mo!==void 0?Mo:(ko=process==null?void 0:process.version)===null||ko===void 0?void 0:ko.slice(1);if(fl&&Number(fl.match(/^([^.]+)/)[1])<ml)throw Error(`yargs parser supports a minimum Node.js version of ${ml}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`);var xu=process?process.env:{},hl=new fs({cwd:process.cwd,env:()=>xu,format:gu,normalize:yu,resolve:bu,require:n=>{if(typeof Ge<"u")return Ge(n);if(n.match(/\.json$/))return JSON.parse(wu(n,"utf8"));throw Error("only .json config files are supported in ESM")}}),Rn=function(e,t){return hl.parse(e.slice(),t).argv};Rn.detailed=function(n,e){return hl.parse(n.slice(),e)};Rn.camelCase=Ft;Rn.decamelize=ps;Rn.looksLikeNumber=ms;var Po=Rn;import{basename as Nu,dirname as $u,extname as Lu,relative as Du,resolve as Cl}from"path";function gl(){return Cu()?0:1}function Cu(){return Su()&&!process.defaultApp}function Su(){return!!process.versions.electron}function hs(n){return n.slice(gl()+1)}function yl(){return process.argv[gl()]}var he=class n extends Error{constructor(e){super(e||"yargs error"),this.name="YError",Error.captureStackTrace&&Error.captureStackTrace(this,n)}};import{readFileSync as Eu,statSync as _u,writeFile as vu}from"fs";import{format as Au}from"util";import{resolve as Ou}from"path";var bl={fs:{readFileSync:Eu,writeFile:vu},format:Au,resolve:Ou,exists:n=>{try{return _u(n).isFile()}catch{return!1}}};var dt,Ro=class{constructor(e){e=e||{},this.directory=e.directory||"./locales",this.updateFiles=typeof e.updateFiles=="boolean"?e.updateFiles:!0,this.locale=e.locale||"en",this.fallbackToLanguage=typeof e.fallbackToLanguage=="boolean"?e.fallbackToLanguage:!0,this.cache=Object.create(null),this.writeQueue=[]}__(...e){if(typeof arguments[0]!="string")return this._taggedLiteral(arguments[0],...arguments);let t=e.shift(),s=function(){};return typeof e[e.length-1]=="function"&&(s=e.pop()),s=s||function(){},this.cache[this.locale]||this._readLocaleFile(),!this.cache[this.locale][t]&&this.updateFiles?(this.cache[this.locale][t]=t,this._enqueueWrite({directory:this.directory,locale:this.locale,cb:s})):s(),dt.format.apply(dt.format,[this.cache[this.locale][t]||t].concat(e))}__n(){let e=Array.prototype.slice.call(arguments),t=e.shift(),s=e.shift(),o=e.shift(),r=function(){};typeof e[e.length-1]=="function"&&(r=e.pop()),this.cache[this.locale]||this._readLocaleFile();let a=o===1?t:s;this.cache[this.locale][t]&&(a=this.cache[this.locale][t][o===1?"one":"other"]),!this.cache[this.locale][t]&&this.updateFiles?(this.cache[this.locale][t]={one:t,other:s},this._enqueueWrite({directory:this.directory,locale:this.locale,cb:r})):r();let l=[a];return~a.indexOf("%d")&&l.push(o),dt.format.apply(dt.format,l.concat(e))}setLocale(e){this.locale=e}getLocale(){return this.locale}updateLocale(e){this.cache[this.locale]||this._readLocaleFile();for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(this.cache[this.locale][t]=e[t])}_taggedLiteral(e,...t){let s="";return e.forEach(function(o,r){let a=t[r+1];s+=o,typeof a<"u"&&(s+="%s")}),this.__.apply(this,[s].concat([].slice.call(t,1)))}_enqueueWrite(e){this.writeQueue.push(e),this.writeQueue.length===1&&this._processWriteQueue()}_processWriteQueue(){let e=this,t=this.writeQueue[0],s=t.directory,o=t.locale,r=t.cb,a=this._resolveLocaleFile(s,o),l=JSON.stringify(this.cache[o],null,2);dt.fs.writeFile(a,l,"utf-8",function(c){e.writeQueue.shift(),e.writeQueue.length>0&&e._processWriteQueue(),r(c)})}_readLocaleFile(){let e={},t=this._resolveLocaleFile(this.directory,this.locale);try{dt.fs.readFileSync&&(e=JSON.parse(dt.fs.readFileSync(t,"utf-8")))}catch(s){if(s instanceof SyntaxError&&(s.message="syntax error in "+t),s.code==="ENOENT")e={};else throw s}this.cache[this.locale]=e}_resolveLocaleFile(e,t){let s=dt.resolve(e,"./",t+".json");if(this.fallbackToLanguage&&!this._fileExistsSync(s)&&~t.lastIndexOf("_")){let o=dt.resolve(e,"./",t.split("_")[0]+".json");this._fileExistsSync(o)&&(s=o)}return s}_fileExistsSync(e){return dt.exists(e)}};function wl(n,e){dt=e;let t=new Ro(n);return{__:t.__.bind(t),__n:t.__n.bind(t),setLocale:t.setLocale.bind(t),getLocale:t.getLocale.bind(t),updateLocale:t.updateLocale.bind(t),locale:t.locale}}var Iu=n=>wl(n,bl),xl=Iu;var ju="require is not supported by ESM",Sl="loading a directory of commands is not supported yet for ESM",Nn;try{Nn=Ru(import.meta.url)}catch{Nn=process.cwd()}var Fu=Nn.substring(0,Nn.lastIndexOf("node_modules")),No={assert:{notStrictEqual:Tu,strictEqual:Mu},cliui:Oo,findUp:dl,getEnv:n=>process.env[n],inspect:ku,getCallerFile:()=>{throw new he(Sl)},getProcessArgvBin:yl,mainFilename:Fu||process.cwd(),Parser:Po,path:{basename:Nu,dirname:$u,extname:Lu,relative:Du,resolve:Cl},process:{argv:()=>process.argv,cwd:process.cwd,emitWarning:(n,e)=>process.emitWarning(n,e),execPath:()=>process.execPath,exit:process.exit,nextTick:process.nextTick,stdColumns:typeof process.stdout.columns<"u"?process.stdout.columns:null},readFileSync:Pu,require:()=>{throw new he(ju)},requireDirectory:()=>{throw new he(Sl)},stringWidth:n=>[...n].length,y18n:xl({directory:Cl(Nn,"../../../locales"),updateFiles:!1})};function Ue(n,e,t,s){t.assert.notStrictEqual(n,e,s)}function $o(n,e){e.assert.strictEqual(typeof n,"string")}function pn(n){return Object.keys(n)}function ge(n){return!!n&&!!n.then&&typeof n.then=="function"}function Ot(n){let t=n.replace(/\s{2,}/g," ").split(/\s+(?![^[]*]|[^<]*>)/),s=/\.*[\][<>]/g,o=t.shift();if(!o)throw new Error(`No command found in: ${n}`);let r={cmd:o.replace(s,""),demanded:[],optional:[]};return t.forEach((a,l)=>{let c=!1;a=a.replace(/\s/g,""),/\.+[\]>]/.test(a)&&l===t.length-1&&(c=!0),/^\[/.test(a)?r.optional.push({cmd:a.replace(s,"").split("|"),variadic:c}):r.demanded.push({cmd:a.replace(s,"").split("|"),variadic:c})}),r}var Uu=["first","second","third","fourth","fifth","sixth"];function j(n,e,t){function s(){return typeof n=="object"?[{demanded:[],optional:[]},n,e]:[Ot(`cmd ${n}`),e,t]}try{let o=0,[r,a,l]=s(),c=[].slice.call(a);for(;c.length&&c[c.length-1]===void 0;)c.pop();let p=l||c.length;if(p<r.demanded.length)throw new he(`Not enough arguments provided. Expected ${r.demanded.length} but received ${c.length}.`);let d=r.demanded.length+r.optional.length;if(p>d)throw new he(`Too many arguments provided. Expected max ${d} but received ${p}.`);r.demanded.forEach(m=>{let f=c.shift(),h=El(f);m.cmd.filter(E=>E===h||E==="*").length===0&&_l(h,m.cmd,o),o+=1}),r.optional.forEach(m=>{if(c.length===0)return;let f=c.shift(),h=El(f);m.cmd.filter(E=>E===h||E==="*").length===0&&_l(h,m.cmd,o),o+=1})}catch(o){console.warn(o.stack)}}function El(n){return Array.isArray(n)?"array":n===null?"null":typeof n}function _l(n,e,t){throw new he(`Invalid ${Uu[t]||"manyith"} argument. Expected ${e.join(" or ")} but received ${n}.`)}var gs=class{constructor(e){this.globalMiddleware=[],this.frozens=[],this.yargs=e}addMiddleware(e,t,s=!0,o=!1){if(j("<array|function> [boolean] [boolean] [boolean]",[e,t,s],arguments.length),Array.isArray(e)){for(let r=0;r<e.length;r++){if(typeof e[r]!="function")throw Error("middleware must be a function");let a=e[r];a.applyBeforeValidation=t,a.global=s}Array.prototype.push.apply(this.globalMiddleware,e)}else if(typeof e=="function"){let r=e;r.applyBeforeValidation=t,r.global=s,r.mutates=o,this.globalMiddleware.push(e)}return this.yargs}addCoerceMiddleware(e,t){let s=this.yargs.getAliases();return this.globalMiddleware=this.globalMiddleware.filter(o=>{let r=[...s[t]||[],t];return o.option?!r.includes(o.option):!0}),e.option=t,this.addMiddleware(e,!0,!0,!0)}getMiddleware(){return this.globalMiddleware}freeze(){this.frozens.push([...this.globalMiddleware])}unfreeze(){let e=this.frozens.pop();e!==void 0&&(this.globalMiddleware=e)}reset(){this.globalMiddleware=this.globalMiddleware.filter(e=>e.global)}};function vl(n){return n?n.map(e=>(e.applyBeforeValidation=!1,e)):[]}function Ut(n,e,t,s){return t.reduce((o,r)=>{if(r.applyBeforeValidation!==s)return o;if(r.mutates){if(r.applied)return o;r.applied=!0}if(ge(o))return o.then(a=>Promise.all([a,r(a,e)])).then(([a,l])=>Object.assign(a,l));{let a=r(o,e);return ge(a)?a.then(l=>Object.assign(o,l)):Object.assign(o,a)}},n)}function Gt(n,e,t=s=>{throw s}){try{let s=Gu(n)?n():n;return ge(s)?s.then(o=>e(o)):e(s)}catch(s){return t(s)}}function Gu(n){return typeof n=="function"}function Lo(n){if(typeof Ge>"u")return null;for(let e=0,t=Object.keys(Ge.cache),s;e<t.length;e++)if(s=Ge.cache[t[e]],s.exports===n)return s;return null}var mn=/(^\*)|(^\$0)/,Do=class{constructor(e,t,s,o){this.requireCache=new Set,this.handlers={},this.aliasMap={},this.frozens=[],this.shim=o,this.usage=e,this.globalMiddleware=s,this.validation=t}addDirectory(e,t,s,o){o=o||{},typeof o.recurse!="boolean"&&(o.recurse=!1),Array.isArray(o.extensions)||(o.extensions=["js"]);let r=typeof o.visit=="function"?o.visit:a=>a;o.visit=(a,l,c)=>{let p=r(a,l,c);if(p){if(this.requireCache.has(l))return p;this.requireCache.add(l),this.addHandler(p)}return p},this.shim.requireDirectory({require:t,filename:s},e,o)}addHandler(e,t,s,o,r,a){let l=[],c=vl(r);if(o=o||(()=>{}),Array.isArray(e))if(zu(e))[e,...l]=e;else for(let p of e)this.addHandler(p);else if(qu(e)){let p=Array.isArray(e.command)||typeof e.command=="string"?e.command:this.moduleName(e);e.aliases&&(p=[].concat(p).concat(e.aliases)),this.addHandler(p,this.extractDesc(e),e.builder,e.handler,e.middlewares,e.deprecated);return}else if(Al(s)){this.addHandler([e].concat(l),t,s.builder,s.handler,s.middlewares,s.deprecated);return}if(typeof e=="string"){let p=Ot(e);l=l.map(f=>Ot(f).cmd);let d=!1,m=[p.cmd].concat(l).filter(f=>mn.test(f)?(d=!0,!1):!0);m.length===0&&d&&m.push("$0"),d&&(p.cmd=m[0],l=m.slice(1),e=e.replace(mn,p.cmd)),l.forEach(f=>{this.aliasMap[f]=p.cmd}),t!==!1&&this.usage.command(e,t,d,l,a),this.handlers[p.cmd]={original:e,description:t,handler:o,builder:s||{},middlewares:c,deprecated:a,demanded:p.demanded,optional:p.optional},d&&(this.defaultCommand=this.handlers[p.cmd])}}getCommandHandlers(){return this.handlers}getCommands(){return Object.keys(this.handlers).concat(Object.keys(this.aliasMap))}hasDefaultCommand(){return!!this.defaultCommand}runCommand(e,t,s,o,r,a){let l=this.handlers[e]||this.handlers[this.aliasMap[e]]||this.defaultCommand,c=t.getInternalMethods().getContext(),p=c.commands.slice(),d=!e;e&&(c.commands.push(e),c.fullCommands.push(l.original));let m=this.applyBuilderUpdateUsageAndParse(d,l,t,s.aliases,p,o,r,a);return ge(m)?m.then(f=>this.applyMiddlewareAndGetResult(d,l,f.innerArgv,c,r,f.aliases,t)):this.applyMiddlewareAndGetResult(d,l,m.innerArgv,c,r,m.aliases,t)}applyBuilderUpdateUsageAndParse(e,t,s,o,r,a,l,c){let p=t.builder,d=s;if(ys(p)){s.getInternalMethods().getUsageInstance().freeze();let m=p(s.getInternalMethods().reset(o),c);if(ge(m))return m.then(f=>(d=Il(f)?f:s,this.parseAndUpdateUsage(e,t,d,r,a,l)))}else Wu(p)&&(s.getInternalMethods().getUsageInstance().freeze(),d=s.getInternalMethods().reset(o),Object.keys(t.builder).forEach(m=>{d.option(m,p[m])}));return this.parseAndUpdateUsage(e,t,d,r,a,l)}parseAndUpdateUsage(e,t,s,o,r,a){e&&s.getInternalMethods().getUsageInstance().unfreeze(!0),this.shouldUpdateUsage(s)&&s.getInternalMethods().getUsageInstance().usage(this.usageFromParentCommandsCommandHandler(o,t),t.description);let l=s.getInternalMethods().runYargsParserAndExecuteCommands(null,void 0,!0,r,a);return ge(l)?l.then(c=>({aliases:s.parsed.aliases,innerArgv:c})):{aliases:s.parsed.aliases,innerArgv:l}}shouldUpdateUsage(e){return!e.getInternalMethods().getUsageInstance().getUsageDisabled()&&e.getInternalMethods().getUsageInstance().getUsage().length===0}usageFromParentCommandsCommandHandler(e,t){let s=mn.test(t.original)?t.original.replace(mn,"").trim():t.original,o=e.filter(r=>!mn.test(r));return o.push(s),`$0 ${o.join(" ")}`}handleValidationAndGetResult(e,t,s,o,r,a,l,c){if(!a.getInternalMethods().getHasOutput()){let p=a.getInternalMethods().runValidation(r,c,a.parsed.error,e);s=Gt(s,d=>(p(d),d))}if(t.handler&&!a.getInternalMethods().getHasOutput()){a.getInternalMethods().setHasOutput();let p=!!a.getOptions().configuration["populate--"];a.getInternalMethods().postProcess(s,p,!1,!1),s=Ut(s,a,l,!1),s=Gt(s,d=>{let m=t.handler(d);return ge(m)?m.then(()=>d):d}),e||a.getInternalMethods().getUsageInstance().cacheHelpMessage(),ge(s)&&!a.getInternalMethods().hasParseCallback()&&s.catch(d=>{try{a.getInternalMethods().getUsageInstance().fail(null,d)}catch{}})}return e||(o.commands.pop(),o.fullCommands.pop()),s}applyMiddlewareAndGetResult(e,t,s,o,r,a,l){let c={};if(r)return s;l.getInternalMethods().getHasOutput()||(c=this.populatePositionals(t,s,o,l));let p=this.globalMiddleware.getMiddleware().slice(0).concat(t.middlewares),d=Ut(s,l,p,!0);return ge(d)?d.then(m=>this.handleValidationAndGetResult(e,t,m,o,a,l,p,c)):this.handleValidationAndGetResult(e,t,d,o,a,l,p,c)}populatePositionals(e,t,s,o){t._=t._.slice(s.commands.length);let r=e.demanded.slice(0),a=e.optional.slice(0),l={};for(this.validation.positionalCount(r.length,t._.length);r.length;){let c=r.shift();this.populatePositional(c,t,l)}for(;a.length;){let c=a.shift();this.populatePositional(c,t,l)}return t._=s.commands.concat(t._.map(c=>""+c)),this.postProcessPositionals(t,l,this.cmdToParseOptions(e.original),o),l}populatePositional(e,t,s){let o=e.cmd[0];e.variadic?s[o]=t._.splice(0).map(String):t._.length&&(s[o]=[String(t._.shift())])}cmdToParseOptions(e){let t={array:[],default:{},alias:{},demand:{}},s=Ot(e);return s.demanded.forEach(o=>{let[r,...a]=o.cmd;o.variadic&&(t.array.push(r),t.default[r]=[]),t.alias[r]=a,t.demand[r]=!0}),s.optional.forEach(o=>{let[r,...a]=o.cmd;o.variadic&&(t.array.push(r),t.default[r]=[]),t.alias[r]=a}),t}postProcessPositionals(e,t,s,o){let r=Object.assign({},o.getOptions());r.default=Object.assign(s.default,r.default);for(let p of Object.keys(s.alias))r.alias[p]=(r.alias[p]||[]).concat(s.alias[p]);r.array=r.array.concat(s.array),r.config={};let a=[];if(Object.keys(t).forEach(p=>{t[p].map(d=>{r.configuration["unknown-options-as-args"]&&(r.key[p]=!0),a.push(`--${p}`),a.push(d)})}),!a.length)return;let l=Object.assign({},r.configuration,{"populate--":!1}),c=this.shim.Parser.detailed(a,Object.assign({},r,{configuration:l}));if(c.error)o.getInternalMethods().getUsageInstance().fail(c.error.message,c.error);else{let p=Object.keys(t);Object.keys(t).forEach(d=>{p.push(...c.aliases[d])}),Object.keys(c.argv).forEach(d=>{p.includes(d)&&(t[d]||(t[d]=c.argv[d]),!this.isInConfigs(o,d)&&!this.isDefaulted(o,d)&&Object.prototype.hasOwnProperty.call(e,d)&&Object.prototype.hasOwnProperty.call(c.argv,d)&&(Array.isArray(e[d])||Array.isArray(c.argv[d]))?e[d]=[].concat(e[d],c.argv[d]):e[d]=c.argv[d])})}}isDefaulted(e,t){let{default:s}=e.getOptions();return Object.prototype.hasOwnProperty.call(s,t)||Object.prototype.hasOwnProperty.call(s,this.shim.Parser.camelCase(t))}isInConfigs(e,t){let{configObjects:s}=e.getOptions();return s.some(o=>Object.prototype.hasOwnProperty.call(o,t))||s.some(o=>Object.prototype.hasOwnProperty.call(o,this.shim.Parser.camelCase(t)))}runDefaultBuilderOn(e){if(!this.defaultCommand)return;if(this.shouldUpdateUsage(e)){let s=mn.test(this.defaultCommand.original)?this.defaultCommand.original:this.defaultCommand.original.replace(/^[^[\]<>]*/,"$0 ");e.getInternalMethods().getUsageInstance().usage(s,this.defaultCommand.description)}let t=this.defaultCommand.builder;if(ys(t))return t(e,!0);Al(t)||Object.keys(t).forEach(s=>{e.option(s,t[s])})}moduleName(e){let t=Lo(e);if(!t)throw new Error(`No command name given for module: ${this.shim.inspect(e)}`);return this.commandFromFilename(t.filename)}commandFromFilename(e){return this.shim.path.basename(e,this.shim.path.extname(e))}extractDesc({describe:e,description:t,desc:s}){for(let o of[e,t,s]){if(typeof o=="string"||o===!1)return o;Ue(o,!0,this.shim)}return!1}freeze(){this.frozens.push({handlers:this.handlers,aliasMap:this.aliasMap,defaultCommand:this.defaultCommand})}unfreeze(){let e=this.frozens.pop();Ue(e,void 0,this.shim),{handlers:this.handlers,aliasMap:this.aliasMap,defaultCommand:this.defaultCommand}=e}reset(){return this.handlers={},this.aliasMap={},this.defaultCommand=void 0,this.requireCache=new Set,this}};function Ol(n,e,t,s){return new Do(n,e,t,s)}function Al(n){return typeof n=="object"&&!!n.builder&&typeof n.handler=="function"}function zu(n){return n.every(e=>typeof e=="string")}function ys(n){return typeof n=="function"}function Wu(n){return typeof n=="object"}function qu(n){return typeof n=="object"&&!Array.isArray(n)}function It(n={},e=()=>!0){let t={};return pn(n).forEach(s=>{e(s,n[s])&&(t[s]=n[s])}),t}function Tt(n){typeof process>"u"||[process.stdout,process.stderr].forEach(e=>{let t=e;t._handle&&t.isTTY&&typeof t._handle.setBlocking=="function"&&t._handle.setBlocking(n)})}function Hu(n){return typeof n=="boolean"}function Ml(n,e){let t=e.y18n.__,s={},o=[];s.failFn=function(_){o.push(_)};let r=null,a=null,l=!0;s.showHelpOnFail=function(_=!0,T){let[R,U]=typeof _=="string"?[!0,_]:[_,T];return n.getInternalMethods().isGlobalContext()&&(a=U),r=U,l=R,s};let c=!1;s.fail=function(_,T){let R=n.getInternalMethods().getLoggerInstance();if(o.length)for(let U=o.length-1;U>=0;--U){let ne=o[U];if(Hu(ne)){if(T)throw T;if(_)throw Error(_)}else ne(_,T,s)}else{if(n.getExitProcess()&&Tt(!0),!c){c=!0,l&&(n.showHelp("error"),R.error()),(_||T)&&R.error(_||T);let U=r||a;U&&((_||T)&&R.error(""),R.error(U))}if(T=T||new he(_),n.getExitProcess())return n.exit(1);if(n.getInternalMethods().hasParseCallback())return n.exit(1,T);throw T}};let p=[],d=!1;s.usage=(w,_)=>w===null?(d=!0,p=[],s):(d=!1,p.push([w,_||""]),s),s.getUsage=()=>p,s.getUsageDisabled=()=>d,s.getPositionalGroupName=()=>t("Positionals:");let m=[];s.example=(w,_)=>{m.push([w,_||""])};let f=[];s.command=function(_,T,R,U,ne=!1){R&&(f=f.map(V=>(V[2]=!1,V))),f.push([_,T||"",R,U,ne])},s.getCommands=()=>f;let h={};s.describe=function(_,T){Array.isArray(_)?_.forEach(R=>{s.describe(R,T)}):typeof _=="object"?Object.keys(_).forEach(R=>{s.describe(R,_[R])}):h[_]=T},s.getDescriptions=()=>h;let I=[];s.epilog=w=>{I.push(w)};let E=!1,x;s.wrap=w=>{E=!0,x=w},s.getWrap=()=>e.getEnv("YARGS_DISABLE_WRAP")?null:(E||(x=H(),E=!0),x);let k="__yargsString__:";s.deferY18nLookup=w=>k+w,s.help=function(){if(b)return b;v();let _=n.customScriptName?n.$0:e.path.basename(n.$0),T=n.getDemandedOptions(),R=n.getDemandedCommands(),U=n.getDeprecatedOptions(),ne=n.getGroups(),V=n.getOptions(),ce=[];ce=ce.concat(Object.keys(h)),ce=ce.concat(Object.keys(T)),ce=ce.concat(Object.keys(R)),ce=ce.concat(Object.keys(V.default)),ce=ce.filter(ee),ce=Object.keys(ce.reduce((G,ae)=>(ae!=="_"&&(G[ae]=!0),G),{}));let $e=s.getWrap(),ie=e.cliui({width:$e,wrap:!!$e});if(!d){if(p.length)p.forEach(G=>{ie.div({text:`${G[0].replace(/\$0/g,_)}`}),G[1]&&ie.div({text:`${G[1]}`,padding:[1,0,0,0]})}),ie.div();else if(f.length){let G=null;R._?G=`${_} <${t("command")}>
7
+ `),r.border&&(o.unshift("."+"-".repeat(this.negatePadding(r)+2)+"."),o.push("'"+"-".repeat(this.negatePadding(r)+2)+"'")),r.padding&&(o.unshift(...new Array(r.padding[uu]||0).fill("")),o.push(...new Array(r.padding[mu]||0).fill(""))),o.forEach((l,c)=>{t[c]||t.push([]);let m=t[c];for(let d=0;d<a;d++)m[d]===void 0&&m.push("");m.push(l)})}),t}negatePadding(e){let t=e.width||0;return e.padding&&(t-=(e.padding[ms]||0)+(e.padding[us]||0)),e.border&&(t-=4),t}columnWidths(e){if(!this.wrap)return e.map(a=>a.width||Ze.stringWidth(a.text));let t=e.length,s=this.width,o=e.map(a=>{if(a.width)return t--,s-=a.width,a.width}),r=t?Math.floor(s/t):0;return o.map((a,l)=>a===void 0?Math.max(r,pu(e[l])):a)}};function cl(n,e,t){return n.border?/[.']-+[.']/.test(e)?"":e.trim().length!==0?t:" ":""}function pu(n){let e=n.padding||[],t=1+(e[ms]||0)+(e[us]||0);return n.border?t+4:t}function fu(){return typeof process=="object"&&process.stdout&&process.stdout.columns?process.stdout.columns:80}function hu(n,e){n=n.trim();let t=Ze.stringWidth(n);return t<e?" ".repeat(e-t)+n:n}function gu(n,e){n=n.trim();let t=Ze.stringWidth(n);return t>=e?n:" ".repeat(e-t>>1)+n}var Ze;function dl(n,e){return Ze=e,new Io({width:n?.width||fu(),wrap:n?.wrap})}var ul=new RegExp("\x1B(?:\\[(?:\\d+[ABCDEFGJKSTm]|\\d+;\\d+[Hfm]|\\d+;\\d+;\\d+m|6n|s|u|\\?25[lh])|\\w)","g");function To(n){return n.replace(ul,"")}function ml(n,e){let[t,s]=n.match(ul)||["",""];n=To(n);let o="";for(let r=0;r<n.length;r++)r!==0&&r%e===0&&(o+=`
8
+ `),o+=n.charAt(r);return t&&s&&(o=`${t}${o}${s}`),o}function Mo(n){return dl(n,{stringWidth:e=>[...e].length,stripAnsi:To,wrap:ml})}import{dirname as pl,resolve as fl}from"path";import{readdirSync as yu,statSync as bu}from"fs";function hl(n,e){let t=fl(".",n),s;for(bu(t).isDirectory()||(t=pl(t));;){if(s=e(t,yu(t)),s)return fl(t,s);if(t=pl(s=t),s===t)break}}import{inspect as Lu}from"util";import{readFileSync as Du}from"fs";import{fileURLToPath as ju}from"url";import{format as Cu}from"util";import{normalize as Eu,resolve as Su}from"path";function Ut(n){if(n!==n.toLowerCase()&&n!==n.toUpperCase()||(n=n.toLowerCase()),n.indexOf("-")===-1&&n.indexOf("_")===-1)return n;{let t="",s=!1,o=n.match(/^-+/);for(let r=o?o[0].length:0;r<n.length;r++){let a=n.charAt(r);s&&(s=!1,a=a.toUpperCase()),r!==0&&(a==="-"||a==="_")?s=!0:a!=="-"&&a!=="_"&&(t+=a)}return t}}function ps(n,e){let t=n.toLowerCase();e=e||"-";let s="";for(let o=0;o<n.length;o++){let r=t.charAt(o),a=n.charAt(o);r!==a&&o>0?s+=`${e}${t.charAt(o)}`:s+=a}return s}function fs(n){return n==null?!1:typeof n=="number"||/^0x[0-9a-f]+$/i.test(n)?!0:/^0[^.]/.test(n)?!1:/^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(n)}function gl(n){if(Array.isArray(n))return n.map(a=>typeof a!="string"?a+"":a);n=n.trim();let e=0,t=null,s=null,o=null,r=[];for(let a=0;a<n.length;a++){if(t=s,s=n.charAt(a),s===" "&&!o){t!==" "&&e++;continue}s===o?o=null:(s==="'"||s==='"')&&!o&&(o=s),r[e]||(r[e]=""),r[e]+=s}return r}var ot;(function(n){n.BOOLEAN="boolean",n.STRING="string",n.NUMBER="number",n.ARRAY="array"})(ot||(ot={}));var xt,hs=class{constructor(e){xt=e}parse(e,t){let s=Object.assign({alias:void 0,array:void 0,boolean:void 0,config:void 0,configObjects:void 0,configuration:void 0,coerce:void 0,count:void 0,default:void 0,envPrefix:void 0,narg:void 0,normalize:void 0,string:void 0,number:void 0,__:void 0,key:void 0},t),o=gl(e),r=typeof e=="string",a=wu(Object.assign(Object.create(null),s.alias)),l=Object.assign({"boolean-negation":!0,"camel-case-expansion":!0,"combine-arrays":!1,"dot-notation":!0,"duplicate-arguments-array":!0,"flatten-duplicate-arrays":!0,"greedy-arrays":!0,"halt-at-non-option":!1,"nargs-eats-options":!1,"negation-prefix":"no-","parse-numbers":!0,"parse-positional-numbers":!0,"populate--":!1,"set-placeholder-key":!1,"short-option-groups":!0,"strip-aliased":!1,"strip-dashed":!1,"unknown-options-as-args":!1},s.configuration),c=Object.assign(Object.create(null),s.default),m=s.configObjects||[],d=s.envPrefix,p=l["populate--"],f=p?"--":"_",h=Object.create(null),I=Object.create(null),S=s.__||xt.format,x={aliases:Object.create(null),arrays:Object.create(null),bools:Object.create(null),strings:Object.create(null),numbers:Object.create(null),counts:Object.create(null),normalize:Object.create(null),configs:Object.create(null),nargs:Object.create(null),coercions:Object.create(null),keys:[]},k=/^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/,M=new RegExp("^--"+l["negation-prefix"]+"(.+)");[].concat(s.array||[]).filter(Boolean).forEach(function(g){let E=typeof g=="object"?g.key:g,O=Object.keys(g).map(function(A){return{boolean:"bools",string:"strings",number:"numbers"}[A]}).filter(Boolean).pop();O&&(x[O][E]=!0),x.arrays[E]=!0,x.keys.push(E)}),[].concat(s.boolean||[]).filter(Boolean).forEach(function(g){x.bools[g]=!0,x.keys.push(g)}),[].concat(s.string||[]).filter(Boolean).forEach(function(g){x.strings[g]=!0,x.keys.push(g)}),[].concat(s.number||[]).filter(Boolean).forEach(function(g){x.numbers[g]=!0,x.keys.push(g)}),[].concat(s.count||[]).filter(Boolean).forEach(function(g){x.counts[g]=!0,x.keys.push(g)}),[].concat(s.normalize||[]).filter(Boolean).forEach(function(g){x.normalize[g]=!0,x.keys.push(g)}),typeof s.narg=="object"&&Object.entries(s.narg).forEach(([g,E])=>{typeof E=="number"&&(x.nargs[g]=E,x.keys.push(g))}),typeof s.coerce=="object"&&Object.entries(s.coerce).forEach(([g,E])=>{typeof E=="function"&&(x.coercions[g]=E,x.keys.push(g))}),typeof s.config<"u"&&(Array.isArray(s.config)||typeof s.config=="string"?[].concat(s.config).filter(Boolean).forEach(function(g){x.configs[g]=!0}):typeof s.config=="object"&&Object.entries(s.config).forEach(([g,E])=>{(typeof E=="boolean"||typeof E=="function")&&(x.configs[g]=E)})),J(s.key,a,s.default,x.arrays),Object.keys(c).forEach(function(g){(x.aliases[g]||[]).forEach(function(E){c[E]=c[g]})});let v=null;Dt();let b=[],P=Object.assign(Object.create(null),{_:[]}),ee={};for(let g=0;g<o.length;g++){let E=o[g],O=E.replace(/^-{3,}/,"---"),A,C,D,$,W,ke;if(E!=="--"&&/^-/.test(E)&&re(E))Q(E);else if(O.match(/^---+(=|$)/)){Q(E);continue}else if(E.match(/^--.+=/)||!l["short-option-groups"]&&E.match(/^-.+=/))$=E.match(/^--?([^=]+)=([\s\S]*)$/),$!==null&&Array.isArray($)&&$.length>=3&&(L($[1],x.arrays)?g=K(g,$[1],o,$[2]):L($[1],x.nargs)!==!1?g=H(g,$[1],o,$[2]):N($[1],$[2],!0));else if(E.match(M)&&l["boolean-negation"])$=E.match(M),$!==null&&Array.isArray($)&&$.length>=2&&(C=$[1],N(C,L(C,x.arrays)?[!1]:!1));else if(E.match(/^--.+/)||!l["short-option-groups"]&&E.match(/^-[^-]+/))$=E.match(/^--?(.+)/),$!==null&&Array.isArray($)&&$.length>=2&&(C=$[1],L(C,x.arrays)?g=K(g,C,o):L(C,x.nargs)!==!1?g=H(g,C,o):(W=o[g+1],W!==void 0&&(!W.match(/^-/)||W.match(k))&&!L(C,x.bools)&&!L(C,x.counts)||/^(true|false)$/.test(W)?(N(C,W),g++):N(C,ye(C))));else if(E.match(/^-.\..+=/))$=E.match(/^-([^=]+)=([\s\S]*)$/),$!==null&&Array.isArray($)&&$.length>=3&&N($[1],$[2]);else if(E.match(/^-.\..+/)&&!E.match(k))W=o[g+1],$=E.match(/^-(.\..+)/),$!==null&&Array.isArray($)&&$.length>=2&&(C=$[1],W!==void 0&&!W.match(/^-/)&&!L(C,x.bools)&&!L(C,x.counts)?(N(C,W),g++):N(C,ye(C)));else if(E.match(/^-[^-]+/)&&!E.match(k)){D=E.slice(1,-1).split(""),A=!1;for(let Fe=0;Fe<D.length;Fe++){if(W=E.slice(Fe+2),D[Fe+1]&&D[Fe+1]==="="){ke=E.slice(Fe+3),C=D[Fe],L(C,x.arrays)?g=K(g,C,o,ke):L(C,x.nargs)!==!1?g=H(g,C,o,ke):N(C,ke),A=!0;break}if(W==="-"){N(D[Fe],W);continue}if(/[A-Za-z]/.test(D[Fe])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(W)&&L(W,x.bools)===!1){N(D[Fe],W),A=!0;break}if(D[Fe+1]&&D[Fe+1].match(/\W/)){N(D[Fe],W),A=!0;break}else N(D[Fe],ye(D[Fe]))}C=E.slice(-1)[0],!A&&C!=="-"&&(L(C,x.arrays)?g=K(g,C,o):L(C,x.nargs)!==!1?g=H(g,C,o):(W=o[g+1],W!==void 0&&(!/^(-|--)[^-]/.test(W)||W.match(k))&&!L(C,x.bools)&&!L(C,x.counts)||/^(true|false)$/.test(W)?(N(C,W),g++):N(C,ye(C))))}else if(E.match(/^-[0-9]$/)&&E.match(k)&&L(E.slice(1),x.bools))C=E.slice(1),N(C,ye(C));else if(E==="--"){b=o.slice(g+1);break}else if(l["halt-at-non-option"]){b=o.slice(g);break}else Q(E)}V(P,!0),V(P,!1),R(P),ne(),ie(P,x.aliases,c,!0),ce(P),l["set-placeholder-key"]&&$e(P),Object.keys(x.counts).forEach(function(g){Te(P,g.split("."))||N(g,0)}),p&&b.length&&(P[f]=[]),b.forEach(function(g){P[f].push(g)}),l["camel-case-expansion"]&&l["strip-dashed"]&&Object.keys(P).filter(g=>g!=="--"&&g.includes("-")).forEach(g=>{delete P[g]}),l["strip-aliased"]&&[].concat(...Object.keys(a).map(g=>a[g])).forEach(g=>{l["camel-case-expansion"]&&g.includes("-")&&delete P[g.split(".").map(E=>Ut(E)).join(".")],delete P[g]});function Q(g){let E=T("_",g);(typeof E=="string"||typeof E=="number")&&P._.push(E)}function H(g,E,O,A){let C,D=L(E,x.nargs);if(D=typeof D!="number"||isNaN(D)?1:D,D===0)return je(A)||(v=Error(S("Argument unexpected for: %s",E))),N(E,ye(E)),g;let $=je(A)?0:1;if(l["nargs-eats-options"])O.length-(g+1)+$<D&&(v=Error(S("Not enough arguments following: %s",E))),$=D;else{for(C=g+1;C<O.length&&(!O[C].match(/^-[^0-9]/)||O[C].match(k)||re(O[C]));C++)$++;$<D&&(v=Error(S("Not enough arguments following: %s",E)))}let W=Math.min($,D);for(!je(A)&&W>0&&(N(E,A),W--),C=g+1;C<W+g+1;C++)N(E,O[C]);return g+W}function K(g,E,O,A){let C=[],D=A||O[g+1],$=L(E,x.nargs);if(L(E,x.bools)&&!/^(true|false)$/.test(D))C.push(!0);else if(je(D)||je(A)&&/^-/.test(D)&&!k.test(D)&&!re(D)){if(c[E]!==void 0){let W=c[E];C=Array.isArray(W)?W:[W]}}else{je(A)||C.push(_(E,A,!0));for(let W=g+1;W<O.length&&!(!l["greedy-arrays"]&&C.length>0||$&&typeof $=="number"&&C.length>=$||(D=O[W],/^-/.test(D)&&!k.test(D)&&!re(D)));W++)g=W,C.push(_(E,D,r))}return typeof $=="number"&&($&&C.length<$||isNaN($)&&C.length===0)&&(v=Error(S("Not enough arguments following: %s",E))),N(E,C),g}function N(g,E,O=r){if(/-/.test(g)&&l["camel-case-expansion"]){let D=g.split(".").map(function($){return Ut($)}).join(".");w(g,D)}let A=_(g,E,O),C=g.split(".");se(P,C,A),x.aliases[g]&&x.aliases[g].forEach(function(D){let $=D.split(".");se(P,$,A)}),C.length>1&&l["dot-notation"]&&(x.aliases[C[0]]||[]).forEach(function(D){let $=D.split("."),W=[].concat(C);W.shift(),$=$.concat(W),(x.aliases[g]||[]).includes($.join("."))||se(P,$,A)}),L(g,x.normalize)&&!L(g,x.arrays)&&[g].concat(x.aliases[g]||[]).forEach(function($){Object.defineProperty(ee,$,{enumerable:!0,get(){return E},set(W){E=typeof W=="string"?xt.normalize(W):W}})})}function w(g,E){x.aliases[g]&&x.aliases[g].length||(x.aliases[g]=[E],h[E]=!0),x.aliases[E]&&x.aliases[E].length||w(E,g)}function _(g,E,O){O&&(E=xu(E)),(L(g,x.bools)||L(g,x.counts))&&typeof E=="string"&&(E=E==="true");let A=Array.isArray(E)?E.map(function(C){return T(g,C)}):T(g,E);return L(g,x.counts)&&(je(A)||typeof A=="boolean")&&(A=ko()),L(g,x.normalize)&&L(g,x.arrays)&&(Array.isArray(E)?A=E.map(C=>xt.normalize(C)):A=xt.normalize(E)),A}function T(g,E){return!l["parse-positional-numbers"]&&g==="_"||!L(g,x.strings)&&!L(g,x.bools)&&!Array.isArray(E)&&(fs(E)&&l["parse-numbers"]&&Number.isSafeInteger(Math.floor(parseFloat(`${E}`)))||!je(E)&&L(g,x.numbers))&&(E=Number(E)),E}function R(g){let E=Object.create(null);ie(E,x.aliases,c),Object.keys(x.configs).forEach(function(O){let A=g[O]||E[O];if(A)try{let C=null,D=xt.resolve(xt.cwd(),A),$=x.configs[O];if(typeof $=="function"){try{C=$(D)}catch(W){C=W}if(C instanceof Error){v=C;return}}else C=xt.require(D);U(C)}catch(C){C.name==="PermissionDenied"?v=C:g[O]&&(v=Error(S("Invalid JSON config file: %s",A)))}})}function U(g,E){Object.keys(g).forEach(function(O){let A=g[O],C=E?E+"."+O:O;typeof A=="object"&&A!==null&&!Array.isArray(A)&&l["dot-notation"]?U(A,C):(!Te(P,C.split("."))||L(C,x.arrays)&&l["combine-arrays"])&&N(C,A)})}function ne(){typeof m<"u"&&m.forEach(function(g){U(g)})}function V(g,E){if(typeof d>"u")return;let O=typeof d=="string"?d:"",A=xt.env();Object.keys(A).forEach(function(C){if(O===""||C.lastIndexOf(O,0)===0){let D=C.split("__").map(function($,W){return W===0&&($=$.substring(O.length)),Ut($)});(E&&x.configs[D.join(".")]||!E)&&!Te(g,D)&&N(D.join("."),A[C])}})}function ce(g){let E,O=new Set;Object.keys(g).forEach(function(A){if(!O.has(A)&&(E=L(A,x.coercions),typeof E=="function"))try{let C=T(A,E(g[A]));[].concat(x.aliases[A]||[],A).forEach(D=>{O.add(D),g[D]=C})}catch(C){v=C}})}function $e(g){return x.keys.forEach(E=>{~E.indexOf(".")||typeof g[E]>"u"&&(g[E]=void 0)}),g}function ie(g,E,O,A=!1){Object.keys(O).forEach(function(C){Te(g,C.split("."))||(se(g,C.split("."),O[C]),A&&(I[C]=!0),(E[C]||[]).forEach(function(D){Te(g,D.split("."))||se(g,D.split("."),O[C])}))})}function Te(g,E){let O=g;l["dot-notation"]||(E=[E.join(".")]),E.slice(0,-1).forEach(function(C){O=O[C]||{}});let A=E[E.length-1];return typeof O!="object"?!1:A in O}function se(g,E,O){let A=g;l["dot-notation"]||(E=[E.join(".")]),E.slice(0,-1).forEach(function(ke){ke=yl(ke),typeof A=="object"&&A[ke]===void 0&&(A[ke]={}),typeof A[ke]!="object"||Array.isArray(A[ke])?(Array.isArray(A[ke])?A[ke].push({}):A[ke]=[A[ke],{}],A=A[ke][A[ke].length-1]):A=A[ke]});let C=yl(E[E.length-1]),D=L(E.join("."),x.arrays),$=Array.isArray(O),W=l["duplicate-arguments-array"];!W&&L(C,x.nargs)&&(W=!0,(!je(A[C])&&x.nargs[C]===1||Array.isArray(A[C])&&A[C].length===x.nargs[C])&&(A[C]=void 0)),O===ko()?A[C]=ko(A[C]):Array.isArray(A[C])?W&&D&&$?A[C]=l["flatten-duplicate-arrays"]?A[C].concat(O):(Array.isArray(A[C][0])?A[C]:[A[C]]).concat([O]):!W&&!!D==!!$?A[C]=O:A[C]=A[C].concat([O]):A[C]===void 0&&D?A[C]=$?O:[O]:W&&!(A[C]===void 0||L(C,x.counts)||L(C,x.bools))?A[C]=[A[C],O]:A[C]=O}function J(...g){g.forEach(function(E){Object.keys(E||{}).forEach(function(O){x.aliases[O]||(x.aliases[O]=[].concat(a[O]||[]),x.aliases[O].concat(O).forEach(function(A){if(/-/.test(A)&&l["camel-case-expansion"]){let C=Ut(A);C!==O&&x.aliases[O].indexOf(C)===-1&&(x.aliases[O].push(C),h[C]=!0)}}),x.aliases[O].concat(O).forEach(function(A){if(A.length>1&&/[A-Z]/.test(A)&&l["camel-case-expansion"]){let C=ps(A,"-");C!==O&&x.aliases[O].indexOf(C)===-1&&(x.aliases[O].push(C),h[C]=!0)}}),x.aliases[O].forEach(function(A){x.aliases[A]=[O].concat(x.aliases[O].filter(function(C){return A!==C}))}))})})}function L(g,E){let O=[].concat(x.aliases[g]||[],g),A=Object.keys(E),C=O.find(D=>A.includes(D));return C?E[C]:!1}function Se(g){let E=Object.keys(x);return[].concat(E.map(A=>x[A])).some(function(A){return Array.isArray(A)?A.includes(g):A[g]})}function G(g,...E){return[].concat(...E).some(function(A){let C=g.match(A);return C&&Se(C[1])})}function ae(g){if(g.match(k)||!g.match(/^-[^-]+/))return!1;let E=!0,O,A=g.slice(1).split("");for(let C=0;C<A.length;C++){if(O=g.slice(C+2),!Se(A[C])){E=!1;break}if(A[C+1]&&A[C+1]==="="||O==="-"||/[A-Za-z]/.test(A[C])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(O)||A[C+1]&&A[C+1].match(/\W/))break}return E}function re(g){return l["unknown-options-as-args"]&&oe(g)}function oe(g){return g=g.replace(/^-{3,}/,"--"),g.match(k)||ae(g)?!1:!G(g,/^-+([^=]+?)=[\s\S]*$/,M,/^-+([^=]+?)$/,/^-+([^=]+?)-$/,/^-+([^=]+?\d+)$/,/^-+([^=]+?)\W+.*$/)}function ye(g){return!L(g,x.bools)&&!L(g,x.counts)&&`${g}`in c?c[g]:xe(Be(g))}function xe(g){return{[ot.BOOLEAN]:!0,[ot.STRING]:"",[ot.NUMBER]:void 0,[ot.ARRAY]:[]}[g]}function Be(g){let E=ot.BOOLEAN;return L(g,x.strings)?E=ot.STRING:L(g,x.numbers)?E=ot.NUMBER:L(g,x.bools)?E=ot.BOOLEAN:L(g,x.arrays)&&(E=ot.ARRAY),E}function je(g){return g===void 0}function Dt(){Object.keys(x.counts).find(g=>L(g,x.arrays)?(v=Error(S("Invalid configuration: %s, opts.count excludes opts.array.",g)),!0):L(g,x.nargs)?(v=Error(S("Invalid configuration: %s, opts.count excludes opts.narg.",g)),!0):!1)}return{aliases:Object.assign({},x.aliases),argv:Object.assign(ee,P),configuration:l,defaulted:Object.assign({},I),error:v,newAliases:Object.assign({},h)}}};function wu(n){let e=[],t=Object.create(null),s=!0;for(Object.keys(n).forEach(function(o){e.push([].concat(n[o],o))});s;){s=!1;for(let o=0;o<e.length;o++)for(let r=o+1;r<e.length;r++)if(e[o].filter(function(l){return e[r].indexOf(l)!==-1}).length){e[o]=e[o].concat(e[r]),e.splice(r,1),s=!0;break}}return e.forEach(function(o){o=o.filter(function(a,l,c){return c.indexOf(a)===l});let r=o.pop();r!==void 0&&typeof r=="string"&&(t[r]=o)}),t}function ko(n){return n!==void 0?n+1:1}function yl(n){return n==="__proto__"?"___proto___":n}function xu(n){return typeof n=="string"&&(n[0]==="'"||n[0]==='"')&&n[n.length-1]===n[0]?n.substring(1,n.length-1):n}import{readFileSync as _u}from"fs";var Po,Ro,No,bl=process&&process.env&&process.env.YARGS_MIN_NODE_VERSION?Number(process.env.YARGS_MIN_NODE_VERSION):12,wl=(Ro=(Po=process==null?void 0:process.versions)===null||Po===void 0?void 0:Po.node)!==null&&Ro!==void 0?Ro:(No=process==null?void 0:process.version)===null||No===void 0?void 0:No.slice(1);if(wl&&Number(wl.match(/^([^.]+)/)[1])<bl)throw Error(`yargs parser supports a minimum Node.js version of ${bl}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`);var vu=process?process.env:{},xl=new hs({cwd:process.cwd,env:()=>vu,format:Cu,normalize:Eu,resolve:Su,require:n=>{if(typeof Ge<"u")return Ge(n);if(n.match(/\.json$/))return JSON.parse(_u(n,"utf8"));throw Error("only .json config files are supported in ESM")}}),Nn=function(e,t){return xl.parse(e.slice(),t).argv};Nn.detailed=function(n,e){return xl.parse(n.slice(),e)};Nn.camelCase=Ut;Nn.decamelize=ps;Nn.looksLikeNumber=fs;var $o=Nn;import{basename as Fu,dirname as Uu,extname as Gu,relative as zu,resolve as Al}from"path";function Cl(){return Au()?0:1}function Au(){return Ou()&&!process.defaultApp}function Ou(){return!!process.versions.electron}function gs(n){return n.slice(Cl()+1)}function El(){return process.argv[Cl()]}var he=class n extends Error{constructor(e){super(e||"yargs error"),this.name="YError",Error.captureStackTrace&&Error.captureStackTrace(this,n)}};import{readFileSync as Iu,statSync as Tu,writeFile as Mu}from"fs";import{format as ku}from"util";import{resolve as Pu}from"path";var Sl={fs:{readFileSync:Iu,writeFile:Mu},format:ku,resolve:Pu,exists:n=>{try{return Tu(n).isFile()}catch{return!1}}};var dt,Lo=class{constructor(e){e=e||{},this.directory=e.directory||"./locales",this.updateFiles=typeof e.updateFiles=="boolean"?e.updateFiles:!0,this.locale=e.locale||"en",this.fallbackToLanguage=typeof e.fallbackToLanguage=="boolean"?e.fallbackToLanguage:!0,this.cache=Object.create(null),this.writeQueue=[]}__(...e){if(typeof arguments[0]!="string")return this._taggedLiteral(arguments[0],...arguments);let t=e.shift(),s=function(){};return typeof e[e.length-1]=="function"&&(s=e.pop()),s=s||function(){},this.cache[this.locale]||this._readLocaleFile(),!this.cache[this.locale][t]&&this.updateFiles?(this.cache[this.locale][t]=t,this._enqueueWrite({directory:this.directory,locale:this.locale,cb:s})):s(),dt.format.apply(dt.format,[this.cache[this.locale][t]||t].concat(e))}__n(){let e=Array.prototype.slice.call(arguments),t=e.shift(),s=e.shift(),o=e.shift(),r=function(){};typeof e[e.length-1]=="function"&&(r=e.pop()),this.cache[this.locale]||this._readLocaleFile();let a=o===1?t:s;this.cache[this.locale][t]&&(a=this.cache[this.locale][t][o===1?"one":"other"]),!this.cache[this.locale][t]&&this.updateFiles?(this.cache[this.locale][t]={one:t,other:s},this._enqueueWrite({directory:this.directory,locale:this.locale,cb:r})):r();let l=[a];return~a.indexOf("%d")&&l.push(o),dt.format.apply(dt.format,l.concat(e))}setLocale(e){this.locale=e}getLocale(){return this.locale}updateLocale(e){this.cache[this.locale]||this._readLocaleFile();for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(this.cache[this.locale][t]=e[t])}_taggedLiteral(e,...t){let s="";return e.forEach(function(o,r){let a=t[r+1];s+=o,typeof a<"u"&&(s+="%s")}),this.__.apply(this,[s].concat([].slice.call(t,1)))}_enqueueWrite(e){this.writeQueue.push(e),this.writeQueue.length===1&&this._processWriteQueue()}_processWriteQueue(){let e=this,t=this.writeQueue[0],s=t.directory,o=t.locale,r=t.cb,a=this._resolveLocaleFile(s,o),l=JSON.stringify(this.cache[o],null,2);dt.fs.writeFile(a,l,"utf-8",function(c){e.writeQueue.shift(),e.writeQueue.length>0&&e._processWriteQueue(),r(c)})}_readLocaleFile(){let e={},t=this._resolveLocaleFile(this.directory,this.locale);try{dt.fs.readFileSync&&(e=JSON.parse(dt.fs.readFileSync(t,"utf-8")))}catch(s){if(s instanceof SyntaxError&&(s.message="syntax error in "+t),s.code==="ENOENT")e={};else throw s}this.cache[this.locale]=e}_resolveLocaleFile(e,t){let s=dt.resolve(e,"./",t+".json");if(this.fallbackToLanguage&&!this._fileExistsSync(s)&&~t.lastIndexOf("_")){let o=dt.resolve(e,"./",t.split("_")[0]+".json");this._fileExistsSync(o)&&(s=o)}return s}_fileExistsSync(e){return dt.exists(e)}};function _l(n,e){dt=e;let t=new Lo(n);return{__:t.__.bind(t),__n:t.__n.bind(t),setLocale:t.setLocale.bind(t),getLocale:t.getLocale.bind(t),updateLocale:t.updateLocale.bind(t),locale:t.locale}}var Ru=n=>_l(n,Sl),vl=Ru;var Wu="require is not supported by ESM",Ol="loading a directory of commands is not supported yet for ESM",$n;try{$n=ju(import.meta.url)}catch{$n=process.cwd()}var qu=$n.substring(0,$n.lastIndexOf("node_modules")),Do={assert:{notStrictEqual:Nu,strictEqual:$u},cliui:Mo,findUp:hl,getEnv:n=>process.env[n],inspect:Lu,getCallerFile:()=>{throw new he(Ol)},getProcessArgvBin:El,mainFilename:qu||process.cwd(),Parser:$o,path:{basename:Fu,dirname:Uu,extname:Gu,relative:zu,resolve:Al},process:{argv:()=>process.argv,cwd:process.cwd,emitWarning:(n,e)=>process.emitWarning(n,e),execPath:()=>process.execPath,exit:process.exit,nextTick:process.nextTick,stdColumns:typeof process.stdout.columns<"u"?process.stdout.columns:null},readFileSync:Du,require:()=>{throw new he(Wu)},requireDirectory:()=>{throw new he(Ol)},stringWidth:n=>[...n].length,y18n:vl({directory:Al($n,"../../../locales"),updateFiles:!1})};function Ue(n,e,t,s){t.assert.notStrictEqual(n,e,s)}function jo(n,e){e.assert.strictEqual(typeof n,"string")}function pn(n){return Object.keys(n)}function ge(n){return!!n&&!!n.then&&typeof n.then=="function"}function It(n){let t=n.replace(/\s{2,}/g," ").split(/\s+(?![^[]*]|[^<]*>)/),s=/\.*[\][<>]/g,o=t.shift();if(!o)throw new Error(`No command found in: ${n}`);let r={cmd:o.replace(s,""),demanded:[],optional:[]};return t.forEach((a,l)=>{let c=!1;a=a.replace(/\s/g,""),/\.+[\]>]/.test(a)&&l===t.length-1&&(c=!0),/^\[/.test(a)?r.optional.push({cmd:a.replace(s,"").split("|"),variadic:c}):r.demanded.push({cmd:a.replace(s,"").split("|"),variadic:c})}),r}var Hu=["first","second","third","fourth","fifth","sixth"];function j(n,e,t){function s(){return typeof n=="object"?[{demanded:[],optional:[]},n,e]:[It(`cmd ${n}`),e,t]}try{let o=0,[r,a,l]=s(),c=[].slice.call(a);for(;c.length&&c[c.length-1]===void 0;)c.pop();let m=l||c.length;if(m<r.demanded.length)throw new he(`Not enough arguments provided. Expected ${r.demanded.length} but received ${c.length}.`);let d=r.demanded.length+r.optional.length;if(m>d)throw new he(`Too many arguments provided. Expected max ${d} but received ${m}.`);r.demanded.forEach(p=>{let f=c.shift(),h=Il(f);p.cmd.filter(S=>S===h||S==="*").length===0&&Tl(h,p.cmd,o),o+=1}),r.optional.forEach(p=>{if(c.length===0)return;let f=c.shift(),h=Il(f);p.cmd.filter(S=>S===h||S==="*").length===0&&Tl(h,p.cmd,o),o+=1})}catch(o){console.warn(o.stack)}}function Il(n){return Array.isArray(n)?"array":n===null?"null":typeof n}function Tl(n,e,t){throw new he(`Invalid ${Hu[t]||"manyith"} argument. Expected ${e.join(" or ")} but received ${n}.`)}var ys=class{constructor(e){this.globalMiddleware=[],this.frozens=[],this.yargs=e}addMiddleware(e,t,s=!0,o=!1){if(j("<array|function> [boolean] [boolean] [boolean]",[e,t,s],arguments.length),Array.isArray(e)){for(let r=0;r<e.length;r++){if(typeof e[r]!="function")throw Error("middleware must be a function");let a=e[r];a.applyBeforeValidation=t,a.global=s}Array.prototype.push.apply(this.globalMiddleware,e)}else if(typeof e=="function"){let r=e;r.applyBeforeValidation=t,r.global=s,r.mutates=o,this.globalMiddleware.push(e)}return this.yargs}addCoerceMiddleware(e,t){let s=this.yargs.getAliases();return this.globalMiddleware=this.globalMiddleware.filter(o=>{let r=[...s[t]||[],t];return o.option?!r.includes(o.option):!0}),e.option=t,this.addMiddleware(e,!0,!0,!0)}getMiddleware(){return this.globalMiddleware}freeze(){this.frozens.push([...this.globalMiddleware])}unfreeze(){let e=this.frozens.pop();e!==void 0&&(this.globalMiddleware=e)}reset(){this.globalMiddleware=this.globalMiddleware.filter(e=>e.global)}};function Ml(n){return n?n.map(e=>(e.applyBeforeValidation=!1,e)):[]}function Gt(n,e,t,s){return t.reduce((o,r)=>{if(r.applyBeforeValidation!==s)return o;if(r.mutates){if(r.applied)return o;r.applied=!0}if(ge(o))return o.then(a=>Promise.all([a,r(a,e)])).then(([a,l])=>Object.assign(a,l));{let a=r(o,e);return ge(a)?a.then(l=>Object.assign(o,l)):Object.assign(o,a)}},n)}function zt(n,e,t=s=>{throw s}){try{let s=Bu(n)?n():n;return ge(s)?s.then(o=>e(o)):e(s)}catch(s){return t(s)}}function Bu(n){return typeof n=="function"}function Fo(n){if(typeof Ge>"u")return null;for(let e=0,t=Object.keys(Ge.cache),s;e<t.length;e++)if(s=Ge.cache[t[e]],s.exports===n)return s;return null}var fn=/(^\*)|(^\$0)/,Uo=class{constructor(e,t,s,o){this.requireCache=new Set,this.handlers={},this.aliasMap={},this.frozens=[],this.shim=o,this.usage=e,this.globalMiddleware=s,this.validation=t}addDirectory(e,t,s,o){o=o||{},typeof o.recurse!="boolean"&&(o.recurse=!1),Array.isArray(o.extensions)||(o.extensions=["js"]);let r=typeof o.visit=="function"?o.visit:a=>a;o.visit=(a,l,c)=>{let m=r(a,l,c);if(m){if(this.requireCache.has(l))return m;this.requireCache.add(l),this.addHandler(m)}return m},this.shim.requireDirectory({require:t,filename:s},e,o)}addHandler(e,t,s,o,r,a){let l=[],c=Ml(r);if(o=o||(()=>{}),Array.isArray(e))if(Vu(e))[e,...l]=e;else for(let m of e)this.addHandler(m);else if(Xu(e)){let m=Array.isArray(e.command)||typeof e.command=="string"?e.command:this.moduleName(e);e.aliases&&(m=[].concat(m).concat(e.aliases)),this.addHandler(m,this.extractDesc(e),e.builder,e.handler,e.middlewares,e.deprecated);return}else if(kl(s)){this.addHandler([e].concat(l),t,s.builder,s.handler,s.middlewares,s.deprecated);return}if(typeof e=="string"){let m=It(e);l=l.map(f=>It(f).cmd);let d=!1,p=[m.cmd].concat(l).filter(f=>fn.test(f)?(d=!0,!1):!0);p.length===0&&d&&p.push("$0"),d&&(m.cmd=p[0],l=p.slice(1),e=e.replace(fn,m.cmd)),l.forEach(f=>{this.aliasMap[f]=m.cmd}),t!==!1&&this.usage.command(e,t,d,l,a),this.handlers[m.cmd]={original:e,description:t,handler:o,builder:s||{},middlewares:c,deprecated:a,demanded:m.demanded,optional:m.optional},d&&(this.defaultCommand=this.handlers[m.cmd])}}getCommandHandlers(){return this.handlers}getCommands(){return Object.keys(this.handlers).concat(Object.keys(this.aliasMap))}hasDefaultCommand(){return!!this.defaultCommand}runCommand(e,t,s,o,r,a){let l=this.handlers[e]||this.handlers[this.aliasMap[e]]||this.defaultCommand,c=t.getInternalMethods().getContext(),m=c.commands.slice(),d=!e;e&&(c.commands.push(e),c.fullCommands.push(l.original));let p=this.applyBuilderUpdateUsageAndParse(d,l,t,s.aliases,m,o,r,a);return ge(p)?p.then(f=>this.applyMiddlewareAndGetResult(d,l,f.innerArgv,c,r,f.aliases,t)):this.applyMiddlewareAndGetResult(d,l,p.innerArgv,c,r,p.aliases,t)}applyBuilderUpdateUsageAndParse(e,t,s,o,r,a,l,c){let m=t.builder,d=s;if(bs(m)){s.getInternalMethods().getUsageInstance().freeze();let p=m(s.getInternalMethods().reset(o),c);if(ge(p))return p.then(f=>(d=Rl(f)?f:s,this.parseAndUpdateUsage(e,t,d,r,a,l)))}else Yu(m)&&(s.getInternalMethods().getUsageInstance().freeze(),d=s.getInternalMethods().reset(o),Object.keys(t.builder).forEach(p=>{d.option(p,m[p])}));return this.parseAndUpdateUsage(e,t,d,r,a,l)}parseAndUpdateUsage(e,t,s,o,r,a){e&&s.getInternalMethods().getUsageInstance().unfreeze(!0),this.shouldUpdateUsage(s)&&s.getInternalMethods().getUsageInstance().usage(this.usageFromParentCommandsCommandHandler(o,t),t.description);let l=s.getInternalMethods().runYargsParserAndExecuteCommands(null,void 0,!0,r,a);return ge(l)?l.then(c=>({aliases:s.parsed.aliases,innerArgv:c})):{aliases:s.parsed.aliases,innerArgv:l}}shouldUpdateUsage(e){return!e.getInternalMethods().getUsageInstance().getUsageDisabled()&&e.getInternalMethods().getUsageInstance().getUsage().length===0}usageFromParentCommandsCommandHandler(e,t){let s=fn.test(t.original)?t.original.replace(fn,"").trim():t.original,o=e.filter(r=>!fn.test(r));return o.push(s),`$0 ${o.join(" ")}`}handleValidationAndGetResult(e,t,s,o,r,a,l,c){if(!a.getInternalMethods().getHasOutput()){let m=a.getInternalMethods().runValidation(r,c,a.parsed.error,e);s=zt(s,d=>(m(d),d))}if(t.handler&&!a.getInternalMethods().getHasOutput()){a.getInternalMethods().setHasOutput();let m=!!a.getOptions().configuration["populate--"];a.getInternalMethods().postProcess(s,m,!1,!1),s=Gt(s,a,l,!1),s=zt(s,d=>{let p=t.handler(d);return ge(p)?p.then(()=>d):d}),e||a.getInternalMethods().getUsageInstance().cacheHelpMessage(),ge(s)&&!a.getInternalMethods().hasParseCallback()&&s.catch(d=>{try{a.getInternalMethods().getUsageInstance().fail(null,d)}catch{}})}return e||(o.commands.pop(),o.fullCommands.pop()),s}applyMiddlewareAndGetResult(e,t,s,o,r,a,l){let c={};if(r)return s;l.getInternalMethods().getHasOutput()||(c=this.populatePositionals(t,s,o,l));let m=this.globalMiddleware.getMiddleware().slice(0).concat(t.middlewares),d=Gt(s,l,m,!0);return ge(d)?d.then(p=>this.handleValidationAndGetResult(e,t,p,o,a,l,m,c)):this.handleValidationAndGetResult(e,t,d,o,a,l,m,c)}populatePositionals(e,t,s,o){t._=t._.slice(s.commands.length);let r=e.demanded.slice(0),a=e.optional.slice(0),l={};for(this.validation.positionalCount(r.length,t._.length);r.length;){let c=r.shift();this.populatePositional(c,t,l)}for(;a.length;){let c=a.shift();this.populatePositional(c,t,l)}return t._=s.commands.concat(t._.map(c=>""+c)),this.postProcessPositionals(t,l,this.cmdToParseOptions(e.original),o),l}populatePositional(e,t,s){let o=e.cmd[0];e.variadic?s[o]=t._.splice(0).map(String):t._.length&&(s[o]=[String(t._.shift())])}cmdToParseOptions(e){let t={array:[],default:{},alias:{},demand:{}},s=It(e);return s.demanded.forEach(o=>{let[r,...a]=o.cmd;o.variadic&&(t.array.push(r),t.default[r]=[]),t.alias[r]=a,t.demand[r]=!0}),s.optional.forEach(o=>{let[r,...a]=o.cmd;o.variadic&&(t.array.push(r),t.default[r]=[]),t.alias[r]=a}),t}postProcessPositionals(e,t,s,o){let r=Object.assign({},o.getOptions());r.default=Object.assign(s.default,r.default);for(let m of Object.keys(s.alias))r.alias[m]=(r.alias[m]||[]).concat(s.alias[m]);r.array=r.array.concat(s.array),r.config={};let a=[];if(Object.keys(t).forEach(m=>{t[m].map(d=>{r.configuration["unknown-options-as-args"]&&(r.key[m]=!0),a.push(`--${m}`),a.push(d)})}),!a.length)return;let l=Object.assign({},r.configuration,{"populate--":!1}),c=this.shim.Parser.detailed(a,Object.assign({},r,{configuration:l}));if(c.error)o.getInternalMethods().getUsageInstance().fail(c.error.message,c.error);else{let m=Object.keys(t);Object.keys(t).forEach(d=>{m.push(...c.aliases[d])}),Object.keys(c.argv).forEach(d=>{m.includes(d)&&(t[d]||(t[d]=c.argv[d]),!this.isInConfigs(o,d)&&!this.isDefaulted(o,d)&&Object.prototype.hasOwnProperty.call(e,d)&&Object.prototype.hasOwnProperty.call(c.argv,d)&&(Array.isArray(e[d])||Array.isArray(c.argv[d]))?e[d]=[].concat(e[d],c.argv[d]):e[d]=c.argv[d])})}}isDefaulted(e,t){let{default:s}=e.getOptions();return Object.prototype.hasOwnProperty.call(s,t)||Object.prototype.hasOwnProperty.call(s,this.shim.Parser.camelCase(t))}isInConfigs(e,t){let{configObjects:s}=e.getOptions();return s.some(o=>Object.prototype.hasOwnProperty.call(o,t))||s.some(o=>Object.prototype.hasOwnProperty.call(o,this.shim.Parser.camelCase(t)))}runDefaultBuilderOn(e){if(!this.defaultCommand)return;if(this.shouldUpdateUsage(e)){let s=fn.test(this.defaultCommand.original)?this.defaultCommand.original:this.defaultCommand.original.replace(/^[^[\]<>]*/,"$0 ");e.getInternalMethods().getUsageInstance().usage(s,this.defaultCommand.description)}let t=this.defaultCommand.builder;if(bs(t))return t(e,!0);kl(t)||Object.keys(t).forEach(s=>{e.option(s,t[s])})}moduleName(e){let t=Fo(e);if(!t)throw new Error(`No command name given for module: ${this.shim.inspect(e)}`);return this.commandFromFilename(t.filename)}commandFromFilename(e){return this.shim.path.basename(e,this.shim.path.extname(e))}extractDesc({describe:e,description:t,desc:s}){for(let o of[e,t,s]){if(typeof o=="string"||o===!1)return o;Ue(o,!0,this.shim)}return!1}freeze(){this.frozens.push({handlers:this.handlers,aliasMap:this.aliasMap,defaultCommand:this.defaultCommand})}unfreeze(){let e=this.frozens.pop();Ue(e,void 0,this.shim),{handlers:this.handlers,aliasMap:this.aliasMap,defaultCommand:this.defaultCommand}=e}reset(){return this.handlers={},this.aliasMap={},this.defaultCommand=void 0,this.requireCache=new Set,this}};function Pl(n,e,t,s){return new Uo(n,e,t,s)}function kl(n){return typeof n=="object"&&!!n.builder&&typeof n.handler=="function"}function Vu(n){return n.every(e=>typeof e=="string")}function bs(n){return typeof n=="function"}function Yu(n){return typeof n=="object"}function Xu(n){return typeof n=="object"&&!Array.isArray(n)}function Tt(n={},e=()=>!0){let t={};return pn(n).forEach(s=>{e(s,n[s])&&(t[s]=n[s])}),t}function Mt(n){typeof process>"u"||[process.stdout,process.stderr].forEach(e=>{let t=e;t._handle&&t.isTTY&&typeof t._handle.setBlocking=="function"&&t._handle.setBlocking(n)})}function Ku(n){return typeof n=="boolean"}function $l(n,e){let t=e.y18n.__,s={},o=[];s.failFn=function(_){o.push(_)};let r=null,a=null,l=!0;s.showHelpOnFail=function(_=!0,T){let[R,U]=typeof _=="string"?[!0,_]:[_,T];return n.getInternalMethods().isGlobalContext()&&(a=U),r=U,l=R,s};let c=!1;s.fail=function(_,T){let R=n.getInternalMethods().getLoggerInstance();if(o.length)for(let U=o.length-1;U>=0;--U){let ne=o[U];if(Ku(ne)){if(T)throw T;if(_)throw Error(_)}else ne(_,T,s)}else{if(n.getExitProcess()&&Mt(!0),!c){c=!0,l&&(n.showHelp("error"),R.error()),(_||T)&&R.error(_||T);let U=r||a;U&&((_||T)&&R.error(""),R.error(U))}if(T=T||new he(_),n.getExitProcess())return n.exit(1);if(n.getInternalMethods().hasParseCallback())return n.exit(1,T);throw T}};let m=[],d=!1;s.usage=(w,_)=>w===null?(d=!0,m=[],s):(d=!1,m.push([w,_||""]),s),s.getUsage=()=>m,s.getUsageDisabled=()=>d,s.getPositionalGroupName=()=>t("Positionals:");let p=[];s.example=(w,_)=>{p.push([w,_||""])};let f=[];s.command=function(_,T,R,U,ne=!1){R&&(f=f.map(V=>(V[2]=!1,V))),f.push([_,T||"",R,U,ne])},s.getCommands=()=>f;let h={};s.describe=function(_,T){Array.isArray(_)?_.forEach(R=>{s.describe(R,T)}):typeof _=="object"?Object.keys(_).forEach(R=>{s.describe(R,_[R])}):h[_]=T},s.getDescriptions=()=>h;let I=[];s.epilog=w=>{I.push(w)};let S=!1,x;s.wrap=w=>{S=!0,x=w},s.getWrap=()=>e.getEnv("YARGS_DISABLE_WRAP")?null:(S||(x=H(),S=!0),x);let k="__yargsString__:";s.deferY18nLookup=w=>k+w,s.help=function(){if(b)return b;v();let _=n.customScriptName?n.$0:e.path.basename(n.$0),T=n.getDemandedOptions(),R=n.getDemandedCommands(),U=n.getDeprecatedOptions(),ne=n.getGroups(),V=n.getOptions(),ce=[];ce=ce.concat(Object.keys(h)),ce=ce.concat(Object.keys(T)),ce=ce.concat(Object.keys(R)),ce=ce.concat(Object.keys(V.default)),ce=ce.filter(ee),ce=Object.keys(ce.reduce((G,ae)=>(ae!=="_"&&(G[ae]=!0),G),{}));let $e=s.getWrap(),ie=e.cliui({width:$e,wrap:!!$e});if(!d){if(m.length)m.forEach(G=>{ie.div({text:`${G[0].replace(/\$0/g,_)}`}),G[1]&&ie.div({text:`${G[1]}`,padding:[1,0,0,0]})}),ie.div();else if(f.length){let G=null;R._?G=`${_} <${t("command")}>
9
9
  `:G=`${_} [${t("command")}]
10
- `,ie.div(`${G}`)}}if(f.length>1||f.length===1&&!f[0][2]){ie.div(t("Commands:"));let G=n.getInternalMethods().getContext(),ae=G.commands.length?`${G.commands.join(" ")} `:"";n.getInternalMethods().getParserConfiguration()["sort-commands"]===!0&&(f=f.sort((oe,ye)=>oe[0].localeCompare(ye[0])));let re=_?`${_} `:"";f.forEach(oe=>{let ye=`${re}${ae}${oe[0].replace(/^\$0 ?/,"")}`;ie.span({text:ye,padding:[0,2,0,2],width:M(f,$e,`${_}${ae}`)+4},{text:oe[1]});let xe=[];oe[2]&&xe.push(`[${t("default")}]`),oe[3]&&oe[3].length&&xe.push(`[${t("aliases:")} ${oe[3].join(", ")}]`),oe[4]&&(typeof oe[4]=="string"?xe.push(`[${t("deprecated: %s",oe[4])}]`):xe.push(`[${t("deprecated")}]`)),xe.length?ie.div({text:xe.join(" "),padding:[0,0,0,2],align:"right"}):ie.div()}),ie.div()}let Te=(Object.keys(V.alias)||[]).concat(Object.keys(n.parsed.newAliases)||[]);ce=ce.filter(G=>!n.parsed.newAliases[G]&&Te.every(ae=>(V.alias[ae]||[]).indexOf(G)===-1));let se=t("Options:");ne[se]||(ne[se]=[]),P(ce,V.alias,ne,se);let J=G=>/^--/.test(bs(G)),L=Object.keys(ne).filter(G=>ne[G].length>0).map(G=>{let ae=ne[G].filter(ee).map(re=>{if(Te.includes(re))return re;for(let oe=0,ye;(ye=Te[oe])!==void 0;oe++)if((V.alias[ye]||[]).includes(re))return ye;return re});return{groupName:G,normalizedKeys:ae}}).filter(({normalizedKeys:G})=>G.length>0).map(({groupName:G,normalizedKeys:ae})=>{let re=ae.reduce((oe,ye)=>(oe[ye]=[ye].concat(V.alias[ye]||[]).map(xe=>G===s.getPositionalGroupName()?xe:(/^[0-9]$/.test(xe)?V.boolean.includes(ye)?"-":"--":xe.length>1?"--":"-")+xe).sort((xe,Be)=>J(xe)===J(Be)?0:J(xe)?1:-1).join(", "),oe),{});return{groupName:G,normalizedKeys:ae,switches:re}});if(L.filter(({groupName:G})=>G!==s.getPositionalGroupName()).some(({normalizedKeys:G,switches:ae})=>!G.every(re=>J(ae[re])))&&L.filter(({groupName:G})=>G!==s.getPositionalGroupName()).forEach(({normalizedKeys:G,switches:ae})=>{G.forEach(re=>{J(ae[re])&&(ae[re]=Bu(ae[re],4))})}),L.forEach(({groupName:G,normalizedKeys:ae,switches:re})=>{ie.div(G),ae.forEach(oe=>{let ye=re[oe],xe=h[oe]||"",Be=null;xe.includes(k)&&(xe=t(xe.substring(k.length))),V.boolean.includes(oe)&&(Be=`[${t("boolean")}]`),V.count.includes(oe)&&(Be=`[${t("count")}]`),V.string.includes(oe)&&(Be=`[${t("string")}]`),V.normalize.includes(oe)&&(Be=`[${t("string")}]`),V.array.includes(oe)&&(Be=`[${t("array")}]`),V.number.includes(oe)&&(Be=`[${t("number")}]`);let je=S=>typeof S=="string"?`[${t("deprecated: %s",S)}]`:`[${t("deprecated")}]`,Lt=[oe in U?je(U[oe]):null,Be,oe in T?`[${t("required")}]`:null,V.choices&&V.choices[oe]?`[${t("choices:")} ${s.stringifiedValues(V.choices[oe])}]`:null,Q(V.default[oe],V.defaultDescription[oe])].filter(Boolean).join(" ");ie.span({text:bs(ye),padding:[0,2,0,2+Tl(ye)],width:M(re,$e)+4},xe);let g=n.getInternalMethods().getUsageConfiguration()["hide-types"]===!0;Lt&&!g?ie.div({text:Lt,padding:[0,0,0,2],align:"right"}):ie.div()}),ie.div()}),m.length&&(ie.div(t("Examples:")),m.forEach(G=>{G[0]=G[0].replace(/\$0/g,_)}),m.forEach(G=>{G[1]===""?ie.div({text:G[0],padding:[0,2,0,2]}):ie.div({text:G[0],padding:[0,2,0,2],width:M(m,$e)+4},{text:G[1]})}),ie.div()),I.length>0){let G=I.map(ae=>ae.replace(/\$0/g,_)).join(`
10
+ `,ie.div(`${G}`)}}if(f.length>1||f.length===1&&!f[0][2]){ie.div(t("Commands:"));let G=n.getInternalMethods().getContext(),ae=G.commands.length?`${G.commands.join(" ")} `:"";n.getInternalMethods().getParserConfiguration()["sort-commands"]===!0&&(f=f.sort((oe,ye)=>oe[0].localeCompare(ye[0])));let re=_?`${_} `:"";f.forEach(oe=>{let ye=`${re}${ae}${oe[0].replace(/^\$0 ?/,"")}`;ie.span({text:ye,padding:[0,2,0,2],width:M(f,$e,`${_}${ae}`)+4},{text:oe[1]});let xe=[];oe[2]&&xe.push(`[${t("default")}]`),oe[3]&&oe[3].length&&xe.push(`[${t("aliases:")} ${oe[3].join(", ")}]`),oe[4]&&(typeof oe[4]=="string"?xe.push(`[${t("deprecated: %s",oe[4])}]`):xe.push(`[${t("deprecated")}]`)),xe.length?ie.div({text:xe.join(" "),padding:[0,0,0,2],align:"right"}):ie.div()}),ie.div()}let Te=(Object.keys(V.alias)||[]).concat(Object.keys(n.parsed.newAliases)||[]);ce=ce.filter(G=>!n.parsed.newAliases[G]&&Te.every(ae=>(V.alias[ae]||[]).indexOf(G)===-1));let se=t("Options:");ne[se]||(ne[se]=[]),P(ce,V.alias,ne,se);let J=G=>/^--/.test(ws(G)),L=Object.keys(ne).filter(G=>ne[G].length>0).map(G=>{let ae=ne[G].filter(ee).map(re=>{if(Te.includes(re))return re;for(let oe=0,ye;(ye=Te[oe])!==void 0;oe++)if((V.alias[ye]||[]).includes(re))return ye;return re});return{groupName:G,normalizedKeys:ae}}).filter(({normalizedKeys:G})=>G.length>0).map(({groupName:G,normalizedKeys:ae})=>{let re=ae.reduce((oe,ye)=>(oe[ye]=[ye].concat(V.alias[ye]||[]).map(xe=>G===s.getPositionalGroupName()?xe:(/^[0-9]$/.test(xe)?V.boolean.includes(ye)?"-":"--":xe.length>1?"--":"-")+xe).sort((xe,Be)=>J(xe)===J(Be)?0:J(xe)?1:-1).join(", "),oe),{});return{groupName:G,normalizedKeys:ae,switches:re}});if(L.filter(({groupName:G})=>G!==s.getPositionalGroupName()).some(({normalizedKeys:G,switches:ae})=>!G.every(re=>J(ae[re])))&&L.filter(({groupName:G})=>G!==s.getPositionalGroupName()).forEach(({normalizedKeys:G,switches:ae})=>{G.forEach(re=>{J(ae[re])&&(ae[re]=Ju(ae[re],4))})}),L.forEach(({groupName:G,normalizedKeys:ae,switches:re})=>{ie.div(G),ae.forEach(oe=>{let ye=re[oe],xe=h[oe]||"",Be=null;xe.includes(k)&&(xe=t(xe.substring(k.length))),V.boolean.includes(oe)&&(Be=`[${t("boolean")}]`),V.count.includes(oe)&&(Be=`[${t("count")}]`),V.string.includes(oe)&&(Be=`[${t("string")}]`),V.normalize.includes(oe)&&(Be=`[${t("string")}]`),V.array.includes(oe)&&(Be=`[${t("array")}]`),V.number.includes(oe)&&(Be=`[${t("number")}]`);let je=E=>typeof E=="string"?`[${t("deprecated: %s",E)}]`:`[${t("deprecated")}]`,Dt=[oe in U?je(U[oe]):null,Be,oe in T?`[${t("required")}]`:null,V.choices&&V.choices[oe]?`[${t("choices:")} ${s.stringifiedValues(V.choices[oe])}]`:null,Q(V.default[oe],V.defaultDescription[oe])].filter(Boolean).join(" ");ie.span({text:ws(ye),padding:[0,2,0,2+Nl(ye)],width:M(re,$e)+4},xe);let g=n.getInternalMethods().getUsageConfiguration()["hide-types"]===!0;Dt&&!g?ie.div({text:Dt,padding:[0,0,0,2],align:"right"}):ie.div()}),ie.div()}),p.length&&(ie.div(t("Examples:")),p.forEach(G=>{G[0]=G[0].replace(/\$0/g,_)}),p.forEach(G=>{G[1]===""?ie.div({text:G[0],padding:[0,2,0,2]}):ie.div({text:G[0],padding:[0,2,0,2],width:M(p,$e)+4},{text:G[1]})}),ie.div()),I.length>0){let G=I.map(ae=>ae.replace(/\$0/g,_)).join(`
11
11
  `);ie.div(`${G}
12
- `)}return ie.toString().replace(/\s*$/,"")};function M(w,_,T){let R=0;return Array.isArray(w)||(w=Object.values(w).map(U=>[U])),w.forEach(U=>{R=Math.max(e.stringWidth(T?`${T} ${bs(U[0])}`:bs(U[0]))+Tl(U[0]),R)}),_&&(R=Math.min(R,parseInt((_*.5).toString(),10))),R}function v(){let w=n.getDemandedOptions(),_=n.getOptions();(Object.keys(_.alias)||[]).forEach(T=>{_.alias[T].forEach(R=>{h[R]&&s.describe(T,h[R]),R in w&&n.demandOption(T,w[R]),_.boolean.includes(R)&&n.boolean(T),_.count.includes(R)&&n.count(T),_.string.includes(R)&&n.string(T),_.normalize.includes(R)&&n.normalize(T),_.array.includes(R)&&n.array(T),_.number.includes(R)&&n.number(T)})})}let b;s.cacheHelpMessage=function(){b=this.help()},s.clearCachedHelpMessage=function(){b=void 0},s.hasCachedHelpMessage=function(){return!!b};function P(w,_,T,R){let U=[],ne=null;return Object.keys(T).forEach(V=>{U=U.concat(T[V])}),w.forEach(V=>{ne=[V].concat(_[V]),ne.some(ce=>U.indexOf(ce)!==-1)||T[R].push(V)}),U}function ee(w){return n.getOptions().hiddenOptions.indexOf(w)<0||n.parsed.argv[n.getOptions().showHiddenOpt]}s.showHelp=w=>{let _=n.getInternalMethods().getLoggerInstance();w||(w="error"),(typeof w=="function"?w:_[w])(s.help())},s.functionDescription=w=>["(",w.name?e.Parser.decamelize(w.name,"-"):t("generated-value"),")"].join(""),s.stringifiedValues=function(_,T){let R="",U=T||", ",ne=[].concat(_);return!_||!ne.length||ne.forEach(V=>{R.length&&(R+=U),R+=JSON.stringify(V)}),R};function Q(w,_){let T=`[${t("default:")} `;if(w===void 0&&!_)return null;if(_)T+=_;else switch(typeof w){case"string":T+=`"${w}"`;break;case"object":T+=JSON.stringify(w);break;default:T+=w}return`${T}]`}function H(){return e.process.stdColumns?Math.min(80,e.process.stdColumns):80}let K=null;s.version=w=>{K=w},s.showVersion=w=>{let _=n.getInternalMethods().getLoggerInstance();w||(w="error"),(typeof w=="function"?w:_[w])(K)},s.reset=function(_){return r=null,c=!1,p=[],d=!1,I=[],m=[],f=[],h=It(h,T=>!_[T]),s};let N=[];return s.freeze=function(){N.push({failMessage:r,failureOutput:c,usages:p,usageDisabled:d,epilogs:I,examples:m,commands:f,descriptions:h})},s.unfreeze=function(_=!1){let T=N.pop();T&&(_?(h={...T.descriptions,...h},f=[...T.commands,...f],p=[...T.usages,...p],m=[...T.examples,...m],I=[...T.epilogs,...I]):{failMessage:r,failureOutput:c,usages:p,usageDisabled:d,epilogs:I,examples:m,commands:f,descriptions:h}=T)},s}function jo(n){return typeof n=="object"}function Bu(n,e){return jo(n)?{text:n.text,indentation:n.indentation+e}:{text:n,indentation:e}}function Tl(n){return jo(n)?n.indentation:0}function bs(n){return jo(n)?n.text:n}var kl=`###-begin-{{app_name}}-completions-###
12
+ `)}return ie.toString().replace(/\s*$/,"")};function M(w,_,T){let R=0;return Array.isArray(w)||(w=Object.values(w).map(U=>[U])),w.forEach(U=>{R=Math.max(e.stringWidth(T?`${T} ${ws(U[0])}`:ws(U[0]))+Nl(U[0]),R)}),_&&(R=Math.min(R,parseInt((_*.5).toString(),10))),R}function v(){let w=n.getDemandedOptions(),_=n.getOptions();(Object.keys(_.alias)||[]).forEach(T=>{_.alias[T].forEach(R=>{h[R]&&s.describe(T,h[R]),R in w&&n.demandOption(T,w[R]),_.boolean.includes(R)&&n.boolean(T),_.count.includes(R)&&n.count(T),_.string.includes(R)&&n.string(T),_.normalize.includes(R)&&n.normalize(T),_.array.includes(R)&&n.array(T),_.number.includes(R)&&n.number(T)})})}let b;s.cacheHelpMessage=function(){b=this.help()},s.clearCachedHelpMessage=function(){b=void 0},s.hasCachedHelpMessage=function(){return!!b};function P(w,_,T,R){let U=[],ne=null;return Object.keys(T).forEach(V=>{U=U.concat(T[V])}),w.forEach(V=>{ne=[V].concat(_[V]),ne.some(ce=>U.indexOf(ce)!==-1)||T[R].push(V)}),U}function ee(w){return n.getOptions().hiddenOptions.indexOf(w)<0||n.parsed.argv[n.getOptions().showHiddenOpt]}s.showHelp=w=>{let _=n.getInternalMethods().getLoggerInstance();w||(w="error"),(typeof w=="function"?w:_[w])(s.help())},s.functionDescription=w=>["(",w.name?e.Parser.decamelize(w.name,"-"):t("generated-value"),")"].join(""),s.stringifiedValues=function(_,T){let R="",U=T||", ",ne=[].concat(_);return!_||!ne.length||ne.forEach(V=>{R.length&&(R+=U),R+=JSON.stringify(V)}),R};function Q(w,_){let T=`[${t("default:")} `;if(w===void 0&&!_)return null;if(_)T+=_;else switch(typeof w){case"string":T+=`"${w}"`;break;case"object":T+=JSON.stringify(w);break;default:T+=w}return`${T}]`}function H(){return e.process.stdColumns?Math.min(80,e.process.stdColumns):80}let K=null;s.version=w=>{K=w},s.showVersion=w=>{let _=n.getInternalMethods().getLoggerInstance();w||(w="error"),(typeof w=="function"?w:_[w])(K)},s.reset=function(_){return r=null,c=!1,m=[],d=!1,I=[],p=[],f=[],h=Tt(h,T=>!_[T]),s};let N=[];return s.freeze=function(){N.push({failMessage:r,failureOutput:c,usages:m,usageDisabled:d,epilogs:I,examples:p,commands:f,descriptions:h})},s.unfreeze=function(_=!1){let T=N.pop();T&&(_?(h={...T.descriptions,...h},f=[...T.commands,...f],m=[...T.usages,...m],p=[...T.examples,...p],I=[...T.epilogs,...I]):{failMessage:r,failureOutput:c,usages:m,usageDisabled:d,epilogs:I,examples:p,commands:f,descriptions:h}=T)},s}function Go(n){return typeof n=="object"}function Ju(n,e){return Go(n)?{text:n.text,indentation:n.indentation+e}:{text:n,indentation:e}}function Nl(n){return Go(n)?n.indentation:0}function ws(n){return Go(n)?n.text:n}var Ll=`###-begin-{{app_name}}-completions-###
13
13
  #
14
14
  # yargs command completion script
15
15
  #
@@ -37,7 +37,7 @@ _{{app_name}}_yargs_completions()
37
37
  }
38
38
  complete -o bashdefault -o default -F _{{app_name}}_yargs_completions {{app_name}}
39
39
  ###-end-{{app_name}}-completions-###
40
- `,Pl=`#compdef {{app_name}}
40
+ `,Dl=`#compdef {{app_name}}
41
41
  ###-begin-{{app_name}}-completions-###
42
42
  #
43
43
  # yargs command completion script
@@ -56,106 +56,109 @@ _{{app_name}}_yargs_completions()
56
56
  }
57
57
  compdef _{{app_name}}_yargs_completions {{app_name}}
58
58
  ###-end-{{app_name}}-completions-###
59
- `;var Fo=class{constructor(e,t,s,o){var r,a,l;this.yargs=e,this.usage=t,this.command=s,this.shim=o,this.completionKey="get-yargs-completions",this.aliases=null,this.customCompletionFunction=null,this.indexAfterLastReset=0,this.zshShell=(l=((r=this.shim.getEnv("SHELL"))===null||r===void 0?void 0:r.includes("zsh"))||((a=this.shim.getEnv("ZSH_NAME"))===null||a===void 0?void 0:a.includes("zsh")))!==null&&l!==void 0?l:!1}defaultCompletion(e,t,s,o){let r=this.command.getCommandHandlers();for(let l=0,c=e.length;l<c;++l)if(r[e[l]]&&r[e[l]].builder){let p=r[e[l]].builder;if(ys(p)){this.indexAfterLastReset=l+1;let d=this.yargs.getInternalMethods().reset();return p(d,!0),d.argv}}let a=[];this.commandCompletions(a,e,s),this.optionCompletions(a,e,t,s),this.choicesFromOptionsCompletions(a,e,t,s),this.choicesFromPositionalsCompletions(a,e,t,s),o(null,a)}commandCompletions(e,t,s){let o=this.yargs.getInternalMethods().getContext().commands;!s.match(/^-/)&&o[o.length-1]!==s&&!this.previousArgHasChoices(t)&&this.usage.getCommands().forEach(r=>{let a=Ot(r[0]).cmd;if(t.indexOf(a)===-1)if(!this.zshShell)e.push(a);else{let l=r[1]||"";e.push(a.replace(/:/g,"\\:")+":"+l)}})}optionCompletions(e,t,s,o){if((o.match(/^-/)||o===""&&e.length===0)&&!this.previousArgHasChoices(t)){let r=this.yargs.getOptions(),a=this.yargs.getGroups()[this.usage.getPositionalGroupName()]||[];Object.keys(r.key).forEach(l=>{let c=!!r.configuration["boolean-negation"]&&r.boolean.includes(l);!a.includes(l)&&!r.hiddenOptions.includes(l)&&!this.argsContainKey(t,l,c)&&this.completeOptionKey(l,e,o,c&&!!r.default[l])})}}choicesFromOptionsCompletions(e,t,s,o){if(this.previousArgHasChoices(t)){let r=this.getPreviousArgChoices(t);r&&r.length>0&&e.push(...r.map(a=>a.replace(/:/g,"\\:")))}}choicesFromPositionalsCompletions(e,t,s,o){if(o===""&&e.length>0&&this.previousArgHasChoices(t))return;let r=this.yargs.getGroups()[this.usage.getPositionalGroupName()]||[],a=Math.max(this.indexAfterLastReset,this.yargs.getInternalMethods().getContext().commands.length+1),l=r[s._.length-a-1];if(!l)return;let c=this.yargs.getOptions().choices[l]||[];for(let p of c)p.startsWith(o)&&e.push(p.replace(/:/g,"\\:"))}getPreviousArgChoices(e){if(e.length<1)return;let t=e[e.length-1],s="";if(!t.startsWith("-")&&e.length>1&&(s=t,t=e[e.length-2]),!t.startsWith("-"))return;let o=t.replace(/^-+/,""),r=this.yargs.getOptions(),a=[o,...this.yargs.getAliases()[o]||[]],l;for(let c of a)if(Object.prototype.hasOwnProperty.call(r.key,c)&&Array.isArray(r.choices[c])){l=r.choices[c];break}if(l)return l.filter(c=>!s||c.startsWith(s))}previousArgHasChoices(e){let t=this.getPreviousArgChoices(e);return t!==void 0&&t.length>0}argsContainKey(e,t,s){let o=r=>e.indexOf((/^[^0-9]$/.test(r)?"-":"--")+r)!==-1;if(o(t)||s&&o(`no-${t}`))return!0;if(this.aliases){for(let r of this.aliases[t])if(o(r))return!0}return!1}completeOptionKey(e,t,s,o){var r,a,l,c;let p=e;if(this.zshShell){let h=this.usage.getDescriptions(),I=(a=(r=this===null||this===void 0?void 0:this.aliases)===null||r===void 0?void 0:r[e])===null||a===void 0?void 0:a.find(k=>{let M=h[k];return typeof M=="string"&&M.length>0}),E=I?h[I]:void 0,x=(c=(l=h[e])!==null&&l!==void 0?l:E)!==null&&c!==void 0?c:"";p=`${e.replace(/:/g,"\\:")}:${x.replace("__yargsString__:","").replace(/(\r\n|\n|\r)/gm," ")}`}let d=h=>/^--/.test(h),m=h=>/^[^0-9]$/.test(h),f=!d(s)&&m(e)?"-":"--";t.push(f+p),o&&t.push(f+"no-"+p)}customCompletion(e,t,s,o){if(Ue(this.customCompletionFunction,null,this.shim),Yu(this.customCompletionFunction)){let r=this.customCompletionFunction(s,t);return ge(r)?r.then(a=>{this.shim.process.nextTick(()=>{o(null,a)})}).catch(a=>{this.shim.process.nextTick(()=>{o(a,void 0)})}):o(null,r)}else return Xu(this.customCompletionFunction)?this.customCompletionFunction(s,t,(r=o)=>this.defaultCompletion(e,t,s,r),r=>{o(null,r)}):this.customCompletionFunction(s,t,r=>{o(null,r)})}getCompletion(e,t){let s=e.length?e[e.length-1]:"",o=this.yargs.parse(e,!0),r=this.customCompletionFunction?a=>this.customCompletion(e,a,s,t):a=>this.defaultCompletion(e,a,s,t);return ge(o)?o.then(r):r(o)}generateCompletionScript(e,t){let s=this.zshShell?Pl:kl,o=this.shim.path.basename(e);return e.match(/\.js$/)&&(e=`./${e}`),s=s.replace(/{{app_name}}/g,o),s=s.replace(/{{completion_command}}/g,t),s.replace(/{{app_path}}/g,e)}registerFunction(e){this.customCompletionFunction=e}setParsed(e){this.aliases=e.aliases}};function Rl(n,e,t,s){return new Fo(n,e,t,s)}function Yu(n){return n.length<3}function Xu(n){return n.length>3}function Nl(n,e){if(n.length===0)return e.length;if(e.length===0)return n.length;let t=[],s;for(s=0;s<=e.length;s++)t[s]=[s];let o;for(o=0;o<=n.length;o++)t[0][o]=o;for(s=1;s<=e.length;s++)for(o=1;o<=n.length;o++)e.charAt(s-1)===n.charAt(o-1)?t[s][o]=t[s-1][o-1]:s>1&&o>1&&e.charAt(s-2)===n.charAt(o-1)&&e.charAt(s-1)===n.charAt(o-2)?t[s][o]=t[s-2][o-2]+1:t[s][o]=Math.min(t[s-1][o-1]+1,Math.min(t[s][o-1]+1,t[s-1][o]+1));return t[e.length][n.length]}var $l=["$0","--","_"];function Ll(n,e,t){let s=t.y18n.__,o=t.y18n.__n,r={};r.nonOptionCount=function(m){let f=n.getDemandedCommands(),I=m._.length+(m["--"]?m["--"].length:0)-n.getInternalMethods().getContext().commands.length;f._&&(I<f._.min||I>f._.max)&&(I<f._.min?f._.minMsg!==void 0?e.fail(f._.minMsg?f._.minMsg.replace(/\$0/g,I.toString()).replace(/\$1/,f._.min.toString()):null):e.fail(o("Not enough non-option arguments: got %s, need at least %s","Not enough non-option arguments: got %s, need at least %s",I,I.toString(),f._.min.toString())):I>f._.max&&(f._.maxMsg!==void 0?e.fail(f._.maxMsg?f._.maxMsg.replace(/\$0/g,I.toString()).replace(/\$1/,f._.max.toString()):null):e.fail(o("Too many non-option arguments: got %s, maximum of %s","Too many non-option arguments: got %s, maximum of %s",I,I.toString(),f._.max.toString()))))},r.positionalCount=function(m,f){f<m&&e.fail(o("Not enough non-option arguments: got %s, need at least %s","Not enough non-option arguments: got %s, need at least %s",f,f+"",m+""))},r.requiredArguments=function(m,f){let h=null;for(let I of Object.keys(f))(!Object.prototype.hasOwnProperty.call(m,I)||typeof m[I]>"u")&&(h=h||{},h[I]=f[I]);if(h){let I=[];for(let x of Object.keys(h)){let k=h[x];k&&I.indexOf(k)<0&&I.push(k)}let E=I.length?`
59
+ `;var zo=class{constructor(e,t,s,o){var r,a,l;this.yargs=e,this.usage=t,this.command=s,this.shim=o,this.completionKey="get-yargs-completions",this.aliases=null,this.customCompletionFunction=null,this.indexAfterLastReset=0,this.zshShell=(l=((r=this.shim.getEnv("SHELL"))===null||r===void 0?void 0:r.includes("zsh"))||((a=this.shim.getEnv("ZSH_NAME"))===null||a===void 0?void 0:a.includes("zsh")))!==null&&l!==void 0?l:!1}defaultCompletion(e,t,s,o){let r=this.command.getCommandHandlers();for(let l=0,c=e.length;l<c;++l)if(r[e[l]]&&r[e[l]].builder){let m=r[e[l]].builder;if(bs(m)){this.indexAfterLastReset=l+1;let d=this.yargs.getInternalMethods().reset();return m(d,!0),d.argv}}let a=[];this.commandCompletions(a,e,s),this.optionCompletions(a,e,t,s),this.choicesFromOptionsCompletions(a,e,t,s),this.choicesFromPositionalsCompletions(a,e,t,s),o(null,a)}commandCompletions(e,t,s){let o=this.yargs.getInternalMethods().getContext().commands;!s.match(/^-/)&&o[o.length-1]!==s&&!this.previousArgHasChoices(t)&&this.usage.getCommands().forEach(r=>{let a=It(r[0]).cmd;if(t.indexOf(a)===-1)if(!this.zshShell)e.push(a);else{let l=r[1]||"";e.push(a.replace(/:/g,"\\:")+":"+l)}})}optionCompletions(e,t,s,o){if((o.match(/^-/)||o===""&&e.length===0)&&!this.previousArgHasChoices(t)){let r=this.yargs.getOptions(),a=this.yargs.getGroups()[this.usage.getPositionalGroupName()]||[];Object.keys(r.key).forEach(l=>{let c=!!r.configuration["boolean-negation"]&&r.boolean.includes(l);!a.includes(l)&&!r.hiddenOptions.includes(l)&&!this.argsContainKey(t,l,c)&&this.completeOptionKey(l,e,o,c&&!!r.default[l])})}}choicesFromOptionsCompletions(e,t,s,o){if(this.previousArgHasChoices(t)){let r=this.getPreviousArgChoices(t);r&&r.length>0&&e.push(...r.map(a=>a.replace(/:/g,"\\:")))}}choicesFromPositionalsCompletions(e,t,s,o){if(o===""&&e.length>0&&this.previousArgHasChoices(t))return;let r=this.yargs.getGroups()[this.usage.getPositionalGroupName()]||[],a=Math.max(this.indexAfterLastReset,this.yargs.getInternalMethods().getContext().commands.length+1),l=r[s._.length-a-1];if(!l)return;let c=this.yargs.getOptions().choices[l]||[];for(let m of c)m.startsWith(o)&&e.push(m.replace(/:/g,"\\:"))}getPreviousArgChoices(e){if(e.length<1)return;let t=e[e.length-1],s="";if(!t.startsWith("-")&&e.length>1&&(s=t,t=e[e.length-2]),!t.startsWith("-"))return;let o=t.replace(/^-+/,""),r=this.yargs.getOptions(),a=[o,...this.yargs.getAliases()[o]||[]],l;for(let c of a)if(Object.prototype.hasOwnProperty.call(r.key,c)&&Array.isArray(r.choices[c])){l=r.choices[c];break}if(l)return l.filter(c=>!s||c.startsWith(s))}previousArgHasChoices(e){let t=this.getPreviousArgChoices(e);return t!==void 0&&t.length>0}argsContainKey(e,t,s){let o=r=>e.indexOf((/^[^0-9]$/.test(r)?"-":"--")+r)!==-1;if(o(t)||s&&o(`no-${t}`))return!0;if(this.aliases){for(let r of this.aliases[t])if(o(r))return!0}return!1}completeOptionKey(e,t,s,o){var r,a,l,c;let m=e;if(this.zshShell){let h=this.usage.getDescriptions(),I=(a=(r=this===null||this===void 0?void 0:this.aliases)===null||r===void 0?void 0:r[e])===null||a===void 0?void 0:a.find(k=>{let M=h[k];return typeof M=="string"&&M.length>0}),S=I?h[I]:void 0,x=(c=(l=h[e])!==null&&l!==void 0?l:S)!==null&&c!==void 0?c:"";m=`${e.replace(/:/g,"\\:")}:${x.replace("__yargsString__:","").replace(/(\r\n|\n|\r)/gm," ")}`}let d=h=>/^--/.test(h),p=h=>/^[^0-9]$/.test(h),f=!d(s)&&p(e)?"-":"--";t.push(f+m),o&&t.push(f+"no-"+m)}customCompletion(e,t,s,o){if(Ue(this.customCompletionFunction,null,this.shim),Qu(this.customCompletionFunction)){let r=this.customCompletionFunction(s,t);return ge(r)?r.then(a=>{this.shim.process.nextTick(()=>{o(null,a)})}).catch(a=>{this.shim.process.nextTick(()=>{o(a,void 0)})}):o(null,r)}else return em(this.customCompletionFunction)?this.customCompletionFunction(s,t,(r=o)=>this.defaultCompletion(e,t,s,r),r=>{o(null,r)}):this.customCompletionFunction(s,t,r=>{o(null,r)})}getCompletion(e,t){let s=e.length?e[e.length-1]:"",o=this.yargs.parse(e,!0),r=this.customCompletionFunction?a=>this.customCompletion(e,a,s,t):a=>this.defaultCompletion(e,a,s,t);return ge(o)?o.then(r):r(o)}generateCompletionScript(e,t){let s=this.zshShell?Dl:Ll,o=this.shim.path.basename(e);return e.match(/\.js$/)&&(e=`./${e}`),s=s.replace(/{{app_name}}/g,o),s=s.replace(/{{completion_command}}/g,t),s.replace(/{{app_path}}/g,e)}registerFunction(e){this.customCompletionFunction=e}setParsed(e){this.aliases=e.aliases}};function jl(n,e,t,s){return new zo(n,e,t,s)}function Qu(n){return n.length<3}function em(n){return n.length>3}function Fl(n,e){if(n.length===0)return e.length;if(e.length===0)return n.length;let t=[],s;for(s=0;s<=e.length;s++)t[s]=[s];let o;for(o=0;o<=n.length;o++)t[0][o]=o;for(s=1;s<=e.length;s++)for(o=1;o<=n.length;o++)e.charAt(s-1)===n.charAt(o-1)?t[s][o]=t[s-1][o-1]:s>1&&o>1&&e.charAt(s-2)===n.charAt(o-1)&&e.charAt(s-1)===n.charAt(o-2)?t[s][o]=t[s-2][o-2]+1:t[s][o]=Math.min(t[s-1][o-1]+1,Math.min(t[s][o-1]+1,t[s-1][o]+1));return t[e.length][n.length]}var Ul=["$0","--","_"];function Gl(n,e,t){let s=t.y18n.__,o=t.y18n.__n,r={};r.nonOptionCount=function(p){let f=n.getDemandedCommands(),I=p._.length+(p["--"]?p["--"].length:0)-n.getInternalMethods().getContext().commands.length;f._&&(I<f._.min||I>f._.max)&&(I<f._.min?f._.minMsg!==void 0?e.fail(f._.minMsg?f._.minMsg.replace(/\$0/g,I.toString()).replace(/\$1/,f._.min.toString()):null):e.fail(o("Not enough non-option arguments: got %s, need at least %s","Not enough non-option arguments: got %s, need at least %s",I,I.toString(),f._.min.toString())):I>f._.max&&(f._.maxMsg!==void 0?e.fail(f._.maxMsg?f._.maxMsg.replace(/\$0/g,I.toString()).replace(/\$1/,f._.max.toString()):null):e.fail(o("Too many non-option arguments: got %s, maximum of %s","Too many non-option arguments: got %s, maximum of %s",I,I.toString(),f._.max.toString()))))},r.positionalCount=function(p,f){f<p&&e.fail(o("Not enough non-option arguments: got %s, need at least %s","Not enough non-option arguments: got %s, need at least %s",f,f+"",p+""))},r.requiredArguments=function(p,f){let h=null;for(let I of Object.keys(f))(!Object.prototype.hasOwnProperty.call(p,I)||typeof p[I]>"u")&&(h=h||{},h[I]=f[I]);if(h){let I=[];for(let x of Object.keys(h)){let k=h[x];k&&I.indexOf(k)<0&&I.push(k)}let S=I.length?`
60
60
  ${I.join(`
61
- `)}`:"";e.fail(o("Missing required argument: %s","Missing required arguments: %s",Object.keys(h).length,Object.keys(h).join(", ")+E))}},r.unknownArguments=function(m,f,h,I,E=!0){var x;let k=n.getInternalMethods().getCommandInstance().getCommands(),M=[],v=n.getInternalMethods().getContext();if(Object.keys(m).forEach(b=>{!$l.includes(b)&&!Object.prototype.hasOwnProperty.call(h,b)&&!Object.prototype.hasOwnProperty.call(n.getInternalMethods().getParseContext(),b)&&!r.isValidAndSomeAliasIsNotNew(b,f)&&M.push(b)}),E&&(v.commands.length>0||k.length>0||I)&&m._.slice(v.commands.length).forEach(b=>{k.includes(""+b)||M.push(""+b)}),E){let P=((x=n.getDemandedCommands()._)===null||x===void 0?void 0:x.max)||0,ee=v.commands.length+P;ee<m._.length&&m._.slice(ee).forEach(Q=>{Q=String(Q),!v.commands.includes(Q)&&!M.includes(Q)&&M.push(Q)})}M.length&&e.fail(o("Unknown argument: %s","Unknown arguments: %s",M.length,M.map(b=>b.trim()?b:`"${b}"`).join(", ")))},r.unknownCommands=function(m){let f=n.getInternalMethods().getCommandInstance().getCommands(),h=[],I=n.getInternalMethods().getContext();return(I.commands.length>0||f.length>0)&&m._.slice(I.commands.length).forEach(E=>{f.includes(""+E)||h.push(""+E)}),h.length>0?(e.fail(o("Unknown command: %s","Unknown commands: %s",h.length,h.join(", "))),!0):!1},r.isValidAndSomeAliasIsNotNew=function(m,f){if(!Object.prototype.hasOwnProperty.call(f,m))return!1;let h=n.parsed.newAliases;return[m,...f[m]].some(I=>!Object.prototype.hasOwnProperty.call(h,I)||!h[m])},r.limitedChoices=function(m){let f=n.getOptions(),h={};if(!Object.keys(f.choices).length)return;Object.keys(m).forEach(x=>{$l.indexOf(x)===-1&&Object.prototype.hasOwnProperty.call(f.choices,x)&&[].concat(m[x]).forEach(k=>{f.choices[x].indexOf(k)===-1&&k!==void 0&&(h[x]=(h[x]||[]).concat(k))})});let I=Object.keys(h);if(!I.length)return;let E=s("Invalid values:");I.forEach(x=>{E+=`
62
- ${s("Argument: %s, Given: %s, Choices: %s",x,e.stringifiedValues(h[x]),e.stringifiedValues(f.choices[x]))}`}),e.fail(E)};let a={};r.implies=function(m,f){j("<string|object> [array|number|string]",[m,f],arguments.length),typeof m=="object"?Object.keys(m).forEach(h=>{r.implies(h,m[h])}):(n.global(m),a[m]||(a[m]=[]),Array.isArray(f)?f.forEach(h=>r.implies(m,h)):(Ue(f,void 0,t),a[m].push(f)))},r.getImplied=function(){return a};function l(d,m){let f=Number(m);return m=isNaN(f)?m:f,typeof m=="number"?m=d._.length>=m:m.match(/^--no-.+/)?(m=m.match(/^--no-(.+)/)[1],m=!Object.prototype.hasOwnProperty.call(d,m)):m=Object.prototype.hasOwnProperty.call(d,m),m}r.implications=function(m){let f=[];if(Object.keys(a).forEach(h=>{let I=h;(a[h]||[]).forEach(E=>{let x=I,k=E;x=l(m,x),E=l(m,E),x&&!E&&f.push(` ${I} -> ${k}`)})}),f.length){let h=`${s("Implications failed:")}
63
- `;f.forEach(I=>{h+=I}),e.fail(h)}};let c={};r.conflicts=function(m,f){j("<string|object> [array|string]",[m,f],arguments.length),typeof m=="object"?Object.keys(m).forEach(h=>{r.conflicts(h,m[h])}):(n.global(m),c[m]||(c[m]=[]),Array.isArray(f)?f.forEach(h=>r.conflicts(m,h)):c[m].push(f))},r.getConflicting=()=>c,r.conflicting=function(m){Object.keys(m).forEach(f=>{c[f]&&c[f].forEach(h=>{h&&m[f]!==void 0&&m[h]!==void 0&&e.fail(s("Arguments %s and %s are mutually exclusive",f,h))})}),n.getInternalMethods().getParserConfiguration()["strip-dashed"]&&Object.keys(c).forEach(f=>{c[f].forEach(h=>{h&&m[t.Parser.camelCase(f)]!==void 0&&m[t.Parser.camelCase(h)]!==void 0&&e.fail(s("Arguments %s and %s are mutually exclusive",f,h))})})},r.recommendCommands=function(m,f){f=f.sort((x,k)=>k.length-x.length);let I=null,E=1/0;for(let x=0,k;(k=f[x])!==void 0;x++){let M=Nl(m,k);M<=3&&M<E&&(E=M,I=k)}I&&e.fail(s("Did you mean %s?",I))},r.reset=function(m){return a=It(a,f=>!m[f]),c=It(c,f=>!m[f]),r};let p=[];return r.freeze=function(){p.push({implied:a,conflicting:c})},r.unfreeze=function(){let m=p.pop();Ue(m,void 0,t),{implied:a,conflicting:c}=m},r}var Uo=[],$n;function Ln(n,e,t,s){$n=s;let o={};if(Object.prototype.hasOwnProperty.call(n,"extends")){if(typeof n.extends!="string")return o;let r=/\.json|\..*rc$/.test(n.extends),a=null;if(r)a=Ju(e,n.extends);else try{a=Ge.resolve(n.extends)}catch{return n}Ku(a),Uo.push(a),o=r?JSON.parse($n.readFileSync(a,"utf8")):Ge(n.extends),delete n.extends,o=Ln(o,$n.path.dirname(a),t,$n)}return Uo=[],t?Dl(o,n):Object.assign({},o,n)}function Ku(n){if(Uo.indexOf(n)>-1)throw new he(`Circular extended configurations: '${n}'.`)}function Ju(n,e){return $n.path.resolve(n,e)}function Dl(n,e){let t={};function s(o){return o&&typeof o=="object"&&!Array.isArray(o)}Object.assign(t,n);for(let o of Object.keys(e))s(e[o])&&s(t[o])?t[o]=Dl(n[o],e[o]):t[o]=e[o];return t}var F=function(n,e,t,s,o){if(s==="m")throw new TypeError("Private method is not writable");if(s==="a"&&!o)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?n!==e||!o:!e.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return s==="a"?o.call(n,t):o?o.value=t:e.set(n,t),t},u=function(n,e,t,s){if(t==="a"&&!s)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?n!==e||!s:!e.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return t==="m"?s:t==="a"?s.call(n):s?s.value:e.get(n)},_e,zt,Dn,it,Qe,ws,Mt,Wt,xs,rt,Cs,at,pt,et,lt,Ss,fn,Re,z,Es,_s,tt,qt,hn,Ht,kt,vs,Y,Bt,Vt,Yt,Z,As,mt,Se;function sc(n){return(e=[],t=n.process.cwd(),s)=>{let o=new Jo(e,t,s,n);return Object.defineProperty(o,"argv",{get:()=>o.parse(),enumerable:!0}),o.help(),o.version(),o}}var jl=Symbol("copyDoubleDash"),Fl=Symbol("copyDoubleDash"),Go=Symbol("deleteFromParserHintObject"),Ul=Symbol("emitWarning"),Gl=Symbol("freeze"),zl=Symbol("getDollarZero"),Xt=Symbol("getParserConfiguration"),Wl=Symbol("getUsageConfiguration"),zo=Symbol("guessLocale"),ql=Symbol("guessVersion"),Hl=Symbol("parsePositionalNumbers"),Wo=Symbol("pkgUp"),Pt=Symbol("populateParserHintArray"),gn=Symbol("populateParserHintSingleValueDictionary"),qo=Symbol("populateParserHintArrayDictionary"),Ho=Symbol("populateParserHintDictionary"),Bo=Symbol("sanitizeKey"),Vo=Symbol("setKey"),Yo=Symbol("unfreeze"),Bl=Symbol("validateAsync"),Vl=Symbol("getCommandInstance"),Yl=Symbol("getContext"),Xl=Symbol("getHasOutput"),Kl=Symbol("getLoggerInstance"),Jl=Symbol("getParseContext"),Zl=Symbol("getUsageInstance"),Ql=Symbol("getValidationInstance"),Os=Symbol("hasParseCallback"),ec=Symbol("isGlobalContext"),Kt=Symbol("postProcess"),tc=Symbol("rebase"),Xo=Symbol("reset"),jn=Symbol("runYargsParserAndExecuteCommands"),Ko=Symbol("runValidation"),nc=Symbol("setHasOutput"),Jt=Symbol("kTrackManuallySetKeys"),Jo=class{constructor(e=[],t,s,o){this.customScriptName=!1,this.parsed=!1,_e.set(this,void 0),zt.set(this,void 0),Dn.set(this,{commands:[],fullCommands:[]}),it.set(this,null),Qe.set(this,null),ws.set(this,"show-hidden"),Mt.set(this,null),Wt.set(this,!0),xs.set(this,{}),rt.set(this,!0),Cs.set(this,[]),at.set(this,void 0),pt.set(this,{}),et.set(this,!1),lt.set(this,null),Ss.set(this,!0),fn.set(this,void 0),Re.set(this,""),z.set(this,void 0),Es.set(this,void 0),_s.set(this,{}),tt.set(this,null),qt.set(this,null),hn.set(this,{}),Ht.set(this,{}),kt.set(this,void 0),vs.set(this,!1),Y.set(this,void 0),Bt.set(this,!1),Vt.set(this,!1),Yt.set(this,!1),Z.set(this,void 0),As.set(this,{}),mt.set(this,null),Se.set(this,void 0),F(this,Y,o,"f"),F(this,kt,e,"f"),F(this,zt,t,"f"),F(this,Es,s,"f"),F(this,at,new gs(this),"f"),this.$0=this[zl](),this[Xo](),F(this,_e,u(this,_e,"f"),"f"),F(this,Z,u(this,Z,"f"),"f"),F(this,Se,u(this,Se,"f"),"f"),F(this,z,u(this,z,"f"),"f"),u(this,z,"f").showHiddenOpt=u(this,ws,"f"),F(this,fn,this[Fl](),"f")}addHelpOpt(e,t){let s="help";return j("[string|boolean] [string]",[e,t],arguments.length),u(this,lt,"f")&&(this[Go](u(this,lt,"f")),F(this,lt,null,"f")),e===!1&&t===void 0?this:(F(this,lt,typeof e=="string"?e:s,"f"),this.boolean(u(this,lt,"f")),this.describe(u(this,lt,"f"),t||u(this,Z,"f").deferY18nLookup("Show help")),this)}help(e,t){return this.addHelpOpt(e,t)}addShowHiddenOpt(e,t){if(j("[string|boolean] [string]",[e,t],arguments.length),e===!1&&t===void 0)return this;let s=typeof e=="string"?e:u(this,ws,"f");return this.boolean(s),this.describe(s,t||u(this,Z,"f").deferY18nLookup("Show hidden options")),u(this,z,"f").showHiddenOpt=s,this}showHidden(e,t){return this.addShowHiddenOpt(e,t)}alias(e,t){return j("<object|string|array> [string|array]",[e,t],arguments.length),this[qo](this.alias.bind(this),"alias",e,t),this}array(e){return j("<array|string>",[e],arguments.length),this[Pt]("array",e),this[Jt](e),this}boolean(e){return j("<array|string>",[e],arguments.length),this[Pt]("boolean",e),this[Jt](e),this}check(e,t){return j("<function> [boolean]",[e,t],arguments.length),this.middleware((s,o)=>Gt(()=>e(s,o.getOptions()),r=>(r?(typeof r=="string"||r instanceof Error)&&u(this,Z,"f").fail(r.toString(),r):u(this,Z,"f").fail(u(this,Y,"f").y18n.__("Argument check failed: %s",e.toString())),s),r=>(u(this,Z,"f").fail(r.message?r.message:r.toString(),r),s)),!1,t),this}choices(e,t){return j("<object|string|array> [string|array]",[e,t],arguments.length),this[qo](this.choices.bind(this),"choices",e,t),this}coerce(e,t){if(j("<object|string|array> [function]",[e,t],arguments.length),Array.isArray(e)){if(!t)throw new he("coerce callback must be provided");for(let s of e)this.coerce(s,t);return this}else if(typeof e=="object"){for(let s of Object.keys(e))this.coerce(s,e[s]);return this}if(!t)throw new he("coerce callback must be provided");return u(this,z,"f").key[e]=!0,u(this,at,"f").addCoerceMiddleware((s,o)=>{let r;return Object.prototype.hasOwnProperty.call(s,e)?Gt(()=>(r=o.getAliases(),t(s[e])),l=>{s[e]=l;let c=o.getInternalMethods().getParserConfiguration()["strip-aliased"];if(r[e]&&c!==!0)for(let p of r[e])s[p]=l;return s},l=>{throw new he(l.message)}):s},e),this}conflicts(e,t){return j("<string|object> [string|array]",[e,t],arguments.length),u(this,Se,"f").conflicts(e,t),this}config(e="config",t,s){return j("[object|string] [string|function] [function]",[e,t,s],arguments.length),typeof e=="object"&&!Array.isArray(e)?(e=Ln(e,u(this,zt,"f"),this[Xt]()["deep-merge-config"]||!1,u(this,Y,"f")),u(this,z,"f").configObjects=(u(this,z,"f").configObjects||[]).concat(e),this):(typeof t=="function"&&(s=t,t=void 0),this.describe(e,t||u(this,Z,"f").deferY18nLookup("Path to JSON config file")),(Array.isArray(e)?e:[e]).forEach(o=>{u(this,z,"f").config[o]=s||!0}),this)}completion(e,t,s){return j("[string] [string|boolean|function] [function]",[e,t,s],arguments.length),typeof t=="function"&&(s=t,t=void 0),F(this,Qe,e||u(this,Qe,"f")||"completion","f"),!t&&t!==!1&&(t="generate completion script"),this.command(u(this,Qe,"f"),t),s&&u(this,it,"f").registerFunction(s),this}command(e,t,s,o,r,a){return j("<string|array|object> [string|boolean] [function|object] [function] [array] [boolean|string]",[e,t,s,o,r,a],arguments.length),u(this,_e,"f").addHandler(e,t,s,o,r,a),this}commands(e,t,s,o,r,a){return this.command(e,t,s,o,r,a)}commandDir(e,t){j("<string> [object]",[e,t],arguments.length);let s=u(this,Es,"f")||u(this,Y,"f").require;return u(this,_e,"f").addDirectory(e,s,u(this,Y,"f").getCallerFile(),t),this}count(e){return j("<array|string>",[e],arguments.length),this[Pt]("count",e),this[Jt](e),this}default(e,t,s){return j("<object|string|array> [*] [string]",[e,t,s],arguments.length),s&&($o(e,u(this,Y,"f")),u(this,z,"f").defaultDescription[e]=s),typeof t=="function"&&($o(e,u(this,Y,"f")),u(this,z,"f").defaultDescription[e]||(u(this,z,"f").defaultDescription[e]=u(this,Z,"f").functionDescription(t)),t=t.call()),this[gn](this.default.bind(this),"default",e,t),this}defaults(e,t,s){return this.default(e,t,s)}demandCommand(e=1,t,s,o){return j("[number] [number|string] [string|null|undefined] [string|null|undefined]",[e,t,s,o],arguments.length),typeof t!="number"&&(s=t,t=1/0),this.global("_",!1),u(this,z,"f").demandedCommands._={min:e,max:t,minMsg:s,maxMsg:o},this}demand(e,t,s){return Array.isArray(t)?(t.forEach(o=>{Ue(s,!0,u(this,Y,"f")),this.demandOption(o,s)}),t=1/0):typeof t!="number"&&(s=t,t=1/0),typeof e=="number"?(Ue(s,!0,u(this,Y,"f")),this.demandCommand(e,t,s,s)):Array.isArray(e)?e.forEach(o=>{Ue(s,!0,u(this,Y,"f")),this.demandOption(o,s)}):typeof s=="string"?this.demandOption(e,s):(s===!0||typeof s>"u")&&this.demandOption(e),this}demandOption(e,t){return j("<object|string|array> [string]",[e,t],arguments.length),this[gn](this.demandOption.bind(this),"demandedOptions",e,t),this}deprecateOption(e,t){return j("<string> [string|boolean]",[e,t],arguments.length),u(this,z,"f").deprecatedOptions[e]=t,this}describe(e,t){return j("<object|string|array> [string]",[e,t],arguments.length),this[Vo](e,!0),u(this,Z,"f").describe(e,t),this}detectLocale(e){return j("<boolean>",[e],arguments.length),F(this,Wt,e,"f"),this}env(e){return j("[string|boolean]",[e],arguments.length),e===!1?delete u(this,z,"f").envPrefix:u(this,z,"f").envPrefix=e||"",this}epilogue(e){return j("<string>",[e],arguments.length),u(this,Z,"f").epilog(e),this}epilog(e){return this.epilogue(e)}example(e,t){return j("<string|array> [string]",[e,t],arguments.length),Array.isArray(e)?e.forEach(s=>this.example(...s)):u(this,Z,"f").example(e,t),this}exit(e,t){F(this,et,!0,"f"),F(this,Mt,t,"f"),u(this,rt,"f")&&u(this,Y,"f").process.exit(e)}exitProcess(e=!0){return j("[boolean]",[e],arguments.length),F(this,rt,e,"f"),this}fail(e){if(j("<function|boolean>",[e],arguments.length),typeof e=="boolean"&&e!==!1)throw new he("Invalid first argument. Expected function or boolean 'false'");return u(this,Z,"f").failFn(e),this}getAliases(){return this.parsed?this.parsed.aliases:{}}async getCompletion(e,t){return j("<array> [function]",[e,t],arguments.length),t?u(this,it,"f").getCompletion(e,t):new Promise((s,o)=>{u(this,it,"f").getCompletion(e,(r,a)=>{r?o(r):s(a)})})}getDemandedOptions(){return j([],0),u(this,z,"f").demandedOptions}getDemandedCommands(){return j([],0),u(this,z,"f").demandedCommands}getDeprecatedOptions(){return j([],0),u(this,z,"f").deprecatedOptions}getDetectLocale(){return u(this,Wt,"f")}getExitProcess(){return u(this,rt,"f")}getGroups(){return Object.assign({},u(this,pt,"f"),u(this,Ht,"f"))}getHelp(){if(F(this,et,!0,"f"),!u(this,Z,"f").hasCachedHelpMessage()){if(!this.parsed){let t=this[jn](u(this,kt,"f"),void 0,void 0,0,!0);if(ge(t))return t.then(()=>u(this,Z,"f").help())}let e=u(this,_e,"f").runDefaultBuilderOn(this);if(ge(e))return e.then(()=>u(this,Z,"f").help())}return Promise.resolve(u(this,Z,"f").help())}getOptions(){return u(this,z,"f")}getStrict(){return u(this,Bt,"f")}getStrictCommands(){return u(this,Vt,"f")}getStrictOptions(){return u(this,Yt,"f")}global(e,t){return j("<string|array> [boolean]",[e,t],arguments.length),e=[].concat(e),t!==!1?u(this,z,"f").local=u(this,z,"f").local.filter(s=>e.indexOf(s)===-1):e.forEach(s=>{u(this,z,"f").local.includes(s)||u(this,z,"f").local.push(s)}),this}group(e,t){j("<string|array> <string>",[e,t],arguments.length);let s=u(this,Ht,"f")[t]||u(this,pt,"f")[t];u(this,Ht,"f")[t]&&delete u(this,Ht,"f")[t];let o={};return u(this,pt,"f")[t]=(s||[]).concat(e).filter(r=>o[r]?!1:o[r]=!0),this}hide(e){return j("<string>",[e],arguments.length),u(this,z,"f").hiddenOptions.push(e),this}implies(e,t){return j("<string|object> [number|string|array]",[e,t],arguments.length),u(this,Se,"f").implies(e,t),this}locale(e){return j("[string]",[e],arguments.length),e===void 0?(this[zo](),u(this,Y,"f").y18n.getLocale()):(F(this,Wt,!1,"f"),u(this,Y,"f").y18n.setLocale(e),this)}middleware(e,t,s){return u(this,at,"f").addMiddleware(e,!!t,s)}nargs(e,t){return j("<string|object|array> [number]",[e,t],arguments.length),this[gn](this.nargs.bind(this),"narg",e,t),this}normalize(e){return j("<array|string>",[e],arguments.length),this[Pt]("normalize",e),this}number(e){return j("<array|string>",[e],arguments.length),this[Pt]("number",e),this[Jt](e),this}option(e,t){if(j("<string|object> [object]",[e,t],arguments.length),typeof e=="object")Object.keys(e).forEach(s=>{this.options(s,e[s])});else{typeof t!="object"&&(t={}),this[Jt](e),u(this,mt,"f")&&(e==="version"||t?.alias==="version")&&this[Ul](['"version" is a reserved word.',"Please do one of the following:",'- Disable version with `yargs.version(false)` if using "version" as an option',"- Use the built-in `yargs.version` method instead (if applicable)","- Use a different option key","https://yargs.js.org/docs/#api-reference-version"].join(`
64
- `),void 0,"versionWarning"),u(this,z,"f").key[e]=!0,t.alias&&this.alias(e,t.alias);let s=t.deprecate||t.deprecated;s&&this.deprecateOption(e,s);let o=t.demand||t.required||t.require;o&&this.demand(e,o),t.demandOption&&this.demandOption(e,typeof t.demandOption=="string"?t.demandOption:void 0),t.conflicts&&this.conflicts(e,t.conflicts),"default"in t&&this.default(e,t.default),t.implies!==void 0&&this.implies(e,t.implies),t.nargs!==void 0&&this.nargs(e,t.nargs),t.config&&this.config(e,t.configParser),t.normalize&&this.normalize(e),t.choices&&this.choices(e,t.choices),t.coerce&&this.coerce(e,t.coerce),t.group&&this.group(e,t.group),(t.boolean||t.type==="boolean")&&(this.boolean(e),t.alias&&this.boolean(t.alias)),(t.array||t.type==="array")&&(this.array(e),t.alias&&this.array(t.alias)),(t.number||t.type==="number")&&(this.number(e),t.alias&&this.number(t.alias)),(t.string||t.type==="string")&&(this.string(e),t.alias&&this.string(t.alias)),(t.count||t.type==="count")&&this.count(e),typeof t.global=="boolean"&&this.global(e,t.global),t.defaultDescription&&(u(this,z,"f").defaultDescription[e]=t.defaultDescription),t.skipValidation&&this.skipValidation(e);let r=t.describe||t.description||t.desc,a=u(this,Z,"f").getDescriptions();(!Object.prototype.hasOwnProperty.call(a,e)||typeof r=="string")&&this.describe(e,r),t.hidden&&this.hide(e),t.requiresArg&&this.requiresArg(e)}return this}options(e,t){return this.option(e,t)}parse(e,t,s){j("[string|array] [function|boolean|object] [function]",[e,t,s],arguments.length),this[Gl](),typeof e>"u"&&(e=u(this,kt,"f")),typeof t=="object"&&(F(this,qt,t,"f"),t=s),typeof t=="function"&&(F(this,tt,t,"f"),t=!1),t||F(this,kt,e,"f"),u(this,tt,"f")&&F(this,rt,!1,"f");let o=this[jn](e,!!t),r=this.parsed;return u(this,it,"f").setParsed(this.parsed),ge(o)?o.then(a=>(u(this,tt,"f")&&u(this,tt,"f").call(this,u(this,Mt,"f"),a,u(this,Re,"f")),a)).catch(a=>{throw u(this,tt,"f")&&u(this,tt,"f")(a,this.parsed.argv,u(this,Re,"f")),a}).finally(()=>{this[Yo](),this.parsed=r}):(u(this,tt,"f")&&u(this,tt,"f").call(this,u(this,Mt,"f"),o,u(this,Re,"f")),this[Yo](),this.parsed=r,o)}parseAsync(e,t,s){let o=this.parse(e,t,s);return ge(o)?o:Promise.resolve(o)}parseSync(e,t,s){let o=this.parse(e,t,s);if(ge(o))throw new he(".parseSync() must not be used with asynchronous builders, handlers, or middleware");return o}parserConfiguration(e){return j("<object>",[e],arguments.length),F(this,_s,e,"f"),this}pkgConf(e,t){j("<string> [string]",[e,t],arguments.length);let s=null,o=this[Wo](t||u(this,zt,"f"));return o[e]&&typeof o[e]=="object"&&(s=Ln(o[e],t||u(this,zt,"f"),this[Xt]()["deep-merge-config"]||!1,u(this,Y,"f")),u(this,z,"f").configObjects=(u(this,z,"f").configObjects||[]).concat(s)),this}positional(e,t){j("<string> <object>",[e,t],arguments.length);let s=["default","defaultDescription","implies","normalize","choices","conflicts","coerce","type","describe","desc","description","alias"];t=It(t,(a,l)=>a==="type"&&!["string","number","boolean"].includes(l)?!1:s.includes(a));let o=u(this,Dn,"f").fullCommands[u(this,Dn,"f").fullCommands.length-1],r=o?u(this,_e,"f").cmdToParseOptions(o):{array:[],alias:{},default:{},demand:{}};return pn(r).forEach(a=>{let l=r[a];Array.isArray(l)?l.indexOf(e)!==-1&&(t[a]=!0):l[e]&&!(a in t)&&(t[a]=l[e])}),this.group(e,u(this,Z,"f").getPositionalGroupName()),this.option(e,t)}recommendCommands(e=!0){return j("[boolean]",[e],arguments.length),F(this,vs,e,"f"),this}required(e,t,s){return this.demand(e,t,s)}require(e,t,s){return this.demand(e,t,s)}requiresArg(e){return j("<array|string|object> [number]",[e],arguments.length),typeof e=="string"&&u(this,z,"f").narg[e]?this:(this[gn](this.requiresArg.bind(this),"narg",e,NaN),this)}showCompletionScript(e,t){return j("[string] [string]",[e,t],arguments.length),e=e||this.$0,u(this,fn,"f").log(u(this,it,"f").generateCompletionScript(e,t||u(this,Qe,"f")||"completion")),this}showHelp(e){if(j("[string|function]",[e],arguments.length),F(this,et,!0,"f"),!u(this,Z,"f").hasCachedHelpMessage()){if(!this.parsed){let s=this[jn](u(this,kt,"f"),void 0,void 0,0,!0);if(ge(s))return s.then(()=>{u(this,Z,"f").showHelp(e)}),this}let t=u(this,_e,"f").runDefaultBuilderOn(this);if(ge(t))return t.then(()=>{u(this,Z,"f").showHelp(e)}),this}return u(this,Z,"f").showHelp(e),this}scriptName(e){return this.customScriptName=!0,this.$0=e,this}showHelpOnFail(e,t){return j("[boolean|string] [string]",[e,t],arguments.length),u(this,Z,"f").showHelpOnFail(e,t),this}showVersion(e){return j("[string|function]",[e],arguments.length),u(this,Z,"f").showVersion(e),this}skipValidation(e){return j("<array|string>",[e],arguments.length),this[Pt]("skipValidation",e),this}strict(e){return j("[boolean]",[e],arguments.length),F(this,Bt,e!==!1,"f"),this}strictCommands(e){return j("[boolean]",[e],arguments.length),F(this,Vt,e!==!1,"f"),this}strictOptions(e){return j("[boolean]",[e],arguments.length),F(this,Yt,e!==!1,"f"),this}string(e){return j("<array|string>",[e],arguments.length),this[Pt]("string",e),this[Jt](e),this}terminalWidth(){return j([],0),u(this,Y,"f").process.stdColumns}updateLocale(e){return this.updateStrings(e)}updateStrings(e){return j("<object>",[e],arguments.length),F(this,Wt,!1,"f"),u(this,Y,"f").y18n.updateLocale(e),this}usage(e,t,s,o){if(j("<string|null|undefined> [string|boolean] [function|object] [function]",[e,t,s,o],arguments.length),t!==void 0){if(Ue(e,null,u(this,Y,"f")),(e||"").match(/^\$0( |$)/))return this.command(e,t,s,o);throw new he(".usage() description must start with $0 if being used as alias for .command()")}else return u(this,Z,"f").usage(e),this}usageConfiguration(e){return j("<object>",[e],arguments.length),F(this,As,e,"f"),this}version(e,t,s){let o="version";if(j("[boolean|string] [string] [string]",[e,t,s],arguments.length),u(this,mt,"f")&&(this[Go](u(this,mt,"f")),u(this,Z,"f").version(void 0),F(this,mt,null,"f")),arguments.length===0)s=this[ql](),e=o;else if(arguments.length===1){if(e===!1)return this;s=e,e=o}else arguments.length===2&&(s=t,t=void 0);return F(this,mt,typeof e=="string"?e:o,"f"),t=t||u(this,Z,"f").deferY18nLookup("Show version number"),u(this,Z,"f").version(s||void 0),this.boolean(u(this,mt,"f")),this.describe(u(this,mt,"f"),t),this}wrap(e){return j("<number|null|undefined>",[e],arguments.length),u(this,Z,"f").wrap(e),this}[(_e=new WeakMap,zt=new WeakMap,Dn=new WeakMap,it=new WeakMap,Qe=new WeakMap,ws=new WeakMap,Mt=new WeakMap,Wt=new WeakMap,xs=new WeakMap,rt=new WeakMap,Cs=new WeakMap,at=new WeakMap,pt=new WeakMap,et=new WeakMap,lt=new WeakMap,Ss=new WeakMap,fn=new WeakMap,Re=new WeakMap,z=new WeakMap,Es=new WeakMap,_s=new WeakMap,tt=new WeakMap,qt=new WeakMap,hn=new WeakMap,Ht=new WeakMap,kt=new WeakMap,vs=new WeakMap,Y=new WeakMap,Bt=new WeakMap,Vt=new WeakMap,Yt=new WeakMap,Z=new WeakMap,As=new WeakMap,mt=new WeakMap,Se=new WeakMap,jl)](e){if(!e._||!e["--"])return e;e._.push.apply(e._,e["--"]);try{delete e["--"]}catch{}return e}[Fl](){return{log:(...e)=>{this[Os]()||console.log(...e),F(this,et,!0,"f"),u(this,Re,"f").length&&F(this,Re,u(this,Re,"f")+`
65
- `,"f"),F(this,Re,u(this,Re,"f")+e.join(" "),"f")},error:(...e)=>{this[Os]()||console.error(...e),F(this,et,!0,"f"),u(this,Re,"f").length&&F(this,Re,u(this,Re,"f")+`
66
- `,"f"),F(this,Re,u(this,Re,"f")+e.join(" "),"f")}}}[Go](e){pn(u(this,z,"f")).forEach(t=>{if((o=>o==="configObjects")(t))return;let s=u(this,z,"f")[t];Array.isArray(s)?s.includes(e)&&s.splice(s.indexOf(e),1):typeof s=="object"&&delete s[e]}),delete u(this,Z,"f").getDescriptions()[e]}[Ul](e,t,s){u(this,xs,"f")[s]||(u(this,Y,"f").process.emitWarning(e,t),u(this,xs,"f")[s]=!0)}[Gl](){u(this,Cs,"f").push({options:u(this,z,"f"),configObjects:u(this,z,"f").configObjects.slice(0),exitProcess:u(this,rt,"f"),groups:u(this,pt,"f"),strict:u(this,Bt,"f"),strictCommands:u(this,Vt,"f"),strictOptions:u(this,Yt,"f"),completionCommand:u(this,Qe,"f"),output:u(this,Re,"f"),exitError:u(this,Mt,"f"),hasOutput:u(this,et,"f"),parsed:this.parsed,parseFn:u(this,tt,"f"),parseContext:u(this,qt,"f")}),u(this,Z,"f").freeze(),u(this,Se,"f").freeze(),u(this,_e,"f").freeze(),u(this,at,"f").freeze()}[zl](){let e="",t;return/\b(node|iojs|electron)(\.exe)?$/.test(u(this,Y,"f").process.argv()[0])?t=u(this,Y,"f").process.argv().slice(1,2):t=u(this,Y,"f").process.argv().slice(0,1),e=t.map(s=>{let o=this[tc](u(this,zt,"f"),s);return s.match(/^(\/|([a-zA-Z]:)?\\)/)&&o.length<s.length?o:s}).join(" ").trim(),u(this,Y,"f").getEnv("_")&&u(this,Y,"f").getProcessArgvBin()===u(this,Y,"f").getEnv("_")&&(e=u(this,Y,"f").getEnv("_").replace(`${u(this,Y,"f").path.dirname(u(this,Y,"f").process.execPath())}/`,"")),e}[Xt](){return u(this,_s,"f")}[Wl](){return u(this,As,"f")}[zo](){if(!u(this,Wt,"f"))return;let e=u(this,Y,"f").getEnv("LC_ALL")||u(this,Y,"f").getEnv("LC_MESSAGES")||u(this,Y,"f").getEnv("LANG")||u(this,Y,"f").getEnv("LANGUAGE")||"en_US";this.locale(e.replace(/[.:].*/,""))}[ql](){return this[Wo]().version||"unknown"}[Hl](e){let t=e["--"]?e["--"]:e._;for(let s=0,o;(o=t[s])!==void 0;s++)u(this,Y,"f").Parser.looksLikeNumber(o)&&Number.isSafeInteger(Math.floor(parseFloat(`${o}`)))&&(t[s]=Number(o));return e}[Wo](e){let t=e||"*";if(u(this,hn,"f")[t])return u(this,hn,"f")[t];let s={};try{let o=e||u(this,Y,"f").mainFilename;!e&&u(this,Y,"f").path.extname(o)&&(o=u(this,Y,"f").path.dirname(o));let r=u(this,Y,"f").findUp(o,(a,l)=>{if(l.includes("package.json"))return"package.json"});Ue(r,void 0,u(this,Y,"f")),s=JSON.parse(u(this,Y,"f").readFileSync(r,"utf8"))}catch{}return u(this,hn,"f")[t]=s||{},u(this,hn,"f")[t]}[Pt](e,t){t=[].concat(t),t.forEach(s=>{s=this[Bo](s),u(this,z,"f")[e].push(s)})}[gn](e,t,s,o){this[Ho](e,t,s,o,(r,a,l)=>{u(this,z,"f")[r][a]=l})}[qo](e,t,s,o){this[Ho](e,t,s,o,(r,a,l)=>{u(this,z,"f")[r][a]=(u(this,z,"f")[r][a]||[]).concat(l)})}[Ho](e,t,s,o,r){if(Array.isArray(s))s.forEach(a=>{e(a,o)});else if((a=>typeof a=="object")(s))for(let a of pn(s))e(a,s[a]);else r(t,this[Bo](s),o)}[Bo](e){return e==="__proto__"?"___proto___":e}[Vo](e,t){return this[gn](this[Vo].bind(this),"key",e,t),this}[Yo](){var e,t,s,o,r,a,l,c,p,d,m,f;let h=u(this,Cs,"f").pop();Ue(h,void 0,u(this,Y,"f"));let I;e=this,t=this,s=this,o=this,r=this,a=this,l=this,c=this,p=this,d=this,m=this,f=this,{options:{set value(E){F(e,z,E,"f")}}.value,configObjects:I,exitProcess:{set value(E){F(t,rt,E,"f")}}.value,groups:{set value(E){F(s,pt,E,"f")}}.value,output:{set value(E){F(o,Re,E,"f")}}.value,exitError:{set value(E){F(r,Mt,E,"f")}}.value,hasOutput:{set value(E){F(a,et,E,"f")}}.value,parsed:this.parsed,strict:{set value(E){F(l,Bt,E,"f")}}.value,strictCommands:{set value(E){F(c,Vt,E,"f")}}.value,strictOptions:{set value(E){F(p,Yt,E,"f")}}.value,completionCommand:{set value(E){F(d,Qe,E,"f")}}.value,parseFn:{set value(E){F(m,tt,E,"f")}}.value,parseContext:{set value(E){F(f,qt,E,"f")}}.value}=h,u(this,z,"f").configObjects=I,u(this,Z,"f").unfreeze(),u(this,Se,"f").unfreeze(),u(this,_e,"f").unfreeze(),u(this,at,"f").unfreeze()}[Bl](e,t){return Gt(t,s=>(e(s),s))}getInternalMethods(){return{getCommandInstance:this[Vl].bind(this),getContext:this[Yl].bind(this),getHasOutput:this[Xl].bind(this),getLoggerInstance:this[Kl].bind(this),getParseContext:this[Jl].bind(this),getParserConfiguration:this[Xt].bind(this),getUsageConfiguration:this[Wl].bind(this),getUsageInstance:this[Zl].bind(this),getValidationInstance:this[Ql].bind(this),hasParseCallback:this[Os].bind(this),isGlobalContext:this[ec].bind(this),postProcess:this[Kt].bind(this),reset:this[Xo].bind(this),runValidation:this[Ko].bind(this),runYargsParserAndExecuteCommands:this[jn].bind(this),setHasOutput:this[nc].bind(this)}}[Vl](){return u(this,_e,"f")}[Yl](){return u(this,Dn,"f")}[Xl](){return u(this,et,"f")}[Kl](){return u(this,fn,"f")}[Jl](){return u(this,qt,"f")||{}}[Zl](){return u(this,Z,"f")}[Ql](){return u(this,Se,"f")}[Os](){return!!u(this,tt,"f")}[ec](){return u(this,Ss,"f")}[Kt](e,t,s,o){return s||ge(e)||(t||(e=this[jl](e)),(this[Xt]()["parse-positional-numbers"]||this[Xt]()["parse-positional-numbers"]===void 0)&&(e=this[Hl](e)),o&&(e=Ut(e,this,u(this,at,"f").getMiddleware(),!1))),e}[Xo](e={}){F(this,z,u(this,z,"f")||{},"f");let t={};t.local=u(this,z,"f").local||[],t.configObjects=u(this,z,"f").configObjects||[];let s={};t.local.forEach(a=>{s[a]=!0,(e[a]||[]).forEach(l=>{s[l]=!0})}),Object.assign(u(this,Ht,"f"),Object.keys(u(this,pt,"f")).reduce((a,l)=>{let c=u(this,pt,"f")[l].filter(p=>!(p in s));return c.length>0&&(a[l]=c),a},{})),F(this,pt,{},"f");let o=["array","boolean","string","skipValidation","count","normalize","number","hiddenOptions"],r=["narg","key","alias","default","defaultDescription","config","choices","demandedOptions","demandedCommands","deprecatedOptions"];return o.forEach(a=>{t[a]=(u(this,z,"f")[a]||[]).filter(l=>!s[l])}),r.forEach(a=>{t[a]=It(u(this,z,"f")[a],l=>!s[l])}),t.envPrefix=u(this,z,"f").envPrefix,F(this,z,t,"f"),F(this,Z,u(this,Z,"f")?u(this,Z,"f").reset(s):Ml(this,u(this,Y,"f")),"f"),F(this,Se,u(this,Se,"f")?u(this,Se,"f").reset(s):Ll(this,u(this,Z,"f"),u(this,Y,"f")),"f"),F(this,_e,u(this,_e,"f")?u(this,_e,"f").reset():Ol(u(this,Z,"f"),u(this,Se,"f"),u(this,at,"f"),u(this,Y,"f")),"f"),u(this,it,"f")||F(this,it,Rl(this,u(this,Z,"f"),u(this,_e,"f"),u(this,Y,"f")),"f"),u(this,at,"f").reset(),F(this,Qe,null,"f"),F(this,Re,"","f"),F(this,Mt,null,"f"),F(this,et,!1,"f"),this.parsed=!1,this}[tc](e,t){return u(this,Y,"f").path.relative(e,t)}[jn](e,t,s,o=0,r=!1){let a=!!s||r;e=e||u(this,kt,"f"),u(this,z,"f").__=u(this,Y,"f").y18n.__,u(this,z,"f").configuration=this[Xt]();let l=!!u(this,z,"f").configuration["populate--"],c=Object.assign({},u(this,z,"f").configuration,{"populate--":!0}),p=u(this,Y,"f").Parser.detailed(e,Object.assign({},u(this,z,"f"),{configuration:{"parse-positional-numbers":!1,...c}})),d=Object.assign(p.argv,u(this,qt,"f")),m,f=p.aliases,h=!1,I=!1;Object.keys(d).forEach(E=>{E===u(this,lt,"f")&&d[E]?h=!0:E===u(this,mt,"f")&&d[E]&&(I=!0)}),d.$0=this.$0,this.parsed=p,o===0&&u(this,Z,"f").clearCachedHelpMessage();try{if(this[zo](),t)return this[Kt](d,l,!!s,!1);u(this,lt,"f")&&[u(this,lt,"f")].concat(f[u(this,lt,"f")]||[]).filter(v=>v.length>1).includes(""+d._[d._.length-1])&&(d._.pop(),h=!0),F(this,Ss,!1,"f");let E=u(this,_e,"f").getCommands(),x=u(this,it,"f").completionKey in d,k=h||x||r;if(d._.length){if(E.length){let M;for(let v=o||0,b;d._[v]!==void 0;v++)if(b=String(d._[v]),E.includes(b)&&b!==u(this,Qe,"f")){let P=u(this,_e,"f").runCommand(b,this,p,v+1,r,h||I||r);return this[Kt](P,l,!!s,!1)}else if(!M&&b!==u(this,Qe,"f")){M=b;break}!u(this,_e,"f").hasDefaultCommand()&&u(this,vs,"f")&&M&&!k&&u(this,Se,"f").recommendCommands(M,E)}u(this,Qe,"f")&&d._.includes(u(this,Qe,"f"))&&!x&&(u(this,rt,"f")&&Tt(!0),this.showCompletionScript(),this.exit(0))}if(u(this,_e,"f").hasDefaultCommand()&&!k){let M=u(this,_e,"f").runCommand(null,this,p,0,r,h||I||r);return this[Kt](M,l,!!s,!1)}if(x){u(this,rt,"f")&&Tt(!0),e=[].concat(e);let M=e.slice(e.indexOf(`--${u(this,it,"f").completionKey}`)+1);return u(this,it,"f").getCompletion(M,(v,b)=>{if(v)throw new he(v.message);(b||[]).forEach(P=>{u(this,fn,"f").log(P)}),this.exit(0)}),this[Kt](d,!l,!!s,!1)}if(u(this,et,"f")||(h?(u(this,rt,"f")&&Tt(!0),a=!0,this.showHelp("log"),this.exit(0)):I&&(u(this,rt,"f")&&Tt(!0),a=!0,u(this,Z,"f").showVersion("log"),this.exit(0))),!a&&u(this,z,"f").skipValidation.length>0&&(a=Object.keys(d).some(M=>u(this,z,"f").skipValidation.indexOf(M)>=0&&d[M]===!0)),!a){if(p.error)throw new he(p.error.message);if(!x){let M=this[Ko](f,{},p.error);s||(m=Ut(d,this,u(this,at,"f").getMiddleware(),!0)),m=this[Bl](M,m??d),ge(m)&&!s&&(m=m.then(()=>Ut(d,this,u(this,at,"f").getMiddleware(),!1)))}}}catch(E){if(E instanceof he)u(this,Z,"f").fail(E.message,E);else throw E}return this[Kt](m??d,l,!!s,!0)}[Ko](e,t,s,o){let r={...this.getDemandedOptions()};return a=>{if(s)throw new he(s.message);u(this,Se,"f").nonOptionCount(a),u(this,Se,"f").requiredArguments(a,r);let l=!1;u(this,Vt,"f")&&(l=u(this,Se,"f").unknownCommands(a)),u(this,Bt,"f")&&!l?u(this,Se,"f").unknownArguments(a,e,t,!!o):u(this,Yt,"f")&&u(this,Se,"f").unknownArguments(a,e,{},!1,!1),u(this,Se,"f").limitedChoices(a),u(this,Se,"f").implications(a),u(this,Se,"f").conflicting(a)}}[nc](){F(this,et,!0,"f")}[Jt](e){if(typeof e=="string")u(this,z,"f").key[e]=!0;else for(let t of e)u(this,z,"f").key[t]=!0}};function Il(n){return!!n&&typeof n.getInternalMethods=="function"}var Zu=sc(No),Zo=Zu;import Ie from"node:process";import*as En from"node:path";async function X(n=0){await de(),process.exit(n)}async function Qu(n,e,t,s){let{scope:o,transport:r,env:a,header:l,timeout:c,trust:p,description:d,includeTools:m,excludeTools:f}=s,h=te(process.cwd()),I=h.workspace.path===h.user.path;o==="project"&&I&&(y.error("Error: Please use --scope user to edit settings in the home directory."),process.exit(1));let E=o==="user"?"User":"Workspace",x={},k=l?.reduce((P,ee)=>{let[Q,...H]=ee.split(":"),K=H.join(":").trim();return Q.trim()&&K&&(P[Q.trim()]=K),P},{});switch(r){case"sse":x={url:e,type:"sse",headers:k,timeout:c,trust:p,description:d,includeTools:m,excludeTools:f};break;case"http":x={url:e,type:"http",headers:k,timeout:c,trust:p,description:d,includeTools:m,excludeTools:f};break;case"stdio":default:x={command:e,args:t?.map(String),env:a?.reduce((P,ee)=>{let[Q,H]=ee.split("=");return Q&&H&&(P[Q]=H),P},{}),timeout:c,trust:p,description:d,includeTools:m,excludeTools:f};break}let v=h.forScope(E).settings.mcpServers||{},b=!!v[n];b&&y.log(`MCP server "${n}" is already configured within ${o} settings.`),v[n]=x,h.setValue(E,"mcpServers",v),b?y.log(`MCP server "${n}" updated in ${o} settings.`):y.log(`MCP server "${n}" added to ${o} settings. (${r})`)}var oc={command:"add <name> <commandOrUrl> [args...]",describe:"Add a server",builder:n=>n.usage("Usage: gemini mcp add [options] <name> <commandOrUrl> [args...]").parserConfiguration({"unknown-options-as-args":!0,"populate--":!0}).positional("name",{describe:"Name of the server",type:"string",demandOption:!0}).positional("commandOrUrl",{describe:"Command (stdio) or URL (sse, http)",type:"string",demandOption:!0}).option("scope",{alias:"s",describe:"Configuration scope (user or project)",type:"string",default:"project",choices:["user","project"]}).option("transport",{alias:["t","type"],describe:"Transport type (stdio, sse, http)",type:"string",default:"stdio",choices:["stdio","sse","http"]}).option("env",{alias:"e",describe:"Set environment variables (e.g. -e KEY=value)",type:"array",string:!0,nargs:1}).option("header",{alias:"H",describe:'Set HTTP headers for SSE and HTTP transports (e.g. -H "X-Api-Key: abc123" -H "Authorization: Bearer abc123")',type:"array",string:!0,nargs:1}).option("timeout",{describe:"Set connection timeout in milliseconds",type:"number"}).option("trust",{describe:"Trust the server (bypass all tool call confirmation prompts)",type:"boolean"}).option("description",{describe:"Set the description for the server",type:"string"}).option("include-tools",{describe:"A comma-separated list of tools to include",type:"array",string:!0}).option("exclude-tools",{describe:"A comma-separated list of tools to exclude",type:"array",string:!0}).middleware(e=>{if(e["--"]){let t=e.args||[];e.args=[...t,...e["--"]]}}),handler:async n=>{await Qu(n.name,n.commandOrUrl,n.args,{scope:n.scope,transport:n.transport,env:n.env,header:n.header,timeout:n.timeout,trust:n.trust,description:n.description,includeTools:n.includeTools,excludeTools:n.excludeTools}),await X()}};async function ep(n,e){let{scope:t}=e,s=t==="user"?"User":"Workspace",o=te(),a=o.forScope(s).settings.mcpServers||{};if(!a[n]){y.log(`Server "${n}" not found in ${t} settings.`);return}delete a[n],o.setValue(s,"mcpServers",a),y.log(`Server "${n}" removed from ${t} settings.`)}var ic={command:"remove <name>",describe:"Remove a server",builder:n=>n.usage("Usage: gemini mcp remove [options] <name>").positional("name",{describe:"Name of the server",type:"string",demandOption:!0}).option("scope",{alias:"s",describe:"Configuration scope (user or project)",type:"string",default:"project",choices:["user","project"]}),handler:async n=>{await ep(n.name,{scope:n.scope}),await X()}};var Ct=ze(wt(),1);async function Is(n){n||(n=te().merged);let t=await new ue({settings:n,workspaceDir:process.cwd(),requestConsent:be,requestSetting:Oe}).loadExtensions(),s={...n.mcpServers};for(let a of t)Object.entries(a.mcpServers||{}).forEach(([l,c])=>{s[l]||(s[l]={...c,extension:a})});let o=n.admin?.mcp?.config;return ns(s,o)}async function tp(n,e,t,s){if(!!e.command&&!t)return nt.DISCONNECTED;let r=new Rr({name:"mcp-test-client",version:"0.0.1"}),a={sanitizationConfig:{enableEnvironmentVariableRedaction:!0,allowedEnvironmentVariables:[],blockedEnvironmentVariables:s.advanced.excludedEnvVars},emitMcpDiagnostic:(c,p,d,m)=>{c==="error"?y.error(Ct.default.red(`Error${m?` (${m})`:""}: ${p}`),d):c==="warning"?y.warn(Ct.default.yellow(`Warning${m?` (${m})`:""}: ${p}`),d):y.log(p,d)},isTrustedFolder:()=>t},l;try{l=await Qr(n,e,!1,a)}catch{return await r.close(),nt.DISCONNECTED}try{return await r.connect(l,{timeout:5e3}),await r.ping(),await r.close(),nt.CONNECTED}catch{return await l.close(),nt.DISCONNECTED}}async function np(n,e,t,s){let o=st.getInstance(),r=await Pn(n,{adminMcpEnabled:s.admin?.mcp?.enabled??!0,allowedList:s.mcp?.allowed,excludedList:s.mcp?.excluded,enablement:o.getEnablementCallbacks()});return r.allowed?tp(n,e,t,s):r.blockType==="admin"||r.blockType==="allowlist"||r.blockType==="excludelist"?nt.BLOCKED:nt.DISABLED}async function sp(n){let e=n??te(),t=e.merged,{mcpServers:s,blockedServerNames:o}=await Is(t),r=Object.keys(s);if(o.length>0){let a=ts(o,void 0);y.log(Ct.default.yellow(a+`
61
+ `)}`:"";e.fail(o("Missing required argument: %s","Missing required arguments: %s",Object.keys(h).length,Object.keys(h).join(", ")+S))}},r.unknownArguments=function(p,f,h,I,S=!0){var x;let k=n.getInternalMethods().getCommandInstance().getCommands(),M=[],v=n.getInternalMethods().getContext();if(Object.keys(p).forEach(b=>{!Ul.includes(b)&&!Object.prototype.hasOwnProperty.call(h,b)&&!Object.prototype.hasOwnProperty.call(n.getInternalMethods().getParseContext(),b)&&!r.isValidAndSomeAliasIsNotNew(b,f)&&M.push(b)}),S&&(v.commands.length>0||k.length>0||I)&&p._.slice(v.commands.length).forEach(b=>{k.includes(""+b)||M.push(""+b)}),S){let P=((x=n.getDemandedCommands()._)===null||x===void 0?void 0:x.max)||0,ee=v.commands.length+P;ee<p._.length&&p._.slice(ee).forEach(Q=>{Q=String(Q),!v.commands.includes(Q)&&!M.includes(Q)&&M.push(Q)})}M.length&&e.fail(o("Unknown argument: %s","Unknown arguments: %s",M.length,M.map(b=>b.trim()?b:`"${b}"`).join(", ")))},r.unknownCommands=function(p){let f=n.getInternalMethods().getCommandInstance().getCommands(),h=[],I=n.getInternalMethods().getContext();return(I.commands.length>0||f.length>0)&&p._.slice(I.commands.length).forEach(S=>{f.includes(""+S)||h.push(""+S)}),h.length>0?(e.fail(o("Unknown command: %s","Unknown commands: %s",h.length,h.join(", "))),!0):!1},r.isValidAndSomeAliasIsNotNew=function(p,f){if(!Object.prototype.hasOwnProperty.call(f,p))return!1;let h=n.parsed.newAliases;return[p,...f[p]].some(I=>!Object.prototype.hasOwnProperty.call(h,I)||!h[p])},r.limitedChoices=function(p){let f=n.getOptions(),h={};if(!Object.keys(f.choices).length)return;Object.keys(p).forEach(x=>{Ul.indexOf(x)===-1&&Object.prototype.hasOwnProperty.call(f.choices,x)&&[].concat(p[x]).forEach(k=>{f.choices[x].indexOf(k)===-1&&k!==void 0&&(h[x]=(h[x]||[]).concat(k))})});let I=Object.keys(h);if(!I.length)return;let S=s("Invalid values:");I.forEach(x=>{S+=`
62
+ ${s("Argument: %s, Given: %s, Choices: %s",x,e.stringifiedValues(h[x]),e.stringifiedValues(f.choices[x]))}`}),e.fail(S)};let a={};r.implies=function(p,f){j("<string|object> [array|number|string]",[p,f],arguments.length),typeof p=="object"?Object.keys(p).forEach(h=>{r.implies(h,p[h])}):(n.global(p),a[p]||(a[p]=[]),Array.isArray(f)?f.forEach(h=>r.implies(p,h)):(Ue(f,void 0,t),a[p].push(f)))},r.getImplied=function(){return a};function l(d,p){let f=Number(p);return p=isNaN(f)?p:f,typeof p=="number"?p=d._.length>=p:p.match(/^--no-.+/)?(p=p.match(/^--no-(.+)/)[1],p=!Object.prototype.hasOwnProperty.call(d,p)):p=Object.prototype.hasOwnProperty.call(d,p),p}r.implications=function(p){let f=[];if(Object.keys(a).forEach(h=>{let I=h;(a[h]||[]).forEach(S=>{let x=I,k=S;x=l(p,x),S=l(p,S),x&&!S&&f.push(` ${I} -> ${k}`)})}),f.length){let h=`${s("Implications failed:")}
63
+ `;f.forEach(I=>{h+=I}),e.fail(h)}};let c={};r.conflicts=function(p,f){j("<string|object> [array|string]",[p,f],arguments.length),typeof p=="object"?Object.keys(p).forEach(h=>{r.conflicts(h,p[h])}):(n.global(p),c[p]||(c[p]=[]),Array.isArray(f)?f.forEach(h=>r.conflicts(p,h)):c[p].push(f))},r.getConflicting=()=>c,r.conflicting=function(p){Object.keys(p).forEach(f=>{c[f]&&c[f].forEach(h=>{h&&p[f]!==void 0&&p[h]!==void 0&&e.fail(s("Arguments %s and %s are mutually exclusive",f,h))})}),n.getInternalMethods().getParserConfiguration()["strip-dashed"]&&Object.keys(c).forEach(f=>{c[f].forEach(h=>{h&&p[t.Parser.camelCase(f)]!==void 0&&p[t.Parser.camelCase(h)]!==void 0&&e.fail(s("Arguments %s and %s are mutually exclusive",f,h))})})},r.recommendCommands=function(p,f){f=f.sort((x,k)=>k.length-x.length);let I=null,S=1/0;for(let x=0,k;(k=f[x])!==void 0;x++){let M=Fl(p,k);M<=3&&M<S&&(S=M,I=k)}I&&e.fail(s("Did you mean %s?",I))},r.reset=function(p){return a=Tt(a,f=>!p[f]),c=Tt(c,f=>!p[f]),r};let m=[];return r.freeze=function(){m.push({implied:a,conflicting:c})},r.unfreeze=function(){let p=m.pop();Ue(p,void 0,t),{implied:a,conflicting:c}=p},r}var Wo=[],Ln;function Dn(n,e,t,s){Ln=s;let o={};if(Object.prototype.hasOwnProperty.call(n,"extends")){if(typeof n.extends!="string")return o;let r=/\.json|\..*rc$/.test(n.extends),a=null;if(r)a=nm(e,n.extends);else try{a=Ge.resolve(n.extends)}catch{return n}tm(a),Wo.push(a),o=r?JSON.parse(Ln.readFileSync(a,"utf8")):Ge(n.extends),delete n.extends,o=Dn(o,Ln.path.dirname(a),t,Ln)}return Wo=[],t?zl(o,n):Object.assign({},o,n)}function tm(n){if(Wo.indexOf(n)>-1)throw new he(`Circular extended configurations: '${n}'.`)}function nm(n,e){return Ln.path.resolve(n,e)}function zl(n,e){let t={};function s(o){return o&&typeof o=="object"&&!Array.isArray(o)}Object.assign(t,n);for(let o of Object.keys(e))s(e[o])&&s(t[o])?t[o]=zl(n[o],e[o]):t[o]=e[o];return t}var F=function(n,e,t,s,o){if(s==="m")throw new TypeError("Private method is not writable");if(s==="a"&&!o)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?n!==e||!o:!e.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return s==="a"?o.call(n,t):o?o.value=t:e.set(n,t),t},u=function(n,e,t,s){if(t==="a"&&!s)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?n!==e||!s:!e.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return t==="m"?s:t==="a"?s.call(n):s?s.value:e.get(n)},_e,Wt,jn,it,Qe,xs,kt,qt,Cs,rt,Es,at,mt,et,lt,Ss,hn,Re,z,_s,vs,tt,Ht,gn,Bt,Pt,As,Y,Vt,Yt,Xt,Z,Os,pt,Ee;function lc(n){return(e=[],t=n.process.cwd(),s)=>{let o=new ei(e,t,s,n);return Object.defineProperty(o,"argv",{get:()=>o.parse(),enumerable:!0}),o.help(),o.version(),o}}var Wl=Symbol("copyDoubleDash"),ql=Symbol("copyDoubleDash"),qo=Symbol("deleteFromParserHintObject"),Hl=Symbol("emitWarning"),Bl=Symbol("freeze"),Vl=Symbol("getDollarZero"),Kt=Symbol("getParserConfiguration"),Yl=Symbol("getUsageConfiguration"),Ho=Symbol("guessLocale"),Xl=Symbol("guessVersion"),Kl=Symbol("parsePositionalNumbers"),Bo=Symbol("pkgUp"),Rt=Symbol("populateParserHintArray"),yn=Symbol("populateParserHintSingleValueDictionary"),Vo=Symbol("populateParserHintArrayDictionary"),Yo=Symbol("populateParserHintDictionary"),Xo=Symbol("sanitizeKey"),Ko=Symbol("setKey"),Jo=Symbol("unfreeze"),Jl=Symbol("validateAsync"),Zl=Symbol("getCommandInstance"),Ql=Symbol("getContext"),ec=Symbol("getHasOutput"),tc=Symbol("getLoggerInstance"),nc=Symbol("getParseContext"),sc=Symbol("getUsageInstance"),oc=Symbol("getValidationInstance"),Is=Symbol("hasParseCallback"),ic=Symbol("isGlobalContext"),Jt=Symbol("postProcess"),rc=Symbol("rebase"),Zo=Symbol("reset"),Fn=Symbol("runYargsParserAndExecuteCommands"),Qo=Symbol("runValidation"),ac=Symbol("setHasOutput"),Zt=Symbol("kTrackManuallySetKeys"),ei=class{constructor(e=[],t,s,o){this.customScriptName=!1,this.parsed=!1,_e.set(this,void 0),Wt.set(this,void 0),jn.set(this,{commands:[],fullCommands:[]}),it.set(this,null),Qe.set(this,null),xs.set(this,"show-hidden"),kt.set(this,null),qt.set(this,!0),Cs.set(this,{}),rt.set(this,!0),Es.set(this,[]),at.set(this,void 0),mt.set(this,{}),et.set(this,!1),lt.set(this,null),Ss.set(this,!0),hn.set(this,void 0),Re.set(this,""),z.set(this,void 0),_s.set(this,void 0),vs.set(this,{}),tt.set(this,null),Ht.set(this,null),gn.set(this,{}),Bt.set(this,{}),Pt.set(this,void 0),As.set(this,!1),Y.set(this,void 0),Vt.set(this,!1),Yt.set(this,!1),Xt.set(this,!1),Z.set(this,void 0),Os.set(this,{}),pt.set(this,null),Ee.set(this,void 0),F(this,Y,o,"f"),F(this,Pt,e,"f"),F(this,Wt,t,"f"),F(this,_s,s,"f"),F(this,at,new ys(this),"f"),this.$0=this[Vl](),this[Zo](),F(this,_e,u(this,_e,"f"),"f"),F(this,Z,u(this,Z,"f"),"f"),F(this,Ee,u(this,Ee,"f"),"f"),F(this,z,u(this,z,"f"),"f"),u(this,z,"f").showHiddenOpt=u(this,xs,"f"),F(this,hn,this[ql](),"f")}addHelpOpt(e,t){let s="help";return j("[string|boolean] [string]",[e,t],arguments.length),u(this,lt,"f")&&(this[qo](u(this,lt,"f")),F(this,lt,null,"f")),e===!1&&t===void 0?this:(F(this,lt,typeof e=="string"?e:s,"f"),this.boolean(u(this,lt,"f")),this.describe(u(this,lt,"f"),t||u(this,Z,"f").deferY18nLookup("Show help")),this)}help(e,t){return this.addHelpOpt(e,t)}addShowHiddenOpt(e,t){if(j("[string|boolean] [string]",[e,t],arguments.length),e===!1&&t===void 0)return this;let s=typeof e=="string"?e:u(this,xs,"f");return this.boolean(s),this.describe(s,t||u(this,Z,"f").deferY18nLookup("Show hidden options")),u(this,z,"f").showHiddenOpt=s,this}showHidden(e,t){return this.addShowHiddenOpt(e,t)}alias(e,t){return j("<object|string|array> [string|array]",[e,t],arguments.length),this[Vo](this.alias.bind(this),"alias",e,t),this}array(e){return j("<array|string>",[e],arguments.length),this[Rt]("array",e),this[Zt](e),this}boolean(e){return j("<array|string>",[e],arguments.length),this[Rt]("boolean",e),this[Zt](e),this}check(e,t){return j("<function> [boolean]",[e,t],arguments.length),this.middleware((s,o)=>zt(()=>e(s,o.getOptions()),r=>(r?(typeof r=="string"||r instanceof Error)&&u(this,Z,"f").fail(r.toString(),r):u(this,Z,"f").fail(u(this,Y,"f").y18n.__("Argument check failed: %s",e.toString())),s),r=>(u(this,Z,"f").fail(r.message?r.message:r.toString(),r),s)),!1,t),this}choices(e,t){return j("<object|string|array> [string|array]",[e,t],arguments.length),this[Vo](this.choices.bind(this),"choices",e,t),this}coerce(e,t){if(j("<object|string|array> [function]",[e,t],arguments.length),Array.isArray(e)){if(!t)throw new he("coerce callback must be provided");for(let s of e)this.coerce(s,t);return this}else if(typeof e=="object"){for(let s of Object.keys(e))this.coerce(s,e[s]);return this}if(!t)throw new he("coerce callback must be provided");return u(this,z,"f").key[e]=!0,u(this,at,"f").addCoerceMiddleware((s,o)=>{let r;return Object.prototype.hasOwnProperty.call(s,e)?zt(()=>(r=o.getAliases(),t(s[e])),l=>{s[e]=l;let c=o.getInternalMethods().getParserConfiguration()["strip-aliased"];if(r[e]&&c!==!0)for(let m of r[e])s[m]=l;return s},l=>{throw new he(l.message)}):s},e),this}conflicts(e,t){return j("<string|object> [string|array]",[e,t],arguments.length),u(this,Ee,"f").conflicts(e,t),this}config(e="config",t,s){return j("[object|string] [string|function] [function]",[e,t,s],arguments.length),typeof e=="object"&&!Array.isArray(e)?(e=Dn(e,u(this,Wt,"f"),this[Kt]()["deep-merge-config"]||!1,u(this,Y,"f")),u(this,z,"f").configObjects=(u(this,z,"f").configObjects||[]).concat(e),this):(typeof t=="function"&&(s=t,t=void 0),this.describe(e,t||u(this,Z,"f").deferY18nLookup("Path to JSON config file")),(Array.isArray(e)?e:[e]).forEach(o=>{u(this,z,"f").config[o]=s||!0}),this)}completion(e,t,s){return j("[string] [string|boolean|function] [function]",[e,t,s],arguments.length),typeof t=="function"&&(s=t,t=void 0),F(this,Qe,e||u(this,Qe,"f")||"completion","f"),!t&&t!==!1&&(t="generate completion script"),this.command(u(this,Qe,"f"),t),s&&u(this,it,"f").registerFunction(s),this}command(e,t,s,o,r,a){return j("<string|array|object> [string|boolean] [function|object] [function] [array] [boolean|string]",[e,t,s,o,r,a],arguments.length),u(this,_e,"f").addHandler(e,t,s,o,r,a),this}commands(e,t,s,o,r,a){return this.command(e,t,s,o,r,a)}commandDir(e,t){j("<string> [object]",[e,t],arguments.length);let s=u(this,_s,"f")||u(this,Y,"f").require;return u(this,_e,"f").addDirectory(e,s,u(this,Y,"f").getCallerFile(),t),this}count(e){return j("<array|string>",[e],arguments.length),this[Rt]("count",e),this[Zt](e),this}default(e,t,s){return j("<object|string|array> [*] [string]",[e,t,s],arguments.length),s&&(jo(e,u(this,Y,"f")),u(this,z,"f").defaultDescription[e]=s),typeof t=="function"&&(jo(e,u(this,Y,"f")),u(this,z,"f").defaultDescription[e]||(u(this,z,"f").defaultDescription[e]=u(this,Z,"f").functionDescription(t)),t=t.call()),this[yn](this.default.bind(this),"default",e,t),this}defaults(e,t,s){return this.default(e,t,s)}demandCommand(e=1,t,s,o){return j("[number] [number|string] [string|null|undefined] [string|null|undefined]",[e,t,s,o],arguments.length),typeof t!="number"&&(s=t,t=1/0),this.global("_",!1),u(this,z,"f").demandedCommands._={min:e,max:t,minMsg:s,maxMsg:o},this}demand(e,t,s){return Array.isArray(t)?(t.forEach(o=>{Ue(s,!0,u(this,Y,"f")),this.demandOption(o,s)}),t=1/0):typeof t!="number"&&(s=t,t=1/0),typeof e=="number"?(Ue(s,!0,u(this,Y,"f")),this.demandCommand(e,t,s,s)):Array.isArray(e)?e.forEach(o=>{Ue(s,!0,u(this,Y,"f")),this.demandOption(o,s)}):typeof s=="string"?this.demandOption(e,s):(s===!0||typeof s>"u")&&this.demandOption(e),this}demandOption(e,t){return j("<object|string|array> [string]",[e,t],arguments.length),this[yn](this.demandOption.bind(this),"demandedOptions",e,t),this}deprecateOption(e,t){return j("<string> [string|boolean]",[e,t],arguments.length),u(this,z,"f").deprecatedOptions[e]=t,this}describe(e,t){return j("<object|string|array> [string]",[e,t],arguments.length),this[Ko](e,!0),u(this,Z,"f").describe(e,t),this}detectLocale(e){return j("<boolean>",[e],arguments.length),F(this,qt,e,"f"),this}env(e){return j("[string|boolean]",[e],arguments.length),e===!1?delete u(this,z,"f").envPrefix:u(this,z,"f").envPrefix=e||"",this}epilogue(e){return j("<string>",[e],arguments.length),u(this,Z,"f").epilog(e),this}epilog(e){return this.epilogue(e)}example(e,t){return j("<string|array> [string]",[e,t],arguments.length),Array.isArray(e)?e.forEach(s=>this.example(...s)):u(this,Z,"f").example(e,t),this}exit(e,t){F(this,et,!0,"f"),F(this,kt,t,"f"),u(this,rt,"f")&&u(this,Y,"f").process.exit(e)}exitProcess(e=!0){return j("[boolean]",[e],arguments.length),F(this,rt,e,"f"),this}fail(e){if(j("<function|boolean>",[e],arguments.length),typeof e=="boolean"&&e!==!1)throw new he("Invalid first argument. Expected function or boolean 'false'");return u(this,Z,"f").failFn(e),this}getAliases(){return this.parsed?this.parsed.aliases:{}}async getCompletion(e,t){return j("<array> [function]",[e,t],arguments.length),t?u(this,it,"f").getCompletion(e,t):new Promise((s,o)=>{u(this,it,"f").getCompletion(e,(r,a)=>{r?o(r):s(a)})})}getDemandedOptions(){return j([],0),u(this,z,"f").demandedOptions}getDemandedCommands(){return j([],0),u(this,z,"f").demandedCommands}getDeprecatedOptions(){return j([],0),u(this,z,"f").deprecatedOptions}getDetectLocale(){return u(this,qt,"f")}getExitProcess(){return u(this,rt,"f")}getGroups(){return Object.assign({},u(this,mt,"f"),u(this,Bt,"f"))}getHelp(){if(F(this,et,!0,"f"),!u(this,Z,"f").hasCachedHelpMessage()){if(!this.parsed){let t=this[Fn](u(this,Pt,"f"),void 0,void 0,0,!0);if(ge(t))return t.then(()=>u(this,Z,"f").help())}let e=u(this,_e,"f").runDefaultBuilderOn(this);if(ge(e))return e.then(()=>u(this,Z,"f").help())}return Promise.resolve(u(this,Z,"f").help())}getOptions(){return u(this,z,"f")}getStrict(){return u(this,Vt,"f")}getStrictCommands(){return u(this,Yt,"f")}getStrictOptions(){return u(this,Xt,"f")}global(e,t){return j("<string|array> [boolean]",[e,t],arguments.length),e=[].concat(e),t!==!1?u(this,z,"f").local=u(this,z,"f").local.filter(s=>e.indexOf(s)===-1):e.forEach(s=>{u(this,z,"f").local.includes(s)||u(this,z,"f").local.push(s)}),this}group(e,t){j("<string|array> <string>",[e,t],arguments.length);let s=u(this,Bt,"f")[t]||u(this,mt,"f")[t];u(this,Bt,"f")[t]&&delete u(this,Bt,"f")[t];let o={};return u(this,mt,"f")[t]=(s||[]).concat(e).filter(r=>o[r]?!1:o[r]=!0),this}hide(e){return j("<string>",[e],arguments.length),u(this,z,"f").hiddenOptions.push(e),this}implies(e,t){return j("<string|object> [number|string|array]",[e,t],arguments.length),u(this,Ee,"f").implies(e,t),this}locale(e){return j("[string]",[e],arguments.length),e===void 0?(this[Ho](),u(this,Y,"f").y18n.getLocale()):(F(this,qt,!1,"f"),u(this,Y,"f").y18n.setLocale(e),this)}middleware(e,t,s){return u(this,at,"f").addMiddleware(e,!!t,s)}nargs(e,t){return j("<string|object|array> [number]",[e,t],arguments.length),this[yn](this.nargs.bind(this),"narg",e,t),this}normalize(e){return j("<array|string>",[e],arguments.length),this[Rt]("normalize",e),this}number(e){return j("<array|string>",[e],arguments.length),this[Rt]("number",e),this[Zt](e),this}option(e,t){if(j("<string|object> [object]",[e,t],arguments.length),typeof e=="object")Object.keys(e).forEach(s=>{this.options(s,e[s])});else{typeof t!="object"&&(t={}),this[Zt](e),u(this,pt,"f")&&(e==="version"||t?.alias==="version")&&this[Hl](['"version" is a reserved word.',"Please do one of the following:",'- Disable version with `yargs.version(false)` if using "version" as an option',"- Use the built-in `yargs.version` method instead (if applicable)","- Use a different option key","https://yargs.js.org/docs/#api-reference-version"].join(`
64
+ `),void 0,"versionWarning"),u(this,z,"f").key[e]=!0,t.alias&&this.alias(e,t.alias);let s=t.deprecate||t.deprecated;s&&this.deprecateOption(e,s);let o=t.demand||t.required||t.require;o&&this.demand(e,o),t.demandOption&&this.demandOption(e,typeof t.demandOption=="string"?t.demandOption:void 0),t.conflicts&&this.conflicts(e,t.conflicts),"default"in t&&this.default(e,t.default),t.implies!==void 0&&this.implies(e,t.implies),t.nargs!==void 0&&this.nargs(e,t.nargs),t.config&&this.config(e,t.configParser),t.normalize&&this.normalize(e),t.choices&&this.choices(e,t.choices),t.coerce&&this.coerce(e,t.coerce),t.group&&this.group(e,t.group),(t.boolean||t.type==="boolean")&&(this.boolean(e),t.alias&&this.boolean(t.alias)),(t.array||t.type==="array")&&(this.array(e),t.alias&&this.array(t.alias)),(t.number||t.type==="number")&&(this.number(e),t.alias&&this.number(t.alias)),(t.string||t.type==="string")&&(this.string(e),t.alias&&this.string(t.alias)),(t.count||t.type==="count")&&this.count(e),typeof t.global=="boolean"&&this.global(e,t.global),t.defaultDescription&&(u(this,z,"f").defaultDescription[e]=t.defaultDescription),t.skipValidation&&this.skipValidation(e);let r=t.describe||t.description||t.desc,a=u(this,Z,"f").getDescriptions();(!Object.prototype.hasOwnProperty.call(a,e)||typeof r=="string")&&this.describe(e,r),t.hidden&&this.hide(e),t.requiresArg&&this.requiresArg(e)}return this}options(e,t){return this.option(e,t)}parse(e,t,s){j("[string|array] [function|boolean|object] [function]",[e,t,s],arguments.length),this[Bl](),typeof e>"u"&&(e=u(this,Pt,"f")),typeof t=="object"&&(F(this,Ht,t,"f"),t=s),typeof t=="function"&&(F(this,tt,t,"f"),t=!1),t||F(this,Pt,e,"f"),u(this,tt,"f")&&F(this,rt,!1,"f");let o=this[Fn](e,!!t),r=this.parsed;return u(this,it,"f").setParsed(this.parsed),ge(o)?o.then(a=>(u(this,tt,"f")&&u(this,tt,"f").call(this,u(this,kt,"f"),a,u(this,Re,"f")),a)).catch(a=>{throw u(this,tt,"f")&&u(this,tt,"f")(a,this.parsed.argv,u(this,Re,"f")),a}).finally(()=>{this[Jo](),this.parsed=r}):(u(this,tt,"f")&&u(this,tt,"f").call(this,u(this,kt,"f"),o,u(this,Re,"f")),this[Jo](),this.parsed=r,o)}parseAsync(e,t,s){let o=this.parse(e,t,s);return ge(o)?o:Promise.resolve(o)}parseSync(e,t,s){let o=this.parse(e,t,s);if(ge(o))throw new he(".parseSync() must not be used with asynchronous builders, handlers, or middleware");return o}parserConfiguration(e){return j("<object>",[e],arguments.length),F(this,vs,e,"f"),this}pkgConf(e,t){j("<string> [string]",[e,t],arguments.length);let s=null,o=this[Bo](t||u(this,Wt,"f"));return o[e]&&typeof o[e]=="object"&&(s=Dn(o[e],t||u(this,Wt,"f"),this[Kt]()["deep-merge-config"]||!1,u(this,Y,"f")),u(this,z,"f").configObjects=(u(this,z,"f").configObjects||[]).concat(s)),this}positional(e,t){j("<string> <object>",[e,t],arguments.length);let s=["default","defaultDescription","implies","normalize","choices","conflicts","coerce","type","describe","desc","description","alias"];t=Tt(t,(a,l)=>a==="type"&&!["string","number","boolean"].includes(l)?!1:s.includes(a));let o=u(this,jn,"f").fullCommands[u(this,jn,"f").fullCommands.length-1],r=o?u(this,_e,"f").cmdToParseOptions(o):{array:[],alias:{},default:{},demand:{}};return pn(r).forEach(a=>{let l=r[a];Array.isArray(l)?l.indexOf(e)!==-1&&(t[a]=!0):l[e]&&!(a in t)&&(t[a]=l[e])}),this.group(e,u(this,Z,"f").getPositionalGroupName()),this.option(e,t)}recommendCommands(e=!0){return j("[boolean]",[e],arguments.length),F(this,As,e,"f"),this}required(e,t,s){return this.demand(e,t,s)}require(e,t,s){return this.demand(e,t,s)}requiresArg(e){return j("<array|string|object> [number]",[e],arguments.length),typeof e=="string"&&u(this,z,"f").narg[e]?this:(this[yn](this.requiresArg.bind(this),"narg",e,NaN),this)}showCompletionScript(e,t){return j("[string] [string]",[e,t],arguments.length),e=e||this.$0,u(this,hn,"f").log(u(this,it,"f").generateCompletionScript(e,t||u(this,Qe,"f")||"completion")),this}showHelp(e){if(j("[string|function]",[e],arguments.length),F(this,et,!0,"f"),!u(this,Z,"f").hasCachedHelpMessage()){if(!this.parsed){let s=this[Fn](u(this,Pt,"f"),void 0,void 0,0,!0);if(ge(s))return s.then(()=>{u(this,Z,"f").showHelp(e)}),this}let t=u(this,_e,"f").runDefaultBuilderOn(this);if(ge(t))return t.then(()=>{u(this,Z,"f").showHelp(e)}),this}return u(this,Z,"f").showHelp(e),this}scriptName(e){return this.customScriptName=!0,this.$0=e,this}showHelpOnFail(e,t){return j("[boolean|string] [string]",[e,t],arguments.length),u(this,Z,"f").showHelpOnFail(e,t),this}showVersion(e){return j("[string|function]",[e],arguments.length),u(this,Z,"f").showVersion(e),this}skipValidation(e){return j("<array|string>",[e],arguments.length),this[Rt]("skipValidation",e),this}strict(e){return j("[boolean]",[e],arguments.length),F(this,Vt,e!==!1,"f"),this}strictCommands(e){return j("[boolean]",[e],arguments.length),F(this,Yt,e!==!1,"f"),this}strictOptions(e){return j("[boolean]",[e],arguments.length),F(this,Xt,e!==!1,"f"),this}string(e){return j("<array|string>",[e],arguments.length),this[Rt]("string",e),this[Zt](e),this}terminalWidth(){return j([],0),u(this,Y,"f").process.stdColumns}updateLocale(e){return this.updateStrings(e)}updateStrings(e){return j("<object>",[e],arguments.length),F(this,qt,!1,"f"),u(this,Y,"f").y18n.updateLocale(e),this}usage(e,t,s,o){if(j("<string|null|undefined> [string|boolean] [function|object] [function]",[e,t,s,o],arguments.length),t!==void 0){if(Ue(e,null,u(this,Y,"f")),(e||"").match(/^\$0( |$)/))return this.command(e,t,s,o);throw new he(".usage() description must start with $0 if being used as alias for .command()")}else return u(this,Z,"f").usage(e),this}usageConfiguration(e){return j("<object>",[e],arguments.length),F(this,Os,e,"f"),this}version(e,t,s){let o="version";if(j("[boolean|string] [string] [string]",[e,t,s],arguments.length),u(this,pt,"f")&&(this[qo](u(this,pt,"f")),u(this,Z,"f").version(void 0),F(this,pt,null,"f")),arguments.length===0)s=this[Xl](),e=o;else if(arguments.length===1){if(e===!1)return this;s=e,e=o}else arguments.length===2&&(s=t,t=void 0);return F(this,pt,typeof e=="string"?e:o,"f"),t=t||u(this,Z,"f").deferY18nLookup("Show version number"),u(this,Z,"f").version(s||void 0),this.boolean(u(this,pt,"f")),this.describe(u(this,pt,"f"),t),this}wrap(e){return j("<number|null|undefined>",[e],arguments.length),u(this,Z,"f").wrap(e),this}[(_e=new WeakMap,Wt=new WeakMap,jn=new WeakMap,it=new WeakMap,Qe=new WeakMap,xs=new WeakMap,kt=new WeakMap,qt=new WeakMap,Cs=new WeakMap,rt=new WeakMap,Es=new WeakMap,at=new WeakMap,mt=new WeakMap,et=new WeakMap,lt=new WeakMap,Ss=new WeakMap,hn=new WeakMap,Re=new WeakMap,z=new WeakMap,_s=new WeakMap,vs=new WeakMap,tt=new WeakMap,Ht=new WeakMap,gn=new WeakMap,Bt=new WeakMap,Pt=new WeakMap,As=new WeakMap,Y=new WeakMap,Vt=new WeakMap,Yt=new WeakMap,Xt=new WeakMap,Z=new WeakMap,Os=new WeakMap,pt=new WeakMap,Ee=new WeakMap,Wl)](e){if(!e._||!e["--"])return e;e._.push.apply(e._,e["--"]);try{delete e["--"]}catch{}return e}[ql](){return{log:(...e)=>{this[Is]()||console.log(...e),F(this,et,!0,"f"),u(this,Re,"f").length&&F(this,Re,u(this,Re,"f")+`
65
+ `,"f"),F(this,Re,u(this,Re,"f")+e.join(" "),"f")},error:(...e)=>{this[Is]()||console.error(...e),F(this,et,!0,"f"),u(this,Re,"f").length&&F(this,Re,u(this,Re,"f")+`
66
+ `,"f"),F(this,Re,u(this,Re,"f")+e.join(" "),"f")}}}[qo](e){pn(u(this,z,"f")).forEach(t=>{if((o=>o==="configObjects")(t))return;let s=u(this,z,"f")[t];Array.isArray(s)?s.includes(e)&&s.splice(s.indexOf(e),1):typeof s=="object"&&delete s[e]}),delete u(this,Z,"f").getDescriptions()[e]}[Hl](e,t,s){u(this,Cs,"f")[s]||(u(this,Y,"f").process.emitWarning(e,t),u(this,Cs,"f")[s]=!0)}[Bl](){u(this,Es,"f").push({options:u(this,z,"f"),configObjects:u(this,z,"f").configObjects.slice(0),exitProcess:u(this,rt,"f"),groups:u(this,mt,"f"),strict:u(this,Vt,"f"),strictCommands:u(this,Yt,"f"),strictOptions:u(this,Xt,"f"),completionCommand:u(this,Qe,"f"),output:u(this,Re,"f"),exitError:u(this,kt,"f"),hasOutput:u(this,et,"f"),parsed:this.parsed,parseFn:u(this,tt,"f"),parseContext:u(this,Ht,"f")}),u(this,Z,"f").freeze(),u(this,Ee,"f").freeze(),u(this,_e,"f").freeze(),u(this,at,"f").freeze()}[Vl](){let e="",t;return/\b(node|iojs|electron)(\.exe)?$/.test(u(this,Y,"f").process.argv()[0])?t=u(this,Y,"f").process.argv().slice(1,2):t=u(this,Y,"f").process.argv().slice(0,1),e=t.map(s=>{let o=this[rc](u(this,Wt,"f"),s);return s.match(/^(\/|([a-zA-Z]:)?\\)/)&&o.length<s.length?o:s}).join(" ").trim(),u(this,Y,"f").getEnv("_")&&u(this,Y,"f").getProcessArgvBin()===u(this,Y,"f").getEnv("_")&&(e=u(this,Y,"f").getEnv("_").replace(`${u(this,Y,"f").path.dirname(u(this,Y,"f").process.execPath())}/`,"")),e}[Kt](){return u(this,vs,"f")}[Yl](){return u(this,Os,"f")}[Ho](){if(!u(this,qt,"f"))return;let e=u(this,Y,"f").getEnv("LC_ALL")||u(this,Y,"f").getEnv("LC_MESSAGES")||u(this,Y,"f").getEnv("LANG")||u(this,Y,"f").getEnv("LANGUAGE")||"en_US";this.locale(e.replace(/[.:].*/,""))}[Xl](){return this[Bo]().version||"unknown"}[Kl](e){let t=e["--"]?e["--"]:e._;for(let s=0,o;(o=t[s])!==void 0;s++)u(this,Y,"f").Parser.looksLikeNumber(o)&&Number.isSafeInteger(Math.floor(parseFloat(`${o}`)))&&(t[s]=Number(o));return e}[Bo](e){let t=e||"*";if(u(this,gn,"f")[t])return u(this,gn,"f")[t];let s={};try{let o=e||u(this,Y,"f").mainFilename;!e&&u(this,Y,"f").path.extname(o)&&(o=u(this,Y,"f").path.dirname(o));let r=u(this,Y,"f").findUp(o,(a,l)=>{if(l.includes("package.json"))return"package.json"});Ue(r,void 0,u(this,Y,"f")),s=JSON.parse(u(this,Y,"f").readFileSync(r,"utf8"))}catch{}return u(this,gn,"f")[t]=s||{},u(this,gn,"f")[t]}[Rt](e,t){t=[].concat(t),t.forEach(s=>{s=this[Xo](s),u(this,z,"f")[e].push(s)})}[yn](e,t,s,o){this[Yo](e,t,s,o,(r,a,l)=>{u(this,z,"f")[r][a]=l})}[Vo](e,t,s,o){this[Yo](e,t,s,o,(r,a,l)=>{u(this,z,"f")[r][a]=(u(this,z,"f")[r][a]||[]).concat(l)})}[Yo](e,t,s,o,r){if(Array.isArray(s))s.forEach(a=>{e(a,o)});else if((a=>typeof a=="object")(s))for(let a of pn(s))e(a,s[a]);else r(t,this[Xo](s),o)}[Xo](e){return e==="__proto__"?"___proto___":e}[Ko](e,t){return this[yn](this[Ko].bind(this),"key",e,t),this}[Jo](){var e,t,s,o,r,a,l,c,m,d,p,f;let h=u(this,Es,"f").pop();Ue(h,void 0,u(this,Y,"f"));let I;e=this,t=this,s=this,o=this,r=this,a=this,l=this,c=this,m=this,d=this,p=this,f=this,{options:{set value(S){F(e,z,S,"f")}}.value,configObjects:I,exitProcess:{set value(S){F(t,rt,S,"f")}}.value,groups:{set value(S){F(s,mt,S,"f")}}.value,output:{set value(S){F(o,Re,S,"f")}}.value,exitError:{set value(S){F(r,kt,S,"f")}}.value,hasOutput:{set value(S){F(a,et,S,"f")}}.value,parsed:this.parsed,strict:{set value(S){F(l,Vt,S,"f")}}.value,strictCommands:{set value(S){F(c,Yt,S,"f")}}.value,strictOptions:{set value(S){F(m,Xt,S,"f")}}.value,completionCommand:{set value(S){F(d,Qe,S,"f")}}.value,parseFn:{set value(S){F(p,tt,S,"f")}}.value,parseContext:{set value(S){F(f,Ht,S,"f")}}.value}=h,u(this,z,"f").configObjects=I,u(this,Z,"f").unfreeze(),u(this,Ee,"f").unfreeze(),u(this,_e,"f").unfreeze(),u(this,at,"f").unfreeze()}[Jl](e,t){return zt(t,s=>(e(s),s))}getInternalMethods(){return{getCommandInstance:this[Zl].bind(this),getContext:this[Ql].bind(this),getHasOutput:this[ec].bind(this),getLoggerInstance:this[tc].bind(this),getParseContext:this[nc].bind(this),getParserConfiguration:this[Kt].bind(this),getUsageConfiguration:this[Yl].bind(this),getUsageInstance:this[sc].bind(this),getValidationInstance:this[oc].bind(this),hasParseCallback:this[Is].bind(this),isGlobalContext:this[ic].bind(this),postProcess:this[Jt].bind(this),reset:this[Zo].bind(this),runValidation:this[Qo].bind(this),runYargsParserAndExecuteCommands:this[Fn].bind(this),setHasOutput:this[ac].bind(this)}}[Zl](){return u(this,_e,"f")}[Ql](){return u(this,jn,"f")}[ec](){return u(this,et,"f")}[tc](){return u(this,hn,"f")}[nc](){return u(this,Ht,"f")||{}}[sc](){return u(this,Z,"f")}[oc](){return u(this,Ee,"f")}[Is](){return!!u(this,tt,"f")}[ic](){return u(this,Ss,"f")}[Jt](e,t,s,o){return s||ge(e)||(t||(e=this[Wl](e)),(this[Kt]()["parse-positional-numbers"]||this[Kt]()["parse-positional-numbers"]===void 0)&&(e=this[Kl](e)),o&&(e=Gt(e,this,u(this,at,"f").getMiddleware(),!1))),e}[Zo](e={}){F(this,z,u(this,z,"f")||{},"f");let t={};t.local=u(this,z,"f").local||[],t.configObjects=u(this,z,"f").configObjects||[];let s={};t.local.forEach(a=>{s[a]=!0,(e[a]||[]).forEach(l=>{s[l]=!0})}),Object.assign(u(this,Bt,"f"),Object.keys(u(this,mt,"f")).reduce((a,l)=>{let c=u(this,mt,"f")[l].filter(m=>!(m in s));return c.length>0&&(a[l]=c),a},{})),F(this,mt,{},"f");let o=["array","boolean","string","skipValidation","count","normalize","number","hiddenOptions"],r=["narg","key","alias","default","defaultDescription","config","choices","demandedOptions","demandedCommands","deprecatedOptions"];return o.forEach(a=>{t[a]=(u(this,z,"f")[a]||[]).filter(l=>!s[l])}),r.forEach(a=>{t[a]=Tt(u(this,z,"f")[a],l=>!s[l])}),t.envPrefix=u(this,z,"f").envPrefix,F(this,z,t,"f"),F(this,Z,u(this,Z,"f")?u(this,Z,"f").reset(s):$l(this,u(this,Y,"f")),"f"),F(this,Ee,u(this,Ee,"f")?u(this,Ee,"f").reset(s):Gl(this,u(this,Z,"f"),u(this,Y,"f")),"f"),F(this,_e,u(this,_e,"f")?u(this,_e,"f").reset():Pl(u(this,Z,"f"),u(this,Ee,"f"),u(this,at,"f"),u(this,Y,"f")),"f"),u(this,it,"f")||F(this,it,jl(this,u(this,Z,"f"),u(this,_e,"f"),u(this,Y,"f")),"f"),u(this,at,"f").reset(),F(this,Qe,null,"f"),F(this,Re,"","f"),F(this,kt,null,"f"),F(this,et,!1,"f"),this.parsed=!1,this}[rc](e,t){return u(this,Y,"f").path.relative(e,t)}[Fn](e,t,s,o=0,r=!1){let a=!!s||r;e=e||u(this,Pt,"f"),u(this,z,"f").__=u(this,Y,"f").y18n.__,u(this,z,"f").configuration=this[Kt]();let l=!!u(this,z,"f").configuration["populate--"],c=Object.assign({},u(this,z,"f").configuration,{"populate--":!0}),m=u(this,Y,"f").Parser.detailed(e,Object.assign({},u(this,z,"f"),{configuration:{"parse-positional-numbers":!1,...c}})),d=Object.assign(m.argv,u(this,Ht,"f")),p,f=m.aliases,h=!1,I=!1;Object.keys(d).forEach(S=>{S===u(this,lt,"f")&&d[S]?h=!0:S===u(this,pt,"f")&&d[S]&&(I=!0)}),d.$0=this.$0,this.parsed=m,o===0&&u(this,Z,"f").clearCachedHelpMessage();try{if(this[Ho](),t)return this[Jt](d,l,!!s,!1);u(this,lt,"f")&&[u(this,lt,"f")].concat(f[u(this,lt,"f")]||[]).filter(v=>v.length>1).includes(""+d._[d._.length-1])&&(d._.pop(),h=!0),F(this,Ss,!1,"f");let S=u(this,_e,"f").getCommands(),x=u(this,it,"f").completionKey in d,k=h||x||r;if(d._.length){if(S.length){let M;for(let v=o||0,b;d._[v]!==void 0;v++)if(b=String(d._[v]),S.includes(b)&&b!==u(this,Qe,"f")){let P=u(this,_e,"f").runCommand(b,this,m,v+1,r,h||I||r);return this[Jt](P,l,!!s,!1)}else if(!M&&b!==u(this,Qe,"f")){M=b;break}!u(this,_e,"f").hasDefaultCommand()&&u(this,As,"f")&&M&&!k&&u(this,Ee,"f").recommendCommands(M,S)}u(this,Qe,"f")&&d._.includes(u(this,Qe,"f"))&&!x&&(u(this,rt,"f")&&Mt(!0),this.showCompletionScript(),this.exit(0))}if(u(this,_e,"f").hasDefaultCommand()&&!k){let M=u(this,_e,"f").runCommand(null,this,m,0,r,h||I||r);return this[Jt](M,l,!!s,!1)}if(x){u(this,rt,"f")&&Mt(!0),e=[].concat(e);let M=e.slice(e.indexOf(`--${u(this,it,"f").completionKey}`)+1);return u(this,it,"f").getCompletion(M,(v,b)=>{if(v)throw new he(v.message);(b||[]).forEach(P=>{u(this,hn,"f").log(P)}),this.exit(0)}),this[Jt](d,!l,!!s,!1)}if(u(this,et,"f")||(h?(u(this,rt,"f")&&Mt(!0),a=!0,this.showHelp("log"),this.exit(0)):I&&(u(this,rt,"f")&&Mt(!0),a=!0,u(this,Z,"f").showVersion("log"),this.exit(0))),!a&&u(this,z,"f").skipValidation.length>0&&(a=Object.keys(d).some(M=>u(this,z,"f").skipValidation.indexOf(M)>=0&&d[M]===!0)),!a){if(m.error)throw new he(m.error.message);if(!x){let M=this[Qo](f,{},m.error);s||(p=Gt(d,this,u(this,at,"f").getMiddleware(),!0)),p=this[Jl](M,p??d),ge(p)&&!s&&(p=p.then(()=>Gt(d,this,u(this,at,"f").getMiddleware(),!1)))}}}catch(S){if(S instanceof he)u(this,Z,"f").fail(S.message,S);else throw S}return this[Jt](p??d,l,!!s,!0)}[Qo](e,t,s,o){let r={...this.getDemandedOptions()};return a=>{if(s)throw new he(s.message);u(this,Ee,"f").nonOptionCount(a),u(this,Ee,"f").requiredArguments(a,r);let l=!1;u(this,Yt,"f")&&(l=u(this,Ee,"f").unknownCommands(a)),u(this,Vt,"f")&&!l?u(this,Ee,"f").unknownArguments(a,e,t,!!o):u(this,Xt,"f")&&u(this,Ee,"f").unknownArguments(a,e,{},!1,!1),u(this,Ee,"f").limitedChoices(a),u(this,Ee,"f").implications(a),u(this,Ee,"f").conflicting(a)}}[ac](){F(this,et,!0,"f")}[Zt](e){if(typeof e=="string")u(this,z,"f").key[e]=!0;else for(let t of e)u(this,z,"f").key[t]=!0}};function Rl(n){return!!n&&typeof n.getInternalMethods=="function"}var sm=lc(Do),ti=sm;import Ie from"node:process";import*as _n from"node:path";async function X(n=0){await de(),process.exit(n)}async function om(n,e,t,s){let{scope:o,transport:r,env:a,header:l,timeout:c,trust:m,description:d,includeTools:p,excludeTools:f}=s,h=te(process.cwd()),I=h.workspace.path===h.user.path;o==="project"&&I&&(y.error("Error: Please use --scope user to edit settings in the home directory."),process.exit(1));let S=o==="user"?"User":"Workspace",x={},k=l?.reduce((P,ee)=>{let[Q,...H]=ee.split(":"),K=H.join(":").trim();return Q.trim()&&K&&(P[Q.trim()]=K),P},{});switch(r){case"sse":x={url:e,type:"sse",headers:k,timeout:c,trust:m,description:d,includeTools:p,excludeTools:f};break;case"http":x={url:e,type:"http",headers:k,timeout:c,trust:m,description:d,includeTools:p,excludeTools:f};break;case"stdio":default:x={command:e,args:t?.map(String),env:a?.reduce((P,ee)=>{let[Q,H]=ee.split("=");return Q&&H&&(P[Q]=H),P},{}),timeout:c,trust:m,description:d,includeTools:p,excludeTools:f};break}let v=h.forScope(S).settings.mcpServers||{},b=!!v[n];b&&y.log(`MCP server "${n}" is already configured within ${o} settings.`),v[n]=x,h.setValue(S,"mcpServers",v),b?y.log(`MCP server "${n}" updated in ${o} settings.`):y.log(`MCP server "${n}" added to ${o} settings. (${r})`)}var cc={command:"add <name> <commandOrUrl> [args...]",describe:"Add a server",builder:n=>n.usage("Usage: gemini mcp add [options] <name> <commandOrUrl> [args...]").parserConfiguration({"unknown-options-as-args":!0,"populate--":!0}).positional("name",{describe:"Name of the server",type:"string",demandOption:!0}).positional("commandOrUrl",{describe:"Command (stdio) or URL (sse, http)",type:"string",demandOption:!0}).option("scope",{alias:"s",describe:"Configuration scope (user or project)",type:"string",default:"project",choices:["user","project"]}).option("transport",{alias:["t","type"],describe:"Transport type (stdio, sse, http)",type:"string",default:"stdio",choices:["stdio","sse","http"]}).option("env",{alias:"e",describe:"Set environment variables (e.g. -e KEY=value)",type:"array",string:!0,nargs:1}).option("header",{alias:"H",describe:'Set HTTP headers for SSE and HTTP transports (e.g. -H "X-Api-Key: abc123" -H "Authorization: Bearer abc123")',type:"array",string:!0,nargs:1}).option("timeout",{describe:"Set connection timeout in milliseconds",type:"number"}).option("trust",{describe:"Trust the server (bypass all tool call confirmation prompts)",type:"boolean"}).option("description",{describe:"Set the description for the server",type:"string"}).option("include-tools",{describe:"A comma-separated list of tools to include",type:"array",string:!0}).option("exclude-tools",{describe:"A comma-separated list of tools to exclude",type:"array",string:!0}).middleware(e=>{if(e["--"]){let t=e.args||[];e.args=[...t,...e["--"]]}}),handler:async n=>{await om(n.name,n.commandOrUrl,n.args,{scope:n.scope,transport:n.transport,env:n.env,header:n.header,timeout:n.timeout,trust:n.trust,description:n.description,includeTools:n.includeTools,excludeTools:n.excludeTools}),await X()}};async function im(n,e){let{scope:t}=e,s=t==="user"?"User":"Workspace",o=te(),a=o.forScope(s).settings.mcpServers||{};if(!a[n]){y.log(`Server "${n}" not found in ${t} settings.`);return}delete a[n],o.setValue(s,"mcpServers",a),y.log(`Server "${n}" removed from ${t} settings.`)}var dc={command:"remove <name>",describe:"Remove a server",builder:n=>n.usage("Usage: gemini mcp remove [options] <name>").positional("name",{describe:"Name of the server",type:"string",demandOption:!0}).option("scope",{alias:"s",describe:"Configuration scope (user or project)",type:"string",default:"project",choices:["user","project"]}),handler:async n=>{await im(n.name,{scope:n.scope}),await X()}};var Ct=ze(wt(),1);async function Ts(n){n||(n=te().merged);let t=await new ue({settings:n,workspaceDir:process.cwd(),requestConsent:be,requestSetting:Oe}).loadExtensions(),s={...n.mcpServers};for(let a of t)Object.entries(a.mcpServers||{}).forEach(([l,c])=>{s[l]||(s[l]={...c,extension:a})});let o=n.admin?.mcp?.config;return ss(s,o)}async function rm(n,e,t,s){if(!!e.command&&!t)return nt.DISCONNECTED;let r=new Dr({name:"mcp-test-client",version:"0.0.1"}),a={sanitizationConfig:{enableEnvironmentVariableRedaction:!0,allowedEnvironmentVariables:[],blockedEnvironmentVariables:s.advanced.excludedEnvVars},emitMcpDiagnostic:(c,m,d,p)=>{c==="error"?y.error(Ct.default.red(`Error${p?` (${p})`:""}: ${m}`),d):c==="warning"?y.warn(Ct.default.yellow(`Warning${p?` (${p})`:""}: ${m}`),d):y.log(m,d)},isTrustedFolder:()=>t},l;try{l=await oa(n,e,!1,a)}catch{return await r.close(),nt.DISCONNECTED}try{return await r.connect(l,{timeout:5e3}),await r.ping(),await r.close(),nt.CONNECTED}catch{return await l.close(),nt.DISCONNECTED}}async function am(n,e,t,s){let o=st.getInstance(),r=await Rn(n,{adminMcpEnabled:s.admin?.mcp?.enabled??!0,allowedList:s.mcp?.allowed,excludedList:s.mcp?.excluded,enablement:o.getEnablementCallbacks()});return r.allowed?rm(n,e,t,s):r.blockType==="admin"||r.blockType==="allowlist"||r.blockType==="excludelist"?nt.BLOCKED:nt.DISABLED}async function lm(n){let e=n??te(),t=e.merged,{mcpServers:s,blockedServerNames:o}=await Ts(t),r=Object.keys(s);if(o.length>0){let a=ns(o,void 0);y.log(Ct.default.yellow(a+`
67
67
  `))}if(r.length===0){o.length===0&&y.log("No MCP servers configured.");return}y.log(`Configured MCP servers:
68
- `);for(let a of r){let l=s[a],c=await np(a,l,e.isTrusted,t),p="",d="";switch(c){case nt.CONNECTED:p=Ct.default.green("\u2713"),d="Connected";break;case nt.CONNECTING:p=Ct.default.yellow("\u2026"),d="Connecting";break;case nt.BLOCKED:p=Ct.default.red("\u26D4"),d="Blocked";break;case nt.DISABLED:p=Ct.default.gray("\u25CB"),d="Disabled";break;case nt.DISCONNECTED:default:p=Ct.default.red("\u2717"),d="Disconnected";break}let m=a+(l.extension?.name?` (from ${l.extension.name})`:"")+": ";if(l.httpUrl)m+=`${l.httpUrl} (http)`;else if(l.url){let f=l.type||"http";m+=`${l.url} (${f})`}else l.command&&(m+=`${l.command} ${l.args?.join(" ")||""} (stdio)`);y.log(`${p} ${m} - ${d}`)}}var rc={command:"list",describe:"List all configured MCP servers",handler:async n=>{await sp(n.loadedSettings),await X()}};var Ts="\x1B[32m",op="\x1B[33m",Qo="\x1B[31m",Rt="\x1B[0m";async function ip(n){let e=st.getInstance(),t=dn(n.name),s=te(),o=await Is();if(!Object.keys(o).map(dn).includes(t)){y.log(`${Qo}Error:${Rt} Server '${n.name}' not found. Use 'gemini mcp' to see available servers.`);return}let a=await Pn(t,{adminMcpEnabled:s.merged.admin?.mcp?.enabled??!0,allowedList:s.merged.mcp?.allowed,excludedList:s.merged.mcp?.excluded});if(!a.allowed&&(a.blockType==="allowlist"||a.blockType==="excludelist")){y.log(`${Qo}Error:${Rt} ${a.reason}`);return}n.session?(e.clearSessionDisable(t),y.log(`${Ts}\u2713${Rt} Session disable cleared for '${t}'.`)):(await e.enable(t),y.log(`${Ts}\u2713${Rt} MCP server '${t}' enabled.`)),a.blockType==="admin"&&y.log(`${op}Warning:${Rt} MCP servers are disabled by administrator.`)}async function rp(n){let e=st.getInstance(),t=dn(n.name),s=await Is();if(!Object.keys(s).map(dn).includes(t)){y.log(`${Qo}Error:${Rt} Server '${n.name}' not found. Use 'gemini mcp' to see available servers.`);return}n.session?(e.disableForSession(t),y.log(`${Ts}\u2713${Rt} MCP server '${t}' disabled for this session.`)):(await e.disable(t),y.log(`${Ts}\u2713${Rt} MCP server '${t}' disabled.`))}var ac={command:"enable <name>",describe:"Enable an MCP server",builder:n=>n.positional("name",{describe:"MCP server name to enable",type:"string",demandOption:!0}).option("session",{describe:"Clear session-only disable",type:"boolean",default:!1}),handler:async n=>{await ip(n),await X()}},lc={command:"disable <name>",describe:"Disable an MCP server",builder:n=>n.positional("name",{describe:"MCP server name to disable",type:"string",demandOption:!0}).option("session",{describe:"Disable for current session only",type:"boolean",default:!1}),handler:async n=>{await rp(n),await X()}};import Ms from"node:process";var Fn;function ap(n){Fn=n}async function cc(n){if(!Fn)return;let e=n.admin,t=Fn.commandName;t==="mcp"&&e?.mcp?.enabled===!1&&(q.emitFeedback("error",an("MCP",void 0)),await de(),Ms.exit(Me.FATAL_CONFIG_ERROR)),t==="extensions"&&e?.extensions?.enabled===!1&&(q.emitFeedback("error",an("Extensions",void 0)),await de(),Ms.exit(Me.FATAL_CONFIG_ERROR)),t==="skills"&&e?.skills?.enabled===!1&&(q.emitFeedback("error",an("Agent skills",void 0)),await de(),Ms.exit(Me.FATAL_CONFIG_ERROR));let s={...Fn.argv,settings:n};await Fn.handler(s),await de(),Ms.exit(Me.SUCCESS)}function we(n,e){return{...n,handler:t=>{ap({handler:n.handler,argv:t,commandName:e||"unknown"})}}}var ei={command:"mcp",describe:"Manage MCP servers",builder:n=>n.middleware(e=>{ft(),e.isCommand=!0}).command(we(oc,"mcp")).command(we(ic,"mcp")).command(we(rc,"mcp")).command(we(ac,"mcp")).command(we(lc,"mcp")).demandCommand(1,"You need at least one command before continuing.").version(!1),handler:()=>{}};var St=ze(wt(),1);import*as dc from"node:path";async function lp(n){try{let{source:e}=n,t=await as(e,{ref:n.ref,autoUpdate:n.autoUpdate,allowPreRelease:n.allowPreRelease}),s=process.cwd(),o=te(s).merged;if(t.type==="local"||t.type==="link"){let c=dc.resolve(e),p=gr(c);if(t.source=c,cn(o,c).isTrusted!==!0){let m=await ma.discover(p),f=m.commands.length>0||m.mcps.length>0||m.hooks.length>0||m.skills.length>0||m.settings.length>0,h=["",St.default.bold("Do you trust the files in this folder?"),"",`The extension source at "${c}" is not trusted.`,"","Trusting a folder allows Gemini CLI to load its local configurations,","including custom commands, hooks, MCP servers, agent skills, and","settings. These configurations could execute code on your behalf or","change the behavior of the CLI.",""];if(m.discoveryErrors.length>0){h.push(St.default.red("\u274C Discovery Errors:"));for(let E of m.discoveryErrors)h.push(St.default.red(` \u2022 ${E}`));h.push("")}if(m.securityWarnings.length>0){h.push(St.default.yellow("\u26A0\uFE0F Security Warnings:"));for(let E of m.securityWarnings)h.push(St.default.yellow(` \u2022 ${E}`));h.push("")}if(f){h.push(St.default.bold("This folder contains:"));let E=[{label:"Commands",items:m.commands??[]},{label:"MCP Servers",items:m.mcps??[]},{label:"Hooks",items:m.hooks??[]},{label:"Skills",items:m.skills??[]},{label:"Agents",items:m.agents??[]},{label:"Setting overrides",items:m.settings??[]}].filter(x=>x.items.length>0);for(let x of E){h.push(` \u2022 ${St.default.bold(x.label)} (${x.items.length}):`);for(let k of x.items)h.push(` - ${k}`)}h.push("")}if(h.push(St.default.yellow("Do you want to trust this folder and continue with the installation? [y/N]: ")),await Ra(h.join(`
69
- `),!1))await is().setValue(p,"TRUST_FOLDER");else throw new Error(`Installation aborted: Folder "${c}" is not trusted.`)}}let r=n.consent?()=>Promise.resolve(!0):be;n.consent&&(y.log("You have consented to the following:"),y.log(rs));let a=new ue({workspaceDir:s,requestConsent:r,requestSetting:n.skipSettings?null:Oe,settings:o});await a.loadExtensions();let l=await a.installOrUpdateExtension(t);y.log(`Extension "${l.name}" installed successfully and enabled.`)}catch(e){y.error(B(e)),process.exit(1)}}var uc={command:"install <source> [--auto-update] [--pre-release]",describe:"Installs an extension from a git repository URL or a local path.",builder:n=>n.positional("source",{describe:"The github URL or local path of the extension to install.",type:"string",demandOption:!0}).option("ref",{describe:"The git ref to install from.",type:"string"}).option("auto-update",{describe:"Enable auto-update for this extension.",type:"boolean"}).option("pre-release",{describe:"Enable pre-release versions for this extension.",type:"boolean"}).option("consent",{describe:"Acknowledge the security risks of installing an extension and skip the confirmation prompt.",type:"boolean",default:!1}).option("skip-settings",{describe:"Skip the configuration on install process.",type:"boolean",default:!1}).check(e=>{if(!e.source)throw new Error("The source argument must be provided.");return!0}),handler:async n=>{await lp({source:n.source,ref:n.ref,autoUpdate:n["auto-update"],allowPreRelease:n["pre-release"],consent:n.consent,skipSettings:n["skip-settings"]}),await X()}};async function cp(n){try{let e=process.cwd(),t=new ue({workspaceDir:e,requestConsent:be,requestSetting:Oe,settings:te(e).merged});await t.loadExtensions();let s=[];if(n.all?s=t.getExtensions().map(r=>r.name):n.names&&(s=[...new Set(n.names)]),s.length===0){n.all&&y.log("No extensions currently installed.");return}let o=[];for(let r of s)try{await t.uninstallExtension(r,!1),y.log(`Extension "${r}" successfully uninstalled.`)}catch(a){o.push({name:r,error:B(a)})}if(o.length>0){for(let{name:r,error:a}of o)y.error(`Failed to uninstall "${r}": ${a}`);process.exit(1)}}catch(e){y.error(B(e)),process.exit(1)}}var pc={command:"uninstall [names..]",describe:"Uninstalls one or more extensions.",builder:n=>n.positional("names",{describe:"The name(s) or source path(s) of the extension(s) to uninstall.",type:"string",array:!0}).option("all",{type:"boolean",describe:"Uninstall all installed extensions.",default:!1}).check(e=>{if(!e.all&&(!e.names||e.names.length===0))throw new Error("Please include at least one extension name to uninstall as a positional argument, or use the --all flag.");return!0}),handler:async n=>{await cp({names:n.names,all:n.all}),await X()}};async function dp(n){try{let e=process.cwd(),t=new ue({workspaceDir:e,requestConsent:be,requestSetting:Oe,settings:te(e).merged}),s=await t.loadExtensions();if(s.length===0){n?.outputFormat==="json"?y.log("[]"):y.log("No extensions installed.");return}n?.outputFormat==="json"?y.log(JSON.stringify(s,null,2)):y.log(s.map((o,r)=>t.toOutputString(o)).join(`
68
+ `);for(let a of r){let l=s[a],c=await am(a,l,e.isTrusted,t),m="",d="";switch(c){case nt.CONNECTED:m=Ct.default.green("\u2713"),d="Connected";break;case nt.CONNECTING:m=Ct.default.yellow("\u2026"),d="Connecting";break;case nt.BLOCKED:m=Ct.default.red("\u26D4"),d="Blocked";break;case nt.DISABLED:m=Ct.default.gray("\u25CB"),d="Disabled";break;case nt.DISCONNECTED:default:m=Ct.default.red("\u2717"),d="Disconnected";break}let p=a+(l.extension?.name?` (from ${l.extension.name})`:"")+": ";if(l.httpUrl)p+=`${l.httpUrl} (http)`;else if(l.url){let f=l.type||"http";p+=`${l.url} (${f})`}else l.command&&(p+=`${l.command} ${l.args?.join(" ")||""} (stdio)`);y.log(`${m} ${p} - ${d}`)}}var uc={command:"list",describe:"List all configured MCP servers",handler:async n=>{await lm(n.loadedSettings),await X()}};var Ms="\x1B[32m",cm="\x1B[33m",ni="\x1B[31m",Nt="\x1B[0m";async function dm(n){let e=st.getInstance(),t=un(n.name),s=te(),o=await Ts();if(!Object.keys(o).map(un).includes(t)){y.log(`${ni}Error:${Nt} Server '${n.name}' not found. Use 'gemini mcp' to see available servers.`);return}let a=await Rn(t,{adminMcpEnabled:s.merged.admin?.mcp?.enabled??!0,allowedList:s.merged.mcp?.allowed,excludedList:s.merged.mcp?.excluded});if(!a.allowed&&(a.blockType==="allowlist"||a.blockType==="excludelist")){y.log(`${ni}Error:${Nt} ${a.reason}`);return}n.session?(e.clearSessionDisable(t),y.log(`${Ms}\u2713${Nt} Session disable cleared for '${t}'.`)):(await e.enable(t),y.log(`${Ms}\u2713${Nt} MCP server '${t}' enabled.`)),a.blockType==="admin"&&y.log(`${cm}Warning:${Nt} MCP servers are disabled by administrator.`)}async function um(n){let e=st.getInstance(),t=un(n.name),s=await Ts();if(!Object.keys(s).map(un).includes(t)){y.log(`${ni}Error:${Nt} Server '${n.name}' not found. Use 'gemini mcp' to see available servers.`);return}n.session?(e.disableForSession(t),y.log(`${Ms}\u2713${Nt} MCP server '${t}' disabled for this session.`)):(await e.disable(t),y.log(`${Ms}\u2713${Nt} MCP server '${t}' disabled.`))}var mc={command:"enable <name>",describe:"Enable an MCP server",builder:n=>n.positional("name",{describe:"MCP server name to enable",type:"string",demandOption:!0}).option("session",{describe:"Clear session-only disable",type:"boolean",default:!1}),handler:async n=>{await dm(n),await X()}},pc={command:"disable <name>",describe:"Disable an MCP server",builder:n=>n.positional("name",{describe:"MCP server name to disable",type:"string",demandOption:!0}).option("session",{describe:"Disable for current session only",type:"boolean",default:!1}),handler:async n=>{await um(n),await X()}};import ks from"node:process";var Un;function mm(n){Un=n}async function fc(n){if(!Un)return;let e=n.admin,t=Un.commandName;t==="mcp"&&e?.mcp?.enabled===!1&&(q.emitFeedback("error",ln("MCP",void 0)),await de(),ks.exit(Me.FATAL_CONFIG_ERROR)),t==="extensions"&&e?.extensions?.enabled===!1&&(q.emitFeedback("error",ln("Extensions",void 0)),await de(),ks.exit(Me.FATAL_CONFIG_ERROR)),t==="skills"&&e?.skills?.enabled===!1&&(q.emitFeedback("error",ln("Agent skills",void 0)),await de(),ks.exit(Me.FATAL_CONFIG_ERROR));let s={...Un.argv,settings:n};await Un.handler(s),await de(),ks.exit(Me.SUCCESS)}function we(n,e){return{...n,handler:t=>{mm({handler:n.handler,argv:t,commandName:e||"unknown"})}}}var si={command:"mcp",describe:"Manage MCP servers",builder:n=>n.middleware(e=>{ft(),e.isCommand=!0}).command(we(cc,"mcp")).command(we(dc,"mcp")).command(we(uc,"mcp")).command(we(mc,"mcp")).command(we(pc,"mcp")).demandCommand(1,"You need at least one command before continuing.").version(!1),handler:()=>{}};var Et=ze(wt(),1);import*as hc from"node:path";async function pm(n){try{let{source:e}=n,t=await ls(e,{ref:n.ref,autoUpdate:n.autoUpdate,allowPreRelease:n.allowPreRelease}),s=process.cwd(),o=te(s).merged;if(t.type==="local"||t.type==="link"){let c=hc.resolve(e),m=wr(c);if(t.source=c,dn(o,c).isTrusted!==!0){let p=await ba.discover(m),f=p.commands.length>0||p.mcps.length>0||p.hooks.length>0||p.skills.length>0||p.settings.length>0,h=["",Et.default.bold("Do you trust the files in this folder?"),"",`The extension source at "${c}" is not trusted.`,"","Trusting a folder allows Gemini CLI to load its local configurations,","including custom commands, hooks, MCP servers, agent skills, and","settings. These configurations could execute code on your behalf or","change the behavior of the CLI.",""];if(p.discoveryErrors.length>0){h.push(Et.default.red("\u274C Discovery Errors:"));for(let S of p.discoveryErrors)h.push(Et.default.red(` \u2022 ${S}`));h.push("")}if(p.securityWarnings.length>0){h.push(Et.default.yellow("\u26A0\uFE0F Security Warnings:"));for(let S of p.securityWarnings)h.push(Et.default.yellow(` \u2022 ${S}`));h.push("")}if(f){h.push(Et.default.bold("This folder contains:"));let S=[{label:"Commands",items:p.commands??[]},{label:"MCP Servers",items:p.mcps??[]},{label:"Hooks",items:p.hooks??[]},{label:"Skills",items:p.skills??[]},{label:"Agents",items:p.agents??[]},{label:"Setting overrides",items:p.settings??[]}].filter(x=>x.items.length>0);for(let x of S){h.push(` \u2022 ${Et.default.bold(x.label)} (${x.items.length}):`);for(let k of x.items)h.push(` - ${k}`)}h.push("")}if(h.push(Et.default.yellow("Do you want to trust this folder and continue with the installation? [y/N]: ")),await ja(h.join(`
69
+ `),!1))await rs().setValue(m,"TRUST_FOLDER");else throw new Error(`Installation aborted: Folder "${c}" is not trusted.`)}}let r=n.consent?()=>Promise.resolve(!0):be;n.consent&&(y.log("You have consented to the following:"),y.log(as));let a=new ue({workspaceDir:s,requestConsent:r,requestSetting:n.skipSettings?null:Oe,settings:o});await a.loadExtensions();let l=await a.installOrUpdateExtension(t);y.log(`Extension "${l.name}" installed successfully and enabled.`)}catch(e){y.error(B(e)),process.exit(1)}}var gc={command:"install <source> [--auto-update] [--pre-release]",describe:"Installs an extension from a git repository URL or a local path.",builder:n=>n.positional("source",{describe:"The github URL or local path of the extension to install.",type:"string",demandOption:!0}).option("ref",{describe:"The git ref to install from.",type:"string"}).option("auto-update",{describe:"Enable auto-update for this extension.",type:"boolean"}).option("pre-release",{describe:"Enable pre-release versions for this extension.",type:"boolean"}).option("consent",{describe:"Acknowledge the security risks of installing an extension and skip the confirmation prompt.",type:"boolean",default:!1}).option("skip-settings",{describe:"Skip the configuration on install process.",type:"boolean",default:!1}).check(e=>{if(!e.source)throw new Error("The source argument must be provided.");return!0}),handler:async n=>{await pm({source:n.source,ref:n.ref,autoUpdate:n["auto-update"],allowPreRelease:n["pre-release"],consent:n.consent,skipSettings:n["skip-settings"]}),await X()}};async function fm(n){try{let e=process.cwd(),t=new ue({workspaceDir:e,requestConsent:be,requestSetting:Oe,settings:te(e).merged});await t.loadExtensions();let s=[];if(n.all?s=t.getExtensions().map(r=>r.name):n.names&&(s=[...new Set(n.names)]),s.length===0){n.all&&y.log("No extensions currently installed.");return}let o=[];for(let r of s)try{await t.uninstallExtension(r,!1),y.log(`Extension "${r}" successfully uninstalled.`)}catch(a){o.push({name:r,error:B(a)})}if(o.length>0){for(let{name:r,error:a}of o)y.error(`Failed to uninstall "${r}": ${a}`);process.exit(1)}}catch(e){y.error(B(e)),process.exit(1)}}var yc={command:"uninstall [names..]",describe:"Uninstalls one or more extensions.",builder:n=>n.positional("names",{describe:"The name(s) or source path(s) of the extension(s) to uninstall.",type:"string",array:!0}).option("all",{type:"boolean",describe:"Uninstall all installed extensions.",default:!1}).check(e=>{if(!e.all&&(!e.names||e.names.length===0))throw new Error("Please include at least one extension name to uninstall as a positional argument, or use the --all flag.");return!0}),handler:async n=>{await fm({names:n.names,all:n.all}),await X()}};async function hm(n){try{let e=process.cwd(),t=new ue({workspaceDir:e,requestConsent:be,requestSetting:Oe,settings:te(e).merged}),s=await t.loadExtensions();if(s.length===0){n?.outputFormat==="json"?y.log("[]"):y.log("No extensions installed.");return}n?.outputFormat==="json"?y.log(JSON.stringify(s,null,2)):y.log(s.map((o,r)=>t.toOutputString(o)).join(`
70
70
 
71
- `))}catch(e){y.error(B(e)),process.exit(1)}}var mc={command:"list",describe:"Lists installed extensions.",builder:n=>n.option("output-format",{alias:"o",type:"string",describe:"The format of the CLI output.",choices:["text","json"],default:"text"}),handler:async n=>{await dp({outputFormat:n["output-format"]}),await X()}};var up=n=>`Extension "${n.name}" successfully updated: ${n.originalVersion} \u2192 ${n.updatedVersion}.`;async function pp(n){let e=process.cwd(),t=te(e).merged,s=new ue({workspaceDir:e,requestConsent:be,requestSetting:Oe,settings:t}),o=await s.loadExtensions();if(n.name)try{let r=o.find(c=>c.name===n.name);if(!r){if(o.length===0){q.emitFeedback("error",`Extension "${n.name}" not found.
71
+ `))}catch(e){y.error(B(e)),process.exit(1)}}var bc={command:"list",describe:"Lists installed extensions.",builder:n=>n.option("output-format",{alias:"o",type:"string",describe:"The format of the CLI output.",choices:["text","json"],default:"text"}),handler:async n=>{await hm({outputFormat:n["output-format"]}),await X()}};var gm=n=>`Extension "${n.name}" successfully updated: ${n.originalVersion} \u2192 ${n.updatedVersion}.`;async function ym(n){let e=process.cwd(),t=te(e).merged,s=new ue({workspaceDir:e,requestConsent:be,requestSetting:Oe,settings:t}),o=await s.loadExtensions();if(n.name)try{let r=o.find(c=>c.name===n.name);if(!r){if(o.length===0){q.emitFeedback("error",`Extension "${n.name}" not found.
72
72
 
73
- No extensions installed.`);return}let c=o.map(p=>`${p.name} (${p.version})`).join(`
73
+ No extensions installed.`);return}let c=o.map(m=>`${m.name} (${m.version})`).join(`
74
74
  `);q.emitFeedback("error",`Extension "${n.name}" not found.
75
75
 
76
76
  Installed extensions:
77
77
  ${c}
78
78
 
79
- Run "gemini extensions list" for details.`);return}if(!r.installMetadata){y.log(`Unable to install extension "${n.name}" due to missing install metadata`);return}let a=await Pa(r,s);if(a!=="update available"){y.log(`Extension "${n.name}" is already up to date.`);return}let l=await Fa(r,s,a,()=>{},t.experimental?.extensionReloading);l.originalVersion!==l.updatedVersion?y.log(`Extension "${n.name}" successfully updated: ${l.originalVersion} \u2192 ${l.updatedVersion}.`):y.log(`Extension "${n.name}" is already up to date.`)}catch(r){y.error(B(r))}if(n.all)try{let r=new Map;await Ga(o,s,l=>{l.type==="SET_STATE"&&r.set(l.payload.name,{status:l.payload.state})});let a=await Ua(o,r,s,()=>{});if(a=a.filter(l=>l.originalVersion!==l.updatedVersion),a.length===0){y.log("No extensions to update.");return}y.log(a.map(l=>up(l)).join(`
80
- `))}catch(r){y.error(B(r))}}var fc={command:"update [<name>] [--all]",describe:"Updates all extensions or a named extension to the latest version.",builder:n=>n.positional("name",{describe:"The name of the extension to update.",type:"string"}).option("all",{describe:"Update all extensions.",type:"boolean"}).conflicts("name","all").check(e=>{if(!e.all&&!e.name)throw new Error("Either an extension name or --all must be provided");return!0}),handler:async n=>{await pp({name:n.name,all:n.all}),await X()}};async function mp(n){let e=process.cwd(),t=new ue({workspaceDir:e,requestConsent:be,requestSetting:Oe,settings:te(e).merged});await t.loadExtensions();try{n.scope?.toLowerCase()==="workspace"?await t.disableExtension(n.name,"Workspace"):await t.disableExtension(n.name,"User"),y.log(`Extension "${n.name}" successfully disabled for scope "${n.scope}".`)}catch(s){y.error(B(s)),process.exit(1)}}var hc={command:"disable [--scope] <name>",describe:"Disables an extension.",builder:n=>n.positional("name",{describe:"The name of the extension to disable.",type:"string"}).option("scope",{describe:"The scope to disable the extension in.",type:"string",default:"User"}).check(e=>{if(e.scope&&!Object.values(Je).map(t=>t.toLowerCase()).includes(e.scope.toLowerCase()))throw new Error(`Invalid scope: ${e.scope}. Please use one of ${Object.values(Je).map(t=>t.toLowerCase()).join(", ")}.`);return!0}),handler:async n=>{await mp({name:n.name,scope:n.scope}),await X()}};async function fp(n){let e=process.cwd(),t=new ue({workspaceDir:e,requestConsent:be,requestSetting:Oe,settings:te(e).merged});await t.loadExtensions();try{n.scope?.toLowerCase()==="workspace"?await t.enableExtension(n.name,"Workspace"):await t.enableExtension(n.name,"User");let s=t.getExtensions().find(o=>o.name===n.name);if(s?.mcpServers){let r=await st.getInstance().autoEnableServers(Object.keys(s.mcpServers??{}));for(let a of r)y.log(`MCP server '${a}' was disabled - now enabled.`)}n.scope?y.log(`Extension "${n.name}" successfully enabled for scope "${n.scope}".`):y.log(`Extension "${n.name}" successfully enabled in all scopes.`)}catch(s){throw new on(B(s))}}var gc={command:"enable [--scope] <name>",describe:"Enables an extension.",builder:n=>n.positional("name",{describe:"The name of the extension to enable.",type:"string"}).option("scope",{describe:"The scope to enable the extension in. If not set, will be enabled in all scopes.",type:"string"}).check(e=>{if(e.scope&&!Object.values(Je).map(t=>t.toLowerCase()).includes(e.scope.toLowerCase()))throw new Error(`Invalid scope: ${e.scope}. Please use one of ${Object.values(Je).map(t=>t.toLowerCase()).join(", ")}.`);return!0}),handler:async n=>{await fp({name:n.name,scope:n.scope}),await X()}};var yc=ze(wt(),1);async function hp(n){try{let e={source:n.path,type:"link"},t=n.consent?()=>Promise.resolve(!0):be;n.consent&&(y.log("You have consented to the following:"),y.log(rs));let s=process.cwd(),o=new ue({workspaceDir:s,requestConsent:t,requestSetting:Oe,settings:te(s).merged});await o.loadExtensions();let r=await o.installOrUpdateExtension(e);y.log(yc.default.green(`Extension "${r.name}" linked successfully and enabled.`))}catch(e){y.error(B(e)),process.exit(1)}}var bc={command:"link <path>",describe:"Links an extension from a local path. Updates made to the local path will always be reflected.",builder:n=>n.positional("path",{describe:"The name of the extension to link.",type:"string"}).option("consent",{describe:"Acknowledge the security risks of installing an extension and skip the confirmation prompt.",type:"boolean",default:!1}).check(e=>!0),handler:async n=>{await hp({path:n.path,consent:n.consent}),await X()}};import{access as gp,cp as yp,mkdir as bp,readdir as wc,writeFile as wp}from"node:fs/promises";import{join as Un,dirname as xp,basename as Cp}from"node:path";import{fileURLToPath as Sp}from"node:url";var Ep=Sp(import.meta.url),_p=xp(Ep),xc=Un(_p,"examples");async function vp(n){try{return await gp(n),!0}catch{return!1}}async function Cc(n){if(await vp(n))throw new Error(`Path already exists: ${n}`);await bp(n,{recursive:!0})}async function Ap(n,e){await Cc(e);let t=Un(xc,n),s=await wc(t,{withFileTypes:!0});for(let o of s){let r=Un(t,o.name),a=Un(e,o.name);await yp(r,a,{recursive:!0})}}async function Op(n){if(n.template)await Ap(n.template,n.path),y.log(`Successfully created new extension from template "${n.template}" at ${n.path}.`);else{await Cc(n.path);let t={name:Cp(n.path),version:"1.0.0"};await wp(Un(n.path,"gemini-extension.json"),JSON.stringify(t,null,2)),y.log(`Successfully created new extension at ${n.path}.`)}y.log(`You can install this using "gemini extensions link ${n.path}" to test it out.`)}async function Ip(){return(await wc(xc,{withFileTypes:!0})).filter(e=>e.isDirectory()).map(e=>e.name)}var Sc={command:"new <path> [template]",describe:"Create a new extension from a boilerplate example.",builder:async n=>{let e=await Ip();return n.positional("path",{describe:"The path to create the extension in.",type:"string"}).positional("template",{describe:"The boilerplate template to use.",type:"string",choices:e})},handler:async n=>{await Op({path:n.path,template:n.template}),await X()}};var _c=ze(ou(),1);import*as Ec from"node:fs";import*as ti from"node:path";async function Tp(n){try{await Mp(n),y.log(`Extension ${n.path} has been successfully validated.`)}catch(e){y.error(B(e)),process.exit(1)}}async function Mp(n){let e=process.cwd(),t=new ue({workspaceDir:e,requestConsent:be,requestSetting:Oe,settings:te(e).merged}),s=ti.resolve(n.path),o=await t.loadExtensionConfig(s),r=[],a=[];if(o.contextFileName){let l=Array.isArray(o.contextFileName)?o.contextFileName:[o.contextFileName],c=[];for(let p of l){let d=ti.resolve(s,p);Ec.existsSync(d)||c.push(p)}c.length>0&&a.push(`The following context files referenced in gemini-extension.json are missing: ${c}`)}if(_c.default.valid(o.version)||r.push(`Warning: Version '${o.version}' does not appear to be standard semver (e.g., 1.0.0).`),r.length>0){y.warn("Validation warnings:");for(let l of r)y.warn(` - ${l}`)}if(a.length>0){y.error("Validation failed with the following errors:");for(let l of a)y.error(` - ${l}`);throw new Error("Extension validation failed.")}}var vc={command:"validate <path>",describe:"Validates an extension from a local path.",builder:n=>n.positional("path",{describe:"The path of the extension to validate.",type:"string",demandOption:!0}),handler:async n=>{await Tp({path:n.path}),await X()}};var Ac={command:"config [name] [setting]",describe:"Configure extension settings.",builder:n=>n.positional("name",{describe:"Name of the extension to configure.",type:"string"}).positional("setting",{describe:"The specific setting to configure (name or env var).",type:"string"}).option("scope",{describe:"The scope to set the setting in.",type:"string",choices:["user","workspace"],default:"user"}),handler:async n=>{let{name:e,setting:t,scope:s}=n;if(!(te(process.cwd()).merged.experimental?.extensionConfig??!0)){q.emitFeedback("error",'Extension configuration is currently disabled. Enable it by setting "experimental.extensionConfig" to true.'),await X();return}if(e&&(e.includes("/")||e.includes("\\")||e.includes(".."))){y.error('Invalid extension name. Names cannot contain path separators or "..".');return}let r=await $a();e&&t?await La(r,e,t,s):e?await Da(r,e,s):await ja(r,s),await X()}};var ni={command:"extensions <command>",aliases:["extension"],describe:"Manage Gemini CLI extensions.",builder:n=>n.middleware(e=>{ft(),e.isCommand=!0}).command(we(uc,"extensions")).command(we(pc,"extensions")).command(we(mc,"extensions")).command(we(fc,"extensions")).command(we(hc,"extensions")).command(we(gc,"extensions")).command(we(bc,"extensions")).command(we(Sc,"extensions")).command(we(vc,"extensions")).command(we(Ac,"extensions")).demandCommand(1,"You need at least one command before continuing.").version(!1),handler:()=>{}};var yn=ze(wt(),1);async function kp(n){let e=process.cwd(),t=te(e),s=await Zt(t.merged,"skills-list-session",{debug:!1},{cwd:e});await s.initialize();let o=s.getSkillManager(),r=n.all?o.getAllSkills():o.getAllSkills().filter(a=>!a.isBuiltin);if(r.sort((a,l)=>a.isBuiltin===l.isBuiltin?a.name.localeCompare(l.name):a.isBuiltin?1:-1),r.length===0){y.log("No skills discovered.");return}y.log(yn.default.bold("Discovered Agent Skills:")),y.log("");for(let a of r){let l=a.disabled?yn.default.red("[Disabled]"):yn.default.green("[Enabled]"),c=a.isBuiltin?yn.default.gray(" [Built-in]"):"";y.log(`${yn.default.bold(a.name)} ${l}${c}`),y.log(` Description: ${a.description}`),y.log(` Location: ${a.location}`),y.log("")}}var Oc={command:"list [--all]",describe:"Lists discovered agent skills.",builder:n=>n.option("all",{type:"boolean",description:"Show all skills, including built-in ones.",default:!1}),handler:async n=>{await kp({all:n.all}),await X()}};var si=ze(wt(),1);async function Pp(n){let{name:e}=n,t=process.cwd(),s=te(t),o=za(s,e),r=ls(o,(a,l)=>`${si.default.bold(a)} (${si.default.dim(l)})`);y.log(r)}var Ic={command:"enable <name>",describe:"Enables an agent skill.",builder:n=>n.positional("name",{describe:"The name of the skill to enable.",type:"string",demandOption:!0}),handler:async n=>{await Pp({name:n.name}),await X()}};var oi=ze(wt(),1);async function Rp(n){let{name:e,scope:t}=n,s=process.cwd(),o=te(s),r=Wa(o,e,t),a=ls(r,(l,c)=>`${oi.default.bold(l)} (${oi.default.dim(c)})`);y.log(a)}var Tc={command:"disable <name> [--scope]",describe:"Disables an agent skill.",builder:n=>n.positional("name",{describe:"The name of the skill to disable.",type:"string",demandOption:!0}).option("scope",{alias:"s",describe:"The scope to disable the skill in (user or workspace).",type:"string",default:"workspace",choices:["user","workspace"]}),handler:async n=>{let e=n.scope==="workspace"?"Workspace":"User";await Rp({name:n.name,scope:e}),await X()}};var ii=ze(wt(),1);async function Np(n){try{let{source:e,consent:t}=n,s=n.scope??"user",o=n.path,a=await qa(e,s,o,l=>{y.log(l)},async(l,c)=>t?(y.log("You have consented to the following:"),y.log(await kn(l,e,c)),!0):be(await kn(l,e,c)));for(let l of a)y.log(ii.default.green(`Successfully installed skill: ${ii.default.bold(l.name)} (scope: ${s}, location: ${l.location})`))}catch(e){y.error(B(e)),await X(1)}}var Mc={command:"install <source> [--scope] [--path]",describe:"Installs an agent skill from a git repository URL or a local path.",builder:n=>n.positional("source",{describe:"The git repository URL or local path of the skill to install.",type:"string",demandOption:!0}).option("scope",{describe:'The scope to install the skill into. Defaults to "user" (global).',choices:["user","workspace"],default:"user"}).option("path",{describe:"Sub-path within the repository to install from (only used for git repository sources).",type:"string"}).option("consent",{describe:"Acknowledge the security risks of installing a skill and skip the confirmation prompt.",type:"boolean",default:!1}).check(e=>{if(!e.source)throw new Error("The source argument must be provided.");return!0}),handler:async n=>{await Np({source:n.source,scope:n.scope,path:n.path,consent:n.consent}),await X()}};var kc=ze(wt(),1);async function $p(n){try{let{scope:e="user",consent:t}=n;await Ha(n.path,e,s=>y.log(s),async(s,o)=>{let r=await kn(s,n.path,o,!0);return t?(y.log("You have consented to the following:"),y.log(r),!0):be(r)}),y.log(kc.default.green(`
81
- Successfully linked skills.`))}catch(e){y.error(B(e)),await X(1)}}var Pc={command:"link <path>",describe:"Links an agent skill from a local path. Updates to the source will be reflected immediately.",builder:n=>n.positional("path",{describe:"The local path of the skill to link.",type:"string",demandOption:!0}).option("scope",{describe:'The scope to link the skill into. Defaults to "user" (global).',choices:["user","workspace"],default:"user"}).option("consent",{describe:"Acknowledge the security risks of linking a skill and skip the confirmation prompt.",type:"boolean",default:!1}).check(e=>{if(!e.path)throw new Error("The path argument must be provided.");return!0}),handler:async n=>{await $p({path:n.path,scope:n.scope,consent:n.consent}),await X()}};var ri=ze(wt(),1);async function Lp(n){try{let{name:e}=n,t=n.scope??"user",s=await Ba(e,t);s?y.log(ri.default.green(`Successfully uninstalled skill: ${ri.default.bold(e)} (scope: ${t}, location: ${s.location})`)):y.error(`Skill "${e}" is not installed in the ${t} scope.`)}catch(e){y.error(B(e)),await X(1)}}var Rc={command:"uninstall <name> [--scope]",describe:"Uninstalls an agent skill by name.",builder:n=>n.positional("name",{describe:"The name of the skill to uninstall.",type:"string",demandOption:!0}).option("scope",{describe:'The scope to uninstall the skill from. Defaults to "user" (global).',choices:["user","workspace"],default:"user"}).check(e=>{if(!e.name)throw new Error("The skill name must be provided.");return!0}),handler:async n=>{await Lp({name:n.name,scope:n.scope}),await X()}};var ai={command:"skills <command>",aliases:["skill"],describe:"Manage agent skills.",builder:n=>n.middleware(e=>{ft(),e.isCommand=!0}).command(we(Oc,"skills")).command(we(Ic,"skills")).command(we(Tc,"skills")).command(we(Mc,"skills")).command(we(Pc,"skills")).command(we(Rc,"skills")).demandCommand(1,"You need at least one command before continuing.").version(!1),handler:()=>{}};import*as bn from"node:fs";import*as ks from"node:path";var li=ze(su(),1);var Dp={PreToolUse:"BeforeTool",PostToolUse:"AfterTool",UserPromptSubmit:"BeforeAgent",Stop:"AfterAgent",SubAgentStop:"AfterAgent",SessionStart:"SessionStart",SessionEnd:"SessionEnd",PreCompact:"PreCompress",Notification:"Notification"},jp={Edit:"replace",Bash:"run_shell_command",Read:"read_file",Write:"write_file",Glob:"glob",Grep:"grep",LS:"ls"};function Fp(n){if(!n)return n;let e=n;for(let[t,s]of Object.entries(jp))e=e.replace(new RegExp(`\\b${t}\\b`,"g"),s);return e}function Up(n){if(!n||typeof n!="object")return n;let e=n,t={};return"command"in e&&(t.command=e.command,typeof t.command=="string"&&(t.command=t.command.replace(/\$CLAUDE_PROJECT_DIR/g,"$GEMINI_PROJECT_DIR"))),"type"in e&&e.type==="command"&&(t.type="command"),"timeout"in e&&typeof e.timeout=="number"&&(t.timeout=e.timeout),t}function Gp(n){if(!n||typeof n!="object")return{};let e=n,t={},s=e.hooks;if(!s||typeof s!="object")return{};for(let[o,r]of Object.entries(s)){let a=Dp[o]||o;if(!Array.isArray(r))continue;let l=r.map(c=>{if(!c||typeof c!="object")return c;let p=c,d={};return"matcher"in p&&typeof p.matcher=="string"&&(d.matcher=Fp(p.matcher)),"sequential"in p&&(d.sequential=p.sequential),"hooks"in p&&Array.isArray(p.hooks)&&(d.hooks=p.hooks.map(Up)),d});t[a]=l}return t}async function zp(){let n=process.cwd(),e=ks.join(n,".claude"),t=ks.join(e,"settings.json"),s=ks.join(e,"settings.local.json"),o=null,r="";if(bn.existsSync(s)){r=s;try{let d=bn.readFileSync(s,"utf-8");o=JSON.parse((0,li.default)(d))}catch(d){y.error(`Error reading ${s}: ${B(d)}`)}}else if(bn.existsSync(t)){r=t;try{let d=bn.readFileSync(t,"utf-8");o=JSON.parse((0,li.default)(d))}catch(d){y.error(`Error reading ${t}: ${B(d)}`)}}else{y.error("No Claude Code settings found in .claude directory. Expected settings.json or settings.local.json");return}if(!o)return;y.log(`Found Claude Code settings in: ${r}`);let a=Gp(o);if(Object.keys(a).length===0){y.log("No hooks found in Claude Code settings to migrate.");return}y.log(`Migrating ${Object.keys(a).length} hook event(s)...`);let l=te(n),p={...l.merged?.hooks||{},...a};try{l.setValue("Workspace","hooks",p),y.log("\u2713 Hooks successfully migrated to .gemini/settings.json"),y.log(`
82
- Migration complete! Please review the migrated hooks in .gemini/settings.json`)}catch(d){y.error(`Error saving migrated hooks: ${B(d)}`)}}var Nc={command:"migrate",describe:"Migrate hooks from Claude Code to Gemini CLI",builder:n=>n.option("from-claude",{describe:"Migrate from Claude Code hooks",type:"boolean",default:!1}),handler:async n=>{n.fromClaude?await zp():y.log(`Usage: gemini hooks migrate --from-claude
79
+ Run "gemini extensions list" for details.`);return}if(!r.installMetadata){y.log(`Unable to install extension "${n.name}" due to missing install metadata`);return}let a=await Da(r,s);if(a!=="update available"){y.log(`Extension "${n.name}" is already up to date.`);return}let l=await qa(r,s,a,()=>{},t.experimental?.extensionReloading);l.originalVersion!==l.updatedVersion?y.log(`Extension "${n.name}" successfully updated: ${l.originalVersion} \u2192 ${l.updatedVersion}.`):y.log(`Extension "${n.name}" is already up to date.`)}catch(r){y.error(B(r))}if(n.all)try{let r=new Map;await Ba(o,s,l=>{l.type==="SET_STATE"&&r.set(l.payload.name,{status:l.payload.state})});let a=await Ha(o,r,s,()=>{});if(a=a.filter(l=>l.originalVersion!==l.updatedVersion),a.length===0){y.log("No extensions to update.");return}y.log(a.map(l=>gm(l)).join(`
80
+ `))}catch(r){y.error(B(r))}}var wc={command:"update [<name>] [--all]",describe:"Updates all extensions or a named extension to the latest version.",builder:n=>n.positional("name",{describe:"The name of the extension to update.",type:"string"}).option("all",{describe:"Update all extensions.",type:"boolean"}).conflicts("name","all").check(e=>{if(!e.all&&!e.name)throw new Error("Either an extension name or --all must be provided");return!0}),handler:async n=>{await ym({name:n.name,all:n.all}),await X()}};async function bm(n){let e=process.cwd(),t=new ue({workspaceDir:e,requestConsent:be,requestSetting:Oe,settings:te(e).merged});await t.loadExtensions();try{n.scope?.toLowerCase()==="workspace"?await t.disableExtension(n.name,"Workspace"):await t.disableExtension(n.name,"User"),y.log(`Extension "${n.name}" successfully disabled for scope "${n.scope}".`)}catch(s){y.error(B(s)),process.exit(1)}}var xc={command:"disable [--scope] <name>",describe:"Disables an extension.",builder:n=>n.positional("name",{describe:"The name of the extension to disable.",type:"string"}).option("scope",{describe:"The scope to disable the extension in.",type:"string",default:"User"}).check(e=>{if(e.scope&&!Object.values(Je).map(t=>t.toLowerCase()).includes(e.scope.toLowerCase()))throw new Error(`Invalid scope: ${e.scope}. Please use one of ${Object.values(Je).map(t=>t.toLowerCase()).join(", ")}.`);return!0}),handler:async n=>{await bm({name:n.name,scope:n.scope}),await X()}};async function wm(n){let e=process.cwd(),t=new ue({workspaceDir:e,requestConsent:be,requestSetting:Oe,settings:te(e).merged});await t.loadExtensions();try{n.scope?.toLowerCase()==="workspace"?await t.enableExtension(n.name,"Workspace"):await t.enableExtension(n.name,"User");let s=t.getExtensions().find(o=>o.name===n.name);if(s?.mcpServers){let r=await st.getInstance().autoEnableServers(Object.keys(s.mcpServers??{}));for(let a of r)y.log(`MCP server '${a}' was disabled - now enabled.`)}n.scope?y.log(`Extension "${n.name}" successfully enabled for scope "${n.scope}".`):y.log(`Extension "${n.name}" successfully enabled in all scopes.`)}catch(s){throw new an(B(s))}}var Cc={command:"enable [--scope] <name>",describe:"Enables an extension.",builder:n=>n.positional("name",{describe:"The name of the extension to enable.",type:"string"}).option("scope",{describe:"The scope to enable the extension in. If not set, will be enabled in all scopes.",type:"string"}).check(e=>{if(e.scope&&!Object.values(Je).map(t=>t.toLowerCase()).includes(e.scope.toLowerCase()))throw new Error(`Invalid scope: ${e.scope}. Please use one of ${Object.values(Je).map(t=>t.toLowerCase()).join(", ")}.`);return!0}),handler:async n=>{await wm({name:n.name,scope:n.scope}),await X()}};var Ec=ze(wt(),1);async function xm(n){try{let e={source:n.path,type:"link"},t=n.consent?()=>Promise.resolve(!0):be;n.consent&&(y.log("You have consented to the following:"),y.log(as));let s=process.cwd(),o=new ue({workspaceDir:s,requestConsent:t,requestSetting:Oe,settings:te(s).merged});await o.loadExtensions();let r=await o.installOrUpdateExtension(e);y.log(Ec.default.green(`Extension "${r.name}" linked successfully and enabled.`))}catch(e){y.error(B(e)),process.exit(1)}}var Sc={command:"link <path>",describe:"Links an extension from a local path. Updates made to the local path will always be reflected.",builder:n=>n.positional("path",{describe:"The name of the extension to link.",type:"string"}).option("consent",{describe:"Acknowledge the security risks of installing an extension and skip the confirmation prompt.",type:"boolean",default:!1}).check(e=>!0),handler:async n=>{await xm({path:n.path,consent:n.consent}),await X()}};import{access as Cm,cp as Em,mkdir as Sm,readdir as _c,writeFile as _m}from"node:fs/promises";import{join as Gn,dirname as vm,basename as Am}from"node:path";import{fileURLToPath as Om}from"node:url";var Im=Om(import.meta.url),Tm=vm(Im),vc=Gn(Tm,"examples");async function Mm(n){try{return await Cm(n),!0}catch{return!1}}async function Ac(n){if(await Mm(n))throw new Error(`Path already exists: ${n}`);await Sm(n,{recursive:!0})}async function km(n,e){await Ac(e);let t=Gn(vc,n),s=await _c(t,{withFileTypes:!0});for(let o of s){let r=Gn(t,o.name),a=Gn(e,o.name);await Em(r,a,{recursive:!0})}}async function Pm(n){if(n.template)await km(n.template,n.path),y.log(`Successfully created new extension from template "${n.template}" at ${n.path}.`);else{await Ac(n.path);let t={name:Am(n.path),version:"1.0.0"};await _m(Gn(n.path,"gemini-extension.json"),JSON.stringify(t,null,2)),y.log(`Successfully created new extension at ${n.path}.`)}y.log(`You can install this using "gemini extensions link ${n.path}" to test it out.`)}async function Rm(){return(await _c(vc,{withFileTypes:!0})).filter(e=>e.isDirectory()).map(e=>e.name)}var Oc={command:"new <path> [template]",describe:"Create a new extension from a boilerplate example.",builder:async n=>{let e=await Rm();return n.positional("path",{describe:"The path to create the extension in.",type:"string"}).positional("template",{describe:"The boilerplate template to use.",type:"string",choices:e})},handler:async n=>{await Pm({path:n.path,template:n.template}),await X()}};var Tc=ze(cu(),1);import*as Ic from"node:fs";import*as oi from"node:path";async function Nm(n){try{await $m(n),y.log(`Extension ${n.path} has been successfully validated.`)}catch(e){y.error(B(e)),process.exit(1)}}async function $m(n){let e=process.cwd(),t=new ue({workspaceDir:e,requestConsent:be,requestSetting:Oe,settings:te(e).merged}),s=oi.resolve(n.path),o=await t.loadExtensionConfig(s),r=[],a=[];if(o.contextFileName){let l=Array.isArray(o.contextFileName)?o.contextFileName:[o.contextFileName],c=[];for(let m of l){let d=oi.resolve(s,m);Ic.existsSync(d)||c.push(m)}c.length>0&&a.push(`The following context files referenced in gemini-extension.json are missing: ${c}`)}if(Tc.default.valid(o.version)||r.push(`Warning: Version '${o.version}' does not appear to be standard semver (e.g., 1.0.0).`),r.length>0){y.warn("Validation warnings:");for(let l of r)y.warn(` - ${l}`)}if(a.length>0){y.error("Validation failed with the following errors:");for(let l of a)y.error(` - ${l}`);throw new Error("Extension validation failed.")}}var Mc={command:"validate <path>",describe:"Validates an extension from a local path.",builder:n=>n.positional("path",{describe:"The path of the extension to validate.",type:"string",demandOption:!0}),handler:async n=>{await Nm({path:n.path}),await X()}};var kc={command:"config [name] [setting]",describe:"Configure extension settings.",builder:n=>n.positional("name",{describe:"Name of the extension to configure.",type:"string"}).positional("setting",{describe:"The specific setting to configure (name or env var).",type:"string"}).option("scope",{describe:"The scope to set the setting in.",type:"string",choices:["user","workspace"],default:"user"}),handler:async n=>{let{name:e,setting:t,scope:s}=n;if(!(te(process.cwd()).merged.experimental?.extensionConfig??!0)){q.emitFeedback("error",'Extension configuration is currently disabled. Enable it by setting "experimental.extensionConfig" to true.'),await X();return}if(e&&(e.includes("/")||e.includes("\\")||e.includes(".."))){y.error('Invalid extension name. Names cannot contain path separators or "..".');return}let r=await Ua();e&&t?await Ga(r,e,t,s):e?await za(r,e,s):await Wa(r,s),await X()}};var ii={command:"extensions <command>",aliases:["extension"],describe:"Manage Gemini CLI extensions.",builder:n=>n.middleware(e=>{ft(),e.isCommand=!0}).command(we(gc,"extensions")).command(we(yc,"extensions")).command(we(bc,"extensions")).command(we(wc,"extensions")).command(we(xc,"extensions")).command(we(Cc,"extensions")).command(we(Sc,"extensions")).command(we(Oc,"extensions")).command(we(Mc,"extensions")).command(we(kc,"extensions")).demandCommand(1,"You need at least one command before continuing.").version(!1),handler:()=>{}};var bn=ze(wt(),1);async function Lm(n){let e=process.cwd(),t=te(e),s=await Qt(t.merged,"skills-list-session",{debug:!1},{cwd:e});await s.initialize();let o=s.getSkillManager(),r=n.all?o.getAllSkills():o.getAllSkills().filter(a=>!a.isBuiltin);if(r.sort((a,l)=>a.isBuiltin===l.isBuiltin?a.name.localeCompare(l.name):a.isBuiltin?1:-1),r.length===0){y.log("No skills discovered.");return}y.log(bn.default.bold("Discovered Agent Skills:")),y.log("");for(let a of r){let l=a.disabled?bn.default.red("[Disabled]"):bn.default.green("[Enabled]"),c=a.isBuiltin?bn.default.gray(" [Built-in]"):"";y.log(`${bn.default.bold(a.name)} ${l}${c}`),y.log(` Description: ${a.description}`),y.log(` Location: ${a.location}`),y.log("")}}var Pc={command:"list [--all]",describe:"Lists discovered agent skills.",builder:n=>n.option("all",{type:"boolean",description:"Show all skills, including built-in ones.",default:!1}),handler:async n=>{await Lm({all:n.all}),await X()}};var ri=ze(wt(),1);async function Dm(n){let{name:e}=n,t=process.cwd(),s=te(t),o=Va(s,e),r=cs(o,(a,l)=>`${ri.default.bold(a)} (${ri.default.dim(l)})`);y.log(r)}var Rc={command:"enable <name>",describe:"Enables an agent skill.",builder:n=>n.positional("name",{describe:"The name of the skill to enable.",type:"string",demandOption:!0}),handler:async n=>{await Dm({name:n.name}),await X()}};var ai=ze(wt(),1);async function jm(n){let{name:e,scope:t}=n,s=process.cwd(),o=te(s),r=Ya(o,e,t),a=cs(r,(l,c)=>`${ai.default.bold(l)} (${ai.default.dim(c)})`);y.log(a)}var Nc={command:"disable <name> [--scope]",describe:"Disables an agent skill.",builder:n=>n.positional("name",{describe:"The name of the skill to disable.",type:"string",demandOption:!0}).option("scope",{alias:"s",describe:"The scope to disable the skill in (user or workspace).",type:"string",default:"workspace",choices:["user","workspace"]}),handler:async n=>{let e=n.scope==="workspace"?"Workspace":"User";await jm({name:n.name,scope:e}),await X()}};var li=ze(wt(),1);async function Fm(n){try{let{source:e,consent:t}=n,s=n.scope??"user",o=n.path,a=await Xa(e,s,o,l=>{y.log(l)},async(l,c)=>t?(y.log("You have consented to the following:"),y.log(await Pn(l,e,c)),!0):be(await Pn(l,e,c)));for(let l of a)y.log(li.default.green(`Successfully installed skill: ${li.default.bold(l.name)} (scope: ${s}, location: ${l.location})`))}catch(e){y.error(B(e)),await X(1)}}var $c={command:"install <source> [--scope] [--path]",describe:"Installs an agent skill from a git repository URL or a local path.",builder:n=>n.positional("source",{describe:"The git repository URL or local path of the skill to install.",type:"string",demandOption:!0}).option("scope",{describe:'The scope to install the skill into. Defaults to "user" (global).',choices:["user","workspace"],default:"user"}).option("path",{describe:"Sub-path within the repository to install from (only used for git repository sources).",type:"string"}).option("consent",{describe:"Acknowledge the security risks of installing a skill and skip the confirmation prompt.",type:"boolean",default:!1}).check(e=>{if(!e.source)throw new Error("The source argument must be provided.");return!0}),handler:async n=>{await Fm({source:n.source,scope:n.scope,path:n.path,consent:n.consent}),await X()}};var Lc=ze(wt(),1);async function Um(n){try{let{scope:e="user",consent:t}=n;await Ka(n.path,e,s=>y.log(s),async(s,o)=>{let r=await Pn(s,n.path,o,!0);return t?(y.log("You have consented to the following:"),y.log(r),!0):be(r)}),y.log(Lc.default.green(`
81
+ Successfully linked skills.`))}catch(e){y.error(B(e)),await X(1)}}var Dc={command:"link <path>",describe:"Links an agent skill from a local path. Updates to the source will be reflected immediately.",builder:n=>n.positional("path",{describe:"The local path of the skill to link.",type:"string",demandOption:!0}).option("scope",{describe:'The scope to link the skill into. Defaults to "user" (global).',choices:["user","workspace"],default:"user"}).option("consent",{describe:"Acknowledge the security risks of linking a skill and skip the confirmation prompt.",type:"boolean",default:!1}).check(e=>{if(!e.path)throw new Error("The path argument must be provided.");return!0}),handler:async n=>{await Um({path:n.path,scope:n.scope,consent:n.consent}),await X()}};var ci=ze(wt(),1);async function Gm(n){try{let{name:e}=n,t=n.scope??"user",s=await Ja(e,t);s?y.log(ci.default.green(`Successfully uninstalled skill: ${ci.default.bold(e)} (scope: ${t}, location: ${s.location})`)):y.error(`Skill "${e}" is not installed in the ${t} scope.`)}catch(e){y.error(B(e)),await X(1)}}var jc={command:"uninstall <name> [--scope]",describe:"Uninstalls an agent skill by name.",builder:n=>n.positional("name",{describe:"The name of the skill to uninstall.",type:"string",demandOption:!0}).option("scope",{describe:'The scope to uninstall the skill from. Defaults to "user" (global).',choices:["user","workspace"],default:"user"}).check(e=>{if(!e.name)throw new Error("The skill name must be provided.");return!0}),handler:async n=>{await Gm({name:n.name,scope:n.scope}),await X()}};var di={command:"skills <command>",aliases:["skill"],describe:"Manage agent skills.",builder:n=>n.middleware(e=>{ft(),e.isCommand=!0}).command(we(Pc,"skills")).command(we(Rc,"skills")).command(we(Nc,"skills")).command(we($c,"skills")).command(we(Dc,"skills")).command(we(jc,"skills")).demandCommand(1,"You need at least one command before continuing.").version(!1),handler:()=>{}};import*as wn from"node:fs";import*as Ps from"node:path";var ui=ze(lu(),1);var zm={PreToolUse:"BeforeTool",PostToolUse:"AfterTool",UserPromptSubmit:"BeforeAgent",Stop:"AfterAgent",SubAgentStop:"AfterAgent",SessionStart:"SessionStart",SessionEnd:"SessionEnd",PreCompact:"PreCompress",Notification:"Notification"},Wm={Edit:"replace",Bash:"run_shell_command",Read:"read_file",Write:"write_file",Glob:"glob",Grep:"grep",LS:"ls"};function qm(n){if(!n)return n;let e=n;for(let[t,s]of Object.entries(Wm))e=e.replace(new RegExp(`\\b${t}\\b`,"g"),s);return e}function Hm(n){if(!n||typeof n!="object")return n;let e=n,t={};return"command"in e&&(t.command=e.command,typeof t.command=="string"&&(t.command=t.command.replace(/\$CLAUDE_PROJECT_DIR/g,"$GEMINI_PROJECT_DIR"))),"type"in e&&e.type==="command"&&(t.type="command"),"timeout"in e&&typeof e.timeout=="number"&&(t.timeout=e.timeout),t}function Bm(n){if(!n||typeof n!="object")return{};let e=n,t={},s=e.hooks;if(!s||typeof s!="object")return{};for(let[o,r]of Object.entries(s)){let a=zm[o]||o;if(!Array.isArray(r))continue;let l=r.map(c=>{if(!c||typeof c!="object")return c;let m=c,d={};return"matcher"in m&&typeof m.matcher=="string"&&(d.matcher=qm(m.matcher)),"sequential"in m&&(d.sequential=m.sequential),"hooks"in m&&Array.isArray(m.hooks)&&(d.hooks=m.hooks.map(Hm)),d});t[a]=l}return t}async function Vm(){let n=process.cwd(),e=Ps.join(n,".claude"),t=Ps.join(e,"settings.json"),s=Ps.join(e,"settings.local.json"),o=null,r="";if(wn.existsSync(s)){r=s;try{let d=wn.readFileSync(s,"utf-8");o=JSON.parse((0,ui.default)(d))}catch(d){y.error(`Error reading ${s}: ${B(d)}`)}}else if(wn.existsSync(t)){r=t;try{let d=wn.readFileSync(t,"utf-8");o=JSON.parse((0,ui.default)(d))}catch(d){y.error(`Error reading ${t}: ${B(d)}`)}}else{y.error("No Claude Code settings found in .claude directory. Expected settings.json or settings.local.json");return}if(!o)return;y.log(`Found Claude Code settings in: ${r}`);let a=Bm(o);if(Object.keys(a).length===0){y.log("No hooks found in Claude Code settings to migrate.");return}y.log(`Migrating ${Object.keys(a).length} hook event(s)...`);let l=te(n),m={...l.merged?.hooks||{},...a};try{l.setValue("Workspace","hooks",m),y.log("\u2713 Hooks successfully migrated to .gemini/settings.json"),y.log(`
82
+ Migration complete! Please review the migrated hooks in .gemini/settings.json`)}catch(d){y.error(`Error saving migrated hooks: ${B(d)}`)}}var Fc={command:"migrate",describe:"Migrate hooks from Claude Code to Gemini CLI",builder:n=>n.option("from-claude",{describe:"Migrate from Claude Code hooks",type:"boolean",default:!1}),handler:async n=>{n.fromClaude?await Vm():y.log(`Usage: gemini hooks migrate --from-claude
83
83
 
84
- Migrate hooks from Claude Code to Gemini CLI format.`),await X()}};var ci={command:"hooks <command>",aliases:["hook"],describe:"Manage Gemini CLI hooks.",builder:n=>n.middleware(e=>{ft(),e.isCommand=!0}).command(Nc).demandCommand(1,"You need at least one command before continuing.").version(!1),handler:()=>{}};var xn=ze(zc(),1);import*as Rs from"node:os";import{fileURLToPath as Jp}from"node:url";import Zp from"node:path";var Qp=Jp(import.meta.url),em=Zp.dirname(Qp),Wc=["docker","podman","sandbox-exec","runsc","lxc","windows-native"];function tm(n){return Wc.includes(n)}function nm(n){if(process.env.SANDBOX)return"";let e=process.env.GEMINI_SANDBOX?.toLowerCase().trim()??"";if(n=e?.length>0?e:n,n==="1"||n==="true"?n=!0:(n==="0"||n==="false"||!n)&&(n=!1),n===!1)return"";if(typeof n=="string"&&n){if(!tm(n))throw new fe(`Invalid sandbox command '${n}'. Must be one of ${Wc.join(", ")}`);if(n==="runsc"&&Rs.platform()!=="linux")throw new fe("gVisor (runsc) sandboxing is only supported on Linux");if(n==="windows-native"&&Rs.platform()!=="win32")throw new fe("Windows native sandboxing is only supported on Windows");if(n!=="windows-native"&&!xn.default.sync(n))throw new fe(`Missing sandbox command '${n}' (from GEMINI_SANDBOX)`);if(n==="runsc"&&!xn.default.sync("docker"))throw new fe("runsc (gVisor) requires Docker. Install Docker, or use sandbox: 'docker'.");return n}if(Rs.platform()==="darwin"&&xn.default.sync("sandbox-exec"))return"sandbox-exec";if(xn.default.sync("docker")&&n===!0)return"docker";if(xn.default.sync("podman")&&n===!0)return"podman";if(n===!0)throw new fe("GEMINI_SANDBOX is true but failed to determine command for sandbox; install docker or podman or specify command in GEMINI_SANDBOX");return""}async function Ns(n,e){let t=e.sandbox??n.tools?.sandbox,s,o=[],r=!0,a;if(typeof t=="object"&&t!==null&&!Array.isArray(t)){let m=t;s=m.enabled?m.command??!0:!1,o=m.allowedPaths??[],r=m.networkAccess??!0,a=m.image}else(typeof t!="object"||t===null)&&(s=t);let l=nm(s),c=await Dr(em),p=process.env.GEMINI_SANDBOX_IMAGE??"us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.37.0"??a??c?.config?.sandboxImageUri;return l&&(p||(l==="windows-native"||l==="sandbox-exec"||l==="lxc"))?{enabled:!0,allowedPaths:o,networkAccess:r,command:l,image:p}:void 0}import*as qc from"node:path";function Cn(n){if(!n)return"";let e=n;return n.toLowerCase().startsWith("%userprofile%")?e=ct()+n.substring(13):(n==="~"||n.startsWith("~/"))&&(e=ct()+n.substring(1)),qc.normalize(e)}var sm=!0;var om=!0;async function Hc(n,e,t,s=!0){let o={mcp:n.mcp,tools:n.tools,mcpServers:n.mcpServers,policyPaths:n.policyPaths,adminPolicyPaths:n.adminPolicyPaths,workspacePoliciesDir:t,disableAlwaysAllow:n.security?.disableAlwaysAllow||n.admin?.secureModeEnabled};return Jr(o,e,void 0,s)}function $s(n,e,t){return Zr(n,e,t)}async function Bc(n){let{cwd:e,trustedFolder:t,interactive:s}=n,o,r;if(t&&!om){let a=new lr(e);if(a.isWorkspaceHomeDir())return{workspacePoliciesDir:void 0};let l=a.getWorkspacePoliciesDir(),c=new ta,p=await c.checkIntegrity("workspace",e,l);p.status===wo.MATCH?o=l:p.status===wo.NEW&&p.fileCount===0?o=void 0:s&&!sm?r={scope:"workspace",identifier:e,policyDir:l,newHash:p.hash}:(await c.acceptIntegrity("workspace",e,p.hash),o=l,s?y.warn("Workspace policies changed or are new. Automatically accepting and loading them."):me(`WARNING: Workspace policies changed or are new. Automatically accepting and loading them.
85
- `))}return{workspacePoliciesDir:o,policyUpdateConfirmationRequest:r}}var Sn=n=>n.length===1&&n[0]===""?[""]:n.flatMap(e=>e.split(",").map(t=>t.trim()).filter(Boolean));function im(n){let e=Zo(hs(n)).help(!1).version(!1).option("worktree",{alias:"w",type:"string"}).strict(!1).exitProcess(!1).parseSync();if(e.worktree!==void 0)return typeof e.worktree=="string"?e.worktree.trim():""}function Vc(n){if(Oa(n))return im(Ie.argv)}async function Yc(n){let e=hs(Ie.argv),t=[],s=Zo(e).locale("en").scriptName("gemini").usage(`Usage: gemini [options] [command]
84
+ Migrate hooks from Claude Code to Gemini CLI format.`),await X()}};var mi={command:"hooks <command>",aliases:["hook"],describe:"Manage Gemini CLI hooks.",builder:n=>n.middleware(e=>{ft(),e.isCommand=!0}).command(Fc).demandCommand(1,"You need at least one command before continuing.").version(!1),handler:()=>{}};var Cn=ze(Vc(),1);import*as Ns from"node:os";import{fileURLToPath as np}from"node:url";import sp from"node:path";var op=np(import.meta.url),ip=sp.dirname(op),Yc=["docker","podman","sandbox-exec","runsc","lxc","windows-native"];function rp(n){return Yc.includes(n)}function ap(n){if(process.env.SANDBOX)return"";let e=process.env.GEMINI_SANDBOX?.toLowerCase().trim()??"";if(n=e?.length>0?e:n,n==="1"||n==="true"?n=!0:(n==="0"||n==="false"||!n)&&(n=!1),n===!1)return"";if(typeof n=="string"&&n){if(!rp(n))throw new fe(`Invalid sandbox command '${n}'. Must be one of ${Yc.join(", ")}`);if(n==="runsc"&&Ns.platform()!=="linux")throw new fe("gVisor (runsc) sandboxing is only supported on Linux");if(n==="windows-native"&&Ns.platform()!=="win32")throw new fe("Windows native sandboxing is only supported on Windows");if(n!=="windows-native"&&!Cn.default.sync(n))throw new fe(`Missing sandbox command '${n}' (from GEMINI_SANDBOX)`);if(n==="runsc"&&!Cn.default.sync("docker"))throw new fe("runsc (gVisor) requires Docker. Install Docker, or use sandbox: 'docker'.");return n}if(Ns.platform()==="darwin"&&Cn.default.sync("sandbox-exec"))return"sandbox-exec";if(Cn.default.sync("docker")&&n===!0)return"docker";if(Cn.default.sync("podman")&&n===!0)return"podman";if(n===!0)throw new fe("GEMINI_SANDBOX is true but failed to determine command for sandbox; install docker or podman or specify command in GEMINI_SANDBOX");return""}async function $s(n,e){let t=e.sandbox??n.tools?.sandbox,s,o=[],r=!0,a;if(typeof t=="object"&&t!==null&&!Array.isArray(t)){let p=t;s=p.enabled?p.command??!0:!1,o=p.allowedPaths??[],r=p.networkAccess??!0,a=p.image}else(typeof t!="object"||t===null)&&(s=t);let l=ap(s),c=await zr(ip),m=process.env.GEMINI_SANDBOX_IMAGE??"us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.37.1"??a??c?.config?.sandboxImageUri;return l&&(m||(l==="windows-native"||l==="sandbox-exec"||l==="lxc"))?{enabled:!0,allowedPaths:o,networkAccess:r,command:l,image:m}:void 0}import*as Xc from"node:path";function En(n){if(!n)return"";let e=n;return n.toLowerCase().startsWith("%userprofile%")?e=ct()+n.substring(13):(n==="~"||n.startsWith("~/"))&&(e=ct()+n.substring(1)),Xc.normalize(e)}var lp=!0;var cp=!0;async function Kc(n,e,t,s=!0){let o={mcp:n.mcp,tools:n.tools,mcpServers:n.mcpServers,policyPaths:n.policyPaths,adminPolicyPaths:n.adminPolicyPaths,workspacePoliciesDir:t,disableAlwaysAllow:n.security?.disableAlwaysAllow||n.admin?.secureModeEnabled};return na(o,e,void 0,s)}function Ls(n,e,t){return sa(n,e,t)}async function Jc(n){let{cwd:e,trustedFolder:t,interactive:s}=n,o,r;if(t&&!cp){let a=new ur(e);if(a.isWorkspaceHomeDir())return{workspacePoliciesDir:void 0};let l=a.getWorkspacePoliciesDir(),c=new ra,m=await c.checkIntegrity("workspace",e,l);m.status===Eo.MATCH?o=l:m.status===Eo.NEW&&m.fileCount===0?o=void 0:s&&!lp?r={scope:"workspace",identifier:e,policyDir:l,newHash:m.hash}:(await c.acceptIntegrity("workspace",e,m.hash),o=l,s?y.warn("Workspace policies changed or are new. Automatically accepting and loading them."):pe(`WARNING: Workspace policies changed or are new. Automatically accepting and loading them.
85
+ `))}return{workspacePoliciesDir:o,policyUpdateConfirmationRequest:r}}var Sn=n=>n.length===1&&n[0]===""?[""]:n.flatMap(e=>e.split(",").map(t=>t.trim()).filter(Boolean));function dp(n){let e=ti(gs(n)).help(!1).version(!1).option("worktree",{alias:"w",type:"string"}).strict(!1).exitProcess(!1).parseSync();if(e.worktree!==void 0)return typeof e.worktree=="string"?e.worktree.trim():""}function Zc(n){if(Pa(n))return dp(Ie.argv)}async function Qc(n){let e=gs(Ie.argv),t=[],s=ti(e).locale("en").scriptName("gemini").usage(`Usage: gemini [options] [command]
86
86
 
87
- Gemini CLI - Defaults to interactive mode. Use -p/--prompt for non-interactive (headless) mode.`).option("isCommand",{type:"boolean",hidden:!0,description:"Internal flag to indicate if a subcommand is being run"}).option("debug",{alias:"d",type:"boolean",description:"Run in debug mode (open debug console with F12)",default:!1}).middleware(l=>{let p=[ei,ni,ai,ci].flatMap(m=>{let f=[],h=m.command;if(h)if(Array.isArray(h))for(let E of h)f.push(String(E).split(" ")[0]);else f.push(String(h).split(" ")[0]);let I=m.aliases;if(I)if(Array.isArray(I))for(let E of I)f.push(String(E).split(" ")[0]);else f.push(String(I).split(" ")[0]);return f}),d=l._[0];typeof d=="string"&&p.includes(d)&&(l.isCommand=!0)},!0).fail((l,c)=>{throw c||new Error(l)}).check(l=>{let c=l.query,p=typeof c=="string"||Array.isArray(c)?c:void 0,d=Array.isArray(p)?p.length>0:!!p;if(l.prompt&&d)return"Cannot use both a positional prompt and the --prompt (-p) flag together";if(l.prompt&&l.promptInteractive)return"Cannot use both --prompt (-p) and --prompt-interactive (-i) together";if(l.yolo&&l.approvalMode)return"Cannot use both --yolo (-y) and --approval-mode together. Use --approval-mode=yolo instead.";let m=l.outputFormat;return typeof m=="string"&&!["text","json","stream-json"].includes(m)?`Invalid values:
88
- Argument: output-format, Given: "${m}", Choices: "text", "json", "stream-json"`:l.worktree&&!n.experimental?.worktrees?"The --worktree flag is only available when experimental.worktrees is enabled in your settings.":!0});s.command(ei),s.command(ni),s.command(ai),s.command(ci),s.command("$0 [query..]","Launch Gemini CLI",l=>l.positional("query",{description:"Initial prompt. Runs in interactive mode by default; use -p/--prompt for non-interactive."}).option("model",{alias:"m",type:"string",nargs:1,description:"Model"}).option("prompt",{alias:"p",type:"string",nargs:1,description:"Run in non-interactive (headless) mode with the given prompt. Appended to input on stdin (if any)."}).option("prompt-interactive",{alias:"i",type:"string",nargs:1,description:"Execute the provided prompt and continue in interactive mode"}).option("worktree",{alias:"w",type:"string",skipValidation:!0,description:"Start Gemini in a new git worktree. If no name is provided, one is generated automatically.",coerce:c=>{let p=typeof c=="string"?c.trim():"";return p===""?Math.random().toString(36).substring(2,10):p}}).option("sandbox",{alias:"s",type:"boolean",description:"Run in sandbox?"}).option("yolo",{alias:"y",type:"boolean",description:"Automatically accept all actions (aka YOLO mode, see https://www.youtube.com/watch?v=xvFZjo5PgG0 for more details)?",default:!1}).option("approval-mode",{type:"string",nargs:1,choices:["default","auto_edit","yolo","plan"],description:"Set the approval mode: default (prompt for approval), auto_edit (auto-approve edit tools), yolo (auto-approve all tools), plan (read-only mode)"}).option("policy",{type:"array",string:!0,nargs:1,description:"Additional policy files or directories to load (comma-separated or multiple --policy)",coerce:Sn}).option("admin-policy",{type:"array",string:!0,nargs:1,description:"Additional admin policy files or directories to load (comma-separated or multiple --admin-policy)",coerce:Sn}).option("acp",{type:"boolean",description:"Starts the agent in ACP mode"}).option("experimental-acp",{type:"boolean",description:"Starts the agent in ACP mode (deprecated, use --acp instead)"}).option("allowed-mcp-server-names",{type:"array",string:!0,nargs:1,description:"Allowed MCP server names",coerce:Sn}).option("allowed-tools",{type:"array",string:!0,nargs:1,description:"[DEPRECATED: Use Policy Engine instead See https://geminicli.com/docs/core/policy-engine] Tools that are allowed to run without confirmation",coerce:Sn}).option("extensions",{alias:"e",type:"array",string:!0,nargs:1,description:"A list of extensions to use. If not provided, all extensions are used.",coerce:Sn}).option("list-extensions",{alias:"l",type:"boolean",description:"List all available extensions and exit."}).option("resume",{alias:"r",type:"string",skipValidation:!0,description:'Resume a previous session. Use "latest" for most recent or index number (e.g. --resume 5)',coerce:c=>{let p=c.trim();return p===""?Sa:p}}).option("list-sessions",{type:"boolean",description:"List available sessions for the current project and exit."}).option("delete-session",{type:"string",description:"Delete a session by index number (use --list-sessions to see available sessions)."}).option("include-directories",{type:"array",string:!0,nargs:1,description:"Additional directories to include in the workspace (comma-separated or multiple --include-directories)",coerce:Sn}).option("screen-reader",{type:"boolean",description:"Enable screen reader mode for accessibility."}).option("output-format",{alias:"o",type:"string",nargs:1,description:"The format of the CLI output.",choices:["text","json","stream-json"]}).option("fake-responses",{type:"string",description:"Path to a file with fake model responses for testing.",hidden:!0}).option("record-responses",{type:"string",description:"Path to a file to record model responses for testing.",hidden:!0}).option("raw-output",{type:"boolean",description:"Disable sanitization of model output (e.g. allow ANSI escape sequences). WARNING: This can be a security risk if the model output is untrusted."}).option("accept-raw-output-risk",{type:"boolean",description:"Suppress the security warning when using --raw-output."})).version(await rn()).alias("v","version").help().alias("h","help").strict().demandCommand(0,0).exitProcess(!1),s.wrap(s.terminalWidth());let o;try{o=await s.parse()}catch(l){let c=l instanceof Error?l.message:String(l);y.error(c),s.showHelp(),await de(),Ie.exit(1)}(o.help||o.version)&&(await de(),Ie.exit(0));let r=o.query,a=Array.isArray(r)?r.join(" "):r;return a&&!o.prompt&&(In()?o.prompt=a:(t.push("Positional arguments now default to interactive mode. To run in non-interactive mode, use the --prompt (-p) flag."),o.promptInteractive=a)),o.query=a||void 0,o.startupMessages=t,o}function mi(n){return n.debug||[Ie.env.DEBUG,Ie.env.DEBUG_MODE].some(e=>e==="true"||e==="1")}async function Zt(n,e,t,s={}){let{cwd:o=Ie.cwd(),projectHooks:r}=s,a=mi(t),l=s.worktreeSettings??await am(o);t.sandbox&&(Ie.env.GEMINI_SANDBOX="true");let c=n.context?.importFormat||"tree",p=n.context?.includeDirectoryTree??!0,d=n.ide?.enabled??!1,m=Ie.env.GEMINI_CLI_INTEGRATION_TEST==="true"||Ie.env.VITEST==="true"?!1:n.security?.folderTrust?.enabled??!1,f=cn(n,o,void 0,{prompt:t.prompt,query:t.query})?.isTrusted??!1;n.context?.fileName?po(n.context.fileName):po(hr());let h=new zr(o),I={...Ur,...n.context?.fileFiltering},E={...Gr,...n.context?.fileFiltering},x=(n.context?.includeDirectories||[]).map(Cn).concat((t.includeDirectories||[]).map(Cn)),k=Ie.env.GEMINI_CLI_IDE_WORKSPACE_PATH;if(k){let O=Vn(o),A=k.split(En.delimiter).filter(C=>{let D=C.trim();if(!D)return!1;try{return Vn(D)!==O}catch($){return y.debug(`[IDE] Skipping inaccessible workspace folder: ${D} (${$ instanceof Error?$.message:String($)})`),!1}});x.push(...A)}let M=new ue({settings:n,requestConsent:be,requestSetting:Oe,workspaceDir:o,enabledExtensionOverrides:t.extensions,eventEmitter:q,clientVersion:await rn()});await M.loadExtensions();let v=M.getExtensions().find(O=>O.isActive&&O.plan?.directory)?.plan,b=n.experimental.jitContext,P=Ie.env.GEMINI_CLI_EXTENSION_REGISTRY_URI??(f?n.experimental?.extensionRegistryURI:void 0);P&&!P.startsWith("http")&&(P=Vn(En.resolve(o,Cn(P))));let ee="",Q=0,H=[];if(!b){let O=await Yr(o,n.context?.loadMemoryFromIncludeDirectories?x:[],h,M,f,c,I,n.context?.discoveryMaxDirs,n.context?.memoryBoundaryMarkers);ee=O.memoryContent,Q=O.fileCount,H=O.filePaths}let K=t.promptInteractive||t.prompt||"",N,w=t.approvalMode||(t.yolo?"yolo":void 0)||(n.general?.defaultApprovalMode!=="yolo"?n.general?.defaultApprovalMode:void 0);if(w)switch(w){case"yolo":N=Le.YOLO;break;case"auto_edit":N=Le.AUTO_EDIT;break;case"plan":n.general?.plan?.enabled??!0?N=Le.PLAN:(y.warn('Approval mode "plan" is disabled in your settings. Falling back to "default".'),N=Le.DEFAULT);break;case"default":N=Le.DEFAULT;break;default:throw new Error(`Invalid approval mode: ${w}. Valid values are: yolo, auto_edit, plan, default`)}else N=Le.DEFAULT;if(n.security?.disableYoloMode||n.admin?.secureModeEnabled){if(N===Le.YOLO)throw n.admin?.secureModeEnabled?y.error('YOLO mode is disabled by "secureModeEnabled" setting.'):y.error('YOLO mode is disabled by the "disableYolo" setting.'),new on(an("YOLO mode",void 0))}else N===Le.YOLO&&y.warn("YOLO mode is enabled. All tool calls will be automatically approved.");!f&&N!==Le.DEFAULT&&(y.warn('Approval mode overridden to "default" because the current folder is not trusted.'),N=Le.DEFAULT);let _;try{_=await Mr({env:Ie.env,settings:n.telemetry})}catch(O){throw O instanceof on?new on(`Invalid telemetry configuration: ${O.message}.`):O}let T=!!t.promptInteractive||!!t.acp||!!t.experimentalAcp||!In({prompt:t.prompt,query:t.query})&&!t.isCommand,R=t.allowedTools||n.tools?.allowed||[],U=!!t.acp||!!t.experimentalAcp,ne=[];(!T||U)&&ne.push(fr);let V=rm(n,ne),ce={...n,tools:{...n.tools,allowed:R,exclude:V},mcp:{...n.mcp,allowed:t.allowedMcpServerNames??n.mcp?.allowed},policyPaths:(t.policy??n.policyPaths)?.map(O=>Cn(O)),adminPolicyPaths:(t.adminPolicy??n.adminPolicyPaths)?.map(O=>Cn(O))},{workspacePoliciesDir:$e,policyUpdateConfirmationRequest:ie}=await Bc({cwd:o,trustedFolder:f,interactive:T}),Te=await Hc(ce,N,$e,T),se=An,J=t.model||Ie.env.GEMINI_MODEL||n.model?.name,L=J===pr?se:J||se,Ee=await Ns(n,t);if(Ee){let O=Ee.allowedPaths||[];n.tools.sandboxAllowedPaths?.length&&(Ee.allowedPaths=[...new Set([...O,...n.tools.sandboxAllowedPaths])]),n.tools.sandboxNetworkAccess!==void 0&&(Ee.networkAccess=Ee.networkAccess||n.tools.sandboxNetworkAccess)}let G=t.screenReader!==void 0?t.screenReader:n.ui?.accessibility?.screenReader??!1,ae=await Wr(),re=n.admin?.mcp?.enabled??!0,oe=n.admin?.extensions?.enabled??!0,ye=n.admin?.skills?.enabled??!0,xe=st.getInstance(),Be=re?xe.getEnablementCallbacks():void 0,je=n.admin?.mcp?.config,Lt=re?n.mcp?.serverCommand:void 0,g=re?n.mcpServers:{};if(re&&je&&Object.keys(je).length>0){let O=ns(g,je);if(g=O.mcpServers,Lt=void 0,O.blockedServerNames&&O.blockedServerNames.length>0){let A=ts(O.blockedServerNames,void 0);q.emitConsoleLog("warn",A)}}if(re){let O=n.admin?.mcp?.requiredConfig;if(O&&Object.keys(O).length>0){let A=ua(g??{},O);g=A.mcpServers,A.requiredServerNames.length>0&&q.emitConsoleLog("info",`Admin-required MCP servers injected: ${A.requiredServerNames.join(", ")}`)}}let S;if(U){let O=Tr();O&&(O.name!=="vscode"||Ie.env.TERM_PROGRAM==="vscode")&&(S=`acp-${O.name}`)}return new ea({acpMode:U,clientName:S,sessionId:e,clientVersion:await rn(),embeddingModel:mr,sandbox:Ee,toolSandboxing:n.security?.toolSandboxing??!1,targetDir:o,includeDirectoryTree:p,includeDirectories:x,loadMemoryFromIncludeDirectories:n.context?.loadMemoryFromIncludeDirectories||!1,discoveryMaxDirs:n.context?.discoveryMaxDirs,memoryBoundaryMarkers:n.context?.memoryBoundaryMarkers,importFormat:n.context?.importFormat,debugMode:a,question:K,worktreeSettings:l,coreTools:n.tools?.core||void 0,allowedTools:R.length>0?R:void 0,policyEngineConfig:Te,policyUpdateConfirmationRequest:ie,excludeTools:V,toolDiscoveryCommand:n.tools?.discoveryCommand,toolCallCommand:n.tools?.callCommand,mcpServerCommand:Lt,mcpServers:g,mcpEnablementCallbacks:Be,mcpEnabled:re,extensionsEnabled:oe,agents:n.agents,adminSkillsEnabled:ye,allowedMcpServers:re?t.allowedMcpServerNames??n.mcp?.allowed:void 0,blockedMcpServers:re?t.allowedMcpServerNames?void 0:n.mcp?.excluded:void 0,blockedEnvironmentVariables:n.security?.environmentVariableRedaction?.blocked,enableEnvironmentVariableRedaction:n.security?.environmentVariableRedaction?.enabled,userMemory:ee,geminiMdFileCount:Q,geminiMdFilePaths:H,approvalMode:N,disableYoloMode:n.security?.disableYoloMode||n.admin?.secureModeEnabled,disableAlwaysAllow:n.security?.disableAlwaysAllow||n.admin?.secureModeEnabled,showMemoryUsage:n.ui?.showMemoryUsage||!1,accessibility:{...n.ui?.accessibility,screenReader:G},telemetry:_,usageStatisticsEnabled:n.privacy?.usageStatisticsEnabled,fileFiltering:E,checkpointing:n.general?.checkpointing?.enabled,proxy:Ie.env.HTTPS_PROXY||Ie.env.https_proxy||Ie.env.HTTP_PROXY||Ie.env.http_proxy,cwd:o,fileDiscoveryService:h,bugCommand:n.advanced?.bugCommand,model:L,maxSessionTurns:n.model?.maxSessionTurns,listExtensions:t.listExtensions||!1,listSessions:t.listSessions||!1,deleteSession:t.deleteSession,enabledExtensions:t.extensions,extensionLoader:M,extensionRegistryURI:P,enableExtensionReloading:n.experimental?.extensionReloading,enableAgents:n.experimental?.enableAgents,plan:n.general?.plan?.enabled??!0,tracker:n.experimental?.taskTracker,directWebFetch:n.experimental?.directWebFetch,planSettings:n.general?.plan?.directory?n.general.plan:v??n.general?.plan,enableEventDrivenScheduler:!0,skillsSupport:n.skills?.enabled??!0,disabledSkills:n.skills?.disabled,experimentalJitContext:n.experimental?.jitContext,experimentalMemoryManager:n.experimental?.memoryManager,contextManagement:{enabled:n.experimental?.contextManagement,...n?.contextManagement},modelSteering:n.experimental?.modelSteering,topicUpdateNarration:n.experimental?.topicUpdateNarration,noBrowser:!!Ie.env.NO_BROWSER,summarizeToolOutput:n.model?.summarizeToolOutput,ideMode:d,disableLoopDetection:n.model?.disableLoopDetection,compressionThreshold:n.model?.compressionThreshold,folderTrust:m,interactive:T,trustedFolder:f,useBackgroundColor:n.ui?.useBackgroundColor,useAlternateBuffer:n.ui?.useAlternateBuffer,useRipgrep:n.tools?.useRipgrep,enableInteractiveShell:n.tools?.shell?.enableInteractiveShell,shellBackgroundCompletionBehavior:n.tools?.shell?.backgroundCompletionBehavior,shellToolInactivityTimeout:n.tools?.shell?.inactivityTimeout,enableShellOutputEfficiency:n.tools?.shell?.enableShellOutputEfficiency??!0,skipNextSpeakerCheck:n.model?.skipNextSpeakerCheck,truncateToolOutputThreshold:n.tools?.truncateToolOutputThreshold,eventEmitter:q,useWriteTodos:t.useWriteTodos??n.useWriteTodos,output:{format:t.outputFormat??n.output?.format},gemmaModelRouter:n.experimental?.gemmaModelRouter,fakeResponses:t.fakeResponses,recordResponses:t.recordResponses,retryFetchErrors:n.general?.retryFetchErrors,billing:n.billing,maxAttempts:n.general?.maxAttempts,ptyInfo:ae?.name,disableLLMCorrection:n.tools?.disableLLMCorrection,rawOutput:t.rawOutput,acceptRawOutputRisk:t.acceptRawOutputRisk,dynamicModelConfiguration:n.experimental?.dynamicModelConfiguration,modelConfigServiceConfig:n.modelConfigs,enableHooks:n.hooksConfig.enabled,enableHooksUI:n.hooksConfig.enabled,hooks:n.hooks||{},disabledHooks:n.hooksConfig?.disabled||[],projectHooks:r||{},onModelChange:O=>Ia(te(o),O),onReload:async()=>{let O=te(o);return{disabledSkills:O.merged.skills.disabled,agents:O.merged.agents}},enableConseca:n.security?.enableConseca})}function rm(n,e=[]){let t=new Set([...n.tools.exclude||[],...e]);return Array.from(t)}async function am(n){let e;try{let{stdout:s}=await Co("git",["rev-parse","--show-toplevel"],{cwd:n}),o=s.trim(),r=await os(o);ba(o,r)&&(e=o)}catch{return}if(!e)return;let t;try{let{stdout:s}=await Co("git",["rev-parse","HEAD"],{cwd:e});t=s.trim()}catch(s){y.debug(`Failed to resolve worktree base SHA at ${e}: ${s instanceof Error?s.message:String(s)}`)}if(t)return{name:En.basename(e),path:e,baseSha:t}}async function fi(){return new Promise((e,t)=>{let s="",o=0;process.stdin.setEncoding("utf8");let a=setTimeout(()=>{c()},500),l=()=>{let m;for(;(m=process.stdin.read())!==null;){if(a&&(clearTimeout(a),a=null),o+m.length>8388608){let f=8388608-o;s+=m.slice(0,f),y.warn("Warning: stdin input truncated to 8388608 bytes."),process.stdin.destroy(),c();break}s+=m,o+=m.length}},c=()=>{d(),e(s)},p=m=>{d(),t(m)},d=()=>{a&&(clearTimeout(a),a=null),process.stdin.removeListener("readable",l),process.stdin.removeListener("end",c),process.stdin.removeListener("error",p),process.stdin.listenerCount("error")===0&&process.stdin.on("error",cm)};process.stdin.on("readable",l),process.stdin.on("end",c),process.stdin.on("error",p)})}function cm(){}import{createHash as gh}from"node:crypto";import yh from"node:v8";import bh from"node:os";import wh from"node:dns";var Wn=ze(ir(),1);import{exec as pm,execFile as mm,execSync as Ls,spawn as en,spawnSync as fm}from"node:child_process";import qe from"node:path";import Ce from"node:fs";import zn from"node:os";import{fileURLToPath as hm}from"node:url";import{promisify as ed}from"node:util";import{randomBytes as xi}from"node:crypto";var Xc=ze(ir(),1);import hi from"node:os";import dm from"node:fs";import{readFile as um}from"node:fs/promises";var gi="gemini-cli-sandbox",Gn="gemini-cli-sandbox",Nt="gemini-cli-sandbox-proxy",Kc=["permissive-open","permissive-proxied","restrictive-open","restrictive-proxied","strict-open","strict-proxied"];function Ne(n){if(hi.platform()!=="win32")return n;let e=n.replace(/\\/g,"/"),t=e.match(/^([A-Z]):\/(.*)/i);return t?`/${t[1].toLowerCase()}/${t[2]}`:e}async function Jc(){let n=process.env.SANDBOX_SET_UID_GID?.toLowerCase().trim();if(n==="1"||n==="true")return!0;if(n==="0"||n==="false")return!1;if(hi.platform()==="linux")try{let e=await um("/etc/os-release","utf8");if(e.includes("ID=debian")||e.includes("ID=ubuntu")||e.match(/^ID_LIKE=.*debian.*/m)||e.match(/^ID_LIKE=.*ubuntu.*/m))return y.log("Defaulting to use current user UID/GID for Debian/Ubuntu-based Linux."),!0}catch{y.warn("Warning: Could not read /etc/os-release to auto-detect Debian/Ubuntu for UID/GID default.")}return!1}function Zc(n){let[e,t]=n.split(":"),s=e.split("/").at(-1)??"unknown-image";return t?`${s}-${t}`:s}function yi(){return(process.env.SANDBOX_PORTS??"").split(",").filter(n=>n.trim()).map(n=>n.trim())}function bi(n,e){let t=hi.platform()==="win32",s=Ne(n),o=[],r=t?";":":",a="";if(process.env.PATH){let h=process.env.PATH.split(r);for(let I of h){let E=Ne(I);E.toLowerCase().startsWith(s.toLowerCase())&&(a+=`:${E}`)}}a&&o.push(`export PATH="$PATH${a}";`);let l="";if(process.env.PYTHONPATH){let h=process.env.PYTHONPATH.split(r);for(let I of h){let E=Ne(I);E.toLowerCase().startsWith(s.toLowerCase())&&(l+=`:${E}`)}}l&&o.push(`export PYTHONPATH="$PYTHONPATH${l}";`);let c=`${gt}/sandbox.bashrc`;dm.existsSync(c)&&o.push(`source ${Ne(c)};`),yi().forEach(h=>o.push(`socat TCP4-LISTEN:${h},bind=$(hostname -i),fork,reuseaddr TCP4:127.0.0.1:${h} 2> /dev/null &`));let p=e.slice(2).map(h=>(0,Xc.quote)([h])),d=process.env.DEBUG==="true"||process.env.DEBUG==="1",m=process.env.NODE_ENV==="development"?d?"npm run debug --":"npm rebuild && npm run start --":d?`node --inspect-brk=0.0.0.0:${process.env.DEBUG_PORT||"9229"} $(which gemini)`:"gemini";return["bash","-c",[...o,m,...p].join(" ")]}var Qt=ed(pm),wi=ed(mm);async function td(n,e=[],t,s=[]){let o=new un({debugMode:t?.getDebugMode()||!!process.env.DEBUG,stderr:!0});o.patch();try{if(n.command==="sandbox-exec"){if(process.env.BUILD_SANDBOX)throw new fe("Cannot BUILD_SANDBOX when using macOS Seatbelt");let w=process.env.SEATBELT_PROFILE??="permissive-open",_=hm(new URL(`sandbox-macos-${w}.sb`,import.meta.url));if(Kc.includes(w)||(_=qe.join(gt,`sandbox-macos-${w}.sb`)),!Ce.existsSync(_))throw new fe(`Missing macos seatbelt profile file '${_}'`);y.log(`using macos seatbelt (profile: ${w}) ...`);let T=[...process.env.DEBUG?["--inspect-brk"]:[],...e].join(" "),R=["-D",`TARGET_DIR=${Ce.realpathSync(process.cwd())}`,"-D",`TMP_DIR=${Ce.realpathSync(zn.tmpdir())}`,"-D",`HOME_DIR=${Ce.realpathSync(ct())}`,"-D",`CACHE_DIR=${Ce.realpathSync((await Qt("getconf DARWIN_USER_CACHE_DIR")).stdout.trim())}`],U=5,ne=Ce.realpathSync(t?.getTargetDir()||""),V=[];if(t){let L=t.getWorkspaceContext().getDirectories();for(let Ee of L){let G=Ce.realpathSync(Ee);G!==ne&&V.push(G)}}if(n.allowedPaths){for(let J of n.allowedPaths)if(J&&qe.isAbsolute(J)&&Ce.existsSync(J)){let L=Ce.realpathSync(J);!V.includes(L)&&L!==ne&&V.push(L)}}for(let J=0;J<U;J++){let L="/dev/null";J<V.length&&(L=V[J]),R.push("-D",`INCLUDE_DIR_${J}=${L}`)}let ce=s;R.push("-f",_,"sh","-c",["SANDBOX=sandbox-exec",`NODE_OPTIONS="${T}"`,...ce.map(J=>(0,Wn.quote)([J]))].join(" "));let $e=process.env.GEMINI_SANDBOX_PROXY_COMMAND,ie,Te,se={...process.env};if($e){let J=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy||"http://localhost:8877";se.HTTPS_PROXY=J,se.https_proxy=J,se.HTTP_PROXY=J,se.http_proxy=J;let L=process.env.NO_PROXY||process.env.no_proxy;L&&(se.NO_PROXY=L,se.no_proxy=L),ie=en($e,{stdio:["ignore","pipe","pipe"],shell:!0,detached:!0});let Ee=()=>{y.log("stopping proxy ..."),ie?.pid&&process.kill(-ie.pid,"SIGTERM")};process.off("exit",Ee),process.on("exit",Ee),process.off("SIGINT",Ee),process.on("SIGINT",Ee),process.off("SIGTERM",Ee),process.on("SIGTERM",Ee),ie.stderr?.on("data",G=>{y.debug(`[PROXY STDERR]: ${G.toString().trim()}`)}),ie.on("close",(G,ae)=>{throw Te?.pid&&process.kill(-Te.pid,"SIGTERM"),new fe(`Proxy command '${$e}' exited with code ${G}, signal ${ae}`)}),y.log("waiting for proxy to start ..."),await Qt("until timeout 0.25 curl -s http://localhost:8877; do sleep 0.25; done")}return process.stdin.pause(),Te=en(n.command,R,{stdio:"inherit"}),await new Promise((J,L)=>{Te?.on("error",L),Te?.on("close",Ee=>{process.stdin.resume(),J(Ee??1)})})}if(n.command==="lxc")return await gm(n,e,s);let r=n.command==="runsc"?"docker":n.command;if(!r)throw new fe("Sandbox command is required");y.log(`hopping into sandbox (command: ${r}) ...`);let a=process.argv[1]?Ce.realpathSync(process.argv[1]):"",l=qe.join(gt,"sandbox.Dockerfile"),c=Ce.existsSync(l),p=n.image;if(!p)throw new fe("Sandbox image is required");if(!/^[a-zA-Z0-9_.:/-]+$/.test(p))throw new fe("Invalid sandbox image name");let d=qe.resolve(process.cwd()),m=Ne(d);if(process.env.BUILD_SANDBOX)if(a.includes("gemini-cli/packages/")){y.log("building sandbox ...");let w=a.split("/packages/")[0],_="",T=qe.join(gt,"sandbox.Dockerfile");c&&(y.log(`using ${T} for sandbox`),_+=`-f ${qe.resolve(T)} -i ${p}`),Ls(`cd ${w} && node scripts/build_sandbox.js -s ${_}`,{stdio:"inherit",env:{...process.env,GEMINI_SANDBOX:r}})}else throw new fe("Cannot build sandbox using installed gemini binary; run `npm link ./packages/cli` under gemini-cli repo to switch to linked binary.");if(!await bm(r,p,t)){let w=p===gi?"Try running `npm run build:all` or `npm run build:sandbox` under the gemini-cli repo to build it locally, or check the image name and your network connection.":"Please check the image name, your network connection, or notify gemini-cli-dev@google.com if the issue persists.";throw new fe(`Sandbox image '${p}' is missing or could not be pulled. ${w}`)}let f=["run","-i","--rm","--init","--workdir",m];if(n.command==="runsc"&&f.push("--runtime=runsc"),process.env.SANDBOX_FLAGS){let w=(0,Wn.parse)(process.env.SANDBOX_FLAGS,process.env).filter(_=>typeof _=="string");f.push(...w)}process.stdin.isTTY&&f.push("-t"),f.push("--add-host","host.docker.internal:host-gateway"),f.push("--volume",`${d}:${m}`);let h=ct(),I=Ne(`/home/node/${gt}`);Ce.existsSync(h)||Ce.mkdirSync(h,{recursive:!0});let E=qe.join(h,gt);Ce.existsSync(E)||Ce.mkdirSync(E,{recursive:!0}),f.push("--volume",`${E}:${I}`),I!==Ne(E)&&f.push("--volume",`${E}:${Ne(E)}`),f.push("--volume",`${zn.tmpdir()}:${Ne(zn.tmpdir())}`),h!==zn.homedir()&&f.push("--volume",`${h}:${Ne(h)}`);let x=qe.join(ct(),".config","gcloud");if(Ce.existsSync(x)&&f.push("--volume",`${x}:${Ne(x)}:ro`),process.env.GOOGLE_APPLICATION_CREDENTIALS){let w=process.env.GOOGLE_APPLICATION_CREDENTIALS;Ce.existsSync(w)&&(f.push("--volume",`${w}:${Ne(w)}:ro`),f.push("--env",`GOOGLE_APPLICATION_CREDENTIALS=${Ne(w)}`))}if(process.env.SANDBOX_MOUNTS){for(let w of process.env.SANDBOX_MOUNTS.split(","))if(w.trim()){let[_,T,R]=w.trim().split(":");if(T=T||_,R=R||"ro",w=`${_}:${T}:${R}`,!qe.isAbsolute(_))throw new fe(`Path '${_}' listed in SANDBOX_MOUNTS must be absolute`);if(!Ce.existsSync(_))throw new fe(`Missing mount path '${_}' listed in SANDBOX_MOUNTS`);y.log(`SANDBOX_MOUNTS: ${_} -> ${T} (${R})`),f.push("--volume",w)}}if(n.allowedPaths){for(let w of n.allowedPaths)if(w&&qe.isAbsolute(w)&&Ce.existsSync(w)){let _=Ne(w);y.log(`Config allowedPath: ${w} -> ${_} (ro)`),f.push("--volume",`${w}:${_}:ro`)}}if(yi().forEach(w=>f.push("--publish",`${w}:${w}`)),process.env.DEBUG){let w=process.env.DEBUG_PORT||"9229";f.push("--publish",`${w}:${w}`)}let k=process.env.GEMINI_SANDBOX_PROXY_COMMAND;if(k){let w=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy||"http://localhost:8877";w=w.replace("localhost",Nt),w&&(f.push("--env",`HTTPS_PROXY=${w}`),f.push("--env",`https_proxy=${w}`),f.push("--env",`HTTP_PROXY=${w}`),f.push("--env",`http_proxy=${w}`));let _=process.env.NO_PROXY||process.env.no_proxy;_&&(f.push("--env",`NO_PROXY=${_}`),f.push("--env",`no_proxy=${_}`))}if(!n.networkAccess||k){let _=!n.networkAccess||!!k?"--internal":"";Ls(`${r} network inspect ${Gn} || ${r} network create ${_} ${Gn}`,{stdio:"ignore"}),f.push("--network",Gn),k&&Ls(`${r} network inspect ${Nt} || ${r} network create ${Nt}`,{stdio:"ignore"})}let M=Zc(p),v=process.env.GEMINI_CLI_INTEGRATION_TEST==="true",b;if(v)b=`gemini-cli-integration-test-${xi(4).toString("hex")}`,y.log(`ContainerName: ${b}`);else{let w=0,_=(await Qt(`${r} ps -a --format "{{.Names}}"`)).stdout.trim();for(;_.includes(`${M}-${w}`);)w++;b=`${M}-${w}`,y.log(`ContainerName (regular): ${b}`)}f.push("--name",b,"--hostname",b),process.env.GEMINI_CLI_TEST_VAR&&f.push("--env",`GEMINI_CLI_TEST_VAR=${process.env.GEMINI_CLI_TEST_VAR}`),process.env.GEMINI_API_KEY&&f.push("--env",`GEMINI_API_KEY=${process.env.GEMINI_API_KEY}`),process.env.GOOGLE_API_KEY&&f.push("--env",`GOOGLE_API_KEY=${process.env.GOOGLE_API_KEY}`),process.env.GOOGLE_GEMINI_BASE_URL&&f.push("--env",`GOOGLE_GEMINI_BASE_URL=${process.env.GOOGLE_GEMINI_BASE_URL}`),process.env.GOOGLE_VERTEX_BASE_URL&&f.push("--env",`GOOGLE_VERTEX_BASE_URL=${process.env.GOOGLE_VERTEX_BASE_URL}`),process.env.GOOGLE_GENAI_USE_VERTEXAI&&f.push("--env",`GOOGLE_GENAI_USE_VERTEXAI=${process.env.GOOGLE_GENAI_USE_VERTEXAI}`),process.env.GOOGLE_GENAI_USE_GCA&&f.push("--env",`GOOGLE_GENAI_USE_GCA=${process.env.GOOGLE_GENAI_USE_GCA}`),process.env.GOOGLE_CLOUD_PROJECT&&f.push("--env",`GOOGLE_CLOUD_PROJECT=${process.env.GOOGLE_CLOUD_PROJECT}`),process.env.GOOGLE_CLOUD_LOCATION&&f.push("--env",`GOOGLE_CLOUD_LOCATION=${process.env.GOOGLE_CLOUD_LOCATION}`),process.env.GEMINI_MODEL&&f.push("--env",`GEMINI_MODEL=${process.env.GEMINI_MODEL}`),process.env.TERM&&f.push("--env",`TERM=${process.env.TERM}`),process.env.COLORTERM&&f.push("--env",`COLORTERM=${process.env.COLORTERM}`);for(let w of["GEMINI_CLI_IDE_SERVER_PORT","GEMINI_CLI_IDE_WORKSPACE_PATH","TERM_PROGRAM"])process.env[w]&&f.push("--env",`${w}=${process.env[w]}`);if(process.env.VIRTUAL_ENV?.toLowerCase().startsWith(d.toLowerCase())){let w=qe.resolve(gt,"sandbox.venv");Ce.existsSync(w)||Ce.mkdirSync(w,{recursive:!0}),f.push("--volume",`${w}:${Ne(process.env.VIRTUAL_ENV)}`),f.push("--env",`VIRTUAL_ENV=${Ne(process.env.VIRTUAL_ENV)}`)}if(process.env.SANDBOX_ENV){for(let w of process.env.SANDBOX_ENV.split(","))if(w=w.trim())if(w.includes("="))y.log(`SANDBOX_ENV: ${w}`),f.push("--env",w);else throw new fe("SANDBOX_ENV must be a comma-separated list of key=value pairs")}let P=process.env.NODE_OPTIONS||"",ee=[...P?[P]:[],...e].join(" ");if(ee.length>0&&f.push("--env",`NODE_OPTIONS="${ee}"`),f.push("--env",`SANDBOX=${b}`),r==="podman"){let w=qe.join(zn.tmpdir(),"empty_auth.json");Ce.writeFileSync(w,"{}","utf-8"),f.push("--authfile",w)}let Q="",H=bi(d,s);if(process.env.GEMINI_CLI_INTEGRATION_TEST==="true")f.push("--user","root"),Q="--user root";else if(await Jc()){f.push("--user","root");let w=(await Qt("id -u")).stdout.trim(),_=(await Qt("id -g")).stdout.trim(),T="gemini",R=Ne(ct()),U=[`groupadd -f -g ${_} ${T}`,`id -u ${T} &>/dev/null || useradd -o -u ${w} -g ${_} -d ${R} -s /bin/bash ${T}`].join(" && "),V=H[2].replace(/'/g,"'\\''"),ce=`su -p ${T} -c '${V}'`;H[2]=`${U} && ${ce}`,Q=`--user ${w}:${_}`,f.push("--env",`HOME=${ct()}`)}f.push(p),f.push(...H);let K,N;if(k){let w=["run","--rm","--init",...Q?Q.split(" "):[],"--name",Nt,"--network",Nt,"-p","8877:8877","-v",`${process.cwd()}:${d}`,"--workdir",d,p,...(0,Wn.parse)(k,process.env).filter(T=>typeof T=="string")];K=en(r,w,{stdio:["ignore","pipe","pipe"],shell:!1,detached:!0});let _=()=>{y.log("stopping proxy container ..."),Ls(`${r} rm -f ${Nt}`)};process.off("exit",_),process.on("exit",_),process.off("SIGINT",_),process.on("SIGINT",_),process.off("SIGTERM",_),process.on("SIGTERM",_),K.stderr?.on("data",T=>{y.debug(`[PROXY STDERR]: ${T.toString().trim()}`)}),K.on("close",(T,R)=>{throw N?.pid&&process.kill(-N.pid,"SIGTERM"),new fe(`Proxy container command '${r} ${w.join(" ")}' exited with code ${T}, signal ${R}`)}),y.log("waiting for proxy to start ..."),await Qt("until timeout 0.25 curl -s http://localhost:8877; do sleep 0.25; done"),await Qt(`${r} network connect ${Gn} ${Nt}`)}return process.stdin.pause(),N=en(r,f,{stdio:"inherit"}),await new Promise((w,_)=>{N.on("error",T=>{q.emitFeedback("error","Sandbox process error",T),_(T)}),N?.on("close",(T,R)=>{process.stdin.resume(),T!==0&&T!==null&&y.log(`Sandbox process exited with code: ${T}, signal: ${R}`),w(T??1)})})}finally{o.cleanup()}}async function gm(n,e=[],t=[]){let s=n.image||"gemini-sandbox",o=qe.resolve(process.cwd());y.log(`starting lxc sandbox (container: ${s}, workdir: ${o}) ...`);let r;try{let{stdout:d}=await wi("lxc",["list",s,"--format=json"]);r=d.trim()}catch(d){throw new fe(`Failed to query LXC container '${s}': ${d instanceof Error?d.message:String(d)}. Make sure LXC/LXD is installed and '${s}' container exists. Create one with: lxc launch ubuntu:24.04 ${s}`)}let a=[];try{let d=JSON.parse(r);Array.isArray(d)&&(a=d.filter(m=>m!==null&&typeof m=="object"&&"name"in m&&"status"in m).map(m=>({name:String(m.name),status:String(m.status)})))}catch{a=[]}let l=a.find(d=>d.name===s);if(!l)throw new fe(`LXC container '${s}' not found. Create one with: lxc launch ubuntu:24.04 ${s}`);if(l.status.toLowerCase()!=="running")throw new fe(`LXC container '${s}' is not running (current status: ${l.status}). Start it with: lxc start ${s}`);let c=[],p=()=>{for(let d of c)try{fm("lxc",["config","device","remove",s,d],{timeout:1e3,killSignal:"SIGKILL",stdio:"ignore"})}catch{}};try{let d=`gemini-workspace-${xi(4).toString("hex")}`;c.push(d);try{await wi("lxc",["config","device","add",s,d,"disk",`source=${o}`,`path=${o}`]),y.log(`mounted workspace '${o}' into container as device '${d}'`)}catch(M){throw new fe(`Failed to mount workspace into LXC container '${s}': ${M instanceof Error?M.message:String(M)}`)}if(n.allowedPaths){for(let M of n.allowedPaths)if(M&&qe.isAbsolute(M)&&Ce.existsSync(M)){let v=`gemini-allowed-${xi(4).toString("hex")}`;c.push(v);try{await wi("lxc",["config","device","add",s,v,"disk",`source=${M}`,`path=${M}`,"readonly=true"]),y.log(`mounted allowed path '${M}' into container as device '${v}' (ro)`)}catch(b){y.warn(`Failed to mount allowed path '${M}' into LXC container: ${b instanceof Error?b.message:String(b)}`)}}}process.on("exit",p);let m=[],f={GEMINI_API_KEY:process.env.GEMINI_API_KEY,GOOGLE_API_KEY:process.env.GOOGLE_API_KEY,GOOGLE_GEMINI_BASE_URL:process.env.GOOGLE_GEMINI_BASE_URL,GOOGLE_VERTEX_BASE_URL:process.env.GOOGLE_VERTEX_BASE_URL,GOOGLE_GENAI_USE_VERTEXAI:process.env.GOOGLE_GENAI_USE_VERTEXAI,GOOGLE_GENAI_USE_GCA:process.env.GOOGLE_GENAI_USE_GCA,GOOGLE_CLOUD_PROJECT:process.env.GOOGLE_CLOUD_PROJECT,GOOGLE_CLOUD_LOCATION:process.env.GOOGLE_CLOUD_LOCATION,GEMINI_MODEL:process.env.GEMINI_MODEL,TERM:process.env.TERM,COLORTERM:process.env.COLORTERM,GEMINI_CLI_IDE_SERVER_PORT:process.env.GEMINI_CLI_IDE_SERVER_PORT,GEMINI_CLI_IDE_WORKSPACE_PATH:process.env.GEMINI_CLI_IDE_WORKSPACE_PATH,TERM_PROGRAM:process.env.TERM_PROGRAM};for(let[M,v]of Object.entries(f))v&&m.push("--env",`${M}=${v}`);if(process.env.SANDBOX_ENV){for(let M of process.env.SANDBOX_ENV.split(","))if(M=M.trim())if(M.includes("="))m.push("--env",M);else throw new fe("SANDBOX_ENV must be a comma-separated list of key=value pairs")}let h=process.env.NODE_OPTIONS||"",I=[...h?[h]:[],...e].join(" ");I.length>0&&m.push("--env",`NODE_OPTIONS=${I}`),m.push("--env",`SANDBOX=${s}`);let E=bi(o,t),x=["exec",s,"--cwd",o,...m,"--",...E];y.log(`lxc exec args: ${x.join(" ")}`),process.stdin.pause();let k=en("lxc",x,{stdio:"inherit"});return await new Promise((M,v)=>{k.on("error",b=>{q.emitFeedback("error","LXC sandbox process error",b),v(b)}),k.on("close",(b,P)=>{process.stdin.resume(),b!==0&&b!==null&&y.log(`LXC sandbox process exited with code: ${b}, signal: ${P}`),M(b??1)})})}finally{process.off("exit",p),p()}}async function Qc(n,e){return new Promise(t=>{let o=en(n,["images","-q",e]),r="";o.stdout&&o.stdout.on("data",a=>{r+=a.toString()}),o.on("error",a=>{y.warn(`Failed to start '${n}' command for image check: ${a.message}`),t(!1)}),o.on("close",a=>{t(r.trim()!=="")})})}async function ym(n,e,t){return y.debug(`Attempting to pull image ${e} using ${n}...`),new Promise(s=>{let r=en(n,["pull",e],{stdio:"pipe"}),a="",l=f=>{(t?.getDebugMode()||process.env.DEBUG)&&y.log(f.toString().trim())},c=f=>{a+=f.toString(),console.error(f.toString().trim())},p=f=>{y.warn(`Failed to start '${n} pull ${e}' command: ${f.message}`),m(),s(!1)},d=f=>{f===0?(y.log(`Successfully pulled image ${e}.`),m(),s(!0)):(y.warn(`Failed to pull image ${e}. '${n} pull ${e}' exited with code ${f}.`),a.trim(),m(),s(!1))},m=()=>{r.stdout&&r.stdout.removeListener("data",l),r.stderr&&r.stderr.removeListener("data",c),r.removeListener("error",p),r.removeListener("close",d),r.connected&&r.disconnect()};r.stdout&&r.stdout.on("data",l),r.stderr&&r.stderr.on("data",c),r.on("error",p),r.on("close",d)})}async function bm(n,e,t){return y.log(`Checking for sandbox image: ${e}`),await Qc(n,e)?(y.log(`Sandbox image ${e} found locally.`),!0):(y.log(`Sandbox image ${e} not found locally.`),e===gi?!1:await ym(n,e,t)?await Qc(n,e)?(y.log(`Sandbox image ${e} is now available after pulling.`),!0):(y.warn(`Sandbox image ${e} still not found after a pull attempt. This might indicate an issue with the image name or registry, or the pull command reported success but failed to make the image available.`),!1):(q.emitFeedback("error",`Failed to obtain sandbox image ${e} after check and pull attempt.`),!1))}import Ci from"node:fs/promises";import wm from"node:os";import{join as xm}from"node:path";var Si=xm(wm.tmpdir(),"gemini-cli-warnings.txt");async function nd(){try{await Ci.access(Si);let e=(await Ci.readFile(Si,"utf-8")).split(`
89
- `).filter(t=>t.trim()!=="");try{await Ci.unlink(Si)}catch{e.push("Warning: Could not delete temporary warnings file.")}return e}catch(n){return n instanceof Error&&"code"in n&&n.code==="ENOENT"?[]:[`Error checking/reading warnings file: ${B(n)}`]}}import Ei from"node:fs/promises";import Cm from"node:path";import Sm from"node:process";var Em={id:"home-directory",priority:ln.Low,check:async(n,e)=>{if(e.ui?.showHomeDirectoryWarning===!1)return null;try{let[t,s]=await Promise.all([Ei.realpath(n),Ei.realpath(ct())]);return t===s?Ca(e)&&cn(e).isTrusted?null:`Warning you are running Gemini CLI in your home directory.
90
- This warning can be disabled in /settings`:null}catch{return"Could not verify the current directory due to a file system error."}}},_m={id:"root-directory",priority:ln.High,check:async(n,e)=>{try{let t=await Ei.realpath(n),s="Warning: You are running Gemini CLI in the root directory. Your entire folder structure will be used for context. It is strongly recommended to run in a project-specific directory.";return Cm.dirname(t)===t?s:null}catch{return"Could not verify the current directory due to a file system error."}}},vm=[Em,_m];async function sd(n,e=Sm.cwd(),t){let o=(await Promise.all(vm.map(async r=>{let a=await r.check(e,n);return a?{id:r.id,message:a,priority:r.priority}:null}))).filter(r=>r!==null);return n.ui?.showCompatibilityWarnings!==!1&&o.push(...ga({isAlternateBuffer:t?.isAlternateBuffer})),o}import ud from"node:readline";function od(){return{addItem:(n,e)=>("text"in n&&n.text&&(n.type==="error"?process.stderr.write(`Error: ${n.text}
87
+ Gemini CLI - Defaults to interactive mode. Use -p/--prompt for non-interactive (headless) mode.`).option("isCommand",{type:"boolean",hidden:!0,description:"Internal flag to indicate if a subcommand is being run"}).option("debug",{alias:"d",type:"boolean",description:"Run in debug mode (open debug console with F12)",default:!1}).middleware(l=>{let m=[si,ii,di,mi].flatMap(p=>{let f=[],h=p.command;if(h)if(Array.isArray(h))for(let S of h)f.push(String(S).split(" ")[0]);else f.push(String(h).split(" ")[0]);let I=p.aliases;if(I)if(Array.isArray(I))for(let S of I)f.push(String(S).split(" ")[0]);else f.push(String(I).split(" ")[0]);return f}),d=l._[0];typeof d=="string"&&m.includes(d)&&(l.isCommand=!0)},!0).fail((l,c)=>{throw c||new Error(l)}).check(l=>{let c=l.query,m=typeof c=="string"||Array.isArray(c)?c:void 0,d=Array.isArray(m)?m.length>0:!!m;if(l.prompt&&d)return"Cannot use both a positional prompt and the --prompt (-p) flag together";if(l.prompt&&l.promptInteractive)return"Cannot use both --prompt (-p) and --prompt-interactive (-i) together";if(l.yolo&&l.approvalMode)return"Cannot use both --yolo (-y) and --approval-mode together. Use --approval-mode=yolo instead.";let p=l.outputFormat;return typeof p=="string"&&!["text","json","stream-json"].includes(p)?`Invalid values:
88
+ Argument: output-format, Given: "${p}", Choices: "text", "json", "stream-json"`:l.worktree&&!n.experimental?.worktrees?"The --worktree flag is only available when experimental.worktrees is enabled in your settings.":!0});s.command(si),s.command(ii),s.command(di),s.command(mi),s.command("$0 [query..]","Launch Gemini CLI",l=>l.positional("query",{description:"Initial prompt. Runs in interactive mode by default; use -p/--prompt for non-interactive."}).option("model",{alias:"m",type:"string",nargs:1,description:"Model"}).option("prompt",{alias:"p",type:"string",nargs:1,description:"Run in non-interactive (headless) mode with the given prompt. Appended to input on stdin (if any)."}).option("prompt-interactive",{alias:"i",type:"string",nargs:1,description:"Execute the provided prompt and continue in interactive mode"}).option("worktree",{alias:"w",type:"string",skipValidation:!0,description:"Start Gemini in a new git worktree. If no name is provided, one is generated automatically.",coerce:c=>{let m=typeof c=="string"?c.trim():"";return m===""?Math.random().toString(36).substring(2,10):m}}).option("sandbox",{alias:"s",type:"boolean",description:"Run in sandbox?"}).option("yolo",{alias:"y",type:"boolean",description:"Automatically accept all actions (aka YOLO mode, see https://www.youtube.com/watch?v=xvFZjo5PgG0 for more details)?",default:!1}).option("approval-mode",{type:"string",nargs:1,choices:["default","auto_edit","yolo","plan"],description:"Set the approval mode: default (prompt for approval), auto_edit (auto-approve edit tools), yolo (auto-approve all tools), plan (read-only mode)"}).option("policy",{type:"array",string:!0,nargs:1,description:"Additional policy files or directories to load (comma-separated or multiple --policy)",coerce:Sn}).option("admin-policy",{type:"array",string:!0,nargs:1,description:"Additional admin policy files or directories to load (comma-separated or multiple --admin-policy)",coerce:Sn}).option("acp",{type:"boolean",description:"Starts the agent in ACP mode"}).option("experimental-acp",{type:"boolean",description:"Starts the agent in ACP mode (deprecated, use --acp instead)"}).option("allowed-mcp-server-names",{type:"array",string:!0,nargs:1,description:"Allowed MCP server names",coerce:Sn}).option("allowed-tools",{type:"array",string:!0,nargs:1,description:"[DEPRECATED: Use Policy Engine instead See https://geminicli.com/docs/core/policy-engine] Tools that are allowed to run without confirmation",coerce:Sn}).option("extensions",{alias:"e",type:"array",string:!0,nargs:1,description:"A list of extensions to use. If not provided, all extensions are used.",coerce:Sn}).option("list-extensions",{alias:"l",type:"boolean",description:"List all available extensions and exit."}).option("resume",{alias:"r",type:"string",skipValidation:!0,description:'Resume a previous session. Use "latest" for most recent or index number (e.g. --resume 5)',coerce:c=>{let m=c.trim();return m===""?Oa:m}}).option("list-sessions",{type:"boolean",description:"List available sessions for the current project and exit."}).option("delete-session",{type:"string",description:"Delete a session by index number (use --list-sessions to see available sessions)."}).option("include-directories",{type:"array",string:!0,nargs:1,description:"Additional directories to include in the workspace (comma-separated or multiple --include-directories)",coerce:Sn}).option("screen-reader",{type:"boolean",description:"Enable screen reader mode for accessibility."}).option("output-format",{alias:"o",type:"string",nargs:1,description:"The format of the CLI output.",choices:["text","json","stream-json"]}).option("fake-responses",{type:"string",description:"Path to a file with fake model responses for testing.",hidden:!0}).option("record-responses",{type:"string",description:"Path to a file to record model responses for testing.",hidden:!0}).option("raw-output",{type:"boolean",description:"Disable sanitization of model output (e.g. allow ANSI escape sequences). WARNING: This can be a security risk if the model output is untrusted."}).option("accept-raw-output-risk",{type:"boolean",description:"Suppress the security warning when using --raw-output."})).version(await _t()).alias("v","version").help().alias("h","help").strict().demandCommand(0,0).exitProcess(!1),s.wrap(s.terminalWidth());let o;try{o=await s.parse()}catch(l){let c=l instanceof Error?l.message:String(l);y.error(c),s.showHelp(),await de(),Ie.exit(1)}(o.help||o.version)&&(await de(),Ie.exit(0));let r=o.query,a=Array.isArray(r)?r.join(" "):r;return a&&!o.prompt&&(Tn()?o.prompt=a:(t.push("Positional arguments now default to interactive mode. To run in non-interactive mode, use the --prompt (-p) flag."),o.promptInteractive=a)),o.query=a||void 0,o.startupMessages=t,o}function gi(n){return n.debug||[Ie.env.DEBUG,Ie.env.DEBUG_MODE].some(e=>e==="true"||e==="1")}async function Qt(n,e,t,s={}){let{cwd:o=Ie.cwd(),projectHooks:r}=s,a=gi(t),l=s.worktreeSettings??await mp(o);t.sandbox&&(Ie.env.GEMINI_SANDBOX="true");let c=n.context?.importFormat||"tree",m=n.context?.includeDirectoryTree??!0,d=n.ide?.enabled??!1,p=Ie.env.GEMINI_CLI_INTEGRATION_TEST==="true"||Ie.env.VITEST==="true"?!1:n.security?.folderTrust?.enabled??!1,f=dn(n,o,void 0,{prompt:t.prompt,query:t.query})?.isTrusted??!1;n.context?.fileName?ho(n.context.fileName):ho(br());let h=new Vr(o),I={...Hr,...n.context?.fileFiltering},S={...Br,...n.context?.fileFiltering},x=(n.context?.includeDirectories||[]).map(En).concat((t.includeDirectories||[]).map(En)),k=Ie.env.GEMINI_CLI_IDE_WORKSPACE_PATH;if(k){let O=Yn(o),A=k.split(_n.delimiter).filter(C=>{let D=C.trim();if(!D)return!1;try{return Yn(D)!==O}catch($){return y.debug(`[IDE] Skipping inaccessible workspace folder: ${D} (${$ instanceof Error?$.message:String($)})`),!1}});x.push(...A)}let M=new ue({settings:n,requestConsent:be,requestSetting:Oe,workspaceDir:o,enabledExtensionOverrides:t.extensions,eventEmitter:q,clientVersion:await _t()});await M.loadExtensions();let v=M.getExtensions().find(O=>O.isActive&&O.plan?.directory)?.plan,b=n.experimental.jitContext,P=Ie.env.GEMINI_CLI_EXTENSION_REGISTRY_URI??(f?n.experimental?.extensionRegistryURI:void 0);P&&!P.startsWith("http")&&(P=Yn(_n.resolve(o,En(P))));let ee="",Q=0,H=[];if(!b){let O=await Qr(o,n.context?.loadMemoryFromIncludeDirectories?x:[],h,M,f,c,I,n.context?.discoveryMaxDirs,n.context?.memoryBoundaryMarkers);ee=O.memoryContent,Q=O.fileCount,H=O.filePaths}let K=t.promptInteractive||t.prompt||"",N,w=t.approvalMode||(t.yolo?"yolo":void 0)||(n.general?.defaultApprovalMode!=="yolo"?n.general?.defaultApprovalMode:void 0);if(w)switch(w){case"yolo":N=Le.YOLO;break;case"auto_edit":N=Le.AUTO_EDIT;break;case"plan":n.general?.plan?.enabled??!0?N=Le.PLAN:(y.warn('Approval mode "plan" is disabled in your settings. Falling back to "default".'),N=Le.DEFAULT);break;case"default":N=Le.DEFAULT;break;default:throw new Error(`Invalid approval mode: ${w}. Valid values are: yolo, auto_edit, plan, default`)}else N=Le.DEFAULT;if(n.security?.disableYoloMode||n.admin?.secureModeEnabled){if(N===Le.YOLO)throw n.admin?.secureModeEnabled?y.error('YOLO mode is disabled by "secureModeEnabled" setting.'):y.error('YOLO mode is disabled by the "disableYolo" setting.'),new an(ln("YOLO mode",void 0))}else N===Le.YOLO&&y.warn("YOLO mode is enabled. All tool calls will be automatically approved.");!f&&N!==Le.DEFAULT&&(y.warn('Approval mode overridden to "default" because the current folder is not trusted.'),N=Le.DEFAULT);let _;try{_=await Nr({env:Ie.env,settings:n.telemetry})}catch(O){throw O instanceof an?new an(`Invalid telemetry configuration: ${O.message}.`):O}let T=!!t.promptInteractive||!!t.acp||!!t.experimentalAcp||!Tn({prompt:t.prompt,query:t.query})&&!t.isCommand,R=t.allowedTools||n.tools?.allowed||[],U=!!t.acp||!!t.experimentalAcp,ne=[];(!T||U)&&ne.push(yr);let V=up(n,ne),ce={...n,tools:{...n.tools,allowed:R,exclude:V},mcp:{...n.mcp,allowed:t.allowedMcpServerNames??n.mcp?.allowed},policyPaths:(t.policy??n.policyPaths)?.map(O=>En(O)),adminPolicyPaths:(t.adminPolicy??n.adminPolicyPaths)?.map(O=>En(O))},{workspacePoliciesDir:$e,policyUpdateConfirmationRequest:ie}=await Jc({cwd:o,trustedFolder:f,interactive:T}),Te=await Kc(ce,N,$e,T),se=On,J=t.model||Ie.env.GEMINI_MODEL||n.model?.name,L=J===hr?se:J||se,Se=await $s(n,t);if(Se){let O=Se.allowedPaths||[];n.tools.sandboxAllowedPaths?.length&&(Se.allowedPaths=[...new Set([...O,...n.tools.sandboxAllowedPaths])]),n.tools.sandboxNetworkAccess!==void 0&&(Se.networkAccess=Se.networkAccess||n.tools.sandboxNetworkAccess)}let G=t.screenReader!==void 0?t.screenReader:n.ui?.accessibility?.screenReader??!1,ae=await Yr(),re=n.admin?.mcp?.enabled??!0,oe=n.admin?.extensions?.enabled??!0,ye=n.admin?.skills?.enabled??!0,xe=st.getInstance(),Be=re?xe.getEnablementCallbacks():void 0,je=n.admin?.mcp?.config,Dt=re?n.mcp?.serverCommand:void 0,g=re?n.mcpServers:{};if(re&&je&&Object.keys(je).length>0){let O=ss(g,je);if(g=O.mcpServers,Dt=void 0,O.blockedServerNames&&O.blockedServerNames.length>0){let A=ns(O.blockedServerNames,void 0);q.emitConsoleLog("warn",A)}}if(re){let O=n.admin?.mcp?.requiredConfig;if(O&&Object.keys(O).length>0){let A=ga(g??{},O);g=A.mcpServers,A.requiredServerNames.length>0&&q.emitConsoleLog("info",`Admin-required MCP servers injected: ${A.requiredServerNames.join(", ")}`)}}let E;if(U){let O=Rr();O&&(O.name!=="vscode"||Ie.env.TERM_PROGRAM==="vscode")&&(E=`acp-${O.name}`)}return new ia({acpMode:U,clientName:E,sessionId:e,clientVersion:await _t(),embeddingModel:gr,sandbox:Se,toolSandboxing:n.security?.toolSandboxing??!1,targetDir:o,includeDirectoryTree:m,includeDirectories:x,loadMemoryFromIncludeDirectories:n.context?.loadMemoryFromIncludeDirectories||!1,discoveryMaxDirs:n.context?.discoveryMaxDirs,memoryBoundaryMarkers:n.context?.memoryBoundaryMarkers,importFormat:n.context?.importFormat,debugMode:a,question:K,worktreeSettings:l,coreTools:n.tools?.core||void 0,allowedTools:R.length>0?R:void 0,policyEngineConfig:Te,policyUpdateConfirmationRequest:ie,excludeTools:V,toolDiscoveryCommand:n.tools?.discoveryCommand,toolCallCommand:n.tools?.callCommand,mcpServerCommand:Dt,mcpServers:g,mcpEnablementCallbacks:Be,mcpEnabled:re,extensionsEnabled:oe,agents:n.agents,adminSkillsEnabled:ye,allowedMcpServers:re?t.allowedMcpServerNames??n.mcp?.allowed:void 0,blockedMcpServers:re?t.allowedMcpServerNames?void 0:n.mcp?.excluded:void 0,blockedEnvironmentVariables:n.security?.environmentVariableRedaction?.blocked,enableEnvironmentVariableRedaction:n.security?.environmentVariableRedaction?.enabled,userMemory:ee,geminiMdFileCount:Q,geminiMdFilePaths:H,approvalMode:N,disableYoloMode:n.security?.disableYoloMode||n.admin?.secureModeEnabled,disableAlwaysAllow:n.security?.disableAlwaysAllow||n.admin?.secureModeEnabled,showMemoryUsage:n.ui?.showMemoryUsage||!1,accessibility:{...n.ui?.accessibility,screenReader:G},telemetry:_,usageStatisticsEnabled:n.privacy?.usageStatisticsEnabled,fileFiltering:S,checkpointing:n.general?.checkpointing?.enabled,proxy:Ie.env.HTTPS_PROXY||Ie.env.https_proxy||Ie.env.HTTP_PROXY||Ie.env.http_proxy,cwd:o,fileDiscoveryService:h,bugCommand:n.advanced?.bugCommand,model:L,maxSessionTurns:n.model?.maxSessionTurns,listExtensions:t.listExtensions||!1,listSessions:t.listSessions||!1,deleteSession:t.deleteSession,enabledExtensions:t.extensions,extensionLoader:M,extensionRegistryURI:P,enableExtensionReloading:n.experimental?.extensionReloading,enableAgents:n.experimental?.enableAgents,plan:n.general?.plan?.enabled??!0,tracker:n.experimental?.taskTracker,directWebFetch:n.experimental?.directWebFetch,planSettings:n.general?.plan?.directory?n.general.plan:v??n.general?.plan,enableEventDrivenScheduler:!0,skillsSupport:n.skills?.enabled??!0,disabledSkills:n.skills?.disabled,experimentalJitContext:n.experimental?.jitContext,experimentalMemoryManager:n.experimental?.memoryManager,contextManagement:{enabled:n.experimental?.contextManagement,...n?.contextManagement},modelSteering:n.experimental?.modelSteering,topicUpdateNarration:n.experimental?.topicUpdateNarration,noBrowser:!!Ie.env.NO_BROWSER,summarizeToolOutput:n.model?.summarizeToolOutput,ideMode:d,disableLoopDetection:n.model?.disableLoopDetection,compressionThreshold:n.model?.compressionThreshold,folderTrust:p,interactive:T,trustedFolder:f,useBackgroundColor:n.ui?.useBackgroundColor,useAlternateBuffer:n.ui?.useAlternateBuffer,useRipgrep:n.tools?.useRipgrep,enableInteractiveShell:n.tools?.shell?.enableInteractiveShell,shellBackgroundCompletionBehavior:n.tools?.shell?.backgroundCompletionBehavior,shellToolInactivityTimeout:n.tools?.shell?.inactivityTimeout,enableShellOutputEfficiency:n.tools?.shell?.enableShellOutputEfficiency??!0,skipNextSpeakerCheck:n.model?.skipNextSpeakerCheck,truncateToolOutputThreshold:n.tools?.truncateToolOutputThreshold,eventEmitter:q,useWriteTodos:t.useWriteTodos??n.useWriteTodos,output:{format:t.outputFormat??n.output?.format},gemmaModelRouter:n.experimental?.gemmaModelRouter,fakeResponses:t.fakeResponses,recordResponses:t.recordResponses,retryFetchErrors:n.general?.retryFetchErrors,billing:n.billing,maxAttempts:n.general?.maxAttempts,ptyInfo:ae?.name,disableLLMCorrection:n.tools?.disableLLMCorrection,rawOutput:t.rawOutput,acceptRawOutputRisk:t.acceptRawOutputRisk,dynamicModelConfiguration:n.experimental?.dynamicModelConfiguration,modelConfigServiceConfig:n.modelConfigs,enableHooks:n.hooksConfig.enabled,enableHooksUI:n.hooksConfig.enabled,hooks:n.hooks||{},disabledHooks:n.hooksConfig?.disabled||[],projectHooks:r||{},onModelChange:O=>Ra(te(o),O),onReload:async()=>{let O=te(o);return{disabledSkills:O.merged.skills.disabled,agents:O.merged.agents}},enableConseca:n.security?.enableConseca})}function up(n,e=[]){let t=new Set([...n.tools.exclude||[],...e]);return Array.from(t)}async function mp(n){let e;try{let{stdout:s}=await _o("git",["rev-parse","--show-toplevel"],{cwd:n}),o=s.trim(),r=await is(o);Sa(o,r)&&(e=o)}catch{return}if(!e)return;let t;try{let{stdout:s}=await _o("git",["rev-parse","HEAD"],{cwd:e});t=s.trim()}catch(s){y.debug(`Failed to resolve worktree base SHA at ${e}: ${s instanceof Error?s.message:String(s)}`)}if(t)return{name:_n.basename(e),path:e,baseSha:t}}async function yi(){return new Promise((e,t)=>{let s="",o=0;process.stdin.setEncoding("utf8");let a=setTimeout(()=>{c()},500),l=()=>{let p;for(;(p=process.stdin.read())!==null;){if(a&&(clearTimeout(a),a=null),o+p.length>8388608){let f=8388608-o;s+=p.slice(0,f),y.warn("Warning: stdin input truncated to 8388608 bytes."),process.stdin.destroy(),c();break}s+=p,o+=p.length}},c=()=>{d(),e(s)},m=p=>{d(),t(p)},d=()=>{a&&(clearTimeout(a),a=null),process.stdin.removeListener("readable",l),process.stdin.removeListener("end",c),process.stdin.removeListener("error",m),process.stdin.listenerCount("error")===0&&process.stdin.on("error",fp)};process.stdin.on("readable",l),process.stdin.on("end",c),process.stdin.on("error",m)})}function fp(){}import{createHash as Eh}from"node:crypto";import Sh from"node:v8";import _h from"node:os";import vh from"node:dns";var qn=ze(lr(),1);import{exec as yp,execFile as bp,execSync as Ds,spawn as tn,spawnSync as wp}from"node:child_process";import qe from"node:path";import Ce from"node:fs";import Wn from"node:os";import{fileURLToPath as xp}from"node:url";import{promisify as id}from"node:util";import{randomBytes as Si}from"node:crypto";var ed=ze(lr(),1);import bi from"node:os";import hp from"node:fs";import{readFile as gp}from"node:fs/promises";var wi="gemini-cli-sandbox",zn="gemini-cli-sandbox",$t="gemini-cli-sandbox-proxy",td=["permissive-open","permissive-proxied","restrictive-open","restrictive-proxied","strict-open","strict-proxied"];function Ne(n){if(bi.platform()!=="win32")return n;let e=n.replace(/\\/g,"/"),t=e.match(/^([A-Z]):\/(.*)/i);return t?`/${t[1].toLowerCase()}/${t[2]}`:e}async function nd(){let n=process.env.SANDBOX_SET_UID_GID?.toLowerCase().trim();if(n==="1"||n==="true")return!0;if(n==="0"||n==="false")return!1;if(bi.platform()==="linux")try{let e=await gp("/etc/os-release","utf8");if(e.includes("ID=debian")||e.includes("ID=ubuntu")||e.match(/^ID_LIKE=.*debian.*/m)||e.match(/^ID_LIKE=.*ubuntu.*/m))return y.log("Defaulting to use current user UID/GID for Debian/Ubuntu-based Linux."),!0}catch{y.warn("Warning: Could not read /etc/os-release to auto-detect Debian/Ubuntu for UID/GID default.")}return!1}function sd(n){let[e,t]=n.split(":"),s=e.split("/").at(-1)??"unknown-image";return t?`${s}-${t}`:s}function xi(){return(process.env.SANDBOX_PORTS??"").split(",").filter(n=>n.trim()).map(n=>n.trim())}function Ci(n,e){let t=bi.platform()==="win32",s=Ne(n),o=[],r=t?";":":",a="";if(process.env.PATH){let h=process.env.PATH.split(r);for(let I of h){let S=Ne(I);S.toLowerCase().startsWith(s.toLowerCase())&&(a+=`:${S}`)}}a&&o.push(`export PATH="$PATH${a}";`);let l="";if(process.env.PYTHONPATH){let h=process.env.PYTHONPATH.split(r);for(let I of h){let S=Ne(I);S.toLowerCase().startsWith(s.toLowerCase())&&(l+=`:${S}`)}}l&&o.push(`export PYTHONPATH="$PYTHONPATH${l}";`);let c=`${gt}/sandbox.bashrc`;hp.existsSync(c)&&o.push(`source ${Ne(c)};`),xi().forEach(h=>o.push(`socat TCP4-LISTEN:${h},bind=$(hostname -i),fork,reuseaddr TCP4:127.0.0.1:${h} 2> /dev/null &`));let m=e.slice(2).map(h=>(0,ed.quote)([h])),d=process.env.DEBUG==="true"||process.env.DEBUG==="1",p=process.env.NODE_ENV==="development"?d?"npm run debug --":"npm rebuild && npm run start --":d?`node --inspect-brk=0.0.0.0:${process.env.DEBUG_PORT||"9229"} $(which gemini)`:"gemini";return["bash","-c",[...o,p,...m].join(" ")]}var en=id(yp),Ei=id(bp);async function rd(n,e=[],t,s=[]){let o=new mn({debugMode:t?.getDebugMode()||!!process.env.DEBUG,stderr:!0});o.patch();try{if(n.command==="sandbox-exec"){if(process.env.BUILD_SANDBOX)throw new fe("Cannot BUILD_SANDBOX when using macOS Seatbelt");let w=process.env.SEATBELT_PROFILE??="permissive-open",_=xp(new URL(`sandbox-macos-${w}.sb`,import.meta.url));if(td.includes(w)||(_=qe.join(gt,`sandbox-macos-${w}.sb`)),!Ce.existsSync(_))throw new fe(`Missing macos seatbelt profile file '${_}'`);y.log(`using macos seatbelt (profile: ${w}) ...`);let T=[...process.env.DEBUG?["--inspect-brk"]:[],...e].join(" "),R=["-D",`TARGET_DIR=${Ce.realpathSync(process.cwd())}`,"-D",`TMP_DIR=${Ce.realpathSync(Wn.tmpdir())}`,"-D",`HOME_DIR=${Ce.realpathSync(ct())}`,"-D",`CACHE_DIR=${Ce.realpathSync((await en("getconf DARWIN_USER_CACHE_DIR")).stdout.trim())}`],U=5,ne=Ce.realpathSync(t?.getTargetDir()||""),V=[];if(t){let L=t.getWorkspaceContext().getDirectories();for(let Se of L){let G=Ce.realpathSync(Se);G!==ne&&V.push(G)}}if(n.allowedPaths){for(let J of n.allowedPaths)if(J&&qe.isAbsolute(J)&&Ce.existsSync(J)){let L=Ce.realpathSync(J);!V.includes(L)&&L!==ne&&V.push(L)}}for(let J=0;J<U;J++){let L="/dev/null";J<V.length&&(L=V[J]),R.push("-D",`INCLUDE_DIR_${J}=${L}`)}let ce=s;R.push("-f",_,"sh","-c",["SANDBOX=sandbox-exec",`NODE_OPTIONS="${T}"`,...ce.map(J=>(0,qn.quote)([J]))].join(" "));let $e=process.env.GEMINI_SANDBOX_PROXY_COMMAND,ie,Te,se={...process.env};if($e){let J=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy||"http://localhost:8877";se.HTTPS_PROXY=J,se.https_proxy=J,se.HTTP_PROXY=J,se.http_proxy=J;let L=process.env.NO_PROXY||process.env.no_proxy;L&&(se.NO_PROXY=L,se.no_proxy=L),ie=tn($e,{stdio:["ignore","pipe","pipe"],shell:!0,detached:!0});let Se=()=>{y.log("stopping proxy ..."),ie?.pid&&process.kill(-ie.pid,"SIGTERM")};process.off("exit",Se),process.on("exit",Se),process.off("SIGINT",Se),process.on("SIGINT",Se),process.off("SIGTERM",Se),process.on("SIGTERM",Se),ie.stderr?.on("data",G=>{y.debug(`[PROXY STDERR]: ${G.toString().trim()}`)}),ie.on("close",(G,ae)=>{throw Te?.pid&&process.kill(-Te.pid,"SIGTERM"),new fe(`Proxy command '${$e}' exited with code ${G}, signal ${ae}`)}),y.log("waiting for proxy to start ..."),await en("until timeout 0.25 curl -s http://localhost:8877; do sleep 0.25; done")}return process.stdin.pause(),Te=tn(n.command,R,{stdio:"inherit"}),await new Promise((J,L)=>{Te?.on("error",L),Te?.on("close",Se=>{process.stdin.resume(),J(Se??1)})})}if(n.command==="lxc")return await Cp(n,e,s);let r=n.command==="runsc"?"docker":n.command;if(!r)throw new fe("Sandbox command is required");y.log(`hopping into sandbox (command: ${r}) ...`);let a=process.argv[1]?Ce.realpathSync(process.argv[1]):"",l=qe.join(gt,"sandbox.Dockerfile"),c=Ce.existsSync(l),m=n.image;if(!m)throw new fe("Sandbox image is required");if(!/^[a-zA-Z0-9_.:/-]+$/.test(m))throw new fe("Invalid sandbox image name");let d=qe.resolve(process.cwd()),p=Ne(d);if(process.env.BUILD_SANDBOX)if(a.includes("gemini-cli/packages/")){y.log("building sandbox ...");let w=a.split("/packages/")[0],_="",T=qe.join(gt,"sandbox.Dockerfile");c&&(y.log(`using ${T} for sandbox`),_+=`-f ${qe.resolve(T)} -i ${m}`),Ds(`cd ${w} && node scripts/build_sandbox.js -s ${_}`,{stdio:"inherit",env:{...process.env,GEMINI_SANDBOX:r}})}else throw new fe("Cannot build sandbox using installed gemini binary; run `npm link ./packages/cli` under gemini-cli repo to switch to linked binary.");if(!await Sp(r,m,t)){let w=m===wi?"Try running `npm run build:all` or `npm run build:sandbox` under the gemini-cli repo to build it locally, or check the image name and your network connection.":"Please check the image name, your network connection, or notify gemini-cli-dev@google.com if the issue persists.";throw new fe(`Sandbox image '${m}' is missing or could not be pulled. ${w}`)}let f=["run","-i","--rm","--init","--workdir",p];if(n.command==="runsc"&&f.push("--runtime=runsc"),process.env.SANDBOX_FLAGS){let w=(0,qn.parse)(process.env.SANDBOX_FLAGS,process.env).filter(_=>typeof _=="string");f.push(...w)}process.stdin.isTTY&&f.push("-t"),f.push("--add-host","host.docker.internal:host-gateway"),f.push("--volume",`${d}:${p}`);let h=ct(),I=Ne(`/home/node/${gt}`);Ce.existsSync(h)||Ce.mkdirSync(h,{recursive:!0});let S=qe.join(h,gt);Ce.existsSync(S)||Ce.mkdirSync(S,{recursive:!0}),f.push("--volume",`${S}:${I}`),I!==Ne(S)&&f.push("--volume",`${S}:${Ne(S)}`),f.push("--volume",`${Wn.tmpdir()}:${Ne(Wn.tmpdir())}`),h!==Wn.homedir()&&f.push("--volume",`${h}:${Ne(h)}`);let x=qe.join(ct(),".config","gcloud");if(Ce.existsSync(x)&&f.push("--volume",`${x}:${Ne(x)}:ro`),process.env.GOOGLE_APPLICATION_CREDENTIALS){let w=process.env.GOOGLE_APPLICATION_CREDENTIALS;Ce.existsSync(w)&&(f.push("--volume",`${w}:${Ne(w)}:ro`),f.push("--env",`GOOGLE_APPLICATION_CREDENTIALS=${Ne(w)}`))}if(process.env.SANDBOX_MOUNTS){for(let w of process.env.SANDBOX_MOUNTS.split(","))if(w.trim()){let[_,T,R]=w.trim().split(":");if(T=T||_,R=R||"ro",w=`${_}:${T}:${R}`,!qe.isAbsolute(_))throw new fe(`Path '${_}' listed in SANDBOX_MOUNTS must be absolute`);if(!Ce.existsSync(_))throw new fe(`Missing mount path '${_}' listed in SANDBOX_MOUNTS`);y.log(`SANDBOX_MOUNTS: ${_} -> ${T} (${R})`),f.push("--volume",w)}}if(n.allowedPaths){for(let w of n.allowedPaths)if(w&&qe.isAbsolute(w)&&Ce.existsSync(w)){let _=Ne(w);y.log(`Config allowedPath: ${w} -> ${_} (ro)`),f.push("--volume",`${w}:${_}:ro`)}}if(xi().forEach(w=>f.push("--publish",`${w}:${w}`)),process.env.DEBUG){let w=process.env.DEBUG_PORT||"9229";f.push("--publish",`${w}:${w}`)}let k=process.env.GEMINI_SANDBOX_PROXY_COMMAND;if(k){let w=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy||"http://localhost:8877";w=w.replace("localhost",$t),w&&(f.push("--env",`HTTPS_PROXY=${w}`),f.push("--env",`https_proxy=${w}`),f.push("--env",`HTTP_PROXY=${w}`),f.push("--env",`http_proxy=${w}`));let _=process.env.NO_PROXY||process.env.no_proxy;_&&(f.push("--env",`NO_PROXY=${_}`),f.push("--env",`no_proxy=${_}`))}if(!n.networkAccess||k){let _=!n.networkAccess||!!k?"--internal":"";Ds(`${r} network inspect ${zn} || ${r} network create ${_} ${zn}`,{stdio:"ignore"}),f.push("--network",zn),k&&Ds(`${r} network inspect ${$t} || ${r} network create ${$t}`,{stdio:"ignore"})}let M=sd(m),v=process.env.GEMINI_CLI_INTEGRATION_TEST==="true",b;if(v)b=`gemini-cli-integration-test-${Si(4).toString("hex")}`,y.log(`ContainerName: ${b}`);else{let w=0,_=(await en(`${r} ps -a --format "{{.Names}}"`)).stdout.trim();for(;_.includes(`${M}-${w}`);)w++;b=`${M}-${w}`,y.log(`ContainerName (regular): ${b}`)}f.push("--name",b,"--hostname",b),process.env.GEMINI_CLI_TEST_VAR&&f.push("--env",`GEMINI_CLI_TEST_VAR=${process.env.GEMINI_CLI_TEST_VAR}`),process.env.GEMINI_API_KEY&&f.push("--env",`GEMINI_API_KEY=${process.env.GEMINI_API_KEY}`),process.env.GOOGLE_API_KEY&&f.push("--env",`GOOGLE_API_KEY=${process.env.GOOGLE_API_KEY}`),process.env.GOOGLE_GEMINI_BASE_URL&&f.push("--env",`GOOGLE_GEMINI_BASE_URL=${process.env.GOOGLE_GEMINI_BASE_URL}`),process.env.GOOGLE_VERTEX_BASE_URL&&f.push("--env",`GOOGLE_VERTEX_BASE_URL=${process.env.GOOGLE_VERTEX_BASE_URL}`),process.env.GOOGLE_GENAI_USE_VERTEXAI&&f.push("--env",`GOOGLE_GENAI_USE_VERTEXAI=${process.env.GOOGLE_GENAI_USE_VERTEXAI}`),process.env.GOOGLE_GENAI_USE_GCA&&f.push("--env",`GOOGLE_GENAI_USE_GCA=${process.env.GOOGLE_GENAI_USE_GCA}`),process.env.GOOGLE_CLOUD_PROJECT&&f.push("--env",`GOOGLE_CLOUD_PROJECT=${process.env.GOOGLE_CLOUD_PROJECT}`),process.env.GOOGLE_CLOUD_LOCATION&&f.push("--env",`GOOGLE_CLOUD_LOCATION=${process.env.GOOGLE_CLOUD_LOCATION}`),process.env.GEMINI_MODEL&&f.push("--env",`GEMINI_MODEL=${process.env.GEMINI_MODEL}`),process.env.TERM&&f.push("--env",`TERM=${process.env.TERM}`),process.env.COLORTERM&&f.push("--env",`COLORTERM=${process.env.COLORTERM}`);for(let w of["GEMINI_CLI_IDE_SERVER_PORT","GEMINI_CLI_IDE_WORKSPACE_PATH","TERM_PROGRAM"])process.env[w]&&f.push("--env",`${w}=${process.env[w]}`);if(process.env.VIRTUAL_ENV?.toLowerCase().startsWith(d.toLowerCase())){let w=qe.resolve(gt,"sandbox.venv");Ce.existsSync(w)||Ce.mkdirSync(w,{recursive:!0}),f.push("--volume",`${w}:${Ne(process.env.VIRTUAL_ENV)}`),f.push("--env",`VIRTUAL_ENV=${Ne(process.env.VIRTUAL_ENV)}`)}if(process.env.SANDBOX_ENV){for(let w of process.env.SANDBOX_ENV.split(","))if(w=w.trim())if(w.includes("="))y.log(`SANDBOX_ENV: ${w}`),f.push("--env",w);else throw new fe("SANDBOX_ENV must be a comma-separated list of key=value pairs")}let P=process.env.NODE_OPTIONS||"",ee=[...P?[P]:[],...e].join(" ");if(ee.length>0&&f.push("--env",`NODE_OPTIONS="${ee}"`),f.push("--env",`SANDBOX=${b}`),r==="podman"){let w=qe.join(Wn.tmpdir(),"empty_auth.json");Ce.writeFileSync(w,"{}","utf-8"),f.push("--authfile",w)}let Q="",H=Ci(d,s);if(process.env.GEMINI_CLI_INTEGRATION_TEST==="true")f.push("--user","root"),Q="--user root";else if(await nd()){f.push("--user","root");let w=(await en("id -u")).stdout.trim(),_=(await en("id -g")).stdout.trim(),T="gemini",R=Ne(ct()),U=[`groupadd -f -g ${_} ${T}`,`id -u ${T} &>/dev/null || useradd -o -u ${w} -g ${_} -d ${R} -s /bin/bash ${T}`].join(" && "),V=H[2].replace(/'/g,"'\\''"),ce=`su -p ${T} -c '${V}'`;H[2]=`${U} && ${ce}`,Q=`--user ${w}:${_}`,f.push("--env",`HOME=${ct()}`)}f.push(m),f.push(...H);let K,N;if(k){let w=["run","--rm","--init",...Q?Q.split(" "):[],"--name",$t,"--network",$t,"-p","8877:8877","-v",`${process.cwd()}:${d}`,"--workdir",d,m,...(0,qn.parse)(k,process.env).filter(T=>typeof T=="string")];K=tn(r,w,{stdio:["ignore","pipe","pipe"],shell:!1,detached:!0});let _=()=>{y.log("stopping proxy container ..."),Ds(`${r} rm -f ${$t}`)};process.off("exit",_),process.on("exit",_),process.off("SIGINT",_),process.on("SIGINT",_),process.off("SIGTERM",_),process.on("SIGTERM",_),K.stderr?.on("data",T=>{y.debug(`[PROXY STDERR]: ${T.toString().trim()}`)}),K.on("close",(T,R)=>{throw N?.pid&&process.kill(-N.pid,"SIGTERM"),new fe(`Proxy container command '${r} ${w.join(" ")}' exited with code ${T}, signal ${R}`)}),y.log("waiting for proxy to start ..."),await en("until timeout 0.25 curl -s http://localhost:8877; do sleep 0.25; done"),await en(`${r} network connect ${zn} ${$t}`)}return process.stdin.pause(),N=tn(r,f,{stdio:"inherit"}),await new Promise((w,_)=>{N.on("error",T=>{q.emitFeedback("error","Sandbox process error",T),_(T)}),N?.on("close",(T,R)=>{process.stdin.resume(),T!==0&&T!==null&&y.log(`Sandbox process exited with code: ${T}, signal: ${R}`),w(T??1)})})}finally{o.cleanup()}}async function Cp(n,e=[],t=[]){let s=n.image||"gemini-sandbox",o=qe.resolve(process.cwd());y.log(`starting lxc sandbox (container: ${s}, workdir: ${o}) ...`);let r;try{let{stdout:d}=await Ei("lxc",["list",s,"--format=json"]);r=d.trim()}catch(d){throw new fe(`Failed to query LXC container '${s}': ${d instanceof Error?d.message:String(d)}. Make sure LXC/LXD is installed and '${s}' container exists. Create one with: lxc launch ubuntu:24.04 ${s}`)}let a=[];try{let d=JSON.parse(r);Array.isArray(d)&&(a=d.filter(p=>p!==null&&typeof p=="object"&&"name"in p&&"status"in p).map(p=>({name:String(p.name),status:String(p.status)})))}catch{a=[]}let l=a.find(d=>d.name===s);if(!l)throw new fe(`LXC container '${s}' not found. Create one with: lxc launch ubuntu:24.04 ${s}`);if(l.status.toLowerCase()!=="running")throw new fe(`LXC container '${s}' is not running (current status: ${l.status}). Start it with: lxc start ${s}`);let c=[],m=()=>{for(let d of c)try{wp("lxc",["config","device","remove",s,d],{timeout:1e3,killSignal:"SIGKILL",stdio:"ignore"})}catch{}};try{let d=`gemini-workspace-${Si(4).toString("hex")}`;c.push(d);try{await Ei("lxc",["config","device","add",s,d,"disk",`source=${o}`,`path=${o}`]),y.log(`mounted workspace '${o}' into container as device '${d}'`)}catch(M){throw new fe(`Failed to mount workspace into LXC container '${s}': ${M instanceof Error?M.message:String(M)}`)}if(n.allowedPaths){for(let M of n.allowedPaths)if(M&&qe.isAbsolute(M)&&Ce.existsSync(M)){let v=`gemini-allowed-${Si(4).toString("hex")}`;c.push(v);try{await Ei("lxc",["config","device","add",s,v,"disk",`source=${M}`,`path=${M}`,"readonly=true"]),y.log(`mounted allowed path '${M}' into container as device '${v}' (ro)`)}catch(b){y.warn(`Failed to mount allowed path '${M}' into LXC container: ${b instanceof Error?b.message:String(b)}`)}}}process.on("exit",m);let p=[],f={GEMINI_API_KEY:process.env.GEMINI_API_KEY,GOOGLE_API_KEY:process.env.GOOGLE_API_KEY,GOOGLE_GEMINI_BASE_URL:process.env.GOOGLE_GEMINI_BASE_URL,GOOGLE_VERTEX_BASE_URL:process.env.GOOGLE_VERTEX_BASE_URL,GOOGLE_GENAI_USE_VERTEXAI:process.env.GOOGLE_GENAI_USE_VERTEXAI,GOOGLE_GENAI_USE_GCA:process.env.GOOGLE_GENAI_USE_GCA,GOOGLE_CLOUD_PROJECT:process.env.GOOGLE_CLOUD_PROJECT,GOOGLE_CLOUD_LOCATION:process.env.GOOGLE_CLOUD_LOCATION,GEMINI_MODEL:process.env.GEMINI_MODEL,TERM:process.env.TERM,COLORTERM:process.env.COLORTERM,GEMINI_CLI_IDE_SERVER_PORT:process.env.GEMINI_CLI_IDE_SERVER_PORT,GEMINI_CLI_IDE_WORKSPACE_PATH:process.env.GEMINI_CLI_IDE_WORKSPACE_PATH,TERM_PROGRAM:process.env.TERM_PROGRAM};for(let[M,v]of Object.entries(f))v&&p.push("--env",`${M}=${v}`);if(process.env.SANDBOX_ENV){for(let M of process.env.SANDBOX_ENV.split(","))if(M=M.trim())if(M.includes("="))p.push("--env",M);else throw new fe("SANDBOX_ENV must be a comma-separated list of key=value pairs")}let h=process.env.NODE_OPTIONS||"",I=[...h?[h]:[],...e].join(" ");I.length>0&&p.push("--env",`NODE_OPTIONS=${I}`),p.push("--env",`SANDBOX=${s}`);let S=Ci(o,t),x=["exec",s,"--cwd",o,...p,"--",...S];y.log(`lxc exec args: ${x.join(" ")}`),process.stdin.pause();let k=tn("lxc",x,{stdio:"inherit"});return await new Promise((M,v)=>{k.on("error",b=>{q.emitFeedback("error","LXC sandbox process error",b),v(b)}),k.on("close",(b,P)=>{process.stdin.resume(),b!==0&&b!==null&&y.log(`LXC sandbox process exited with code: ${b}, signal: ${P}`),M(b??1)})})}finally{process.off("exit",m),m()}}async function od(n,e){return new Promise(t=>{let o=tn(n,["images","-q",e]),r="";o.stdout&&o.stdout.on("data",a=>{r+=a.toString()}),o.on("error",a=>{y.warn(`Failed to start '${n}' command for image check: ${a.message}`),t(!1)}),o.on("close",a=>{t(r.trim()!=="")})})}async function Ep(n,e,t){return y.debug(`Attempting to pull image ${e} using ${n}...`),new Promise(s=>{let r=tn(n,["pull",e],{stdio:"pipe"}),a="",l=f=>{(t?.getDebugMode()||process.env.DEBUG)&&y.log(f.toString().trim())},c=f=>{a+=f.toString(),console.error(f.toString().trim())},m=f=>{y.warn(`Failed to start '${n} pull ${e}' command: ${f.message}`),p(),s(!1)},d=f=>{f===0?(y.log(`Successfully pulled image ${e}.`),p(),s(!0)):(y.warn(`Failed to pull image ${e}. '${n} pull ${e}' exited with code ${f}.`),a.trim(),p(),s(!1))},p=()=>{r.stdout&&r.stdout.removeListener("data",l),r.stderr&&r.stderr.removeListener("data",c),r.removeListener("error",m),r.removeListener("close",d),r.connected&&r.disconnect()};r.stdout&&r.stdout.on("data",l),r.stderr&&r.stderr.on("data",c),r.on("error",m),r.on("close",d)})}async function Sp(n,e,t){return y.log(`Checking for sandbox image: ${e}`),await od(n,e)?(y.log(`Sandbox image ${e} found locally.`),!0):(y.log(`Sandbox image ${e} not found locally.`),e===wi?!1:await Ep(n,e,t)?await od(n,e)?(y.log(`Sandbox image ${e} is now available after pulling.`),!0):(y.warn(`Sandbox image ${e} still not found after a pull attempt. This might indicate an issue with the image name or registry, or the pull command reported success but failed to make the image available.`),!1):(q.emitFeedback("error",`Failed to obtain sandbox image ${e} after check and pull attempt.`),!1))}import _i from"node:fs/promises";import _p from"node:os";import{join as vp}from"node:path";var vi=vp(_p.tmpdir(),"gemini-cli-warnings.txt");async function ad(){try{await _i.access(vi);let e=(await _i.readFile(vi,"utf-8")).split(`
89
+ `).filter(t=>t.trim()!=="");try{await _i.unlink(vi)}catch{e.push("Warning: Could not delete temporary warnings file.")}return e}catch(n){return n instanceof Error&&"code"in n&&n.code==="ENOENT"?[]:[`Error checking/reading warnings file: ${B(n)}`]}}import Ai from"node:fs/promises";import Ap from"node:path";import Op from"node:process";var Ip={id:"home-directory",priority:cn.Low,check:async(n,e)=>{if(e.ui?.showHomeDirectoryWarning===!1)return null;try{let[t,s]=await Promise.all([Ai.realpath(n),Ai.realpath(ct())]);return t===s?Aa(e)&&dn(e).isTrusted?null:`Warning you are running Gemini CLI in your home directory.
90
+ This warning can be disabled in /settings`:null}catch{return"Could not verify the current directory due to a file system error."}}},Tp={id:"root-directory",priority:cn.High,check:async(n,e)=>{try{let t=await Ai.realpath(n),s="Warning: You are running Gemini CLI in the root directory. Your entire folder structure will be used for context. It is strongly recommended to run in a project-specific directory.";return Ap.dirname(t)===t?s:null}catch{return"Could not verify the current directory due to a file system error."}}},Mp=[Ip,Tp];async function ld(n,e=Op.cwd(),t){let o=(await Promise.all(Mp.map(async r=>{let a=await r.check(e,n);return a?{id:r.id,message:a,priority:r.priority}:null}))).filter(r=>r!==null);return n.ui?.showCompatibilityWarnings!==!1&&o.push(...Ca({isAlternateBuffer:t?.isAlternateBuffer})),o}import gd from"node:readline";function cd(){return{addItem:(n,e)=>("text"in n&&n.text&&(n.type==="error"?process.stderr.write(`Error: ${n.text}
91
91
  `):n.type==="warning"?process.stderr.write(`Warning: ${n.text}
92
92
  `):n.type==="info"&&process.stdout.write(`${n.text}
93
- `)),0),clear:()=>{},setDebugMessage:n=>{},loadHistory:n=>{},pendingItem:null,setPendingItem:n=>{},toggleCorgiMode:()=>{},toggleDebugProfiler:()=>{},toggleVimEnabled:async()=>!1,reloadCommands:()=>{},openAgentConfigDialog:()=>{},extensionsUpdateState:new Map,dispatchExtensionStateUpdate:n=>{},addConfirmUpdateExtensionRequest:n=>{},setConfirmationRequest:n=>{},removeComponent:()=>{},toggleBackgroundTasks:()=>{},toggleShortcutsHelp:()=>{}}}var id=async(n,e,t,s)=>{let o=n.trim();if(!o.startsWith("/"))return;let a=(await Ka.create([new Za(t),new el(t),new Qa(t)],e.signal)).getCommands(),{commandToExecute:l,args:c}=Xa(n,a);if(l&&l.action){let p={sessionId:t?.getSessionId(),sessionStartTime:new Date,metrics:Ye.getMetrics(),lastPromptTokenCount:0,promptCount:1},d=new da(t?.getSessionId()||"",t?.storage),m={services:{agentContext:t,settings:s,git:void 0,logger:d},ui:od(),session:{stats:p,sessionShellAllowlist:new Set},invocation:{raw:o,name:l.name,args:c}},f=await l.action(m,c);if(f)switch(f.type){case"submit_prompt":return f.content;case"confirm_shell_commands":throw new On("Exiting due to a confirmation prompt requested by the command.");default:throw new On("Exiting due to command result that is not supported in non-interactive mode.")}}};function rd(n){let e=n;return typeof e.exitCode=="number"?e.exitCode:e.code!==void 0?e.code:e.status!==void 0?e.status:1}function ad(n){return typeof n=="number"?n:1}function Ds(n,e,t){let s=pa(n,e.getContentGeneratorConfig()?.authType);if(e.getOutputFormat()===Ae.STREAM_JSON){let o=new Dt,r=t??rd(n),a=Ye.getMetrics();o.emitEvent({type:De.RESULT,timestamp:new Date().toISOString(),status:"error",error:{type:Jn(n),message:s},stats:o.convertToStreamStats(a,0)}),ut(),process.exit(ad(r))}else if(e.getOutputFormat()===Ae.JSON){let o=new vt,r=t??rd(n),a=o.formatError(n instanceof Error?n:new Error(B(n)),r,e.getSessionId());q.emitFeedback("error",a),ut(),process.exit(ad(r))}else throw n}function ld(n,e,t,s,o){let r=`Error executing tool ${n}: ${o||e.message}`;if(ar(s)){let l=new xr(r);if(t.getOutputFormat()===Ae.STREAM_JSON){let c=new Dt,p=Ye.getMetrics();c.emitEvent({type:De.RESULT,timestamp:new Date().toISOString(),status:"error",error:{type:s??"FatalToolExecutionError",message:l.message},stats:c.convertToStreamStats(p,0)})}else if(t.getOutputFormat()===Ae.JSON){let p=new vt().formatError(l,s??l.exitCode,t.getSessionId());q.emitFeedback("error",p)}else q.emitFeedback("error",r);ut(),process.exit(l.exitCode)}y.warn(r)}function cd(n){let e=new Cr("Operation cancelled.");if(n.getOutputFormat()===Ae.STREAM_JSON){let t=new Dt,s=Ye.getMetrics();t.emitEvent({type:De.RESULT,timestamp:new Date().toISOString(),status:"error",error:{type:Jn(e),message:e.message},stats:t.convertToStreamStats(s,0)}),ut(),process.exit(e.exitCode)}else if(n.getOutputFormat()===Ae.JSON){let s=new vt().formatError(e,e.exitCode,n.getSessionId());q.emitFeedback("error",s),ut(),process.exit(e.exitCode)}else q.emitFeedback("error",e.message),ut(),process.exit(e.exitCode)}function dd(n){let e=new wr("Reached max session turns for this session. Increase the number of turns by specifying maxSessionTurns in settings.json.");if(n.getOutputFormat()===Ae.STREAM_JSON){let t=new Dt,s=Ye.getMetrics();t.emitEvent({type:De.RESULT,timestamp:new Date().toISOString(),status:"error",error:{type:Jn(e),message:e.message},stats:t.convertToStreamStats(s,0)}),ut(),process.exit(e.exitCode)}else if(n.getOutputFormat()===Ae.JSON){let s=new vt().formatError(e,e.exitCode,n.getSessionId());q.emitFeedback("error",s),ut(),process.exit(e.exitCode)}else q.emitFeedback("error",e.message),ut(),process.exit(e.exitCode)}var js=class{atStartOfLine=!0;outputStream;constructor(e=process.stdout){this.outputStream=e}write(e){if(e.length===0)return;this.outputStream.write(e);let t=Qn(e);t.length>0&&(this.atStartOfLine=t.endsWith(`
93
+ `)),0),clear:()=>{},setDebugMessage:n=>{},loadHistory:n=>{},pendingItem:null,setPendingItem:n=>{},toggleCorgiMode:()=>{},toggleDebugProfiler:()=>{},toggleVimEnabled:async()=>!1,reloadCommands:()=>{},openAgentConfigDialog:()=>{},extensionsUpdateState:new Map,dispatchExtensionStateUpdate:n=>{},addConfirmUpdateExtensionRequest:n=>{},setConfirmationRequest:n=>{},removeComponent:()=>{},toggleBackgroundTasks:()=>{},toggleShortcutsHelp:()=>{}}}var dd=async(n,e,t,s)=>{let o=n.trim();if(!o.startsWith("/"))return;let a=(await tl.create([new sl(t),new il(t),new ol(t)],e.signal)).getCommands(),{commandToExecute:l,args:c}=el(n,a);if(l&&l.action){let m={sessionId:t?.getSessionId(),sessionStartTime:new Date,metrics:Ye.getMetrics(),lastPromptTokenCount:0,promptCount:1},d=new ha(t?.getSessionId()||"",t?.storage),p={services:{agentContext:t,settings:s,git:void 0,logger:d},ui:cd(),session:{stats:m,sessionShellAllowlist:new Set},invocation:{raw:o,name:l.name,args:c}},f=await l.action(p,c);if(f)switch(f.type){case"submit_prompt":return f.content;case"confirm_shell_commands":throw new In("Exiting due to a confirmation prompt requested by the command.");default:throw new In("Exiting due to command result that is not supported in non-interactive mode.")}}};function ud(n){let e=n;return typeof e.exitCode=="number"?e.exitCode:e.code!==void 0?e.code:e.status!==void 0?e.status:1}function md(n){return typeof n=="number"?n:1}function js(n,e,t){let s=ya(n,e.getContentGeneratorConfig()?.authType);if(e.getOutputFormat()===Ae.STREAM_JSON){let o=new jt,r=t??ud(n),a=Ye.getMetrics();o.emitEvent({type:De.RESULT,timestamp:new Date().toISOString(),status:"error",error:{type:Zn(n),message:s},stats:o.convertToStreamStats(a,0)}),ut(),process.exit(md(r))}else if(e.getOutputFormat()===Ae.JSON){let o=new At,r=t??ud(n),a=o.formatError(n instanceof Error?n:new Error(B(n)),r,e.getSessionId());q.emitFeedback("error",a),ut(),process.exit(md(r))}else throw n}function pd(n,e,t,s,o){let r=`Error executing tool ${n}: ${o||e.message}`;if(dr(s)){let l=new Sr(r);if(t.getOutputFormat()===Ae.STREAM_JSON){let c=new jt,m=Ye.getMetrics();c.emitEvent({type:De.RESULT,timestamp:new Date().toISOString(),status:"error",error:{type:s??"FatalToolExecutionError",message:l.message},stats:c.convertToStreamStats(m,0)})}else if(t.getOutputFormat()===Ae.JSON){let m=new At().formatError(l,s??l.exitCode,t.getSessionId());q.emitFeedback("error",m)}else q.emitFeedback("error",r);ut(),process.exit(l.exitCode)}y.warn(r)}function fd(n){let e=new _r("Operation cancelled.");if(n.getOutputFormat()===Ae.STREAM_JSON){let t=new jt,s=Ye.getMetrics();t.emitEvent({type:De.RESULT,timestamp:new Date().toISOString(),status:"error",error:{type:Zn(e),message:e.message},stats:t.convertToStreamStats(s,0)}),ut(),process.exit(e.exitCode)}else if(n.getOutputFormat()===Ae.JSON){let s=new At().formatError(e,e.exitCode,n.getSessionId());q.emitFeedback("error",s),ut(),process.exit(e.exitCode)}else q.emitFeedback("error",e.message),ut(),process.exit(e.exitCode)}function hd(n){let e=new Er("Reached max session turns for this session. Increase the number of turns by specifying maxSessionTurns in settings.json.");if(n.getOutputFormat()===Ae.STREAM_JSON){let t=new jt,s=Ye.getMetrics();t.emitEvent({type:De.RESULT,timestamp:new Date().toISOString(),status:"error",error:{type:Zn(e),message:e.message},stats:t.convertToStreamStats(s,0)}),ut(),process.exit(e.exitCode)}else if(n.getOutputFormat()===Ae.JSON){let s=new At().formatError(e,e.exitCode,n.getSessionId());q.emitFeedback("error",s),ut(),process.exit(e.exitCode)}else q.emitFeedback("error",e.message),ut(),process.exit(e.exitCode)}var Fs=class{atStartOfLine=!0;outputStream;constructor(e=process.stdout){this.outputStream=e}write(e){if(e.length===0)return;this.outputStream.write(e);let t=es(e);t.length>0&&(this.atStartOfLine=t.endsWith(`
94
94
  `))}writeOnNewLine(e){this.atStartOfLine||this.write(`
95
95
  `),this.write(e)}ensureTrailingNewline(){this.atStartOfLine||this.write(`
96
- `)}};async function pd({config:n,settings:e,input:t,prompt_id:s,resumedSessionData:o}){return $r.run(s,async()=>{let r=new un({stderr:!0,interactive:!1,debugMode:n.getDebugMode(),onNewMessage:v=>{q.emitConsoleLog(v.type,v.content)}});if(process.env.GEMINI_CLI_ACTIVITY_LOG_TARGET){let{setupInitialActivityLogger:v}=await import("./devtoolsService-NH25LG4W.js");await v(n)}let{stdout:a}=Zn(),l=new js(a),c=v=>{let b=v.severity.toUpperCase();if(process.stderr.write(`[${b}] ${v.message}
96
+ `)}};async function yd({config:n,settings:e,input:t,prompt_id:s,resumedSessionData:o}){return Ur.run(s,async()=>{let r=new mn({stderr:!0,interactive:!1,debugMode:n.getDebugMode(),onNewMessage:v=>{q.emitConsoleLog(v.type,v.content)}});if(process.env.GEMINI_CLI_ACTIVITY_LOG_TARGET){let{setupInitialActivityLogger:v}=await import("./devtoolsService-LHW3U2EN.js");await v(n)}let{stdout:a}=Qn(),l=new Fs(a),c=v=>{let b=v.severity.toUpperCase();if(process.stderr.write(`[${b}] ${v.message}
97
97
  `),v.error&&n.getDebugMode()){let P=v.error instanceof Error?v.error.stack||v.error.message:String(v.error);process.stderr.write(`${P}
98
- `)}},p=Date.now(),d=n.getOutputFormat()===Ae.STREAM_JSON?new Dt:null,m=new AbortController,f=!1,h=null,I=!1,E=null,x=()=>{if(!process.stdin.isTTY)return;I=process.stdin.isRaw||!1,process.stdin.setRawMode(!0),process.stdin.resume(),E=ud.createInterface({input:process.stdin,escapeCodeTimeout:0}),ud.emitKeypressEvents(process.stdin,E);let v=(b,P)=>{if(P&&P.ctrl&&P.name==="c"||b===""){if(f)return;f=!0,h=setTimeout(()=>{process.stderr.write(`
98
+ `)}},m=Date.now(),d=n.getOutputFormat()===Ae.STREAM_JSON?new jt:null,p=new AbortController,f=!1,h=null,I=!1,S=null,x=()=>{if(!process.stdin.isTTY)return;I=process.stdin.isRaw||!1,process.stdin.setRawMode(!0),process.stdin.resume(),S=gd.createInterface({input:process.stdin,escapeCodeTimeout:0}),gd.emitKeypressEvents(process.stdin,S);let v=(b,P)=>{if(P&&P.ctrl&&P.name==="c"||b===""){if(f)return;f=!0,h=setTimeout(()=>{process.stderr.write(`
99
99
  Cancelling...
100
- `)},200),m.abort()}};process.stdin.on("keypress",v)},k=()=>{h&&(clearTimeout(h),h=null),E&&(E.close(),E=null),process.stdin.removeAllListeners("keypress"),process.stdin.isTTY&&(process.stdin.setRawMode(I),process.stdin.pause())},M;try{r.patch(),n.getRawOutput()&&!n.getAcceptRawOutputRisk()&&n.getOutputFormat()===Ae.TEXT&&process.stderr.write(`[WARNING] --raw-output is enabled. Model output is not sanitized and may contain harmful ANSI sequences (e.g. for phishing or command injection). Use --accept-raw-output-risk to suppress this warning.
101
- `),x(),q.on(Ve.UserFeedback,c),q.drainBacklogs(),process.stdout.on("error",H=>{H.code==="EPIPE"&&process.exit(0)});let v=n.getGeminiClient(),b=new Kr({context:n,messageBus:n.getMessageBus(),getPreferredEditor:()=>{},schedulerId:Sr});o&&await v.resumeChat(ss(o.conversation.messages),o),d&&d.emitEvent({type:De.INIT,timestamp:new Date().toISOString(),session_id:n.getSessionId(),model:n.getModel()});let P;if(Ya(t)){let H=await id(t,m,n,e);H&&(P=H)}if(!P){let{processedQuery:H,error:K}=await Va({query:t,config:n,addItem:(N,w)=>0,onDebugMessage:()=>{},messageId:Date.now(),signal:m.signal,escapePastedAtSymbols:!1});if(K||!H)throw new On(K||"Exiting due to an error processing the @ command.");P=H}d&&d.emitEvent({type:De.MESSAGE,timestamp:new Date().toISOString(),role:"user",content:t});let ee=[{role:"user",parts:P}],Q=0;for(;;){Q++,n.getMaxSessionTurns()>=0&&Q>n.getMaxSessionTurns()&&dd(n);let H=[],K=v.sendMessageStream(ee[0]?.parts||[],m.signal,s,void 0,!1,Q===1?t:void 0),N="";for await(let w of K)if(m.signal.aborted&&cd(n),w.type===_t.Content){let T=n.getRawOutput()||n.getAcceptRawOutputRisk()?w.value:Qn(w.value);d?d.emitEvent({type:De.MESSAGE,timestamp:new Date().toISOString(),role:"assistant",content:T,delta:!0}):n.getOutputFormat()===Ae.JSON?N+=T:w.value&&l.write(T)}else if(w.type===_t.ToolCallRequest)d&&d.emitEvent({type:De.TOOL_USE,timestamp:new Date().toISOString(),tool_name:w.value.name,tool_id:w.value.callId,parameters:w.value.args}),H.push(w.value);else if(w.type===_t.LoopDetected)d&&d.emitEvent({type:De.ERROR,timestamp:new Date().toISOString(),severity:"warning",message:"Loop detected, stopping execution"});else if(w.type===_t.MaxSessionTurns)d&&d.emitEvent({type:De.ERROR,timestamp:new Date().toISOString(),severity:"error",message:"Maximum session turns exceeded"});else{if(w.type===_t.Error)throw w.value.error;if(w.type===_t.AgentExecutionStopped){let _=`Agent execution stopped: ${w.value.systemMessage?.trim()||w.value.reason}`;if(n.getOutputFormat()===Ae.TEXT&&process.stderr.write(`${_}
102
- `),d){let T=Ye.getMetrics(),R=Date.now()-p;d.emitEvent({type:De.RESULT,timestamp:new Date().toISOString(),status:"success",stats:d.convertToStreamStats(T,R)})}return}else if(w.type===_t.AgentExecutionBlocked){let _=`Agent execution blocked: ${w.value.systemMessage?.trim()||w.value.reason}`;n.getOutputFormat()===Ae.TEXT&&process.stderr.write(`[WARNING] ${_}
103
- `)}}if(H.length>0){l.ensureTrailingNewline();let w=await b.schedule(H,m.signal),_=[];for(let R of w){let U=R.response,ne=R.request;d&&d.emitEvent({type:De.TOOL_RESULT,timestamp:new Date().toISOString(),tool_id:ne.callId,status:R.status==="error"?"error":"success",output:typeof U.resultDisplay=="string"?U.resultDisplay:void 0,error:U.error?{type:U.errorType||"TOOL_EXECUTION_ERROR",message:U.error.message}:void 0}),U.error&&ld(ne.name,U.error,n,U.errorType||"TOOL_EXECUTION_ERROR",typeof U.resultDisplay=="string"?U.resultDisplay:void 0),U.responseParts&&_.push(...U.responseParts)}try{let R=v.getCurrentSequenceModel()??n.getModel();v.getChat().recordCompletedToolCalls(R,w),await Lr(n,w)}catch(R){y.error(`Error recording completed tool call information: ${R}`)}let T=w.find(R=>R.response.errorType===rr.STOP_EXECUTION);if(T&&T.response.error){let R=`Agent execution stopped: ${T.response.error.message}`;if(n.getOutputFormat()===Ae.TEXT&&process.stderr.write(`${R}
104
- `),d){let U=Ye.getMetrics(),ne=Date.now()-p;d.emitEvent({type:De.RESULT,timestamp:new Date().toISOString(),status:"success",stats:d.convertToStreamStats(U,ne)})}else if(n.getOutputFormat()===Ae.JSON){let U=new vt,ne=Ye.getMetrics();l.write(U.format(n.getSessionId(),N,ne))}else l.ensureTrailingNewline();return}ee=[{role:"user",parts:_}]}else{if(d){let w=Ye.getMetrics(),_=Date.now()-p;d.emitEvent({type:De.RESULT,timestamp:new Date().toISOString(),status:"success",stats:d.convertToStreamStats(w,_)})}else if(n.getOutputFormat()===Ae.JSON){let w=new vt,_=Ye.getMetrics();l.write(w.format(n.getSessionId(),N,_))}else l.ensureTrailingNewline();return}}}catch(v){M=v}finally{k(),r.cleanup(),q.off(Ve.UserFeedback,c)}M&&Ds(M,n)})}async function md(n){if(process.env.GEMINI_CLI_WORKTREE_HANDLED!=="1")try{let e=await os(process.cwd()),s=await(await ya(e)).setup(n||void 0);return process.chdir(s.path),process.env.GEMINI_CLI_WORKTREE_HANDLED="1",s}catch(e){let t=e instanceof Error?e.message:String(e);me(`Failed to create or switch to worktree: ${t}
105
- `),process.exit(1)}}var He={authenticate:"authenticate",initialize:"initialize",session_cancel:"session/cancel",session_close:"session/close",session_fork:"session/fork",session_list:"session/list",session_load:"session/load",session_new:"session/new",session_prompt:"session/prompt",session_resume:"session/resume",session_set_config_option:"session/set_config_option",session_set_mode:"session/set_mode",session_set_model:"session/set_model"},ht={fs_read_text_file:"fs/read_text_file",fs_write_text_file:"fs/write_text_file",session_request_permission:"session/request_permission",session_update:"session/update",terminal_create:"terminal/create",terminal_kill:"terminal/kill",terminal_output:"terminal/output",terminal_release:"terminal/release",terminal_wait_for_exit:"terminal/wait_for_exit"},fd=1;var Om=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),terminal:i.boolean().optional().default(!1)}),Im=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),label:i.string().nullish(),name:i.string(),optional:i.boolean().optional().default(!1),secret:i.boolean().optional().default(!0)}),Tm=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),description:i.string().nullish(),id:i.string(),name:i.string()}),Mm=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),description:i.string().nullish(),id:i.string(),link:i.string().nullish(),name:i.string(),vars:i.array(Im)}),km=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),args:i.array(i.string()).optional(),description:i.string().nullish(),env:i.record(i.string(),i.string()).optional(),id:i.string(),name:i.string()}),Pm=i.union([Mm.and(i.object({type:i.literal("env_var")})),km.and(i.object({type:i.literal("terminal")})),Tm]),vi=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),methodId:i.string()}),Rm=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),Nm=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),blob:i.string(),mimeType:i.string().nullish(),uri:i.string()}),$m=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),Lm=i.object({amount:i.number(),currency:i.string()}),Dm=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),terminalId:i.string()}),jm=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),newText:i.string(),oldText:i.string().nullish(),path:i.string()}),hd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),name:i.string(),value:i.string()}),Fm=i.union([i.literal(-32700),i.literal(-32600),i.literal(-32601),i.literal(-32602),i.literal(-32603),i.literal(-32800),i.literal(-32e3),i.literal(-32002),i.number().int().min(-2147483648,{message:"Invalid value: Expected int32 to be >= -2147483648"}).max(2147483647,{message:"Invalid value: Expected int32 to be <= 2147483647"})]),gd=i.object({code:Fm,data:i.unknown().optional(),message:i.string()}),yd=i.unknown(),bd=i.unknown(),wd=i.unknown(),Um=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),readTextFile:i.boolean().optional().default(!1),writeTextFile:i.boolean().optional().default(!1)}),Gm=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),auth:Om.optional().default({terminal:!1}),fs:Um.optional().default({readTextFile:!1,writeTextFile:!1}),terminal:i.boolean().optional().default(!1)}),xd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),name:i.string(),value:i.string()}),Cd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),name:i.string(),title:i.string().nullish(),version:i.string()}),zm=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),Ai=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),cursor:i.string().nullish(),cwd:i.string().nullish()}),Wm=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),http:i.boolean().optional().default(!1),sse:i.boolean().optional().default(!1)}),qm=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),headers:i.array(xd),name:i.string(),url:i.string()}),Hm=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),headers:i.array(xd),name:i.string(),url:i.string()}),Bm=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),args:i.array(i.string()),command:i.string(),env:i.array(hd),name:i.string()}),Fs=i.union([qm.and(i.object({type:i.literal("http")})),Hm.and(i.object({type:i.literal("sse")})),Bm]),Oi=i.string(),Vm=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),description:i.string().nullish(),modelId:Oi,name:i.string()}),Ii=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),cwd:i.string(),mcpServers:i.array(Fs)}),Sd=i.string(),Ym=i.union([i.literal("allow_once"),i.literal("allow_always"),i.literal("reject_once"),i.literal("reject_always")]),Xm=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),kind:Ym,name:i.string(),optionId:Sd}),Km=i.union([i.literal("high"),i.literal("medium"),i.literal("low")]),Jm=i.union([i.literal("pending"),i.literal("in_progress"),i.literal("completed")]),Zm=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),content:i.string(),priority:Km,status:Jm}),Qm=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),entries:i.array(Zm)}),ef=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),audio:i.boolean().optional().default(!1),embeddedContext:i.boolean().optional().default(!1),image:i.boolean().optional().default(!1)}),Ed=i.number().int().gte(0).lte(65535),Ti=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),clientCapabilities:Gm.optional().default({auth:{terminal:!1},fs:{readTextFile:!1,writeTextFile:!1},terminal:!1}),clientInfo:Cd.nullish(),protocolVersion:Ed}),tf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),content:i.string()}),nf=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),tn=i.union([i.number(),i.string()]).nullable(),wS=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),requestId:tn}),sf=i.enum(["assistant","user"]),qn=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),audience:i.array(sf).nullish(),lastModified:i.string().nullish(),priority:i.number().nullish()}),of=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),annotations:qn.nullish(),data:i.string(),mimeType:i.string()}),rf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),annotations:qn.nullish(),data:i.string(),mimeType:i.string(),uri:i.string().nullish()}),af=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),annotations:qn.nullish(),description:i.string().nullish(),mimeType:i.string().nullish(),name:i.string(),size:i.number().nullish(),title:i.string().nullish(),uri:i.string()}),lf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),optionId:Sd}),cf=i.union([i.object({outcome:i.literal("cancelled")}),lf.and(i.object({outcome:i.literal("selected")}))]),df=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),outcome:cf}),uf=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),pf=i.object({currentValue:i.boolean()}),mf=i.string(),_d=i.string(),ff=i.union([i.literal("mode"),i.literal("model"),i.literal("thought_level"),i.string()]),Mi=i.string(),vd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),description:i.string().nullish(),name:i.string(),value:Mi}),hf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),group:mf,name:i.string(),options:i.array(vd)}),gf=i.union([i.array(vd),i.array(hf)]),yf=i.object({currentValue:Mi,options:gf}),_n=i.intersection(i.union([yf.and(i.object({type:i.literal("select")})),pf.and(i.object({type:i.literal("boolean")}))]),i.object({_meta:i.record(i.string(),i.unknown()).nullish(),category:ff.nullish(),description:i.string().nullish(),id:_d,name:i.string()})),bf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),configOptions:i.array(_n)}),wf=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),ve=i.string(),ki=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),sessionId:ve}),xS=i.object({method:i.string(),params:i.union([ki,yd]).nullish()}),Pi=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),sessionId:ve}),Ad=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),args:i.array(i.string()).optional(),command:i.string(),cwd:i.string().nullish(),env:i.array(hd).optional(),outputByteLimit:i.number().nullish(),sessionId:ve}),Ri=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),cwd:i.string(),mcpServers:i.array(Fs).optional(),sessionId:ve}),Od=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),sessionId:ve,terminalId:i.string()}),Ni=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),cwd:i.string(),mcpServers:i.array(Fs),sessionId:ve}),Id=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),limit:i.number().int().gte(0).max(4294967295,{message:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),line:i.number().int().gte(0).max(4294967295,{message:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),path:i.string(),sessionId:ve}),Td=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),sessionId:ve,terminalId:i.string()}),$i=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),cwd:i.string(),mcpServers:i.array(Fs).optional(),sessionId:ve}),xf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),cwd:i.string(),sessionId:ve,title:i.string().nullish(),updatedAt:i.string().nullish()}),Cf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),nextCursor:i.string().nullish(),sessions:i.array(xf)}),Sf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),title:i.string().nullish(),updatedAt:i.string().nullish()}),Ef=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),Us=i.string(),_f=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),currentModeId:Us}),vf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),description:i.string().nullish(),id:Us,name:i.string()}),Gs=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),availableModes:i.array(vf),currentModeId:Us}),zs=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),availableModels:i.array(Vm),currentModelId:Oi}),Af=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),configOptions:i.array(_n).nullish(),models:zs.nullish(),modes:Gs.nullish(),sessionId:ve}),Of=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),configOptions:i.array(_n).nullish(),models:zs.nullish(),modes:Gs.nullish()}),If=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),configOptions:i.array(_n).nullish(),models:zs.nullish(),modes:Gs.nullish(),sessionId:ve}),Tf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),configOptions:i.array(_n).nullish(),models:zs.nullish(),modes:Gs.nullish()}),Mf=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),kf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),close:uf.nullish(),fork:wf.nullish(),list:Ef.nullish(),resume:Mf.nullish()}),Pf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),loadSession:i.boolean().optional().default(!1),mcpCapabilities:Wm.optional().default({http:!1,sse:!1}),promptCapabilities:ef.optional().default({audio:!1,embeddedContext:!1,image:!1}),sessionCapabilities:kf.optional().default({})}),Rf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),agentCapabilities:Pf.optional().default({loadSession:!1,mcpCapabilities:{http:!1,sse:!1},promptCapabilities:{audio:!1,embeddedContext:!1,image:!1},sessionCapabilities:{}}),agentInfo:Cd.nullish(),authMethods:i.array(Pm).optional().default([]),protocolVersion:Ed}),Li=i.intersection(i.union([i.object({type:i.literal("boolean"),value:i.boolean()}),i.object({value:Mi})]),i.object({_meta:i.record(i.string(),i.unknown()).nullish(),configId:_d,sessionId:ve})),Nf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),configOptions:i.array(_n)}),Di=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),modeId:Us,sessionId:ve}),$f=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),ji=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),modelId:Oi,sessionId:ve}),Lf=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),Df=i.union([i.literal("end_turn"),i.literal("max_tokens"),i.literal("max_turn_requests"),i.literal("refusal"),i.literal("cancelled")]),jf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),terminalId:i.string()}),Ff=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),exitCode:i.number().int().gte(0).max(4294967295,{message:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),signal:i.string().nullish()}),Md=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),sessionId:ve,terminalId:i.string()}),Uf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),exitStatus:Ff.nullish(),output:i.string(),truncated:i.boolean()}),Gf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),annotations:qn.nullish(),text:i.string()}),zf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),mimeType:i.string().nullish(),text:i.string(),uri:i.string()}),Wf=i.union([zf,Nm]),qf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),annotations:qn.nullish(),resource:Wf}),Fi=i.union([Gf.and(i.object({type:i.literal("text")})),rf.and(i.object({type:i.literal("image")})),of.and(i.object({type:i.literal("audio")})),af.and(i.object({type:i.literal("resource_link")})),qf.and(i.object({type:i.literal("resource")}))]),Hf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),content:Fi}),_i=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),content:Fi,messageId:i.string().nullish()}),Ui=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),messageId:i.string().nullish(),prompt:i.array(Fi),sessionId:ve}),CS=i.object({id:tn,method:i.string(),params:i.union([Ti,vi,Ii,Ni,Ai,Ri,$i,Pi,Di,Li,Ui,ji,bd]).nullish()}),kd=i.union([Hf.and(i.object({type:i.literal("content")})),jm.and(i.object({type:i.literal("diff")})),jf.and(i.object({type:i.literal("terminal")}))]),Pd=i.string(),Rd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),line:i.number().int().gte(0).max(4294967295,{message:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),path:i.string()}),Nd=i.union([i.literal("pending"),i.literal("in_progress"),i.literal("completed"),i.literal("failed")]),$d=i.union([i.literal("read"),i.literal("edit"),i.literal("delete"),i.literal("move"),i.literal("search"),i.literal("execute"),i.literal("think"),i.literal("fetch"),i.literal("switch_mode"),i.literal("other")]),Bf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),content:i.array(kd).optional(),kind:$d.optional(),locations:i.array(Rd).optional(),rawInput:i.unknown().optional(),rawOutput:i.unknown().optional(),status:Nd.optional(),title:i.string(),toolCallId:Pd}),Ld=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),content:i.array(kd).nullish(),kind:$d.nullish(),locations:i.array(Rd).nullish(),rawInput:i.unknown().optional(),rawOutput:i.unknown().optional(),status:Nd.nullish(),title:i.string().nullish(),toolCallId:Pd}),Dd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),options:i.array(Xm),sessionId:ve,toolCall:Ld}),Vf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),hint:i.string()}),Yf=Vf,Xf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),description:i.string(),input:Yf.nullish(),name:i.string()}),Kf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),availableCommands:i.array(Xf)}),Jf=i.object({cachedReadTokens:i.number().nullish(),cachedWriteTokens:i.number().nullish(),inputTokens:i.number(),outputTokens:i.number(),thoughtTokens:i.number().nullish(),totalTokens:i.number()}),Zf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),stopReason:Df,usage:Jf.nullish(),userMessageId:i.string().nullish()}),SS=i.union([i.object({id:tn,result:i.union([Rf,Rm,If,Of,Cf,Af,Tf,$m,$f,Nf,Zf,Lf,wd])}),i.object({error:gd,id:tn})]),Qf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),cost:Lm.nullish(),size:i.number(),used:i.number()}),eh=i.union([_i.and(i.object({sessionUpdate:i.literal("user_message_chunk")})),_i.and(i.object({sessionUpdate:i.literal("agent_message_chunk")})),_i.and(i.object({sessionUpdate:i.literal("agent_thought_chunk")})),Bf.and(i.object({sessionUpdate:i.literal("tool_call")})),Ld.and(i.object({sessionUpdate:i.literal("tool_call_update")})),Qm.and(i.object({sessionUpdate:i.literal("plan")})),Kf.and(i.object({sessionUpdate:i.literal("available_commands_update")})),_f.and(i.object({sessionUpdate:i.literal("current_mode_update")})),bf.and(i.object({sessionUpdate:i.literal("config_option_update")})),Sf.and(i.object({sessionUpdate:i.literal("session_info_update")})),Qf.and(i.object({sessionUpdate:i.literal("usage_update")}))]),jd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),sessionId:ve,update:eh}),ES=i.object({method:i.string(),params:i.union([jd,yd]).nullish()}),Fd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),sessionId:ve,terminalId:i.string()}),th=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),exitCode:i.number().int().gte(0).max(4294967295,{message:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),signal:i.string().nullish()}),Ud=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),content:i.string(),path:i.string(),sessionId:ve}),_S=i.object({id:tn,method:i.string(),params:i.union([Ud,Id,Dd,Ad,Md,Td,Fd,Od,bd]).nullish()}),nh=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),vS=i.union([i.object({id:tn,result:i.union([nh,tf,df,Dm,Uf,nf,th,zm,wd])}),i.object({error:gd,id:tn})]);function Gd(n,e){let t=new TextEncoder,s=new TextDecoder,o=new ReadableStream({async start(a){let l="",c=e.getReader();try{for(;;){let{value:p,done:d}=await c.read();if(d)break;if(!p)continue;l+=s.decode(p,{stream:!0});let m=l.split(`
106
- `);l=m.pop()||"";for(let f of m){let h=f.trim();if(h)try{let I=JSON.parse(h);a.enqueue(I)}catch(I){console.error("Failed to parse JSON message:",h,I)}}}}finally{c.releaseLock(),a.close()}}}),r=new WritableStream({async write(a){let l=JSON.stringify(a)+`
107
- `,c=n.getWriter();try{await c.write(t.encode(l))}finally{c.releaseLock()}}});return{readable:o,writable:r}}var Ws=class{#e;constructor(e,t){let s=e(this),o=async(a,l)=>{switch(a){case He.initialize:{let c=Ti.parse(l);return s.initialize(c)}case He.session_new:{let c=Ii.parse(l);return s.newSession(c)}case He.session_load:{if(!s.loadSession)throw le.methodNotFound(a);let c=Ni.parse(l);return s.loadSession(c)}case He.session_list:{if(!s.listSessions)throw le.methodNotFound(a);let c=Ai.parse(l);return s.listSessions(c)}case He.session_fork:{if(!s.unstable_forkSession)throw le.methodNotFound(a);let c=Ri.parse(l);return s.unstable_forkSession(c)}case He.session_resume:{if(!s.unstable_resumeSession)throw le.methodNotFound(a);let c=$i.parse(l);return s.unstable_resumeSession(c)}case He.session_close:{if(!s.unstable_closeSession)throw le.methodNotFound(a);let c=Pi.parse(l);return s.unstable_closeSession(c)}case He.session_set_mode:{if(!s.setSessionMode)throw le.methodNotFound(a);let c=Di.parse(l);return await s.setSessionMode(c)??{}}case He.authenticate:{let c=vi.parse(l);return await s.authenticate(c)??{}}case He.session_prompt:{let c=Ui.parse(l);return s.prompt(c)}case He.session_set_model:{if(!s.unstable_setSessionModel)throw le.methodNotFound(a);let c=ji.parse(l);return await s.unstable_setSessionModel(c)??{}}case He.session_set_config_option:{if(!s.setSessionConfigOption)throw le.methodNotFound(a);let c=Li.parse(l);return s.setSessionConfigOption(c)}default:if(s.extMethod)return s.extMethod(a,l);throw le.methodNotFound(a)}},r=async(a,l)=>{switch(a){case He.session_cancel:{let c=ki.parse(l);return s.cancel(c)}default:if(s.extNotification)return s.extNotification(a,l);throw le.methodNotFound(a)}};this.#e=new zi(o,r,t)}async sessionUpdate(e){return await this.#e.sendNotification(ht.session_update,e)}async requestPermission(e){return await this.#e.sendRequest(ht.session_request_permission,e)}async readTextFile(e){return await this.#e.sendRequest(ht.fs_read_text_file,e)}async writeTextFile(e){return await this.#e.sendRequest(ht.fs_write_text_file,e)??{}}async createTerminal(e){let t=await this.#e.sendRequest(ht.terminal_create,e);return new Gi(t.terminalId,e.sessionId,this.#e)}async extMethod(e,t){return await this.#e.sendRequest(e,t)}async extNotification(e,t){return await this.#e.sendNotification(e,t)}get signal(){return this.#e.signal}get closed(){return this.#e.closed}},Gi=class{id;#e;#t;constructor(e,t,s){this.id=e,this.#e=t,this.#t=s}async currentOutput(){return await this.#t.sendRequest(ht.terminal_output,{sessionId:this.#e,terminalId:this.id})}async waitForExit(){return await this.#t.sendRequest(ht.terminal_wait_for_exit,{sessionId:this.#e,terminalId:this.id})}async kill(){return await this.#t.sendRequest(ht.terminal_kill,{sessionId:this.#e,terminalId:this.id})??{}}async release(){return await this.#t.sendRequest(ht.terminal_release,{sessionId:this.#e,terminalId:this.id})??{}}async[Symbol.asyncDispose](){await this.release()}};var zi=class{#e=new Map;#t=0;#r;#a;#s;#o=Promise.resolve();#i=new AbortController;#l;constructor(e,t,s){this.#r=e,this.#a=t,this.#s=s,this.#l=new Promise(o=>{this.#i.signal.addEventListener("abort",()=>o())}),this.#c()}get signal(){return this.#i.signal}get closed(){return this.#l}async#c(){let e=this.#s.readable.getReader();try{for(;;){let{value:t,done:s}=await e.read();if(s)break;if(t)try{this.#d(t)}catch(o){console.error("Unexpected error during message processing:",t,o),"id"in t&&t.id!==void 0&&this.#n({jsonrpc:"2.0",id:t.id,error:{code:-32700,message:"Parse error"}})}}}finally{e.releaseLock(),this.#i.abort()}}async#d(e){if("method"in e&&"id"in e){let t=await this.#u(e.method,e.params);"error"in t&&console.error("Error handling request",e,t.error),await this.#n({jsonrpc:"2.0",id:e.id,...t})}else if("method"in e){let t=await this.#p(e.method,e.params);"error"in t&&console.error("Error handling notification",e,t.error)}else"id"in e?this.#m(e):console.error("Invalid message",{message:e})}async#u(e,t){try{return{result:await this.#r(e,t)??null}}catch(s){if(s instanceof le)return s.toResult();if(s instanceof Pe.ZodError)return le.invalidParams(s.format()).toResult();let o;(s instanceof Error||typeof s=="object"&&s!=null&&"message"in s&&typeof s.message=="string")&&(o=s.message);try{return le.internalError(o?JSON.parse(o):{}).toResult()}catch{return le.internalError({details:o}).toResult()}}}async#p(e,t){try{return await this.#a(e,t),{result:null}}catch(s){if(s instanceof le)return s.toResult();if(s instanceof Pe.ZodError)return le.invalidParams(s.format()).toResult();let o;(s instanceof Error||typeof s=="object"&&s!=null&&"message"in s&&typeof s.message=="string")&&(o=s.message);try{return le.internalError(o?JSON.parse(o):{}).toResult()}catch{return le.internalError({details:o}).toResult()}}}#m(e){let t=this.#e.get(e.id);t?("result"in e?t.resolve(e.result):"error"in e&&t.reject(e.error),this.#e.delete(e.id)):console.error("Got response to unknown request",e.id)}async sendRequest(e,t){let s=this.#t++,o=new Promise((r,a)=>{this.#e.set(s,{resolve:r,reject:a})});return await this.#n({jsonrpc:"2.0",id:s,method:e,params:t}),o}async sendNotification(e,t){await this.#n({jsonrpc:"2.0",method:e,params:t})}async#n(e){return this.#o=this.#o.then(async()=>{let t=this.#s.writable.getWriter();try{await t.write(e)}finally{t.releaseLock()}}).catch(t=>{console.error("ACP write error:",t)}),this.#o}},le=class n extends Error{code;data;constructor(e,t,s){super(t),this.code=e,this.name="RequestError",this.data=s}static parseError(e,t){return new n(-32700,`Parse error${t?`: ${t}`:""}`,e)}static invalidRequest(e,t){return new n(-32600,`Invalid request${t?`: ${t}`:""}`,e)}static methodNotFound(e){return new n(-32601,`"Method not found": ${e}`,{method:e})}static invalidParams(e,t){return new n(-32602,`Invalid params${t?`: ${t}`:""}`,e)}static internalError(e,t){return new n(-32603,`Internal error${t?`: ${t}`:""}`,e)}static authRequired(e,t){return new n(-32e3,`Authentication required${t?`: ${t}`:""}`,e)}static resourceNotFound(e){return new n(-32002,`Resource not found${e?`: ${e}`:""}`,e&&{uri:e})}toResult(){return{error:{code:this.code,message:this.message,data:this.data}}}toErrorResponse(){return{code:this.code,message:this.message,data:this.data}}};import ih from"node:os";import rh from"node:path";var Hn=class{constructor(e,t,s,o,r){this.connection=e;this.sessionId=t;this.capabilities=s;this.fallback=o;this.root=r}geminiDir=rh.join(ih.homedir(),".gemini");shouldUseFallback(e){return!sn(e,this.root)||sn(e,this.geminiDir)}normalizeFileSystemError(e){let t=e instanceof Error?e.message:String(e);if(t.includes("Resource not found")||t.includes("ENOENT")||t.includes("does not exist")||t.includes("No such file")){let s=new Error(t);throw s.code="ENOENT",s}throw e}async readTextFile(e){if(!this.capabilities.readTextFile||this.shouldUseFallback(e))return this.fallback.readTextFile(e);try{return(await this.connection.readTextFile({path:e,sessionId:this.sessionId})).content}catch(t){this.normalizeFileSystemError(t)}}async writeTextFile(e,t){if(!this.capabilities.writeTextFile||this.shouldUseFallback(e))return this.fallback.writeTextFile(e,t);try{await this.connection.writeTextFile({path:e,content:t,sessionId:this.sessionId})}catch(s){this.normalizeFileSystemError(s)}}};function qs(n){let e=B(n);return zd(e)}function zd(n){let e=n.trim();if(e.startsWith("{")&&e.endsWith("}")||e.startsWith("[")&&e.endsWith("]"))try{let t=JSON.parse(e),s=t?.error?.message||t?.[0]?.error?.message||t?.message;if(s&&typeof s=="string"&&s!==n)return zd(s)}catch{}return n}import{Readable as ch,Writable as dh}from"node:stream";import*as to from"node:fs/promises";import*as vn from"node:path";import{randomUUID as Yd}from"node:crypto";var Hs=class{commands=new Map;register(e){if(this.commands.has(e.name)){y.warn(`Command ${e.name} already registered. Skipping.`);return}this.commands.set(e.name,e);for(let t of e.subCommands??[])this.register(t)}get(e){return this.commands.get(e)}getAllCommands(){return[...this.commands.values()]}};var ah={allowedEnvironmentVariables:[],blockedEnvironmentVariables:[],enableEnvironmentVariableRedaction:!1},Bs=class{name="memory";description="Manage memory.";subCommands=[new Vs,new Wi,new qi,new Hi];requiresWorkspace=!0;async execute(e,t){return new Vs().execute(e,t)}},Vs=class{name="memory show";description="Shows the current memory contents.";async execute(e,t){let s=aa(e.agentContext.config);return{name:this.name,data:s.content}}},Wi=class{name="memory refresh";aliases=["memory reload"];description="Refreshes the memory from the source.";async execute(e,t){let s=await xo(e.agentContext.config);return{name:this.name,data:s.content}}},qi=class{name="memory list";description="Lists the paths of the GEMINI.md files in use.";async execute(e,t){let s=ca(e.agentContext.config);return{name:this.name,data:s.content}}},Hi=class{name="memory add";description="Add content to the memory.";async execute(e,t){let s=t.join(" ").trim(),o=la(s);if(o.type==="message")return{name:this.name,data:o.content};let a=e.agentContext.toolRegistry.getTool(o.toolName);if(a){let c=new AbortController().signal;return await e.sendMessage(`Saving memory via ${o.toolName}...`),await a.buildAndExecute(o.toolArgs,c,void 0,{shellExecutionConfig:{sanitizationConfig:ah,sandboxManager:e.agentContext.sandboxManager}}),await xo(e.agentContext.config),{name:this.name,data:`Added memory: "${s}"`}}else return{name:this.name,data:`Error: Tool ${o.toolName} not found.`}}};import{stat as lh}from"node:fs/promises";var Ys=class{name="extensions";description="Manage extensions.";subCommands=[new Xs,new Bi,new Vi,new Yi,new Xi,new Ki,new Ji,new Zi,new Qi];async execute(e,t){return new Xs().execute(e,t)}},Xs=class{name="extensions list";description="Lists all installed extensions.";async execute(e,t){let s=na(e.agentContext.config),o=s.length?s:"No extensions installed.";return{name:this.name,data:o}}},Bi=class{name="extensions explore";description="Explore available extensions.";async execute(e,t){return{name:this.name,data:"View or install available extensions at https://geminicli.com/extensions/"}}};function Wd(n,e,t){let s=n.getExtensionLoader();if(!(s instanceof ue))return{error:`Cannot ${t} extensions in this environment.`};if(e.length===0)return{error:`Usage: /extensions ${t} <extension> [--scope=<user|workspace|session>]`};let o="User";e.includes("--scope=workspace")||e.includes("workspace")?o="Workspace":(e.includes("--scope=session")||e.includes("session"))&&(o="Session");let r=e.filter(l=>!l.startsWith("--scope")&&!["user","workspace","session"].includes(l))[0],a=[];if(r==="--all"){let l=s.getExtensions();t==="enable"&&(l=l.filter(c=>!c.isActive)),t==="disable"&&(l=l.filter(c=>c.isActive)),a=l.map(c=>c.name)}else if(r)a=[r];else return{error:"No extension name provided."};return{extensionManager:s,names:a,scope:o}}var Vi=class{name="extensions enable";description="Enable an extension.";async execute(e,t){let s=Wd(e.agentContext.config,t,"enable");if("error"in s)return{name:this.name,data:s.error};let{names:o,scope:r,extensionManager:a}=s,l=[];for(let c of o)try{await a.enableExtension(c,r),l.push(`Extension "${c}" enabled for scope "${r}".`);let p=a.getExtensions().find(d=>d.name===c);if(p?.mcpServers){let d=st.getInstance(),m=e.agentContext.config.getMcpClientManager(),f=await d.autoEnableServers(Object.keys(p.mcpServers));if(m&&f.length>0){let h=f.map(I=>m.restartServer(I).catch(E=>{l.push(`Failed to restart MCP server '${I}': ${B(E)}`)}));await Promise.all(h),l.push(`Re-enabled MCP servers: ${f.join(", ")}`)}}}catch(p){l.push(`Failed to enable "${c}": ${B(p)}`)}return{name:this.name,data:l.join(`
108
- `)||"No action taken."}}},Yi=class{name="extensions disable";description="Disable an extension.";async execute(e,t){let s=Wd(e.agentContext.config,t,"disable");if("error"in s)return{name:this.name,data:s.error};let{names:o,scope:r,extensionManager:a}=s,l=[];for(let c of o)try{await a.disableExtension(c,r),l.push(`Extension "${c}" disabled for scope "${r}".`)}catch(p){l.push(`Failed to disable "${c}": ${B(p)}`)}return{name:this.name,data:l.join(`
109
- `)||"No action taken."}}},Xi=class{name="extensions install";description="Install an extension from a git repo or local path.";async execute(e,t){let s=e.agentContext.config.getExtensionLoader();if(!(s instanceof ue))return{name:this.name,data:"Cannot install extensions in this environment."};let o=t.join(" ").trim();if(!o)return{name:this.name,data:"Usage: /extensions install <source>"};if(/[;&|`'"]/.test(o))return{name:this.name,data:"Invalid source: contains disallowed characters."};try{let r=await as(o),a=await s.installOrUpdateExtension(r);return{name:this.name,data:`Extension "${a.name}" installed successfully.`}}catch(r){return{name:this.name,data:`Failed to install extension from "${o}": ${B(r)}`}}}},Ki=class{name="extensions link";description="Link an extension from a local path.";async execute(e,t){let s=e.agentContext.config.getExtensionLoader();if(!(s instanceof ue))return{name:this.name,data:"Cannot link extensions in this environment."};let o=t.join(" ").trim();if(!o)return{name:this.name,data:"Usage: /extensions link <source>"};try{await lh(o)}catch{return{name:this.name,data:`Invalid source: ${o}`}}try{let r=await s.installOrUpdateExtension({source:o,type:"link"});return{name:this.name,data:`Extension "${r.name}" linked successfully.`}}catch(r){return{name:this.name,data:`Failed to link extension: ${B(r)}`}}}},Ji=class{name="extensions uninstall";description="Uninstall an extension.";async execute(e,t){let s=e.agentContext.config.getExtensionLoader();if(!(s instanceof ue))return{name:this.name,data:"Cannot uninstall extensions in this environment."};let o=t.includes("--all"),r=t.filter(c=>!c.startsWith("--")).map(c=>c.trim());if(!o&&r.length===0)return{name:this.name,data:"Usage: /extensions uninstall <extension-names...>|--all"};let a=[];if(o?a=s.getExtensions().map(c=>c.name):a=r,a.length===0)return{name:this.name,data:o?"No extensions installed.":"No extension name provided."};let l=[];for(let c of a)try{await s.uninstallExtension(c,!1),l.push(`Extension "${c}" uninstalled successfully.`)}catch(p){l.push(`Failed to uninstall extension "${c}": ${B(p)}`)}return{name:this.name,data:l.join(`
110
- `)}}},Zi=class{name="extensions restart";description="Restart an extension.";async execute(e,t){let s=e.agentContext.config.getExtensionLoader();if(!(s instanceof ue))return{name:this.name,data:"Cannot restart extensions."};let o=t.includes("--all"),r=o?null:t.filter(c=>!!c);if(!o&&r?.length===0)return{name:this.name,data:"Usage: /extensions restart <extension-names>|--all"};let a=s.getExtensions().filter(c=>c.isActive);if(r&&(a=a.filter(c=>r.includes(c.name))),a.length===0)return{name:this.name,data:"No active extensions matched the request."};let l=[];for(let c of a)try{await s.restartExtension(c),l.push(`Restarted "${c.name}".`)}catch(p){l.push(`Failed to restart "${c.name}": ${B(p)}`)}return{name:this.name,data:l.join(`
111
- `)}}},Qi=class{name="extensions update";description="Update an extension.";async execute(e,t){if(!(e.agentContext.config.getExtensionLoader()instanceof ue))return{name:this.name,data:"Cannot update extensions."};let o=t.includes("--all"),r=o?null:t.filter(a=>!!a);return!o&&r?.length===0?{name:this.name,data:"Usage: /extensions update <extension-names>|--all"}:{name:this.name,data:"Headless extension updating requires internal UI dispatches. Please use `gemini extensions update` directly in the terminal."}}};import*as Js from"node:fs";import*as qd from"node:path";var Ks=class{name="init";description="Analyzes the project and creates a tailored GEMINI.md file";requiresWorkspace=!0;async execute(e,t=[]){let s=e.agentContext.config.getTargetDir();if(!s)throw new Error("Command requires a workspace.");let o=qd.join(s,"GEMINI.md"),r=ra(Js.existsSync(o));switch(r.type){case"message":return{name:this.name,data:r};case"submit_prompt":if(Js.writeFileSync(o,"","utf8"),typeof r.content!="string")throw new Error("Init command content must be a string.");return{name:this.name,data:{type:"message",messageType:"info",content:`A template GEMINI.md has been created at ${o}.
100
+ `)},200),p.abort()}};process.stdin.on("keypress",v)},k=()=>{h&&(clearTimeout(h),h=null),S&&(S.close(),S=null),process.stdin.removeAllListeners("keypress"),process.stdin.isTTY&&(process.stdin.setRawMode(I),process.stdin.pause())},M;try{r.patch(),n.getRawOutput()&&!n.getAcceptRawOutputRisk()&&n.getOutputFormat()===Ae.TEXT&&process.stderr.write(`[WARNING] --raw-output is enabled. Model output is not sanitized and may contain harmful ANSI sequences (e.g. for phishing or command injection). Use --accept-raw-output-risk to suppress this warning.
101
+ `),x(),q.on(Ve.UserFeedback,c),q.drainBacklogs(),process.stdout.on("error",H=>{H.code==="EPIPE"&&process.exit(0)});let v=n.getGeminiClient(),b=new ta({context:n,messageBus:n.getMessageBus(),getPreferredEditor:()=>{},schedulerId:Ar});o&&await v.resumeChat(os(o.conversation.messages),o),d&&d.emitEvent({type:De.INIT,timestamp:new Date().toISOString(),session_id:n.getSessionId(),model:n.getModel()});let P;if(Qa(t)){let H=await dd(t,p,n,e);H&&(P=H)}if(!P){let{processedQuery:H,error:K}=await Za({query:t,config:n,addItem:(N,w)=>0,onDebugMessage:()=>{},messageId:Date.now(),signal:p.signal,escapePastedAtSymbols:!1});if(K||!H)throw new In(K||"Exiting due to an error processing the @ command.");P=H}d&&d.emitEvent({type:De.MESSAGE,timestamp:new Date().toISOString(),role:"user",content:t});let ee=[{role:"user",parts:P}],Q=0;for(;;){Q++,n.getMaxSessionTurns()>=0&&Q>n.getMaxSessionTurns()&&hd(n);let H=[],K=v.sendMessageStream(ee[0]?.parts||[],p.signal,s,void 0,!1,Q===1?t:void 0),N="";for await(let w of K)if(p.signal.aborted&&fd(n),w.type===vt.Content){let T=n.getRawOutput()||n.getAcceptRawOutputRisk()?w.value:es(w.value);d?d.emitEvent({type:De.MESSAGE,timestamp:new Date().toISOString(),role:"assistant",content:T,delta:!0}):n.getOutputFormat()===Ae.JSON?N+=T:w.value&&l.write(T)}else if(w.type===vt.ToolCallRequest)d&&d.emitEvent({type:De.TOOL_USE,timestamp:new Date().toISOString(),tool_name:w.value.name,tool_id:w.value.callId,parameters:w.value.args}),H.push(w.value);else if(w.type===vt.LoopDetected)d&&d.emitEvent({type:De.ERROR,timestamp:new Date().toISOString(),severity:"warning",message:"Loop detected, stopping execution"});else if(w.type===vt.MaxSessionTurns)d&&d.emitEvent({type:De.ERROR,timestamp:new Date().toISOString(),severity:"error",message:"Maximum session turns exceeded"});else{if(w.type===vt.Error)throw w.value.error;if(w.type===vt.AgentExecutionStopped){let _=`Agent execution stopped: ${w.value.systemMessage?.trim()||w.value.reason}`;if(n.getOutputFormat()===Ae.TEXT&&process.stderr.write(`${_}
102
+ `),d){let T=Ye.getMetrics(),R=Date.now()-m;d.emitEvent({type:De.RESULT,timestamp:new Date().toISOString(),status:"success",stats:d.convertToStreamStats(T,R)})}return}else if(w.type===vt.AgentExecutionBlocked){let _=`Agent execution blocked: ${w.value.systemMessage?.trim()||w.value.reason}`;n.getOutputFormat()===Ae.TEXT&&process.stderr.write(`[WARNING] ${_}
103
+ `)}}if(H.length>0){l.ensureTrailingNewline();let w=await b.schedule(H,p.signal),_=[];for(let R of w){let U=R.response,ne=R.request;d&&d.emitEvent({type:De.TOOL_RESULT,timestamp:new Date().toISOString(),tool_id:ne.callId,status:R.status==="error"?"error":"success",output:typeof U.resultDisplay=="string"?U.resultDisplay:void 0,error:U.error?{type:U.errorType||"TOOL_EXECUTION_ERROR",message:U.error.message}:void 0}),U.error&&pd(ne.name,U.error,n,U.errorType||"TOOL_EXECUTION_ERROR",typeof U.resultDisplay=="string"?U.resultDisplay:void 0),U.responseParts&&_.push(...U.responseParts)}try{let R=v.getCurrentSequenceModel()??n.getModel();v.getChat().recordCompletedToolCalls(R,w),await Gr(n,w)}catch(R){y.error(`Error recording completed tool call information: ${R}`)}let T=w.find(R=>R.response.errorType===cr.STOP_EXECUTION);if(T&&T.response.error){let R=`Agent execution stopped: ${T.response.error.message}`;if(n.getOutputFormat()===Ae.TEXT&&process.stderr.write(`${R}
104
+ `),d){let U=Ye.getMetrics(),ne=Date.now()-m;d.emitEvent({type:De.RESULT,timestamp:new Date().toISOString(),status:"success",stats:d.convertToStreamStats(U,ne)})}else if(n.getOutputFormat()===Ae.JSON){let U=new At,ne=Ye.getMetrics();l.write(U.format(n.getSessionId(),N,ne))}else l.ensureTrailingNewline();return}ee=[{role:"user",parts:_}]}else{if(d){let w=Ye.getMetrics(),_=Date.now()-m;d.emitEvent({type:De.RESULT,timestamp:new Date().toISOString(),status:"success",stats:d.convertToStreamStats(w,_)})}else if(n.getOutputFormat()===Ae.JSON){let w=new At,_=Ye.getMetrics();l.write(w.format(n.getSessionId(),N,_))}else l.ensureTrailingNewline();return}}}catch(v){M=v}finally{k(),r.cleanup(),q.off(Ve.UserFeedback,c)}M&&js(M,n)})}async function bd(n){if(process.env.GEMINI_CLI_WORKTREE_HANDLED!=="1")try{let e=await is(process.cwd()),s=await(await Ea(e)).setup(n||void 0);return process.chdir(s.path),process.env.GEMINI_CLI_WORKTREE_HANDLED="1",s}catch(e){let t=e instanceof Error?e.message:String(e);pe(`Failed to create or switch to worktree: ${t}
105
+ `),process.exit(1)}}var He={authenticate:"authenticate",initialize:"initialize",session_cancel:"session/cancel",session_close:"session/close",session_fork:"session/fork",session_list:"session/list",session_load:"session/load",session_new:"session/new",session_prompt:"session/prompt",session_resume:"session/resume",session_set_config_option:"session/set_config_option",session_set_mode:"session/set_mode",session_set_model:"session/set_model"},ht={fs_read_text_file:"fs/read_text_file",fs_write_text_file:"fs/write_text_file",session_request_permission:"session/request_permission",session_update:"session/update",terminal_create:"terminal/create",terminal_kill:"terminal/kill",terminal_output:"terminal/output",terminal_release:"terminal/release",terminal_wait_for_exit:"terminal/wait_for_exit"},wd=1;var Pp=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),terminal:i.boolean().optional().default(!1)}),Rp=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),label:i.string().nullish(),name:i.string(),optional:i.boolean().optional().default(!1),secret:i.boolean().optional().default(!0)}),Np=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),description:i.string().nullish(),id:i.string(),name:i.string()}),$p=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),description:i.string().nullish(),id:i.string(),link:i.string().nullish(),name:i.string(),vars:i.array(Rp)}),Lp=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),args:i.array(i.string()).optional(),description:i.string().nullish(),env:i.record(i.string(),i.string()).optional(),id:i.string(),name:i.string()}),Dp=i.union([$p.and(i.object({type:i.literal("env_var")})),Lp.and(i.object({type:i.literal("terminal")})),Np]),Ii=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),methodId:i.string()}),jp=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),Fp=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),blob:i.string(),mimeType:i.string().nullish(),uri:i.string()}),Up=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),Gp=i.object({amount:i.number(),currency:i.string()}),zp=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),terminalId:i.string()}),Wp=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),newText:i.string(),oldText:i.string().nullish(),path:i.string()}),xd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),name:i.string(),value:i.string()}),qp=i.union([i.literal(-32700),i.literal(-32600),i.literal(-32601),i.literal(-32602),i.literal(-32603),i.literal(-32800),i.literal(-32e3),i.literal(-32002),i.number().int().min(-2147483648,{message:"Invalid value: Expected int32 to be >= -2147483648"}).max(2147483647,{message:"Invalid value: Expected int32 to be <= 2147483647"})]),Cd=i.object({code:qp,data:i.unknown().optional(),message:i.string()}),Ed=i.unknown(),Sd=i.unknown(),_d=i.unknown(),Hp=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),readTextFile:i.boolean().optional().default(!1),writeTextFile:i.boolean().optional().default(!1)}),Bp=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),auth:Pp.optional().default({terminal:!1}),fs:Hp.optional().default({readTextFile:!1,writeTextFile:!1}),terminal:i.boolean().optional().default(!1)}),vd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),name:i.string(),value:i.string()}),Ad=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),name:i.string(),title:i.string().nullish(),version:i.string()}),Vp=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),Ti=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),cursor:i.string().nullish(),cwd:i.string().nullish()}),Yp=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),http:i.boolean().optional().default(!1),sse:i.boolean().optional().default(!1)}),Xp=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),headers:i.array(vd),name:i.string(),url:i.string()}),Kp=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),headers:i.array(vd),name:i.string(),url:i.string()}),Jp=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),args:i.array(i.string()),command:i.string(),env:i.array(xd),name:i.string()}),Us=i.union([Xp.and(i.object({type:i.literal("http")})),Kp.and(i.object({type:i.literal("sse")})),Jp]),Mi=i.string(),Zp=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),description:i.string().nullish(),modelId:Mi,name:i.string()}),ki=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),cwd:i.string(),mcpServers:i.array(Us)}),Od=i.string(),Qp=i.union([i.literal("allow_once"),i.literal("allow_always"),i.literal("reject_once"),i.literal("reject_always")]),ef=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),kind:Qp,name:i.string(),optionId:Od}),tf=i.union([i.literal("high"),i.literal("medium"),i.literal("low")]),nf=i.union([i.literal("pending"),i.literal("in_progress"),i.literal("completed")]),sf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),content:i.string(),priority:tf,status:nf}),of=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),entries:i.array(sf)}),rf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),audio:i.boolean().optional().default(!1),embeddedContext:i.boolean().optional().default(!1),image:i.boolean().optional().default(!1)}),Id=i.number().int().gte(0).lte(65535),Pi=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),clientCapabilities:Bp.optional().default({auth:{terminal:!1},fs:{readTextFile:!1,writeTextFile:!1},terminal:!1}),clientInfo:Ad.nullish(),protocolVersion:Id}),af=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),content:i.string()}),lf=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),nn=i.union([i.number(),i.string()]).nullable(),vE=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),requestId:nn}),cf=i.enum(["assistant","user"]),Hn=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),audience:i.array(cf).nullish(),lastModified:i.string().nullish(),priority:i.number().nullish()}),df=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),annotations:Hn.nullish(),data:i.string(),mimeType:i.string()}),uf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),annotations:Hn.nullish(),data:i.string(),mimeType:i.string(),uri:i.string().nullish()}),mf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),annotations:Hn.nullish(),description:i.string().nullish(),mimeType:i.string().nullish(),name:i.string(),size:i.number().nullish(),title:i.string().nullish(),uri:i.string()}),pf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),optionId:Od}),ff=i.union([i.object({outcome:i.literal("cancelled")}),pf.and(i.object({outcome:i.literal("selected")}))]),hf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),outcome:ff}),gf=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),yf=i.object({currentValue:i.boolean()}),bf=i.string(),Td=i.string(),wf=i.union([i.literal("mode"),i.literal("model"),i.literal("thought_level"),i.string()]),Ri=i.string(),Md=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),description:i.string().nullish(),name:i.string(),value:Ri}),xf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),group:bf,name:i.string(),options:i.array(Md)}),Cf=i.union([i.array(Md),i.array(xf)]),Ef=i.object({currentValue:Ri,options:Cf}),vn=i.intersection(i.union([Ef.and(i.object({type:i.literal("select")})),yf.and(i.object({type:i.literal("boolean")}))]),i.object({_meta:i.record(i.string(),i.unknown()).nullish(),category:wf.nullish(),description:i.string().nullish(),id:Td,name:i.string()})),Sf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),configOptions:i.array(vn)}),_f=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),ve=i.string(),Ni=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),sessionId:ve}),AE=i.object({method:i.string(),params:i.union([Ni,Ed]).nullish()}),$i=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),sessionId:ve}),kd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),args:i.array(i.string()).optional(),command:i.string(),cwd:i.string().nullish(),env:i.array(xd).optional(),outputByteLimit:i.number().nullish(),sessionId:ve}),Li=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),cwd:i.string(),mcpServers:i.array(Us).optional(),sessionId:ve}),Pd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),sessionId:ve,terminalId:i.string()}),Di=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),cwd:i.string(),mcpServers:i.array(Us),sessionId:ve}),Rd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),limit:i.number().int().gte(0).max(4294967295,{message:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),line:i.number().int().gte(0).max(4294967295,{message:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),path:i.string(),sessionId:ve}),Nd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),sessionId:ve,terminalId:i.string()}),ji=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),cwd:i.string(),mcpServers:i.array(Us).optional(),sessionId:ve}),vf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),cwd:i.string(),sessionId:ve,title:i.string().nullish(),updatedAt:i.string().nullish()}),Af=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),nextCursor:i.string().nullish(),sessions:i.array(vf)}),Of=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),title:i.string().nullish(),updatedAt:i.string().nullish()}),If=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),Gs=i.string(),Tf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),currentModeId:Gs}),Mf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),description:i.string().nullish(),id:Gs,name:i.string()}),zs=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),availableModes:i.array(Mf),currentModeId:Gs}),Ws=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),availableModels:i.array(Zp),currentModelId:Mi}),kf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),configOptions:i.array(vn).nullish(),models:Ws.nullish(),modes:zs.nullish(),sessionId:ve}),Pf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),configOptions:i.array(vn).nullish(),models:Ws.nullish(),modes:zs.nullish()}),Rf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),configOptions:i.array(vn).nullish(),models:Ws.nullish(),modes:zs.nullish(),sessionId:ve}),Nf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),configOptions:i.array(vn).nullish(),models:Ws.nullish(),modes:zs.nullish()}),$f=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),Lf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),close:gf.nullish(),fork:_f.nullish(),list:If.nullish(),resume:$f.nullish()}),Df=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),loadSession:i.boolean().optional().default(!1),mcpCapabilities:Yp.optional().default({http:!1,sse:!1}),promptCapabilities:rf.optional().default({audio:!1,embeddedContext:!1,image:!1}),sessionCapabilities:Lf.optional().default({})}),jf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),agentCapabilities:Df.optional().default({loadSession:!1,mcpCapabilities:{http:!1,sse:!1},promptCapabilities:{audio:!1,embeddedContext:!1,image:!1},sessionCapabilities:{}}),agentInfo:Ad.nullish(),authMethods:i.array(Dp).optional().default([]),protocolVersion:Id}),Fi=i.intersection(i.union([i.object({type:i.literal("boolean"),value:i.boolean()}),i.object({value:Ri})]),i.object({_meta:i.record(i.string(),i.unknown()).nullish(),configId:Td,sessionId:ve})),Ff=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),configOptions:i.array(vn)}),Ui=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),modeId:Gs,sessionId:ve}),Uf=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),Gi=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),modelId:Mi,sessionId:ve}),Gf=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),zf=i.union([i.literal("end_turn"),i.literal("max_tokens"),i.literal("max_turn_requests"),i.literal("refusal"),i.literal("cancelled")]),Wf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),terminalId:i.string()}),qf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),exitCode:i.number().int().gte(0).max(4294967295,{message:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),signal:i.string().nullish()}),$d=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),sessionId:ve,terminalId:i.string()}),Hf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),exitStatus:qf.nullish(),output:i.string(),truncated:i.boolean()}),Bf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),annotations:Hn.nullish(),text:i.string()}),Vf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),mimeType:i.string().nullish(),text:i.string(),uri:i.string()}),Yf=i.union([Vf,Fp]),Xf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),annotations:Hn.nullish(),resource:Yf}),zi=i.union([Bf.and(i.object({type:i.literal("text")})),uf.and(i.object({type:i.literal("image")})),df.and(i.object({type:i.literal("audio")})),mf.and(i.object({type:i.literal("resource_link")})),Xf.and(i.object({type:i.literal("resource")}))]),Kf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),content:zi}),Oi=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),content:zi,messageId:i.string().nullish()}),Wi=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),messageId:i.string().nullish(),prompt:i.array(zi),sessionId:ve}),OE=i.object({id:nn,method:i.string(),params:i.union([Pi,Ii,ki,Di,Ti,Li,ji,$i,Ui,Fi,Wi,Gi,Sd]).nullish()}),Ld=i.union([Kf.and(i.object({type:i.literal("content")})),Wp.and(i.object({type:i.literal("diff")})),Wf.and(i.object({type:i.literal("terminal")}))]),Dd=i.string(),jd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),line:i.number().int().gte(0).max(4294967295,{message:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),path:i.string()}),Fd=i.union([i.literal("pending"),i.literal("in_progress"),i.literal("completed"),i.literal("failed")]),Ud=i.union([i.literal("read"),i.literal("edit"),i.literal("delete"),i.literal("move"),i.literal("search"),i.literal("execute"),i.literal("think"),i.literal("fetch"),i.literal("switch_mode"),i.literal("other")]),Jf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),content:i.array(Ld).optional(),kind:Ud.optional(),locations:i.array(jd).optional(),rawInput:i.unknown().optional(),rawOutput:i.unknown().optional(),status:Fd.optional(),title:i.string(),toolCallId:Dd}),Gd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),content:i.array(Ld).nullish(),kind:Ud.nullish(),locations:i.array(jd).nullish(),rawInput:i.unknown().optional(),rawOutput:i.unknown().optional(),status:Fd.nullish(),title:i.string().nullish(),toolCallId:Dd}),zd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),options:i.array(ef),sessionId:ve,toolCall:Gd}),Zf=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),hint:i.string()}),Qf=Zf,eh=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),description:i.string(),input:Qf.nullish(),name:i.string()}),th=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),availableCommands:i.array(eh)}),nh=i.object({cachedReadTokens:i.number().nullish(),cachedWriteTokens:i.number().nullish(),inputTokens:i.number(),outputTokens:i.number(),thoughtTokens:i.number().nullish(),totalTokens:i.number()}),sh=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),stopReason:zf,usage:nh.nullish(),userMessageId:i.string().nullish()}),IE=i.union([i.object({id:nn,result:i.union([jf,jp,Rf,Pf,Af,kf,Nf,Up,Uf,Ff,sh,Gf,_d])}),i.object({error:Cd,id:nn})]),oh=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),cost:Gp.nullish(),size:i.number(),used:i.number()}),ih=i.union([Oi.and(i.object({sessionUpdate:i.literal("user_message_chunk")})),Oi.and(i.object({sessionUpdate:i.literal("agent_message_chunk")})),Oi.and(i.object({sessionUpdate:i.literal("agent_thought_chunk")})),Jf.and(i.object({sessionUpdate:i.literal("tool_call")})),Gd.and(i.object({sessionUpdate:i.literal("tool_call_update")})),of.and(i.object({sessionUpdate:i.literal("plan")})),th.and(i.object({sessionUpdate:i.literal("available_commands_update")})),Tf.and(i.object({sessionUpdate:i.literal("current_mode_update")})),Sf.and(i.object({sessionUpdate:i.literal("config_option_update")})),Of.and(i.object({sessionUpdate:i.literal("session_info_update")})),oh.and(i.object({sessionUpdate:i.literal("usage_update")}))]),Wd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),sessionId:ve,update:ih}),TE=i.object({method:i.string(),params:i.union([Wd,Ed]).nullish()}),qd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),sessionId:ve,terminalId:i.string()}),rh=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),exitCode:i.number().int().gte(0).max(4294967295,{message:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),signal:i.string().nullish()}),Hd=i.object({_meta:i.record(i.string(),i.unknown()).nullish(),content:i.string(),path:i.string(),sessionId:ve}),ME=i.object({id:nn,method:i.string(),params:i.union([Hd,Rd,zd,kd,$d,Nd,qd,Pd,Sd]).nullish()}),ah=i.object({_meta:i.record(i.string(),i.unknown()).nullish()}),kE=i.union([i.object({id:nn,result:i.union([ah,af,hf,zp,Hf,lf,rh,Vp,_d])}),i.object({error:Cd,id:nn})]);function Bd(n,e){let t=new TextEncoder,s=new TextDecoder,o=new ReadableStream({async start(a){let l="",c=e.getReader();try{for(;;){let{value:m,done:d}=await c.read();if(d)break;if(!m)continue;l+=s.decode(m,{stream:!0});let p=l.split(`
106
+ `);l=p.pop()||"";for(let f of p){let h=f.trim();if(h)try{let I=JSON.parse(h);a.enqueue(I)}catch(I){console.error("Failed to parse JSON message:",h,I)}}}}finally{c.releaseLock(),a.close()}}}),r=new WritableStream({async write(a){let l=JSON.stringify(a)+`
107
+ `,c=n.getWriter();try{await c.write(t.encode(l))}finally{c.releaseLock()}}});return{readable:o,writable:r}}var qs=class{#e;constructor(e,t){let s=e(this),o=async(a,l)=>{switch(a){case He.initialize:{let c=Pi.parse(l);return s.initialize(c)}case He.session_new:{let c=ki.parse(l);return s.newSession(c)}case He.session_load:{if(!s.loadSession)throw le.methodNotFound(a);let c=Di.parse(l);return s.loadSession(c)}case He.session_list:{if(!s.listSessions)throw le.methodNotFound(a);let c=Ti.parse(l);return s.listSessions(c)}case He.session_fork:{if(!s.unstable_forkSession)throw le.methodNotFound(a);let c=Li.parse(l);return s.unstable_forkSession(c)}case He.session_resume:{if(!s.unstable_resumeSession)throw le.methodNotFound(a);let c=ji.parse(l);return s.unstable_resumeSession(c)}case He.session_close:{if(!s.unstable_closeSession)throw le.methodNotFound(a);let c=$i.parse(l);return s.unstable_closeSession(c)}case He.session_set_mode:{if(!s.setSessionMode)throw le.methodNotFound(a);let c=Ui.parse(l);return await s.setSessionMode(c)??{}}case He.authenticate:{let c=Ii.parse(l);return await s.authenticate(c)??{}}case He.session_prompt:{let c=Wi.parse(l);return s.prompt(c)}case He.session_set_model:{if(!s.unstable_setSessionModel)throw le.methodNotFound(a);let c=Gi.parse(l);return await s.unstable_setSessionModel(c)??{}}case He.session_set_config_option:{if(!s.setSessionConfigOption)throw le.methodNotFound(a);let c=Fi.parse(l);return s.setSessionConfigOption(c)}default:if(s.extMethod)return s.extMethod(a,l);throw le.methodNotFound(a)}},r=async(a,l)=>{switch(a){case He.session_cancel:{let c=Ni.parse(l);return s.cancel(c)}default:if(s.extNotification)return s.extNotification(a,l);throw le.methodNotFound(a)}};this.#e=new Hi(o,r,t)}async sessionUpdate(e){return await this.#e.sendNotification(ht.session_update,e)}async requestPermission(e){return await this.#e.sendRequest(ht.session_request_permission,e)}async readTextFile(e){return await this.#e.sendRequest(ht.fs_read_text_file,e)}async writeTextFile(e){return await this.#e.sendRequest(ht.fs_write_text_file,e)??{}}async createTerminal(e){let t=await this.#e.sendRequest(ht.terminal_create,e);return new qi(t.terminalId,e.sessionId,this.#e)}async extMethod(e,t){return await this.#e.sendRequest(e,t)}async extNotification(e,t){return await this.#e.sendNotification(e,t)}get signal(){return this.#e.signal}get closed(){return this.#e.closed}},qi=class{id;#e;#t;constructor(e,t,s){this.id=e,this.#e=t,this.#t=s}async currentOutput(){return await this.#t.sendRequest(ht.terminal_output,{sessionId:this.#e,terminalId:this.id})}async waitForExit(){return await this.#t.sendRequest(ht.terminal_wait_for_exit,{sessionId:this.#e,terminalId:this.id})}async kill(){return await this.#t.sendRequest(ht.terminal_kill,{sessionId:this.#e,terminalId:this.id})??{}}async release(){return await this.#t.sendRequest(ht.terminal_release,{sessionId:this.#e,terminalId:this.id})??{}}async[Symbol.asyncDispose](){await this.release()}};var Hi=class{#e=new Map;#t=0;#r;#a;#s;#o=Promise.resolve();#i=new AbortController;#l;constructor(e,t,s){this.#r=e,this.#a=t,this.#s=s,this.#l=new Promise(o=>{this.#i.signal.addEventListener("abort",()=>o())}),this.#c()}get signal(){return this.#i.signal}get closed(){return this.#l}async#c(){let e=this.#s.readable.getReader();try{for(;;){let{value:t,done:s}=await e.read();if(s)break;if(t)try{this.#d(t)}catch(o){console.error("Unexpected error during message processing:",t,o),"id"in t&&t.id!==void 0&&this.#n({jsonrpc:"2.0",id:t.id,error:{code:-32700,message:"Parse error"}})}}}finally{e.releaseLock(),this.#i.abort()}}async#d(e){if("method"in e&&"id"in e){let t=await this.#u(e.method,e.params);"error"in t&&console.error("Error handling request",e,t.error),await this.#n({jsonrpc:"2.0",id:e.id,...t})}else if("method"in e){let t=await this.#m(e.method,e.params);"error"in t&&console.error("Error handling notification",e,t.error)}else"id"in e?this.#p(e):console.error("Invalid message",{message:e})}async#u(e,t){try{return{result:await this.#r(e,t)??null}}catch(s){if(s instanceof le)return s.toResult();if(s instanceof Pe.ZodError)return le.invalidParams(s.format()).toResult();let o;(s instanceof Error||typeof s=="object"&&s!=null&&"message"in s&&typeof s.message=="string")&&(o=s.message);try{return le.internalError(o?JSON.parse(o):{}).toResult()}catch{return le.internalError({details:o}).toResult()}}}async#m(e,t){try{return await this.#a(e,t),{result:null}}catch(s){if(s instanceof le)return s.toResult();if(s instanceof Pe.ZodError)return le.invalidParams(s.format()).toResult();let o;(s instanceof Error||typeof s=="object"&&s!=null&&"message"in s&&typeof s.message=="string")&&(o=s.message);try{return le.internalError(o?JSON.parse(o):{}).toResult()}catch{return le.internalError({details:o}).toResult()}}}#p(e){let t=this.#e.get(e.id);t?("result"in e?t.resolve(e.result):"error"in e&&t.reject(e.error),this.#e.delete(e.id)):console.error("Got response to unknown request",e.id)}async sendRequest(e,t){let s=this.#t++,o=new Promise((r,a)=>{this.#e.set(s,{resolve:r,reject:a})});return await this.#n({jsonrpc:"2.0",id:s,method:e,params:t}),o}async sendNotification(e,t){await this.#n({jsonrpc:"2.0",method:e,params:t})}async#n(e){return this.#o=this.#o.then(async()=>{let t=this.#s.writable.getWriter();try{await t.write(e)}finally{t.releaseLock()}}).catch(t=>{console.error("ACP write error:",t)}),this.#o}},le=class n extends Error{code;data;constructor(e,t,s){super(t),this.code=e,this.name="RequestError",this.data=s}static parseError(e,t){return new n(-32700,`Parse error${t?`: ${t}`:""}`,e)}static invalidRequest(e,t){return new n(-32600,`Invalid request${t?`: ${t}`:""}`,e)}static methodNotFound(e){return new n(-32601,`"Method not found": ${e}`,{method:e})}static invalidParams(e,t){return new n(-32602,`Invalid params${t?`: ${t}`:""}`,e)}static internalError(e,t){return new n(-32603,`Internal error${t?`: ${t}`:""}`,e)}static authRequired(e,t){return new n(-32e3,`Authentication required${t?`: ${t}`:""}`,e)}static resourceNotFound(e){return new n(-32002,`Resource not found${e?`: ${e}`:""}`,e&&{uri:e})}toResult(){return{error:{code:this.code,message:this.message,data:this.data}}}toErrorResponse(){return{code:this.code,message:this.message,data:this.data}}};import dh from"node:os";import uh from"node:path";var Bn=class{constructor(e,t,s,o,r){this.connection=e;this.sessionId=t;this.capabilities=s;this.fallback=o;this.root=r}geminiDir=uh.join(dh.homedir(),".gemini");shouldUseFallback(e){return!rn(e,this.root)||rn(e,this.geminiDir)}normalizeFileSystemError(e){let t=e instanceof Error?e.message:String(e);if(t.includes("Resource not found")||t.includes("ENOENT")||t.includes("does not exist")||t.includes("No such file")){let s=new Error(t);throw s.code="ENOENT",s}throw e}async readTextFile(e){if(!this.capabilities.readTextFile||this.shouldUseFallback(e))return this.fallback.readTextFile(e);try{return(await this.connection.readTextFile({path:e,sessionId:this.sessionId})).content}catch(t){this.normalizeFileSystemError(t)}}async writeTextFile(e,t){if(!this.capabilities.writeTextFile||this.shouldUseFallback(e))return this.fallback.writeTextFile(e,t);try{await this.connection.writeTextFile({path:e,content:t,sessionId:this.sessionId})}catch(s){this.normalizeFileSystemError(s)}}};function Hs(n){let e=B(n);return Vd(e)}function Vd(n){let e=n.trim();if(e.startsWith("{")&&e.endsWith("}")||e.startsWith("[")&&e.endsWith("]"))try{let t=JSON.parse(e),s=t?.error?.message||t?.[0]?.error?.message||t?.message;if(s&&typeof s=="string"&&s!==n)return Vd(s)}catch{}return n}import{Readable as hh,Writable as gh}from"node:stream";import*as oo from"node:fs/promises";import*as An from"node:path";import{randomUUID as Qd}from"node:crypto";var Bs=class{commands=new Map;register(e){if(this.commands.has(e.name)){y.warn(`Command ${e.name} already registered. Skipping.`);return}this.commands.set(e.name,e);for(let t of e.subCommands??[])this.register(t)}get(e){return this.commands.get(e)}getAllCommands(){return[...this.commands.values()]}};var mh={allowedEnvironmentVariables:[],blockedEnvironmentVariables:[],enableEnvironmentVariableRedaction:!1},Vs=class{name="memory";description="Manage memory.";subCommands=[new Ys,new Bi,new Vi,new Yi];requiresWorkspace=!0;async execute(e,t){return new Ys().execute(e,t)}},Ys=class{name="memory show";description="Shows the current memory contents.";async execute(e,t){let s=ma(e.agentContext.config);return{name:this.name,data:s.content}}},Bi=class{name="memory refresh";aliases=["memory reload"];description="Refreshes the memory from the source.";async execute(e,t){let s=await So(e.agentContext.config);return{name:this.name,data:s.content}}},Vi=class{name="memory list";description="Lists the paths of the GEMINI.md files in use.";async execute(e,t){let s=fa(e.agentContext.config);return{name:this.name,data:s.content}}},Yi=class{name="memory add";description="Add content to the memory.";async execute(e,t){let s=t.join(" ").trim(),o=pa(s);if(o.type==="message")return{name:this.name,data:o.content};let a=e.agentContext.toolRegistry.getTool(o.toolName);if(a){let c=new AbortController().signal;return await e.sendMessage(`Saving memory via ${o.toolName}...`),await a.buildAndExecute(o.toolArgs,c,void 0,{shellExecutionConfig:{sanitizationConfig:mh,sandboxManager:e.agentContext.sandboxManager}}),await So(e.agentContext.config),{name:this.name,data:`Added memory: "${s}"`}}else return{name:this.name,data:`Error: Tool ${o.toolName} not found.`}}};import{stat as ph}from"node:fs/promises";var Xs=class{name="extensions";description="Manage extensions.";subCommands=[new Ks,new Xi,new Ki,new Ji,new Zi,new Qi,new er,new tr,new nr];async execute(e,t){return new Ks().execute(e,t)}},Ks=class{name="extensions list";description="Lists all installed extensions.";async execute(e,t){let s=aa(e.agentContext.config),o=s.length?s:"No extensions installed.";return{name:this.name,data:o}}},Xi=class{name="extensions explore";description="Explore available extensions.";async execute(e,t){return{name:this.name,data:"View or install available extensions at https://geminicli.com/extensions/"}}};function Yd(n,e,t){let s=n.getExtensionLoader();if(!(s instanceof ue))return{error:`Cannot ${t} extensions in this environment.`};if(e.length===0)return{error:`Usage: /extensions ${t} <extension> [--scope=<user|workspace|session>]`};let o="User";e.includes("--scope=workspace")||e.includes("workspace")?o="Workspace":(e.includes("--scope=session")||e.includes("session"))&&(o="Session");let r=e.filter(l=>!l.startsWith("--scope")&&!["user","workspace","session"].includes(l))[0],a=[];if(r==="--all"){let l=s.getExtensions();t==="enable"&&(l=l.filter(c=>!c.isActive)),t==="disable"&&(l=l.filter(c=>c.isActive)),a=l.map(c=>c.name)}else if(r)a=[r];else return{error:"No extension name provided."};return{extensionManager:s,names:a,scope:o}}var Ki=class{name="extensions enable";description="Enable an extension.";async execute(e,t){let s=Yd(e.agentContext.config,t,"enable");if("error"in s)return{name:this.name,data:s.error};let{names:o,scope:r,extensionManager:a}=s,l=[];for(let c of o)try{await a.enableExtension(c,r),l.push(`Extension "${c}" enabled for scope "${r}".`);let m=a.getExtensions().find(d=>d.name===c);if(m?.mcpServers){let d=st.getInstance(),p=e.agentContext.config.getMcpClientManager(),f=await d.autoEnableServers(Object.keys(m.mcpServers));if(p&&f.length>0){let h=f.map(I=>p.restartServer(I).catch(S=>{l.push(`Failed to restart MCP server '${I}': ${B(S)}`)}));await Promise.all(h),l.push(`Re-enabled MCP servers: ${f.join(", ")}`)}}}catch(m){l.push(`Failed to enable "${c}": ${B(m)}`)}return{name:this.name,data:l.join(`
108
+ `)||"No action taken."}}},Ji=class{name="extensions disable";description="Disable an extension.";async execute(e,t){let s=Yd(e.agentContext.config,t,"disable");if("error"in s)return{name:this.name,data:s.error};let{names:o,scope:r,extensionManager:a}=s,l=[];for(let c of o)try{await a.disableExtension(c,r),l.push(`Extension "${c}" disabled for scope "${r}".`)}catch(m){l.push(`Failed to disable "${c}": ${B(m)}`)}return{name:this.name,data:l.join(`
109
+ `)||"No action taken."}}},Zi=class{name="extensions install";description="Install an extension from a git repo or local path.";async execute(e,t){let s=e.agentContext.config.getExtensionLoader();if(!(s instanceof ue))return{name:this.name,data:"Cannot install extensions in this environment."};let o=t.join(" ").trim();if(!o)return{name:this.name,data:"Usage: /extensions install <source>"};if(/[;&|`'"]/.test(o))return{name:this.name,data:"Invalid source: contains disallowed characters."};try{let r=await ls(o),a=await s.installOrUpdateExtension(r);return{name:this.name,data:`Extension "${a.name}" installed successfully.`}}catch(r){return{name:this.name,data:`Failed to install extension from "${o}": ${B(r)}`}}}},Qi=class{name="extensions link";description="Link an extension from a local path.";async execute(e,t){let s=e.agentContext.config.getExtensionLoader();if(!(s instanceof ue))return{name:this.name,data:"Cannot link extensions in this environment."};let o=t.join(" ").trim();if(!o)return{name:this.name,data:"Usage: /extensions link <source>"};try{await ph(o)}catch{return{name:this.name,data:`Invalid source: ${o}`}}try{let r=await s.installOrUpdateExtension({source:o,type:"link"});return{name:this.name,data:`Extension "${r.name}" linked successfully.`}}catch(r){return{name:this.name,data:`Failed to link extension: ${B(r)}`}}}},er=class{name="extensions uninstall";description="Uninstall an extension.";async execute(e,t){let s=e.agentContext.config.getExtensionLoader();if(!(s instanceof ue))return{name:this.name,data:"Cannot uninstall extensions in this environment."};let o=t.includes("--all"),r=t.filter(c=>!c.startsWith("--")).map(c=>c.trim());if(!o&&r.length===0)return{name:this.name,data:"Usage: /extensions uninstall <extension-names...>|--all"};let a=[];if(o?a=s.getExtensions().map(c=>c.name):a=r,a.length===0)return{name:this.name,data:o?"No extensions installed.":"No extension name provided."};let l=[];for(let c of a)try{await s.uninstallExtension(c,!1),l.push(`Extension "${c}" uninstalled successfully.`)}catch(m){l.push(`Failed to uninstall extension "${c}": ${B(m)}`)}return{name:this.name,data:l.join(`
110
+ `)}}},tr=class{name="extensions restart";description="Restart an extension.";async execute(e,t){let s=e.agentContext.config.getExtensionLoader();if(!(s instanceof ue))return{name:this.name,data:"Cannot restart extensions."};let o=t.includes("--all"),r=o?null:t.filter(c=>!!c);if(!o&&r?.length===0)return{name:this.name,data:"Usage: /extensions restart <extension-names>|--all"};let a=s.getExtensions().filter(c=>c.isActive);if(r&&(a=a.filter(c=>r.includes(c.name))),a.length===0)return{name:this.name,data:"No active extensions matched the request."};let l=[];for(let c of a)try{await s.restartExtension(c),l.push(`Restarted "${c.name}".`)}catch(m){l.push(`Failed to restart "${c.name}": ${B(m)}`)}return{name:this.name,data:l.join(`
111
+ `)}}},nr=class{name="extensions update";description="Update an extension.";async execute(e,t){if(!(e.agentContext.config.getExtensionLoader()instanceof ue))return{name:this.name,data:"Cannot update extensions."};let o=t.includes("--all"),r=o?null:t.filter(a=>!!a);return!o&&r?.length===0?{name:this.name,data:"Usage: /extensions update <extension-names>|--all"}:{name:this.name,data:"Headless extension updating requires internal UI dispatches. Please use `gemini extensions update` directly in the terminal."}}};import*as Zs from"node:fs";import*as Xd from"node:path";var Js=class{name="init";description="Analyzes the project and creates a tailored GEMINI.md file";requiresWorkspace=!0;async execute(e,t=[]){let s=e.agentContext.config.getTargetDir();if(!s)throw new Error("Command requires a workspace.");let o=Xd.join(s,"GEMINI.md"),r=ua(Zs.existsSync(o));switch(r.type){case"message":return{name:this.name,data:r};case"submit_prompt":if(Zs.writeFileSync(o,"","utf8"),typeof r.content!="string")throw new Error("Init command content must be a string.");return{name:this.name,data:{type:"message",messageType:"info",content:`A template GEMINI.md has been created at ${o}.
112
112
 
113
113
  To populate it with project context, you can run the following prompt in a new chat:
114
114
 
115
- ${r.content}`}};default:throw new Error("Unknown result type from performInit")}}};import*as nn from"node:fs/promises";import*as er from"node:path";var Zs=class{name="restore";description="Restore to a previous checkpoint, or list available checkpoints to restore. This will reset the conversation and file history to the state it was in when the checkpoint was created";requiresWorkspace=!0;subCommands=[new Qs];async execute(e,t){let{agentContext:s,git:o}=e,{config:r}=s,a=t.join(" ");try{if(!a)return await new Qs().execute(e);if(!r.getCheckpointingEnabled())return{name:this.name,data:"Checkpointing is not enabled. Please enable it in your settings (`general.checkpointing.enabled: true`) to use /restore."};let l=a.endsWith(".json")?a:`${a}.json`,c=r.storage.getProjectTempCheckpointsDir(),p=er.join(c,l),d;try{d=await nn.readFile(p,"utf-8")}catch(k){if(Kn(k)&&k.code==="ENOENT")return{name:this.name,data:`File not found: ${l}`};throw k}let m=JSON.parse(d),h=sa().safeParse(m);if(!h.success)return{name:this.name,data:"Checkpoint file is invalid or corrupted."};let I=ia(h.data,o),E=[];for await(let k of I)E.push(k);let x=E.map(k=>k.type==="message"?`[${k.messageType.toUpperCase()}] ${k.content}`:k.type==="load_history"?`Loaded history with ${k.clientHistory.length} messages.`:`Restored: ${JSON.stringify(k)}`).join(`
116
- `);return{name:this.name,data:x}}catch(l){return{name:this.name,data:`An unexpected error occurred during restore: ${l}`}}}},Qs=class{name="restore list";description="Lists all available checkpoints.";async execute(e){let{config:t}=e.agentContext;try{if(!t.getCheckpointingEnabled())return{name:this.name,data:"Checkpointing is not enabled. Please enable it in your settings (`general.checkpointing.enabled: true`) to use /restore."};let s=t.storage.getProjectTempCheckpointsDir();try{await nn.mkdir(s,{recursive:!0})}catch{}let r=(await nn.readdir(s)).filter(p=>p.endsWith(".json"));if(r.length===0)return{name:this.name,data:"No checkpoints found."};let a=new Map;for(let p of r){let d=er.join(s,p),m=await nn.readFile(d,"utf-8");a.set(p,m)}let c=oa(a).map(p=>{let d=p,m=String(d.fileName||"Unknown"),f=String(d.toolName||"Unknown"),h=String(d.status||"Unknown"),I=new Date(Number(d.timestamp)||0).toLocaleString();return`- **${m}**: ${f} (Status: ${h}) [${I}]`}).join(`
115
+ ${r.content}`}};default:throw new Error("Unknown result type from performInit")}}};import*as sn from"node:fs/promises";import*as sr from"node:path";var Qs=class{name="restore";description="Restore to a previous checkpoint, or list available checkpoints to restore. This will reset the conversation and file history to the state it was in when the checkpoint was created";requiresWorkspace=!0;subCommands=[new eo];async execute(e,t){let{agentContext:s,git:o}=e,{config:r}=s,a=t.join(" ");try{if(!a)return await new eo().execute(e);if(!r.getCheckpointingEnabled())return{name:this.name,data:"Checkpointing is not enabled. Please enable it in your settings (`general.checkpointing.enabled: true`) to use /restore."};let l=a.endsWith(".json")?a:`${a}.json`,c=r.storage.getProjectTempCheckpointsDir(),m=sr.join(c,l),d;try{d=await sn.readFile(m,"utf-8")}catch(k){if(Jn(k)&&k.code==="ENOENT")return{name:this.name,data:`File not found: ${l}`};throw k}let p=JSON.parse(d),h=la().safeParse(p);if(!h.success)return{name:this.name,data:"Checkpoint file is invalid or corrupted."};let I=da(h.data,o),S=[];for await(let k of I)S.push(k);let x=S.map(k=>k.type==="message"?`[${k.messageType.toUpperCase()}] ${k.content}`:k.type==="load_history"?`Loaded history with ${k.clientHistory.length} messages.`:`Restored: ${JSON.stringify(k)}`).join(`
116
+ `);return{name:this.name,data:x}}catch(l){return{name:this.name,data:`An unexpected error occurred during restore: ${l}`}}}},eo=class{name="restore list";description="Lists all available checkpoints.";async execute(e){let{config:t}=e.agentContext;try{if(!t.getCheckpointingEnabled())return{name:this.name,data:"Checkpointing is not enabled. Please enable it in your settings (`general.checkpointing.enabled: true`) to use /restore."};let s=t.storage.getProjectTempCheckpointsDir();try{await sn.mkdir(s,{recursive:!0})}catch{}let r=(await sn.readdir(s)).filter(m=>m.endsWith(".json"));if(r.length===0)return{name:this.name,data:"No checkpoints found."};let a=new Map;for(let m of r){let d=sr.join(s,m),p=await sn.readFile(d,"utf-8");a.set(m,p)}let c=ca(a).map(m=>{let d=m,p=String(d.fileName||"Unknown"),f=String(d.toolName||"Unknown"),h=String(d.status||"Unknown"),I=new Date(Number(d.timestamp)||0).toLocaleString();return`- **${p}**: ${f} (Status: ${h}) [${I}]`}).join(`
117
117
  `);return{name:this.name,data:`Available Checkpoints:
118
- ${c}`}}catch{return{name:this.name,data:"An unexpected error occurred while listing checkpoints."}}}};var eo=class n{registry;constructor(){this.registry=n.createRegistry()}static createRegistry(){let e=new Hs;return e.register(new Bs),e.register(new Ys),e.register(new Ks),e.register(new Zs),e}getAvailableCommands(){return this.registry.getAllCommands().map(e=>({name:e.name,description:e.description}))}async handleCommand(e,t){let{commandToExecute:s,args:o}=this.parseSlashCommand(e);return s?(await this.runCommand(s,o,t),!0):!1}async runCommand(e,t,s){try{let o=await e.execute(s,t?t.split(/\s+/):[]),r="";typeof o.data=="string"?r=o.data:typeof o.data=="object"&&o.data!==null&&"content"in o.data?r=o.data.content:r=JSON.stringify(o.data,null,2),await s.sendMessage(r)}catch(o){let r=o instanceof Error?o.message:String(o);await s.sendMessage(`Error: ${r}`)}}parseSlashCommand(e){let s=e.trim().substring(1).trim().split(/\s+/),o=s.filter(p=>p),r=this.registry.getAllCommands(),a,l=0;for(let p of o){let d=r.find(m=>{let f=o.slice(0,l+1).join(" ");return m.name===p||m.name===f||m.aliases?.includes(p)||m.aliases?.includes(f)});if(d)if(a=d,l++,d.subCommands)r=d.subCommands;else break;else break}let c=s.slice(l).join(" ");return{commandToExecute:a,args:c}}};function uh(n){return typeof n=="object"&&n!==null&&"_meta"in n}var Hd=Pe.object({outcome:Pe.discriminatedUnion("outcome",[Pe.object({outcome:Pe.literal("cancelled")}),Pe.object({outcome:Pe.literal("selected"),optionId:Pe.string()})])});async function Xd(n,e,t){let{stdout:s}=Zn(),o=dh.toWeb(s),r=ch.toWeb(process.stdin),a=Gd(o,r);await new Ws(c=>new Bn(n,e,t,c),a).closed.finally(de)}var Bn=class n{constructor(e,t,s,o){this.context=e;this.settings=t;this.argv=s;this.connection=o}static callIdCounter=0;static generateCallId(e){return`${e}-${Date.now()}-${++n.callIdCounter}`}sessions=new Map;clientCapabilities;apiKey;baseUrl;customHeaders;async initialize(e){this.clientCapabilities=e.clientCapabilities;let t=[{id:Ke.LOGIN_WITH_GOOGLE,name:"Log in with Google",description:"Log in with your Google account"},{id:Ke.USE_GEMINI,name:"Gemini API key",description:"Use an API key with Gemini Developer API",_meta:{"api-key":{provider:"google"}}},{id:Ke.USE_VERTEX_AI,name:"Vertex AI",description:"Use an API key with Vertex AI GenAI API"},{id:Ke.GATEWAY,name:"AI API Gateway",description:"Use a custom AI API Gateway",_meta:{gateway:{protocol:"google",restartRequired:"false"}}}];await this.context.config.initialize();let s=await rn();return{protocolVersion:fd,authMethods:t,agentInfo:{name:"gemini-cli",title:"Gemini CLI",version:s},agentCapabilities:{loadSession:!0,promptCapabilities:{image:!0,audio:!0,embeddedContext:!0},mcpCapabilities:{http:!0,sse:!0}}}}async authenticate(e){let{methodId:t}=e,s=Pe.nativeEnum(Ke).parse(t),o=this.settings.merged.security.auth.selectedType;o&&o!==s&&await Ir();let r=uh(e)?e._meta:void 0,a=typeof r?.["api-key"]=="string"?r["api-key"]:void 0;try{a&&(this.apiKey=a);let l=Pe.object({baseUrl:Pe.string().optional(),headers:Pe.record(Pe.string()).optional()}),c,p;if(r?.gateway){let d=l.safeParse(r.gateway);if(d.success)c=d.data.baseUrl,p=d.data.headers;else throw new le(-32602,`Malformed gateway payload: ${d.error.message}`)}this.baseUrl=c,this.customHeaders=p,await this.context.config.refreshAuth(s,a??this.apiKey,c,p)}catch(l){throw new le(-32e3,qs(l))}this.settings.setValue("User","security.auth.selectedType",s)}async newSession({cwd:e,mcpServers:t}){let s=Yd(),o=te(e),r=await this.newSessionConfig(s,e,t,o),a=o.merged.security.auth.selectedType||Ke.USE_GEMINI,l=!1,c="";try{await r.refreshAuth(a,this.apiKey,this.baseUrl,this.customHeaders),l=!0;let E=r.getContentGeneratorConfig();a===Ke.USE_GEMINI&&(!E||!E.apiKey)&&(l=!1,c="Gemini API key is missing or not configured.")}catch(E){l=!1,c=qs(E),y.error(`Authentication failed: ${E instanceof Error?E.stack:E}`)}if(!l)throw new le(-32e3,c||"Authentication required.");if(this.clientCapabilities?.fs){let E=new Hn(this.connection,s,this.clientCapabilities.fs,r.getFileSystemService(),e);r.setFileSystemService(E)}await r.initialize(),Xe.flush(r);let d=await r.getGeminiClient().startChat(),m=new no(s,d,r,this.connection,this.settings);this.sessions.set(s,m),setTimeout(()=>{m.sendAvailableCommands()},0);let{availableModels:f,currentModelId:h}=Vd(r,o);return{sessionId:s,modes:{availableModes:tr(r.isPlanEnabled()),currentModeId:r.getApprovalMode()},models:{availableModels:f,currentModelId:h}}}async loadSession({sessionId:e,cwd:t,mcpServers:s}){let o=await this.initializeSessionConfig(e,t,s),r=new jt(o),{sessionData:a,sessionPath:l}=await r.resolveSession(e),c=ss(a.messages),p=o.getGeminiClient();await p.initialize(),await p.resumeChat(c,{conversation:a,filePath:l});let d=new no(e,p.getChat(),o,this.connection,this.settings);this.sessions.set(e,d),d.streamHistory(a.messages),setTimeout(()=>{d.sendAvailableCommands()},0);let{availableModels:m,currentModelId:f}=Vd(o,this.settings);return{modes:{availableModes:tr(o.isPlanEnabled()),currentModeId:o.getApprovalMode()},models:{availableModels:m,currentModelId:f}}}async initializeSessionConfig(e,t,s){let o=this.settings.merged.security.auth.selectedType;if(!o)throw le.authRequired();let r=await this.newSessionConfig(e,t,s);try{await r.refreshAuth(o,this.apiKey,this.baseUrl,this.customHeaders)}catch(a){throw y.error(`Authentication failed: ${a}`),le.authRequired()}if(this.clientCapabilities?.fs){let a=new Hn(this.connection,e,this.clientCapabilities.fs,r.getFileSystemService(),t);r.setFileSystemService(a)}return await r.initialize(),Xe.flush(r),r}async newSessionConfig(e,t,s,o){let r=o||this.settings,a={...r.merged.mcpServers};for(let p of s)if("type"in p&&(p.type==="sse"||p.type==="http")){let d=Object.fromEntries(p.headers.map(({name:m,value:f})=>[m,f]));a[p.name]=new bo(void 0,void 0,void 0,void 0,p.type==="sse"?p.url:void 0,p.type==="http"?p.url:void 0,d)}else if("command"in p){let d={};for(let{name:m,value:f}of p.env)d[m]=f;a[p.name]=new bo(p.command,p.args,d,t)}let l={...r.merged,mcpServers:a},c=await Zt(l,e,this.argv,{cwd:t});return $s(c.getPolicyEngine(),c.messageBus,c.storage),c}async cancel(e){let t=this.sessions.get(e.sessionId);if(!t)throw new Error(`Session not found: ${e.sessionId}`);await t.cancelPendingPrompt()}async prompt(e){let t=this.sessions.get(e.sessionId);if(!t)throw new Error(`Session not found: ${e.sessionId}`);return t.prompt(e)}async setSessionMode(e){let t=this.sessions.get(e.sessionId);if(!t)throw new Error(`Session not found: ${e.sessionId}`);return t.setMode(e.modeId)}async unstable_setSessionModel(e){let t=this.sessions.get(e.sessionId);if(!t)throw new Error(`Session not found: ${e.sessionId}`);return t.setModel(e.modelId)}},no=class{constructor(e,t,s,o,r){this.id=e;this.chat=t;this.context=s;this.connection=o;this.settings=r}pendingPrompt=null;commandHandler=new eo;async cancelPendingPrompt(){if(!this.pendingPrompt)throw new Error("Not currently generating");this.pendingPrompt.abort(),this.pendingPrompt=null}setMode(e){let s=tr(this.context.config.isPlanEnabled()).find(o=>o.id===e);if(!s)throw new Error(`Invalid or unavailable mode: ${e}`);return this.context.config.setApprovalMode(s.id),{}}getAvailableCommands(){return this.commandHandler.getAvailableCommands()}async sendAvailableCommands(){let e=this.getAvailableCommands().map(t=>({name:t.name,description:t.description}));await this.sendUpdate({sessionUpdate:"available_commands_update",availableCommands:e})}setModel(e){return this.context.config.setModel(e),{}}async streamHistory(e){for(let t of e){let s=Hr(t.content);if(t.type==="user")s.trim()&&await this.sendUpdate({sessionUpdate:"user_message_chunk",content:{type:"text",text:s}});else if(t.type==="gemini"){if(t.thoughts)for(let o of t.thoughts){let r=`**${o.subject}**
119
- ${o.description}`;await this.sendUpdate({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:r}})}if(s.trim()&&await this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:s}}),t.toolCalls)for(let o of t.toolCalls){let r=[];o.resultDisplay&&(typeof o.resultDisplay=="string"?r.push({type:"content",content:{type:"text",text:o.resultDisplay}}):"fileName"in o.resultDisplay&&r.push({type:"diff",path:o.resultDisplay.fileName,oldText:o.resultDisplay.originalContent,newText:o.resultDisplay.newContent}));let a=this.context.toolRegistry.getTool(o.name);await this.sendUpdate({sessionUpdate:"tool_call",toolCallId:o.id,status:o.status===Et.Success?"completed":"failed",title:o.displayName||o.name,content:r,kind:a?$t(a.kind):"other"})}}}}async prompt(e){this.pendingPrompt?.abort();let t=new AbortController;this.pendingPrompt=t,await this.context.config.waitForMcpInit();let s=Math.random().toString(16).slice(2),o=this.chat,r=await this.#e(e.prompt,t.signal),a="";for(let f of r)if(typeof f=="object"&&f!==null)if("text"in f){let h=f.text;typeof h=="string"&&(a+=h)}else break;if(a=a.trim(),a&&(a.startsWith("/")||a.startsWith("$"))&&await this.handleCommand(a,r))return{stopReason:"end_turn",_meta:{quota:{token_count:{input_tokens:0,output_tokens:0},model_usage:[]}}};let l=0,c=0,p=new Map,d={role:"user",parts:r};for(;d!==null;){if(t.signal.aborted)return o.addHistory(d),{stopReason:Et.Cancelled};let f=[];try{let h={history:o.getHistory(!0),request:d?.parts??[],signal:t.signal,requestedModel:this.context.config.getModel()},I=this.context.config.getModelRouterService(),{model:E}=await I.route(h),x=await o.sendMessageStream({model:E},d?.parts??[],s,t.signal,Er.MAIN);d=null;let k=0,M=0,v=E;for await(let b of x){if(t.signal.aborted)return{stopReason:Et.Cancelled};if(b.type===es.CHUNK&&b.value.usageMetadata&&(k=b.value.usageMetadata.promptTokenCount??k,M=b.value.usageMetadata.candidatesTokenCount??M,b.value.modelVersion&&(v=b.value.modelVersion)),b.type===es.CHUNK&&b.value.candidates&&b.value.candidates.length>0){let P=b.value.candidates[0];for(let ee of P.content?.parts??[]){if(!ee.text)continue;let Q={type:"text",text:ee.text};this.sendUpdate({sessionUpdate:ee.thought?"agent_thought_chunk":"agent_message_chunk",content:Q})}}b.type===es.CHUNK&&b.value.functionCalls&&f.push(...b.value.functionCalls)}if(l+=k,c+=M,k>0||M>0){let b=p.get(v)??{input:0,output:0};b.input+=k,b.output+=M,p.set(v,b)}if(t.signal.aborted)return{stopReason:Et.Cancelled}}catch(h){if(go(h)===429)throw new le(429,"Rate limit exceeded. Try again later.");if(t.signal.aborted||h instanceof Error&&h.name==="AbortError")return{stopReason:Et.Cancelled};if(h instanceof Br||h&&typeof h=="object"&&"type"in h&&h.type==="NO_RESPONSE_TEXT")return{stopReason:"end_turn",_meta:{quota:{token_count:{input_tokens:l,output_tokens:c},model_usage:Array.from(p.entries()).map(([I,E])=>({model:I,token_count:{input_tokens:E.input,output_tokens:E.output}}))}}};throw new le(go(h)||500,qs(h))}if(f.length>0){let h=[];for(let I of f){let E=await this.runTool(t.signal,s,I);h.push(...E)}d={role:"user",parts:h}}}let m=Array.from(p.entries()).map(([f,h])=>({model:f,token_count:{input_tokens:h.input,output_tokens:h.output}}));return{stopReason:"end_turn",_meta:{quota:{token_count:{input_tokens:l,output_tokens:c},model_usage:m}}}}async handleCommand(e,t){let s=await this.context.config.getGitService(),o={agentContext:this.context,settings:this.settings,git:s,sendMessage:async r=>{await this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:r}})}};return this.commandHandler.handleCommand(e,o)}async sendUpdate(e){let t={sessionId:this.id,update:e};await this.connection.sessionUpdate(t)}async runTool(e,t,s){let o=s.id??Bn.generateCallId(s.name||"unknown"),r=s.args??{},a=Date.now(),l=d=>{let m=Date.now()-a;return fo(this.context.config,new mo(void 0,s.name??"",r,m,!1,t,typeof p<"u"&&p instanceof uo?"mcp":"native",d.message)),[{functionResponse:{id:o,name:s.name??"",response:{error:d.message}}}]};if(!s.name)return l(new Error("Missing function name"));let p=this.context.toolRegistry.getTool(s.name);if(!p)return l(new Error(`Tool "${s.name}" not found in registry.`));try{let d=p.build(r),m=typeof d.getDisplayTitle=="function"?d.getDisplayTitle():d.getDescription(),f=typeof d.getExplanation=="function"?d.getExplanation():"";f&&await this.sendUpdate({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:f}});let h=await d.shouldConfirmExecute(e);if(h){let M=[];h.type==="edit"&&M.push({type:"diff",path:h.filePath,oldText:h.originalContent,newText:h.newContent,_meta:{kind:h.originalContent?h.newContent===""?"delete":"modify":"add"}});let v={sessionId:this.id,options:mh(h,this.context.config,this.settings.merged.security.enablePermanentToolApproval),toolCall:{toolCallId:o,status:"pending",title:m,content:M,locations:d.toolLocations(),kind:$t(p.kind)}},b=Hd.parse(await this.connection.requestPermission(v)),P=b.outcome.outcome==="cancelled"?pe.Cancel:Pe.nativeEnum(pe).parse(b.outcome.optionId);switch(await h.onConfirm(P),await Xr(p,P,h,this.context,this.context.messageBus,d),P){case pe.Cancel:return l(new Error(`Tool "${s.name}" was canceled by the user.`));case pe.ProceedOnce:case pe.ProceedAlways:case pe.ProceedAlwaysAndSave:case pe.ProceedAlwaysServer:case pe.ProceedAlwaysTool:case pe.ModifyWithEditor:break;default:{let ee=P;throw new Error(`Unexpected: ${ee}`)}}}else{let M=[];await this.sendUpdate({sessionUpdate:"tool_call",toolCallId:o,status:"in_progress",title:m,content:M,locations:d.toolLocations(),kind:$t(p.kind)})}let I=await d.execute(e),E=Bd(I),x=E?[E]:[];await this.sendUpdate({sessionUpdate:"tool_call_update",toolCallId:o,status:"completed",title:m,content:x,locations:d.toolLocations(),kind:$t(p.kind)});let k=Date.now()-a;return fo(this.context.config,new mo(void 0,s.name??"",r,k,!0,t,typeof p<"u"&&p instanceof uo?"mcp":"native")),this.chat.recordCompletedToolCalls(this.context.config.getActiveModel(),[{status:Et.Success,request:{callId:o,name:s.name,args:r,isClientInitiated:!1,prompt_id:t},tool:p,invocation:d,response:{callId:o,responseParts:ho(s.name,o,I.llmContent,this.context.config.getActiveModel(),this.context.config),resultDisplay:I.returnDisplay,error:void 0,errorType:void 0}}]),ho(s.name,o,I.llmContent,this.context.config.getActiveModel(),this.context.config)}catch(d){let m=d instanceof Error?d:new Error(String(d));return await this.sendUpdate({sessionUpdate:"tool_call_update",toolCallId:o,status:"failed",content:[{type:"content",content:{type:"text",text:m.message}}],kind:$t(p.kind)}),this.chat.recordCompletedToolCalls(this.context.config.getActiveModel(),[{status:Et.Error,request:{callId:o,name:s.name,args:r,isClientInitiated:!1,prompt_id:t},tool:p,response:{callId:o,responseParts:[{functionResponse:{id:o,name:s.name??"",response:{error:m.message}}}],resultDisplay:m.message,error:m,errorType:void 0}}]),l(m)}}async#e(e,t){let s="file://",o=[],r=e.map(v=>{switch(v.type){case"text":return{text:v.text};case"image":case"audio":return{inlineData:{mimeType:v.mimeType,data:v.data}};case"resource_link":return v.uri.startsWith(s)?{fileData:{mimeData:v.mimeType,name:v.name,fileUri:v.uri.slice(s.length)}}:{text:`@${v.uri}`};case"resource":return o.push(v.resource),{text:`@${v.resource.uri}`};default:{let b=v;throw new Error(`Unexpected chunk type: '${b}'`)}}}),a=r.filter(v=>"fileData"in v);if(a.length===0&&o.length===0)return r;let l=new Map,c=this.context.config.getFileService(),p=this.context.config.getFileFilteringOptions(),d=[],m=[],f=[],h=[],I=this.context.toolRegistry,E=new ha(this.context.config,this.context.messageBus),x=I.getTool("glob");if(!E)throw new Error("Error: read_many_files tool not found.");for(let v of a){let b=v.fileData.fileUri;if(c.shouldIgnoreFile(b,p)){f.push(b),y.warn(`Path ${b} is ignored and will be skipped.`);continue}let P=b,ee=!1,Q=!1;try{let H=vn.resolve(this.context.config.getTargetDir(),b),K=this.context.config.validatePathAccess(H,"read");if(K&&!sn(H,this.context.config.getTargetDir()))try{if((await to.stat(H)).isFile()){let w=`resolve-prompt-${b}-${Yd()}`,_={sessionId:this.id,options:[{optionId:pe.ProceedOnce,name:"Allow once",kind:"allow_once"},{optionId:pe.Cancel,name:"Deny",kind:"reject_once"}],toolCall:{toolCallId:w,status:"pending",title:`Allow access to absolute path: ${b}`,content:[{type:"content",content:{type:"text",text:`The Agent needs access to read an attached file outside your workspace: ${b}`}}],locations:[],kind:"read"}},T=Hd.parse(await this.connection.requestPermission(_));if((T.outcome.outcome==="cancelled"?pe.Cancel:Pe.nativeEnum(pe).parse(T.outcome.optionId))===pe.ProceedOnce)this.context.config.getWorkspaceContext().addReadOnlyPath(H),K=null;else{this.debug(`Direct read authorization denied for absolute path ${b}`),h.push({spec:b,content:`[Warning: Access to absolute path \`${b}\` denied by user.]`});continue}}}catch(N){this.debug(`Failed to request permission for absolute attachment ${b}: ${B(N)}`),await this.sendUpdate({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:`Warning: Failed to display permission dialog for \`${H}\`. Error: ${B(N)}`}})}if(K)this.debug(`Path ${b} access disallowed: ${K}. Skipping.`),await this.sendUpdate({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:`Warning: skipping access to \`${b}\`. Reason: ${K}`}});else{if((vn.isAbsolute(b)||!sn(H,this.context.config.getTargetDir()))&&!Q)try{if((await to.stat(H)).isFile()){let w=await yr(H,this.context.config.getTargetDir(),this.context.config.getFileSystemService());if(w.error){this.debug(`Direct read failed for absolute path ${b}: ${w.error}`),await this.sendUpdate({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:`Warning: file read failed for \`${b}\`. Reason: ${w.error}`}});continue}else{if(typeof w.llmContent=="object"&&"inlineData"in w.llmContent)h.push({spec:b,part:w.llmContent});else if(typeof w.llmContent=="string"){let _=w.llmContent;w.isTruncated&&(_=`[WARNING: This file was truncated]
120
-
121
- ${_}`),h.push({spec:b,content:_})}Q=!0,ee=!0}}}catch(N){this.debug(`File stat/access error for absolute path ${b}: ${B(N)}`),await this.sendUpdate({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:`Warning: file access failed for \`${b}\`. Reason: ${B(N)}`}});continue}Q||((await to.stat(H)).isDirectory()?(P=b.endsWith("/")?`${b}**`:`${b}/**`,this.debug(`Path ${b} resolved to directory, using glob: ${P}`)):this.debug(`Path ${b} resolved to file: ${P}`),ee=!0)}}catch(H){if(Kn(H)&&H.code==="ENOENT")if(this.context.config.getEnableRecursiveFileSearch()&&x){this.debug(`Path ${b} not found directly, attempting glob search.`);try{let K=await x.buildAndExecute({pattern:`**/*${b}*`,path:this.context.config.getTargetDir()},t);if(K.llmContent&&typeof K.llmContent=="string"&&!K.llmContent.startsWith("No files found")&&!K.llmContent.startsWith("Error:")){let N=K.llmContent.split(`
122
- `);if(N.length>1&&N[1]){let w=N[1].trim();P=vn.relative(this.context.config.getTargetDir(),w),this.debug(`Glob search for ${b} found ${w}, using relative path: ${P}`),ee=!0}else this.debug(`Glob search for '**/*${b}*' did not return a usable path. Path ${b} will be skipped.`)}else this.debug(`Glob search for '**/*${b}*' found no files or an error. Path ${b} will be skipped.`)}catch(K){y.error(`Error during glob search for ${b}: ${B(K)}`)}}else this.debug(`Glob tool not found. Path ${b} will be skipped.`);else y.error(`Error stating path ${b}. Path ${b} will be skipped.`)}ee&&(Q||d.push(P),l.set(b,P),m.push(b))}let k="";for(let v=0;v<r.length;v++){let b=r[v];if("text"in b)k+=b.text;else{let P=b.fileData&&l.get(b.fileData.fileUri);if(v>0&&k.length>0&&!k.endsWith(" ")&&P){let ee=r[v-1];("text"in ee||"fileData"in ee&&l.has(ee.fileData.fileUri))&&(k+=" ")}P?k+=`@${P}`:(v>0&&k.length>0&&!k.endsWith(" ")&&!b.fileData?.fileUri.startsWith(" ")&&(k+=" "),b.fileData?.fileUri&&(k+=`@${b.fileData.fileUri}`))}}k=k.trim(),f.length>0&&this.debug(`Ignored ${f.length} files: ${f.join(", ")}`);let M=[{text:k}];if(d.length===0&&o.length===0&&h.length===0)return y.warn("No valid file paths found in @ commands to read."),[{text:k}];if(d.length>0){let v={include:d},b=Bn.generateCallId(E.name);try{let P=E.build(v);await this.sendUpdate({sessionUpdate:"tool_call",toolCallId:b,status:"in_progress",title:P.getDescription(),content:[],locations:P.toolLocations(),kind:$t(E.kind)});let ee=await P.execute(t),Q=Bd(ee)||{type:"content",content:{type:"text",text:`Successfully read: ${m.join(", ")}`}};if(await this.sendUpdate({sessionUpdate:"tool_call_update",toolCallId:b,status:"completed",title:P.getDescription(),content:Q?[Q]:[],locations:P.toolLocations(),kind:$t(E.kind)}),Array.isArray(ee.llmContent)){let H=/^--- (.*?) ---\n\n([\s\S]*?)\n\n$/;M.push({text:`
123
- ${Xn}`});for(let K of ee.llmContent)if(typeof K=="string"){let N=H.exec(K);if(N){let w=N[1],_=N[2].trim();M.push({text:`
118
+ ${c}`}}catch{return{name:this.name,data:"An unexpected error occurred while listing checkpoints."}}}};import on from"node:process";var to=class{name="about";description="Show version and environment info";async execute(e,t=[]){let s=on.platform,o="no sandbox";on.env.SANDBOX&&on.env.SANDBOX!=="sandbox-exec"?o=on.env.SANDBOX:on.env.SANDBOX==="sandbox-exec"&&(o=`sandbox-exec (${on.env.SEATBELT_PROFILE||"unknown"})`);let r=e.agentContext.config.getModel()||"Unknown",a=await _t(),l=e.settings.merged?.security?.auth?.selectedType??"",c=on.env.GOOGLE_CLOUD_PROJECT||"",m=await fh(e),f=new vr().getCachedGoogleAccount()??"Unknown",h=e.agentContext.config.getUserTierName()||"Unknown",I=[`- Version: ${a}`,`- OS: ${s}`,`- Sandbox: ${o}`,`- Model: ${r}`,`- Auth Type: ${l}`,`- GCP Project: ${c}`,`- IDE Client: ${m}`,`- User Email: ${f}`,`- Tier: ${h}`].join(`
119
+ `);return{name:this.name,data:`Gemini CLI Info:
120
+ ${I}`}}};async function fh(n){return n.agentContext.config.getIdeMode()?(await jr.getInstance())?.getDetectedIdeDisplayName()??"":""}var no=class{constructor(e){this.registry=e}name="help";description="Show available commands";async execute(e,t=[]){let s=this.registry.getAllCommands().sort((r,a)=>r.name.localeCompare(a.name)),o=[];o.push("Gemini CLI Help:"),o.push(""),o.push("### Basics"),o.push("- **Add context**: Use `@` to specify files for context (e.g., `@src/myFile.ts`) to target specific files or folders."),o.push(""),o.push("### Commands");for(let r of s)r.description&&o.push(`- **/${r.name}** - ${r.description}`);return{name:this.name,data:o.join(`
121
+ `)}}};var so=class n{registry;constructor(){this.registry=n.createRegistry()}static createRegistry(){let e=new Bs;return e.register(new Vs),e.register(new Xs),e.register(new Js),e.register(new Qs),e.register(new to),e.register(new no(e)),e}getAvailableCommands(){return this.registry.getAllCommands().map(e=>({name:e.name,description:e.description}))}async handleCommand(e,t){let{commandToExecute:s,args:o}=this.parseSlashCommand(e);return s?(await this.runCommand(s,o,t),!0):!1}async runCommand(e,t,s){try{let o=await e.execute(s,t?t.split(/\s+/):[]),r="";typeof o.data=="string"?r=o.data:typeof o.data=="object"&&o.data!==null&&"content"in o.data?r=o.data.content:r=JSON.stringify(o.data,null,2),await s.sendMessage(r)}catch(o){let r=o instanceof Error?o.message:String(o);await s.sendMessage(`Error: ${r}`)}}parseSlashCommand(e){let s=e.trim().substring(1).trim().split(/\s+/),o=s.filter(m=>m),r=this.registry.getAllCommands(),a,l=0;for(let m of o){let d=r.find(p=>{let f=o.slice(0,l+1).join(" ");return p.name===m||p.name===f||p.aliases?.includes(m)||p.aliases?.includes(f)});if(d)if(a=d,l++,d.subCommands)r=d.subCommands;else break;else break}let c=s.slice(l).join(" ");return{commandToExecute:a,args:c}}};function yh(n){return typeof n=="object"&&n!==null&&"_meta"in n}var Kd=Pe.object({outcome:Pe.discriminatedUnion("outcome",[Pe.object({outcome:Pe.literal("cancelled")}),Pe.object({outcome:Pe.literal("selected"),optionId:Pe.string()})])});async function eu(n,e,t){let{stdout:s}=Qn(),o=gh.toWeb(s),r=hh.toWeb(process.stdin),a=Bd(o,r);await new qs(c=>new Vn(n,e,t,c),a).closed.finally(de)}var Vn=class n{constructor(e,t,s,o){this.context=e;this.settings=t;this.argv=s;this.connection=o}static callIdCounter=0;static generateCallId(e){return`${e}-${Date.now()}-${++n.callIdCounter}`}sessions=new Map;clientCapabilities;apiKey;baseUrl;customHeaders;async initialize(e){this.clientCapabilities=e.clientCapabilities;let t=[{id:Ke.LOGIN_WITH_GOOGLE,name:"Log in with Google",description:"Log in with your Google account"},{id:Ke.USE_GEMINI,name:"Gemini API key",description:"Use an API key with Gemini Developer API",_meta:{"api-key":{provider:"google"}}},{id:Ke.USE_VERTEX_AI,name:"Vertex AI",description:"Use an API key with Vertex AI GenAI API"},{id:Ke.GATEWAY,name:"AI API Gateway",description:"Use a custom AI API Gateway",_meta:{gateway:{protocol:"google",restartRequired:"false"}}}];await this.context.config.initialize();let s=await _t();return{protocolVersion:wd,authMethods:t,agentInfo:{name:"gemini-cli",title:"Gemini CLI",version:s},agentCapabilities:{loadSession:!0,promptCapabilities:{image:!0,audio:!0,embeddedContext:!0},mcpCapabilities:{http:!0,sse:!0}}}}async authenticate(e){let{methodId:t}=e,s=Pe.nativeEnum(Ke).parse(t),o=this.settings.merged.security.auth.selectedType;o&&o!==s&&await Pr();let r=yh(e)?e._meta:void 0,a=typeof r?.["api-key"]=="string"?r["api-key"]:void 0;try{a&&(this.apiKey=a);let l=Pe.object({baseUrl:Pe.string().optional(),headers:Pe.record(Pe.string()).optional()}),c,m;if(r?.gateway){let d=l.safeParse(r.gateway);if(d.success)c=d.data.baseUrl,m=d.data.headers;else throw new le(-32602,`Malformed gateway payload: ${d.error.message}`)}this.baseUrl=c,this.customHeaders=m,await this.context.config.refreshAuth(s,a??this.apiKey,c,m)}catch(l){throw new le(-32e3,Hs(l))}this.settings.setValue("User","security.auth.selectedType",s)}async newSession({cwd:e,mcpServers:t}){let s=Qd(),o=te(e),r=await this.newSessionConfig(s,e,t,o),a=o.merged.security.auth.selectedType||Ke.USE_GEMINI,l=!1,c="";try{await r.refreshAuth(a,this.apiKey,this.baseUrl,this.customHeaders),l=!0;let S=r.getContentGeneratorConfig();a===Ke.USE_GEMINI&&(!S||!S.apiKey)&&(l=!1,c="Gemini API key is missing or not configured.")}catch(S){l=!1,c=Hs(S),y.error(`Authentication failed: ${S instanceof Error?S.stack:S}`)}if(!l)throw new le(-32e3,c||"Authentication required.");if(this.clientCapabilities?.fs){let S=new Bn(this.connection,s,this.clientCapabilities.fs,r.getFileSystemService(),e);r.setFileSystemService(S)}await r.initialize(),Xe.flush(r);let d=await r.getGeminiClient().startChat(),p=new io(s,d,r,this.connection,this.settings);this.sessions.set(s,p),setTimeout(()=>{p.sendAvailableCommands()},0);let{availableModels:f,currentModelId:h}=Zd(r,o);return{sessionId:s,modes:{availableModes:or(r.isPlanEnabled()),currentModeId:r.getApprovalMode()},models:{availableModels:f,currentModelId:h}}}async loadSession({sessionId:e,cwd:t,mcpServers:s}){let o=await this.initializeSessionConfig(e,t,s),r=new Ft(o),{sessionData:a,sessionPath:l}=await r.resolveSession(e),c=os(a.messages),m=o.getGeminiClient();await m.initialize(),await m.resumeChat(c,{conversation:a,filePath:l});let d=new io(e,m.getChat(),o,this.connection,this.settings);this.sessions.set(e,d),d.streamHistory(a.messages),setTimeout(()=>{d.sendAvailableCommands()},0);let{availableModels:p,currentModelId:f}=Zd(o,this.settings);return{modes:{availableModes:or(o.isPlanEnabled()),currentModeId:o.getApprovalMode()},models:{availableModels:p,currentModelId:f}}}async initializeSessionConfig(e,t,s){let o=this.settings.merged.security.auth.selectedType;if(!o)throw le.authRequired();let r=await this.newSessionConfig(e,t,s);try{await r.refreshAuth(o,this.apiKey,this.baseUrl,this.customHeaders)}catch(a){throw y.error(`Authentication failed: ${a}`),le.authRequired()}if(this.clientCapabilities?.fs){let a=new Bn(this.connection,e,this.clientCapabilities.fs,r.getFileSystemService(),t);r.setFileSystemService(a)}return await r.initialize(),Xe.flush(r),r}async newSessionConfig(e,t,s,o){let r=o||this.settings,a={...r.merged.mcpServers};for(let m of s)if("type"in m&&(m.type==="sse"||m.type==="http")){let d=Object.fromEntries(m.headers.map(({name:p,value:f})=>[p,f]));a[m.name]=new Co(void 0,void 0,void 0,void 0,m.type==="sse"?m.url:void 0,m.type==="http"?m.url:void 0,d)}else if("command"in m){let d={};for(let{name:p,value:f}of m.env)d[p]=f;a[m.name]=new Co(m.command,m.args,d,t)}let l={...r.merged,mcpServers:a},c=await Qt(l,e,this.argv,{cwd:t});return Ls(c.getPolicyEngine(),c.messageBus,c.storage),c}async cancel(e){let t=this.sessions.get(e.sessionId);if(!t)throw new Error(`Session not found: ${e.sessionId}`);await t.cancelPendingPrompt()}async prompt(e){let t=this.sessions.get(e.sessionId);if(!t)throw new Error(`Session not found: ${e.sessionId}`);return t.prompt(e)}async setSessionMode(e){let t=this.sessions.get(e.sessionId);if(!t)throw new Error(`Session not found: ${e.sessionId}`);return t.setMode(e.modeId)}async unstable_setSessionModel(e){let t=this.sessions.get(e.sessionId);if(!t)throw new Error(`Session not found: ${e.sessionId}`);return t.setModel(e.modelId)}},io=class{constructor(e,t,s,o,r){this.id=e;this.chat=t;this.context=s;this.connection=o;this.settings=r}pendingPrompt=null;commandHandler=new so;async cancelPendingPrompt(){if(!this.pendingPrompt)throw new Error("Not currently generating");this.pendingPrompt.abort(),this.pendingPrompt=null}setMode(e){let s=or(this.context.config.isPlanEnabled()).find(o=>o.id===e);if(!s)throw new Error(`Invalid or unavailable mode: ${e}`);return this.context.config.setApprovalMode(s.id),{}}getAvailableCommands(){return this.commandHandler.getAvailableCommands()}async sendAvailableCommands(){let e=this.getAvailableCommands().map(t=>({name:t.name,description:t.description}));await this.sendUpdate({sessionUpdate:"available_commands_update",availableCommands:e})}setModel(e){return this.context.config.setModel(e),{}}async streamHistory(e){for(let t of e){let s=Kr(t.content);if(t.type==="user")s.trim()&&await this.sendUpdate({sessionUpdate:"user_message_chunk",content:{type:"text",text:s}});else if(t.type==="gemini"){if(t.thoughts)for(let o of t.thoughts){let r=`**${o.subject}**
122
+ ${o.description}`;await this.sendUpdate({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:r}})}if(s.trim()&&await this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:s}}),t.toolCalls)for(let o of t.toolCalls){let r=[];o.resultDisplay&&(typeof o.resultDisplay=="string"?r.push({type:"content",content:{type:"text",text:o.resultDisplay}}):"fileName"in o.resultDisplay&&r.push({type:"diff",path:o.resultDisplay.fileName,oldText:o.resultDisplay.originalContent,newText:o.resultDisplay.newContent}));let a=this.context.toolRegistry.getTool(o.name);await this.sendUpdate({sessionUpdate:"tool_call",toolCallId:o.id,status:o.status===St.Success?"completed":"failed",title:o.displayName||o.name,content:r,kind:a?Lt(a.kind):"other"})}}}}async prompt(e){this.pendingPrompt?.abort();let t=new AbortController;this.pendingPrompt=t,await this.context.config.waitForMcpInit();let s=Math.random().toString(16).slice(2),o=this.chat,r=await this.#e(e.prompt,t.signal),a="";for(let f of r)if(typeof f=="object"&&f!==null)if("text"in f){let h=f.text;typeof h=="string"&&(a+=h)}else break;if(a=a.trim(),a&&(a.startsWith("/")||a.startsWith("$"))&&await this.handleCommand(a,r))return{stopReason:"end_turn",_meta:{quota:{token_count:{input_tokens:0,output_tokens:0},model_usage:[]}}};let l=0,c=0,m=new Map,d={role:"user",parts:r};for(;d!==null;){if(t.signal.aborted)return o.addHistory(d),{stopReason:St.Cancelled};let f=[];try{let h={history:o.getHistory(!0),request:d?.parts??[],signal:t.signal,requestedModel:this.context.config.getModel()},I=this.context.config.getModelRouterService(),{model:S}=await I.route(h),x=await o.sendMessageStream({model:S},d?.parts??[],s,t.signal,Or.MAIN);d=null;let k=0,M=0,v=S;for await(let b of x){if(t.signal.aborted)return{stopReason:St.Cancelled};if(b.type===ts.CHUNK&&b.value.usageMetadata&&(k=b.value.usageMetadata.promptTokenCount??k,M=b.value.usageMetadata.candidatesTokenCount??M,b.value.modelVersion&&(v=b.value.modelVersion)),b.type===ts.CHUNK&&b.value.candidates&&b.value.candidates.length>0){let P=b.value.candidates[0];for(let ee of P.content?.parts??[]){if(!ee.text)continue;let Q={type:"text",text:ee.text};this.sendUpdate({sessionUpdate:ee.thought?"agent_thought_chunk":"agent_message_chunk",content:Q})}}b.type===ts.CHUNK&&b.value.functionCalls&&f.push(...b.value.functionCalls)}if(l+=k,c+=M,k>0||M>0){let b=m.get(v)??{input:0,output:0};b.input+=k,b.output+=M,m.set(v,b)}if(t.signal.aborted)return{stopReason:St.Cancelled}}catch(h){if(wo(h)===429)throw new le(429,"Rate limit exceeded. Try again later.");if(t.signal.aborted||h instanceof Error&&h.name==="AbortError")return{stopReason:St.Cancelled};if(h instanceof Jr||h&&typeof h=="object"&&"type"in h&&(h.type==="NO_RESPONSE_TEXT"||h.type==="NO_FINISH_REASON"||h.type==="MALFORMED_FUNCTION_CALL"||h.type==="UNEXPECTED_TOOL_CALL"))return{stopReason:"end_turn",_meta:{quota:{token_count:{input_tokens:l,output_tokens:c},model_usage:Array.from(m.entries()).map(([I,S])=>({model:I,token_count:{input_tokens:S.input,output_tokens:S.output}}))}}};throw new le(wo(h)||500,Hs(h))}if(f.length>0){let h=[];for(let I of f){let S=await this.runTool(t.signal,s,I);h.push(...S)}d={role:"user",parts:h}}}let p=Array.from(m.entries()).map(([f,h])=>({model:f,token_count:{input_tokens:h.input,output_tokens:h.output}}));return{stopReason:"end_turn",_meta:{quota:{token_count:{input_tokens:l,output_tokens:c},model_usage:p}}}}async handleCommand(e,t){let s=await this.context.config.getGitService(),o={agentContext:this.context,settings:this.settings,git:s,sendMessage:async r=>{await this.sendUpdate({sessionUpdate:"agent_message_chunk",content:{type:"text",text:r}})}};return this.commandHandler.handleCommand(e,o)}async sendUpdate(e){let t={sessionId:this.id,update:e};await this.connection.sessionUpdate(t)}async runTool(e,t,s){let o=s.id??Vn.generateCallId(s.name||"unknown"),r=s.args??{},a=Date.now(),l=d=>{let p=Date.now()-a;return yo(this.context.config,new go(void 0,s.name??"",r,p,!1,t,typeof m<"u"&&m instanceof fo?"mcp":"native",d.message)),[{functionResponse:{id:o,name:s.name??"",response:{error:d.message}}}]};if(!s.name)return l(new Error("Missing function name"));let m=this.context.toolRegistry.getTool(s.name);if(!m)return l(new Error(`Tool "${s.name}" not found in registry.`));try{let d=m.build(r),p=typeof d.getDisplayTitle=="function"?d.getDisplayTitle():d.getDescription(),f=typeof d.getExplanation=="function"?d.getExplanation():"";f&&await this.sendUpdate({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:f}});let h=await d.shouldConfirmExecute(e);if(h){let M=[];h.type==="edit"&&M.push({type:"diff",path:h.filePath,oldText:h.originalContent,newText:h.newContent,_meta:{kind:h.originalContent?h.newContent===""?"delete":"modify":"add"}});let v={sessionId:this.id,options:wh(h,this.context.config,this.settings.merged.security.enablePermanentToolApproval),toolCall:{toolCallId:o,status:"pending",title:p,content:M,locations:d.toolLocations(),kind:Lt(m.kind)}},b=Kd.parse(await this.connection.requestPermission(v)),P=b.outcome.outcome==="cancelled"?me.Cancel:Pe.nativeEnum(me).parse(b.outcome.optionId);switch(await h.onConfirm(P),await ea(m,P,h,this.context,this.context.messageBus,d),P){case me.Cancel:return l(new Error(`Tool "${s.name}" was canceled by the user.`));case me.ProceedOnce:case me.ProceedAlways:case me.ProceedAlwaysAndSave:case me.ProceedAlwaysServer:case me.ProceedAlwaysTool:case me.ModifyWithEditor:break;default:{let ee=P;throw new Error(`Unexpected: ${ee}`)}}}else{let M=[];await this.sendUpdate({sessionUpdate:"tool_call",toolCallId:o,status:"in_progress",title:p,content:M,locations:d.toolLocations(),kind:Lt(m.kind)})}let I=await d.execute(e),S=Jd(I),x=S?[S]:[];await this.sendUpdate({sessionUpdate:"tool_call_update",toolCallId:o,status:"completed",title:p,content:x,locations:d.toolLocations(),kind:Lt(m.kind)});let k=Date.now()-a;return yo(this.context.config,new go(void 0,s.name??"",r,k,!0,t,typeof m<"u"&&m instanceof fo?"mcp":"native")),this.chat.recordCompletedToolCalls(this.context.config.getActiveModel(),[{status:St.Success,request:{callId:o,name:s.name,args:r,isClientInitiated:!1,prompt_id:t},tool:m,invocation:d,response:{callId:o,responseParts:bo(s.name,o,I.llmContent,this.context.config.getActiveModel(),this.context.config),resultDisplay:I.returnDisplay,error:void 0,errorType:void 0}}]),bo(s.name,o,I.llmContent,this.context.config.getActiveModel(),this.context.config)}catch(d){let p=d instanceof Error?d:new Error(String(d));return await this.sendUpdate({sessionUpdate:"tool_call_update",toolCallId:o,status:"failed",content:[{type:"content",content:{type:"text",text:p.message}}],kind:Lt(m.kind)}),this.chat.recordCompletedToolCalls(this.context.config.getActiveModel(),[{status:St.Error,request:{callId:o,name:s.name,args:r,isClientInitiated:!1,prompt_id:t},tool:m,response:{callId:o,responseParts:[{functionResponse:{id:o,name:s.name??"",response:{error:p.message}}}],resultDisplay:p.message,error:p,errorType:void 0}}]),l(p)}}async#e(e,t){let s="file://",o=[],r=e.map(v=>{switch(v.type){case"text":return{text:v.text};case"image":case"audio":return{inlineData:{mimeType:v.mimeType,data:v.data}};case"resource_link":return v.uri.startsWith(s)?{fileData:{mimeData:v.mimeType,name:v.name,fileUri:v.uri.slice(s.length)}}:{text:`@${v.uri}`};case"resource":return o.push(v.resource),{text:`@${v.resource.uri}`};default:{let b=v;throw new Error(`Unexpected chunk type: '${b}'`)}}}),a=r.filter(v=>"fileData"in v);if(a.length===0&&o.length===0)return r;let l=new Map,c=this.context.config.getFileService(),m=this.context.config.getFileFilteringOptions(),d=[],p=[],f=[],h=[],I=this.context.toolRegistry,S=new xa(this.context.config,this.context.messageBus),x=I.getTool("glob");if(!S)throw new Error("Error: read_many_files tool not found.");for(let v of a){let b=v.fileData.fileUri;if(c.shouldIgnoreFile(b,m)){f.push(b),y.warn(`Path ${b} is ignored and will be skipped.`);continue}let P=b,ee=!1,Q=!1;try{let H=An.resolve(this.context.config.getTargetDir(),b),K=this.context.config.validatePathAccess(H,"read");if(K&&!rn(H,this.context.config.getTargetDir()))try{if((await oo.stat(H)).isFile()){let w=`resolve-prompt-${b}-${Qd()}`,_={sessionId:this.id,options:[{optionId:me.ProceedOnce,name:"Allow once",kind:"allow_once"},{optionId:me.Cancel,name:"Deny",kind:"reject_once"}],toolCall:{toolCallId:w,status:"pending",title:`Allow access to absolute path: ${b}`,content:[{type:"content",content:{type:"text",text:`The Agent needs access to read an attached file outside your workspace: ${b}`}}],locations:[],kind:"read"}},T=Kd.parse(await this.connection.requestPermission(_));if((T.outcome.outcome==="cancelled"?me.Cancel:Pe.nativeEnum(me).parse(T.outcome.optionId))===me.ProceedOnce)this.context.config.getWorkspaceContext().addReadOnlyPath(H),K=null;else{this.debug(`Direct read authorization denied for absolute path ${b}`),h.push({spec:b,content:`[Warning: Access to absolute path \`${b}\` denied by user.]`});continue}}}catch(N){this.debug(`Failed to request permission for absolute attachment ${b}: ${B(N)}`),await this.sendUpdate({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:`Warning: Failed to display permission dialog for \`${H}\`. Error: ${B(N)}`}})}if(K)this.debug(`Path ${b} access disallowed: ${K}. Skipping.`),await this.sendUpdate({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:`Warning: skipping access to \`${b}\`. Reason: ${K}`}});else{if((An.isAbsolute(b)||!rn(H,this.context.config.getTargetDir()))&&!Q)try{if((await oo.stat(H)).isFile()){let w=await xr(H,this.context.config.getTargetDir(),this.context.config.getFileSystemService());if(w.error){this.debug(`Direct read failed for absolute path ${b}: ${w.error}`),await this.sendUpdate({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:`Warning: file read failed for \`${b}\`. Reason: ${w.error}`}});continue}else{if(typeof w.llmContent=="object"&&"inlineData"in w.llmContent)h.push({spec:b,part:w.llmContent});else if(typeof w.llmContent=="string"){let _=w.llmContent;w.isTruncated&&(_=`[WARNING: This file was truncated]
123
+
124
+ ${_}`),h.push({spec:b,content:_})}Q=!0,ee=!0}}}catch(N){this.debug(`File stat/access error for absolute path ${b}: ${B(N)}`),await this.sendUpdate({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:`Warning: file access failed for \`${b}\`. Reason: ${B(N)}`}});continue}Q||((await oo.stat(H)).isDirectory()?(P=b.endsWith("/")?`${b}**`:`${b}/**`,this.debug(`Path ${b} resolved to directory, using glob: ${P}`)):this.debug(`Path ${b} resolved to file: ${P}`),ee=!0)}}catch(H){if(Jn(H)&&H.code==="ENOENT")if(this.context.config.getEnableRecursiveFileSearch()&&x){this.debug(`Path ${b} not found directly, attempting glob search.`);try{let K=await x.buildAndExecute({pattern:`**/*${b}*`,path:this.context.config.getTargetDir()},t);if(K.llmContent&&typeof K.llmContent=="string"&&!K.llmContent.startsWith("No files found")&&!K.llmContent.startsWith("Error:")){let N=K.llmContent.split(`
125
+ `);if(N.length>1&&N[1]){let w=N[1].trim();P=An.relative(this.context.config.getTargetDir(),w),this.debug(`Glob search for ${b} found ${w}, using relative path: ${P}`),ee=!0}else this.debug(`Glob search for '**/*${b}*' did not return a usable path. Path ${b} will be skipped.`)}else this.debug(`Glob search for '**/*${b}*' found no files or an error. Path ${b} will be skipped.`)}catch(K){y.error(`Error during glob search for ${b}: ${B(K)}`)}}else this.debug(`Glob tool not found. Path ${b} will be skipped.`);else y.error(`Error stating path ${b}. Path ${b} will be skipped.`)}ee&&(Q||d.push(P),l.set(b,P),p.push(b))}let k="";for(let v=0;v<r.length;v++){let b=r[v];if("text"in b)k+=b.text;else{let P=b.fileData&&l.get(b.fileData.fileUri);if(v>0&&k.length>0&&!k.endsWith(" ")&&P){let ee=r[v-1];("text"in ee||"fileData"in ee&&l.has(ee.fileData.fileUri))&&(k+=" ")}P?k+=`@${P}`:(v>0&&k.length>0&&!k.endsWith(" ")&&!b.fileData?.fileUri.startsWith(" ")&&(k+=" "),b.fileData?.fileUri&&(k+=`@${b.fileData.fileUri}`))}}k=k.trim(),f.length>0&&this.debug(`Ignored ${f.length} files: ${f.join(", ")}`);let M=[{text:k}];if(d.length===0&&o.length===0&&h.length===0)return y.warn("No valid file paths found in @ commands to read."),[{text:k}];if(d.length>0){let v={include:d},b=Vn.generateCallId(S.name);try{let P=S.build(v);await this.sendUpdate({sessionUpdate:"tool_call",toolCallId:b,status:"in_progress",title:P.getDescription(),content:[],locations:P.toolLocations(),kind:Lt(S.kind)});let ee=await P.execute(t),Q=Jd(ee)||{type:"content",content:{type:"text",text:`Successfully read: ${p.join(", ")}`}};if(await this.sendUpdate({sessionUpdate:"tool_call_update",toolCallId:b,status:"completed",title:P.getDescription(),content:Q?[Q]:[],locations:P.toolLocations(),kind:Lt(S.kind)}),Array.isArray(ee.llmContent)){let H=/^--- (.*?) ---\n\n([\s\S]*?)\n\n$/;M.push({text:`
126
+ ${Kn}`});for(let K of ee.llmContent)if(typeof K=="string"){let N=H.exec(K);if(N){let w=N[1],_=N[2].trim();M.push({text:`
124
127
  Content from @${w}:
125
- `}),M.push({text:_})}else M.push({text:K})}else M.push(K)}else y.warn("read_many_files tool returned no content or empty content.")}catch(P){throw await this.sendUpdate({sessionUpdate:"tool_call_update",toolCallId:b,status:"failed",content:[{type:"content",content:{type:"text",text:`Error reading files (${m.join(", ")}): ${B(P)}`}}],kind:$t(E.kind)}),P}}if(h.length>0){M.some(b=>"text"in b&&typeof b.text=="string"&&b.text.includes(Xn))||M.push({text:`
126
- ${Xn}`});for(let b of h)M.push({text:`
128
+ `}),M.push({text:_})}else M.push({text:K})}else M.push(K)}else y.warn("read_many_files tool returned no content or empty content.")}catch(P){throw await this.sendUpdate({sessionUpdate:"tool_call_update",toolCallId:b,status:"failed",content:[{type:"content",content:{type:"text",text:`Error reading files (${p.join(", ")}): ${B(P)}`}}],kind:Lt(S.kind)}),P}}if(h.length>0){M.some(b=>"text"in b&&typeof b.text=="string"&&b.text.includes(Kn))||M.push({text:`
129
+ ${Kn}`});for(let b of h)M.push({text:`
127
130
  Content from @${b.spec}:
128
131
  `}),b.content?M.push({text:b.content}):b.part&&M.push(b.part)}if(o.length>0){M.push({text:`
129
132
  --- Content from referenced context ---`});for(let v of o)M.push({text:`
130
133
  Content from @${v.uri}:
131
- `}),"text"in v?M.push({text:v.text}):M.push({inlineData:{mimeType:v.mimeType??"application/octet-stream",data:v.blob}})}return M}debug(e){this.context.config.getDebugMode()&&y.warn(e)}};function Bd(n){if(n.error?.message)throw new Error(n.error.message);return n.returnDisplay?typeof n.returnDisplay=="string"?{type:"content",content:{type:"text",text:n.returnDisplay}}:"fileName"in n.returnDisplay?{type:"diff",path:n.returnDisplay.filePath??n.returnDisplay.fileName,oldText:n.returnDisplay.originalContent,newText:n.returnDisplay.newContent,_meta:{kind:n.returnDisplay.originalContent?n.returnDisplay.newContent===""?"delete":"modify":"add"}}:null:null}var ph=[{optionId:pe.ProceedOnce,name:"Allow",kind:"allow_once"},{optionId:pe.Cancel,name:"Reject",kind:"reject_once"}];function mh(n,e,t=!1){let s=e.getDisableAlwaysAllow(),o=[];if(!s)switch(n.type){case"edit":o.push({optionId:pe.ProceedAlways,name:"Allow for this session",kind:"allow_always"}),t&&o.push({optionId:pe.ProceedAlwaysAndSave,name:"Allow for this file in all future sessions",kind:"allow_always"});break;case"exec":o.push({optionId:pe.ProceedAlways,name:"Allow for this session",kind:"allow_always"}),t&&o.push({optionId:pe.ProceedAlwaysAndSave,name:"Allow this command for all future sessions",kind:"allow_always"});break;case"mcp":o.push({optionId:pe.ProceedAlwaysServer,name:"Allow all server tools for this session",kind:"allow_always"},{optionId:pe.ProceedAlwaysTool,name:"Allow tool for this session",kind:"allow_always"}),t&&o.push({optionId:pe.ProceedAlwaysAndSave,name:"Allow tool for all future sessions",kind:"allow_always"});break;case"info":o.push({optionId:pe.ProceedAlways,name:"Allow for this session",kind:"allow_always"}),t&&o.push({optionId:pe.ProceedAlwaysAndSave,name:"Allow for all future sessions",kind:"allow_always"});break;case"ask_user":case"exit_plan_mode":break;default:break}switch(o.push(...ph),n.type){case"edit":case"exec":case"mcp":case"info":case"ask_user":case"exit_plan_mode":case"sandbox_expansion":break;default:{let r=n;throw new Error(`Unexpected: ${r}`)}}return o}function $t(n){switch(n){case We.Read:case We.Edit:case We.Execute:case We.Search:case We.Delete:case We.Move:case We.Think:case We.Fetch:case We.SwitchMode:case We.Other:return n;case We.Agent:return"think";case We.Plan:case We.Communicate:default:return"other"}}function tr(n){let e=[{id:Le.DEFAULT,name:"Default",description:"Prompts for approval"},{id:Le.AUTO_EDIT,name:"Auto Edit",description:"Auto-approves edit tools"},{id:Le.YOLO,name:"YOLO",description:"Auto-approves all tools"}];return n&&e.push({id:Le.PLAN,name:"Plan",description:"Read-only mode"}),e}function Vd(n,e){let t=n.getModel()||Yn,s=n.getHasAccessToPreviewModel(),o=n.getGemini31LaunchedSync?.()??!1,r=n.getGemini31FlashLiteLaunchedSync?.()??!1,a=e.merged.security.auth.selectedType,l=o&&a===Ke.USE_GEMINI;if(n.getExperimentalDynamicModelConfiguration?.()===!0&&n.getModelConfigService)return{availableModels:n.getModelConfigService().getAvailableModelOptions({useGemini3_1:o,useGemini3_1FlashLite:r,useCustomTools:l,hasAccessToPreview:s}),currentModelId:t};let c=[{value:Yn,title:yt(Yn),description:"Let Gemini CLI decide the best model for the task: gemini-2.5-pro, gemini-2.5-flash"}];s&&c.unshift({value:An,title:yt(An),description:o?"Let Gemini CLI decide the best model for the task: gemini-3.1-pro, gemini-3-flash":"Let Gemini CLI decide the best model for the task: gemini-3-pro, gemini-3-flash"});let p=[{value:ao,title:yt(ao)},{value:lo,title:yt(lo)},{value:co,title:yt(co)}];if(s){let m=o?dr:cr,h=[{value:l?ur:m,title:yt(m)},{value:io,title:yt(io)}];r&&h.push({value:ro,title:yt(ro)}),p.unshift(...h)}let d=m=>m.map(f=>({modelId:f.value,name:f.title,description:f.description}));return{availableModels:[...d(c),...d(p)],currentModelId:t}}async function nr(n,e,t,s){try{let o=n||Fr(),r=s.merged.security.auth.enforcedType;if(r&&o!==r){let l=o?`The enforced authentication type is '${r}', but the current type is '${o}'. Please re-authenticate with the correct type.`:`The auth type '${r}' is enforced, but no authentication is configured.`;throw new Error(l)}if(!o){let l=`Please set an Auth method in your ${Aa} or specify one of the following environment variables before running: GEMINI_API_KEY, GOOGLE_GENAI_USE_VERTEXAI, GOOGLE_GENAI_USE_GCA`;throw new Error(l)}let a=o;if(!e){let l=cs(String(a));if(l!=null)throw new Error(l)}return a}catch(o){t.getOutputFormat()===Ae.JSON?Ds(o instanceof Error?o:new Error(String(o)),t,Me.FATAL_AUTHENTICATION_ERROR):(y.error(o instanceof Error?o.message:String(o)),await de(),process.exit(Me.FATAL_AUTHENTICATION_ERROR))}}import{spawn as fh}from"node:child_process";async function sr(n){for(;;)try{let e=await n();e!==nl&&process.exit(e)}catch(e){process.stdin.resume();let t=e instanceof Error?e.stack??e.message:String(e);me(`Fatal error: Failed to relaunch the CLI process.
134
+ `}),"text"in v?M.push({text:v.text}):M.push({inlineData:{mimeType:v.mimeType??"application/octet-stream",data:v.blob}})}return M}debug(e){this.context.config.getDebugMode()&&y.warn(e)}};function Jd(n){if(n.error?.message)throw new Error(n.error.message);return n.returnDisplay?typeof n.returnDisplay=="string"?{type:"content",content:{type:"text",text:n.returnDisplay}}:"fileName"in n.returnDisplay?{type:"diff",path:n.returnDisplay.filePath??n.returnDisplay.fileName,oldText:n.returnDisplay.originalContent,newText:n.returnDisplay.newContent,_meta:{kind:n.returnDisplay.originalContent?n.returnDisplay.newContent===""?"delete":"modify":"add"}}:null:null}var bh=[{optionId:me.ProceedOnce,name:"Allow",kind:"allow_once"},{optionId:me.Cancel,name:"Reject",kind:"reject_once"}];function wh(n,e,t=!1){let s=e.getDisableAlwaysAllow(),o=[];if(!s)switch(n.type){case"edit":o.push({optionId:me.ProceedAlways,name:"Allow for this session",kind:"allow_always"}),t&&o.push({optionId:me.ProceedAlwaysAndSave,name:"Allow for this file in all future sessions",kind:"allow_always"});break;case"exec":o.push({optionId:me.ProceedAlways,name:"Allow for this session",kind:"allow_always"}),t&&o.push({optionId:me.ProceedAlwaysAndSave,name:"Allow this command for all future sessions",kind:"allow_always"});break;case"mcp":o.push({optionId:me.ProceedAlwaysServer,name:"Allow all server tools for this session",kind:"allow_always"},{optionId:me.ProceedAlwaysTool,name:"Allow tool for this session",kind:"allow_always"}),t&&o.push({optionId:me.ProceedAlwaysAndSave,name:"Allow tool for all future sessions",kind:"allow_always"});break;case"info":o.push({optionId:me.ProceedAlways,name:"Allow for this session",kind:"allow_always"}),t&&o.push({optionId:me.ProceedAlwaysAndSave,name:"Allow for all future sessions",kind:"allow_always"});break;case"ask_user":case"exit_plan_mode":break;default:break}switch(o.push(...bh),n.type){case"edit":case"exec":case"mcp":case"info":case"ask_user":case"exit_plan_mode":case"sandbox_expansion":break;default:{let r=n;throw new Error(`Unexpected: ${r}`)}}return o}function Lt(n){switch(n){case We.Read:case We.Edit:case We.Execute:case We.Search:case We.Delete:case We.Move:case We.Think:case We.Fetch:case We.SwitchMode:case We.Other:return n;case We.Agent:return"think";case We.Plan:case We.Communicate:default:return"other"}}function or(n){let e=[{id:Le.DEFAULT,name:"Default",description:"Prompts for approval"},{id:Le.AUTO_EDIT,name:"Auto Edit",description:"Auto-approves edit tools"},{id:Le.YOLO,name:"YOLO",description:"Auto-approves all tools"}];return n&&e.push({id:Le.PLAN,name:"Plan",description:"Read-only mode"}),e}function Zd(n,e){let t=n.getModel()||Xn,s=n.getHasAccessToPreviewModel(),o=n.getGemini31LaunchedSync?.()??!1,r=n.getGemini31FlashLiteLaunchedSync?.()??!1,a=e.merged.security.auth.selectedType,l=o&&a===Ke.USE_GEMINI;if(n.getExperimentalDynamicModelConfiguration?.()===!0&&n.getModelConfigService)return{availableModels:n.getModelConfigService().getAvailableModelOptions({useGemini3_1:o,useGemini3_1FlashLite:r,useCustomTools:l,hasAccessToPreview:s}),currentModelId:t};let c=[{value:Xn,title:yt(Xn),description:"Let Gemini CLI decide the best model for the task: gemini-2.5-pro, gemini-2.5-flash"}];s&&c.unshift({value:On,title:yt(On),description:o?"Let Gemini CLI decide the best model for the task: gemini-3.1-pro, gemini-3-flash":"Let Gemini CLI decide the best model for the task: gemini-3-pro, gemini-3-flash"});let m=[{value:uo,title:yt(uo)},{value:mo,title:yt(mo)},{value:po,title:yt(po)}];if(s){let p=o?pr:mr,h=[{value:l?fr:p,title:yt(p)},{value:lo,title:yt(lo)}];r&&h.push({value:co,title:yt(co)}),m.unshift(...h)}let d=p=>p.map(f=>({modelId:f.value,name:f.title,description:f.description}));return{availableModels:[...d(c),...d(m)],currentModelId:t}}async function ir(n,e,t,s){try{let o=n||qr(),r=s.merged.security.auth.enforcedType;if(r&&o!==r){let l=o?`The enforced authentication type is '${r}', but the current type is '${o}'. Please re-authenticate with the correct type.`:`The auth type '${r}' is enforced, but no authentication is configured.`;throw new Error(l)}if(!o){let l=`Please set an Auth method in your ${ka} or specify one of the following environment variables before running: GEMINI_API_KEY, GOOGLE_GENAI_USE_VERTEXAI, GOOGLE_GENAI_USE_GCA`;throw new Error(l)}let a=o;if(!e){let l=ds(String(a));if(l!=null)throw new Error(l)}return a}catch(o){t.getOutputFormat()===Ae.JSON?js(o instanceof Error?o:new Error(String(o)),t,Me.FATAL_AUTHENTICATION_ERROR):(y.error(o instanceof Error?o.message:String(o)),await de(),process.exit(Me.FATAL_AUTHENTICATION_ERROR))}}import{spawn as xh}from"node:child_process";async function rr(n){for(;;)try{let e=await n();e!==al&&process.exit(e)}catch(e){process.stdin.resume();let t=e instanceof Error?e.stack??e.message:String(e);pe(`Fatal error: Failed to relaunch the CLI process.
132
135
  ${t}
133
- `),process.exit(1)}}async function Kd(n,e,t){if(process.env.GEMINI_CLI_NO_RELAUNCH)return;let s=t;await sr(()=>{let r=process.argv[1],a=process.argv.slice(2),l=[...process.execArgv,...n,r,...e,...a],c={...process.env,GEMINI_CLI_NO_RELAUNCH:"true"};process.stdin.pause();let p=fh(process.execPath,l,{stdio:["inherit","inherit","inherit","ipc"],env:c});return s&&p.send({type:"admin-settings",settings:s}),p.on("message",d=>{d.type==="admin-settings-update"&&d.settings&&(s=d.settings)}),new Promise((d,m)=>{p.on("error",m),p.on("close",f=>{process.stdin.resume(),d(f??1)})})})}async function Jd(n){await fa(n);let t=await new jt(n).listSessions();if(t.length===0){bt("No previous sessions found for this project.");return}bt(`
136
+ `),process.exit(1)}}async function tu(n,e,t){if(process.env.GEMINI_CLI_NO_RELAUNCH)return;let s=t;await rr(()=>{let r=process.argv[1],a=process.argv.slice(2),l=[...process.execArgv,...n,r,...e,...a],c={...process.env,GEMINI_CLI_NO_RELAUNCH:"true"};process.stdin.pause();let m=xh(process.execPath,l,{stdio:["inherit","inherit","inherit","ipc"],env:c});return s&&m.send({type:"admin-settings",settings:s}),m.on("message",d=>{d.type==="admin-settings-update"&&d.settings&&(s=d.settings)}),new Promise((d,p)=>{m.on("error",p),m.on("close",f=>{process.stdin.resume(),d(f??1)})})})}async function nu(n){await wa(n);let t=await new Ft(n).listSessions();if(t.length===0){bt("No previous sessions found for this project.");return}bt(`
134
137
  Available sessions for this project (${t.length}):
135
- `),t.sort((s,o)=>new Date(s.startTime).getTime()-new Date(o.startTime).getTime()).forEach((s,o)=>{let r=s.isCurrentSession?", current":"",a=So(s.lastUpdated),l=s.displayName.length>100?s.displayName.slice(0,97)+"...":s.displayName;bt(` ${o+1}. ${l} (${a}${r}) [${s.id}]
136
- `)})}async function Zd(n,e){let s=await new jt(n).listSessions();if(s.length===0){me("No sessions found for this project.");return}let o=s.sort((l,c)=>new Date(l.startTime).getTime()-new Date(c.startTime).getTime()),r,a=o.find(l=>l.id===e);if(a)r=a;else{let l=parseInt(e,10);if(isNaN(l)||l<1||l>s.length){me(`Invalid session identifier "${e}". Use --list-sessions to see available sessions.`);return}r=o[l-1]}if(r.isCurrentSession){me("Cannot delete the current active session.");return}try{await new kr(n).deleteSession(r.file);let c=So(r.lastUpdated);bt(`Deleted session ${r.index}: ${r.firstUserMessage} (${c})`)}catch(l){me(`Failed to delete session: ${l instanceof Error?l.message:"Unknown error"}`)}}async function Qd(n,e){let t;if(n.isInteractive()&&process.stdin.isTTY&&(await _o.detectCapabilities(),t=_o.getTerminalBackgroundColor()),At.loadCustomThemes(e.merged.ui.customThemes),e.merged.ui.theme)At.setActiveTheme(e.merged.ui.theme)||y.warn(`Warning: Theme "${e.merged.ui.theme}" not found.`);else{let s=xa(t,At.getAllThemes(),Na.name,"Default Light");At.setActiveTheme(s)}if(n.setTerminalBackground(t),At.setTerminalBackground(t),t!==void 0){let s=At.getActiveTheme();if(!At.isThemeCompatible(s,t)){let o=wa(t);q.emitFeedback("warning",`Theme '${s.name}' (${s.type}) might look incorrect on your ${o} terminal background. Type /theme to change theme.`)}}return t}import{promises as so}from"node:fs";import*as eu from"node:path";var hh=7*24*60*60*1e3;async function tu(n=!1){try{let e=qr.getLogDir();try{await so.access(e)}catch{return}let t=await so.readdir(e,{withFileTypes:!0}),s=Date.now(),o=0;for(let r of t)if(r.isFile()&&r.name.endsWith(".log")){let a=eu.join(e,r.name);try{let l=await so.stat(a);s-l.mtime.getTime()>hh&&(await so.unlink(a),o++)}catch(l){n&&y.debug(`Failed to process log file ${r.name}:`,l)}}o>0&&n&&y.debug(`Cleaned up ${o} expired background logs.`)}catch(e){n&&y.warn("Background log cleanup failed:",e)}}var oo=class{notifiedConflicts=new Set;pendingConflicts=[];flushTimeout=null;constructor(){this.handleConflicts=this.handleConflicts.bind(this)}start(){q.on(Ve.SlashCommandConflicts,this.handleConflicts)}stop(){q.off(Ve.SlashCommandConflicts,this.handleConflicts),this.flushTimeout&&(clearTimeout(this.flushTimeout),this.flushTimeout=null)}handleConflicts(e){let t=e.conflicts.filter(s=>{let o=s.loserExtensionName||s.loserMcpServerName||s.loserKind,r=`${s.name}:${o}:${s.renamedTo}`;return this.notifiedConflicts.has(r)?!1:(this.notifiedConflicts.add(r),!0)});t.length>0&&(this.pendingConflicts.push(...t),this.scheduleFlush())}scheduleFlush(){this.flushTimeout&&clearTimeout(this.flushTimeout),this.flushTimeout=setTimeout(()=>this.flush(),500)}flush(){this.flushTimeout=null;let e=[...this.pendingConflicts];if(this.pendingConflicts=[],e.length===0)return;let t=new Map;for(let s of e){let o=t.get(s.name)??[];o.push(s),t.set(s.name,o)}for(let[s,o]of t)o.length>1?this.emitGroupedFeedback(s,o):this.emitSingleFeedback(o[0])}emitGroupedFeedback(e,t){let s=t.map(o=>{let r=this.getSourceDescription(o.loserExtensionName,o.loserKind,o.loserMcpServerName);return`- ${this.capitalize(r)} '/${o.name}' was renamed to '/${o.renamedTo}'`}).join(`
138
+ `),t.sort((s,o)=>new Date(s.startTime).getTime()-new Date(o.startTime).getTime()).forEach((s,o)=>{let r=s.isCurrentSession?", current":"",a=vo(s.lastUpdated),l=s.displayName.length>100?s.displayName.slice(0,97)+"...":s.displayName;bt(` ${o+1}. ${l} (${a}${r}) [${s.id}]
139
+ `)})}async function su(n,e){let s=await new Ft(n).listSessions();if(s.length===0){pe("No sessions found for this project.");return}let o=s.sort((l,c)=>new Date(l.startTime).getTime()-new Date(c.startTime).getTime()),r,a=o.find(l=>l.id===e);if(a)r=a;else{let l=parseInt(e,10);if(isNaN(l)||l<1||l>s.length){pe(`Invalid session identifier "${e}". Use --list-sessions to see available sessions.`);return}r=o[l-1]}if(r.isCurrentSession){pe("Cannot delete the current active session.");return}try{await new $r(n).deleteSession(r.file);let c=vo(r.lastUpdated);bt(`Deleted session ${r.index}: ${r.firstUserMessage} (${c})`)}catch(l){pe(`Failed to delete session: ${l instanceof Error?l.message:"Unknown error"}`)}}async function ou(n,e){let t;if(n.isInteractive()&&process.stdin.isTTY&&(await Oo.detectCapabilities(),t=Oo.getTerminalBackgroundColor()),Ot.loadCustomThemes(e.merged.ui.customThemes),e.merged.ui.theme)Ot.setActiveTheme(e.merged.ui.theme)||y.warn(`Warning: Theme "${e.merged.ui.theme}" not found.`);else{let s=va(t,Ot.getAllThemes(),Fa.name,"Default Light");Ot.setActiveTheme(s)}if(n.setTerminalBackground(t),Ot.setTerminalBackground(t),t!==void 0){let s=Ot.getActiveTheme();if(!Ot.isThemeCompatible(s,t)){let o=_a(t);q.emitFeedback("warning",`Theme '${s.name}' (${s.type}) might look incorrect on your ${o} terminal background. Type /theme to change theme.`)}}return t}import{promises as ro}from"node:fs";import*as iu from"node:path";var Ch=7*24*60*60*1e3;async function ru(n=!1){try{let e=Xr.getLogDir();try{await ro.access(e)}catch{return}let t=await ro.readdir(e,{withFileTypes:!0}),s=Date.now(),o=0;for(let r of t)if(r.isFile()&&r.name.endsWith(".log")){let a=iu.join(e,r.name);try{let l=await ro.stat(a);s-l.mtime.getTime()>Ch&&(await ro.unlink(a),o++)}catch(l){n&&y.debug(`Failed to process log file ${r.name}:`,l)}}o>0&&n&&y.debug(`Cleaned up ${o} expired background logs.`)}catch(e){n&&y.warn("Background log cleanup failed:",e)}}var ao=class{notifiedConflicts=new Set;pendingConflicts=[];flushTimeout=null;constructor(){this.handleConflicts=this.handleConflicts.bind(this)}start(){q.on(Ve.SlashCommandConflicts,this.handleConflicts)}stop(){q.off(Ve.SlashCommandConflicts,this.handleConflicts),this.flushTimeout&&(clearTimeout(this.flushTimeout),this.flushTimeout=null)}handleConflicts(e){let t=e.conflicts.filter(s=>{let o=s.loserExtensionName||s.loserMcpServerName||s.loserKind,r=`${s.name}:${o}:${s.renamedTo}`;return this.notifiedConflicts.has(r)?!1:(this.notifiedConflicts.add(r),!0)});t.length>0&&(this.pendingConflicts.push(...t),this.scheduleFlush())}scheduleFlush(){this.flushTimeout&&clearTimeout(this.flushTimeout),this.flushTimeout=setTimeout(()=>this.flush(),500)}flush(){this.flushTimeout=null;let e=[...this.pendingConflicts];if(this.pendingConflicts=[],e.length===0)return;let t=new Map;for(let s of e){let o=t.get(s.name)??[];o.push(s),t.set(s.name,o)}for(let[s,o]of t)o.length>1?this.emitGroupedFeedback(s,o):this.emitSingleFeedback(o[0])}emitGroupedFeedback(e,t){let s=t.map(o=>{let r=this.getSourceDescription(o.loserExtensionName,o.loserKind,o.loserMcpServerName);return`- ${this.capitalize(r)} '/${o.name}' was renamed to '/${o.renamedTo}'`}).join(`
137
140
  `);q.emitFeedback("info",`Conflicts detected for command '/${e}':
138
- ${s}`)}emitSingleFeedback(e){let t=this.getSourceDescription(e.loserExtensionName,e.loserKind,e.loserMcpServerName),s=this.getSourceDescription(e.winnerExtensionName,e.winnerKind,e.winnerMcpServerName);q.emitFeedback("info",`${this.capitalize(t)} '/${e.name}' was renamed to '/${e.renamedTo}' because it conflicts with ${s}.`)}capitalize(e){return e.charAt(0).toUpperCase()+e.slice(1)}getSourceDescription(e,t,s){switch(t){case"extension-file":return e?`extension '${e}' command`:"extension command";case"skill":return e?`extension '${e}' skill`:"skill command";case"mcp-prompt":return s?`MCP server '${s}' command`:"MCP server command";case"user-file":return"user command";case"workspace-file":return"workspace command";case"built-in":return"built-in command";default:return"existing command"}}};function xh(n){let e="ipv4first";return n===void 0?e:n==="ipv4first"||n==="verbatim"?n:(y.warn(`Invalid value for dnsResolutionOrder in settings: "${n}". Using default "${e}".`),e)}function Ch(n){let e=bh.totalmem()/1048576,t=yh.getHeapStatistics(),s=Math.floor(t.heap_size_limit/1024/1024),o=Math.floor(e*.5);return n&&y.debug(`Current heap size ${s.toFixed(2)} MB`),process.env.GEMINI_CLI_NO_RELAUNCH?[]:o>s?(n&&y.debug(`Need to relaunch with more memory: ${o.toFixed(2)} MB`),[`--max-old-space-size=${o}`]):[]}function Sh(){let n=!1;process.on("unhandledRejection",(e,t)=>{let s=`=========================================
141
+ ${s}`)}emitSingleFeedback(e){let t=this.getSourceDescription(e.loserExtensionName,e.loserKind,e.loserMcpServerName),s=this.getSourceDescription(e.winnerExtensionName,e.winnerKind,e.winnerMcpServerName);q.emitFeedback("info",`${this.capitalize(t)} '/${e.name}' was renamed to '/${e.renamedTo}' because it conflicts with ${s}.`)}capitalize(e){return e.charAt(0).toUpperCase()+e.slice(1)}getSourceDescription(e,t,s){switch(t){case"extension-file":return e?`extension '${e}' command`:"extension command";case"skill":return e?`extension '${e}' skill`:"skill command";case"mcp-prompt":return s?`MCP server '${s}' command`:"MCP server command";case"user-file":return"user command";case"workspace-file":return"workspace command";case"built-in":return"built-in command";default:return"existing command"}}};function Ah(n){let e="ipv4first";return n===void 0?e:n==="ipv4first"||n==="verbatim"?n:(y.warn(`Invalid value for dnsResolutionOrder in settings: "${n}". Using default "${e}".`),e)}function Oh(n){let e=_h.totalmem()/1048576,t=Sh.getHeapStatistics(),s=Math.floor(t.heap_size_limit/1024/1024),o=Math.floor(e*.5);return n&&y.debug(`Current heap size ${s.toFixed(2)} MB`),process.env.GEMINI_CLI_NO_RELAUNCH?[]:o>s?(n&&y.debug(`Need to relaunch with more memory: ${o.toFixed(2)} MB`),[`--max-old-space-size=${o}`]):[]}function Ih(){let n=!1;process.on("unhandledRejection",(e,t)=>{let s=`=========================================
139
142
  This is an unexpected error. Please file a bug report using the /bug tool.
140
143
  CRITICAL: Unhandled Promise Rejection!
141
144
  =========================================
142
145
  Reason: ${e}${e instanceof Error&&e.stack?`
143
146
  Stack trace:
144
- ${e.stack}`:""}`;y.error(s),n||(n=!0,Ja.emit("open-debug-console"))})}async function Eh(n,e,t,s=process.cwd(),o,r){let{startInteractiveUI:a}=await import("./interactiveCli-RHVVREXZ.js");await a(n,e,t,s,o,r)}async function nu(){let n=Xe.start("cli_startup"),e=_h();Mn(e.cleanup);let t=vr();Eo(()=>{ft(),t()}),Sh(),Ma();let s=new oo;s.start(),Mn(()=>s.stop());let o=Xe.start("load_settings"),r=te();o?.end();let a=Vc(r),l;if(a!==void 0){let v=Xe.start("setup_worktree");l=await md(a||void 0),v?.end()}let c=Xe.start("cleanup_ops");Promise.all([ka(),va(r.merged),tu()]).catch(v=>{y.error("Early cleanup failed:",v)}).finally(()=>{c?.end()});let p=Xe.start("parse_arguments"),d=Yc(r.merged).finally(()=>{p?.end()}),m=nd();r.errors.forEach(v=>{q.emitFeedback("warning",v.message)}),is().errors.forEach(v=>{q.emitFeedback("warning",`Error in ${v.path}: ${v.message}`)});let h=await d;(h.allowedTools&&h.allowedTools.length>0||r.merged.tools?.allowed&&r.merged.tools.allowed.length>0)&&q.emitFeedback("warning","Warning: --allowed-tools cli argument and tools.allowed in settings.json are deprecated and will be removed in 1.0: Migrate to Policy Engine: https://geminicli.com/docs/core/policy-engine/"),r.merged.tools?.exclude&&r.merged.tools.exclude.length>0&&q.emitFeedback("warning","Warning: tools.exclude in settings.json is deprecated and will be removed in 1.0. Migrate to Policy Engine: https://geminicli.com/docs/core/policy-engine/"),h.startupMessages&&h.startupMessages.forEach(v=>{q.emitFeedback("info",v)}),h.promptInteractive&&!process.stdin.isTTY&&(me(`Error: The --prompt-interactive flag cannot be used when input is piped from stdin.
145
- `),await de(),process.exit(Me.FATAL_INPUT_ERROR));let I=mi(h),E=new un({stderr:!0,interactive:!In(),debugMode:I,onNewMessage:v=>{q.emitConsoleLog(v.type,v.content)}});E.patch(),Mn(E.cleanup),wh.setDefaultResultOrder(xh(r.merged.advanced.dnsResolutionOrder)),(!r.merged.security.auth.selectedType||r.merged.security.auth.selectedType===Ke.LEGACY_CLOUD_SHELL)&&(process.env.CLOUD_SHELL==="true"||process.env.GEMINI_CLI_USE_COMPUTE_ADC==="true")&&r.setValue("User","security.auth.selectedType",Ke.COMPUTE_ADC);let x=await Zt(r.merged,Tn,h,{projectHooks:r.workspace.settings.hooks});e.setConfig(x);let k=!1;if(!r.merged.security.auth.useExternal&&!h.isCommand)try{if(x.isInteractive()&&r.merged.security.auth.selectedType){let v=cs(r.merged.security.auth.selectedType);if(v)throw new Error(v);await x.refreshAuth(r.merged.security.auth.selectedType)}else if(!x.isInteractive()){let v=await nr(r.merged.security.auth.selectedType,r.merged.security.auth.useExternal,x,r);await x.refreshAuth(v)}}catch(v){v instanceof jr&&(await de(),process.exit(Me.SUCCESS)),v instanceof Nr||(y.error("Error authenticating:",v),k=!0)}let M=x.getRemoteAdminSettings();if(M&&r.setRemoteAdminSettings(M),await cc(r.merged),!process.env.SANDBOX&&!h.isCommand){let v=r.merged.advanced.autoConfigureMemory?Ch(I):[],b=await Ns(r.merged,h);if(b){k&&(await de(),process.exit(Me.FATAL_AUTHENTICATION_ERROR));let P="";process.stdin.isTTY||(P=await fi());let Q=((H,K)=>{let N=[...H];if(K){let w=N.findIndex(_=>_==="--prompt"||_==="-p");w>-1&&N.length>w+1?N[w+1]=`${K}
147
+ ${e.stack}`:""}`;y.error(s),n||(n=!0,nl.emit("open-debug-console"))})}async function Th(n,e,t,s=process.cwd(),o,r){let{startInteractiveUI:a}=await import("./interactiveCli-FGI25PZI.js");await a(n,e,t,s,o,r)}async function au(){let n=Xe.start("cli_startup"),e=Mh();kn(e.cleanup);let t=Tr();Ao(()=>{ft(),t()}),Ih(),$a();let s=new ao;s.start(),kn(()=>s.stop());let o=Xe.start("load_settings"),r=te();o?.end();let a=Zc(r),l;if(a!==void 0){let v=Xe.start("setup_worktree");l=await bd(a||void 0),v?.end()}let c=Xe.start("cleanup_ops");Promise.all([La(),Ma(r.merged),ru()]).catch(v=>{y.error("Early cleanup failed:",v)}).finally(()=>{c?.end()});let m=Xe.start("parse_arguments"),d=Qc(r.merged).finally(()=>{m?.end()}),p=ad();r.errors.forEach(v=>{q.emitFeedback("warning",v.message)}),rs().errors.forEach(v=>{q.emitFeedback("warning",`Error in ${v.path}: ${v.message}`)});let h=await d;(h.allowedTools&&h.allowedTools.length>0||r.merged.tools?.allowed&&r.merged.tools.allowed.length>0)&&q.emitFeedback("warning","Warning: --allowed-tools cli argument and tools.allowed in settings.json are deprecated and will be removed in 1.0: Migrate to Policy Engine: https://geminicli.com/docs/core/policy-engine/"),r.merged.tools?.exclude&&r.merged.tools.exclude.length>0&&q.emitFeedback("warning","Warning: tools.exclude in settings.json is deprecated and will be removed in 1.0. Migrate to Policy Engine: https://geminicli.com/docs/core/policy-engine/"),h.startupMessages&&h.startupMessages.forEach(v=>{q.emitFeedback("info",v)}),h.promptInteractive&&!process.stdin.isTTY&&(pe(`Error: The --prompt-interactive flag cannot be used when input is piped from stdin.
148
+ `),await de(),process.exit(Me.FATAL_INPUT_ERROR));let I=gi(h),S=new mn({stderr:!0,interactive:!Tn(),debugMode:I,onNewMessage:v=>{q.emitConsoleLog(v.type,v.content)}});S.patch(),kn(S.cleanup),vh.setDefaultResultOrder(Ah(r.merged.advanced.dnsResolutionOrder)),(!r.merged.security.auth.selectedType||r.merged.security.auth.selectedType===Ke.LEGACY_CLOUD_SHELL)&&(process.env.CLOUD_SHELL==="true"||process.env.GEMINI_CLI_USE_COMPUTE_ADC==="true")&&r.setValue("User","security.auth.selectedType",Ke.COMPUTE_ADC);let x=await Qt(r.merged,Mn,h,{projectHooks:r.workspace.settings.hooks});e.setConfig(x);let k=!1;if(!r.merged.security.auth.useExternal&&!h.isCommand)try{if(x.isInteractive()&&r.merged.security.auth.selectedType){let v=ds(r.merged.security.auth.selectedType);if(v)throw new Error(v);await x.refreshAuth(r.merged.security.auth.selectedType)}else if(!x.isInteractive()){let v=await ir(r.merged.security.auth.selectedType,r.merged.security.auth.useExternal,x,r);await x.refreshAuth(v)}}catch(v){v instanceof Wr&&(await de(),process.exit(Me.SUCCESS)),v instanceof Fr||(y.error("Error authenticating:",v),k=!0)}let M=x.getRemoteAdminSettings();if(M&&r.setRemoteAdminSettings(M),await fc(r.merged),!process.env.SANDBOX&&!h.isCommand){let v=r.merged.advanced.autoConfigureMemory?Oh(I):[],b=await $s(r.merged,h);if(b){k&&(await de(),process.exit(Me.FATAL_AUTHENTICATION_ERROR));let P="";process.stdin.isTTY||(P=await yi());let Q=((H,K)=>{let N=[...H];if(K){let w=N.findIndex(_=>_==="--prompt"||_==="-p");w>-1&&N.length>w+1?N[w+1]=`${K}
146
149
 
147
- ${N[w+1]}`:N.push("--prompt",K)}return N})(process.argv,P);await sr(()=>td(b,v,x,Q)),await de(),process.exit(Me.SUCCESS)}else await Kd(v,[],M)}{let v=Xe.start("load_cli_config"),b=await Zt(r.merged,Tn,h,{projectHooks:r.workspace.settings.hooks,worktreeSettings:l});if(v?.end(),await b.storage.initialize(),e.setConfig(b),b.isInteractive()&&r.merged.general.devtools){let{setupInitialActivityLogger:se}=await import("./devtoolsService-NH25LG4W.js");await se(b)}Ta(b);let P=b.getPolicyEngine(),ee=b.getMessageBus();if($s(P,ee,b.storage),Mn(async()=>{await b.getHookSystem()?.fireSessionEndEvent(Vr.Exit)}),_a(b,r.merged).catch(se=>{y.error("Failed to cleanup expired sessions:",se)}),b.getListExtensions()){y.log("Installed extensions:");for(let se of b.getExtensions())y.log(`- ${se.name}`);await de(),process.exit(Me.SUCCESS)}if(b.getListSessions()){let se=r.merged.security.auth.selectedType;if(se)try{await b.refreshAuth(se)}catch(J){y.debug("Auth failed for --list-sessions, summaries may not be generated:",J)}await Jd(b),await de(),process.exit(Me.SUCCESS)}let Q=b.getDeleteSession();Q&&(await Zd(b,Q),await de(),process.exit(Me.SUCCESS));let H=process.stdin.isRaw;b.isInteractive()&&!H&&process.stdin.isTTY&&(process.stdin.setRawMode(!0),Eo(()=>{process.stdin.setRawMode(H)}));let K=Xe.start("setup_terminal");await Qd(b,r),K?.end();let N=Xe.start("initialize_app"),w=await tl(b,r);if(N?.end(),r.merged.security.auth.selectedType===Ke.LOGIN_WITH_GOOGLE&&b.isBrowserLaunchSuppressed()&&await Or(r.merged.security.auth.selectedType,b),b.getAcpMode())return Xd(b,r,h);let _=b.getQuestion(),T=Ar(sl(b),b.getScreenReader()),U=[...(await m).map(se=>({id:`startup-${gh("sha256").update(se).digest("hex").substring(0,16)}`,message:se,priority:ln.High})),...await sd(r.merged,void 0,{isAlternateBuffer:T})],ne;if(h.resume){let se=new jt(b);try{let J=await se.resolveSession(h.resume);ne={conversation:J.sessionData,filePath:J.sessionPath},b.setSessionId(ne.conversation.sessionId)}catch(J){J instanceof Ea&&J.code==="NO_SESSIONS_FOUND"?U.push({id:"resume-no-sessions",message:J.message,priority:ln.High}):(q.emitFeedback("error",`Error resuming session: ${J instanceof Error?J.message:"Unknown error"}`),await de(),process.exit(Me.FATAL_INPUT_ERROR))}}if(n?.end(),b.isInteractive()){process.stdin.isTTY&&process.stdin.resume(),await Eh(b,r,U,process.cwd(),ne,w);return}await b.initialize(),Xe.flush(b);let V;process.stdin.isTTY||(V=await fi(),V&&(_=_?`${V}
150
+ ${N[w+1]}`:N.push("--prompt",K)}return N})(process.argv,P);await rr(()=>rd(b,v,x,Q)),await de(),process.exit(Me.SUCCESS)}else await tu(v,[],M)}{let v=Xe.start("load_cli_config"),b=await Qt(r.merged,Mn,h,{projectHooks:r.workspace.settings.hooks,worktreeSettings:l});if(v?.end(),await b.storage.initialize(),e.setConfig(b),b.isInteractive()&&r.merged.general.devtools){let{setupInitialActivityLogger:se}=await import("./devtoolsService-LHW3U2EN.js");await se(b)}Na(b);let P=b.getPolicyEngine(),ee=b.getMessageBus();if(Ls(P,ee,b.storage),kn(async()=>{await b.getHookSystem()?.fireSessionEndEvent(Zr.Exit)}),Ta(b,r.merged).catch(se=>{y.error("Failed to cleanup expired sessions:",se)}),b.getListExtensions()){y.log("Installed extensions:");for(let se of b.getExtensions())y.log(`- ${se.name}`);await de(),process.exit(Me.SUCCESS)}if(b.getListSessions()){let se=r.merged.security.auth.selectedType;if(se)try{await b.refreshAuth(se)}catch(J){y.debug("Auth failed for --list-sessions, summaries may not be generated:",J)}await nu(b),await de(),process.exit(Me.SUCCESS)}let Q=b.getDeleteSession();Q&&(await su(b,Q),await de(),process.exit(Me.SUCCESS));let H=process.stdin.isRaw;b.isInteractive()&&!H&&process.stdin.isTTY&&(process.stdin.setRawMode(!0),Ao(()=>{process.stdin.setRawMode(H)}));let K=Xe.start("setup_terminal");await ou(b,r),K?.end();let N=Xe.start("initialize_app"),w=await rl(b,r);if(N?.end(),r.merged.security.auth.selectedType===Ke.LOGIN_WITH_GOOGLE&&b.isBrowserLaunchSuppressed()&&await kr(r.merged.security.auth.selectedType,b),b.getAcpMode())return eu(b,r,h);let _=b.getQuestion(),T=Mr(ll(b),b.getScreenReader()),U=[...(await p).map(se=>({id:`startup-${Eh("sha256").update(se).digest("hex").substring(0,16)}`,message:se,priority:cn.High})),...await ld(r.merged,void 0,{isAlternateBuffer:T})],ne;if(h.resume){let se=new Ft(b);try{let J=await se.resolveSession(h.resume);ne={conversation:J.sessionData,filePath:J.sessionPath},b.setSessionId(ne.conversation.sessionId)}catch(J){J instanceof Ia&&J.code==="NO_SESSIONS_FOUND"?U.push({id:"resume-no-sessions",message:J.message,priority:cn.High}):(q.emitFeedback("error",`Error resuming session: ${J instanceof Error?J.message:"Unknown error"}`),await de(),process.exit(Me.FATAL_INPUT_ERROR))}}if(n?.end(),b.isInteractive()){process.stdin.isTTY&&process.stdin.resume(),await Th(b,r,U,process.cwd(),ne,w);return}await b.initialize(),Xe.flush(b);let V;process.stdin.isTTY||(V=await yi(),V&&(_=_?`${V}
148
151
 
149
- ${_}`:V));let ce=ne?yo.Resume:yo.Startup,$e=b?.getHookSystem();if($e){let se=await $e.fireSessionStartEvent(ce);if(se){se.systemMessage&&me(se.systemMessage+`
152
+ ${_}`:V));let ce=ne?xo.Resume:xo.Startup,$e=b?.getHookSystem();if($e){let se=await $e.fireSessionStartEvent(ce);if(se){se.systemMessage&&pe(se.systemMessage+`
150
153
  `);let J=se.getAdditionalContext();if(J){let L=`<hook_context>${J}</hook_context>`;_=_?`${L}
151
154
 
152
- ${_}`:L}}}_||(y.error("No input provided via stdin. Input can be provided by piping data into gemini or using the --prompt option."),await de(),process.exit(Me.FATAL_INPUT_ERROR));let ie=Tn;Pr(b,new _r(_.length,ie,b.getContentGeneratorConfig()?.authType,_));let Te=await nr(r.merged.security.auth.selectedType,r.merged.security.auth.useExternal,b,r);await b.refreshAuth(Te),b.getDebugMode()&&y.log("Session ID: %s",Tn),ft(),await pd({config:b,settings:r,input:_,prompt_id:ie,resumedSessionData:ne}),await de(),process.exit(Me.SUCCESS)}}function ft(){q.listenerCount(Ve.Output)===0&&(q.on(Ve.Output,n=>{n.isStderr?me(n.chunk,n.encoding):bt(n.chunk,n.encoding)}),q.listenerCount(Ve.ConsoleLog)===0&&q.on(Ve.ConsoleLog,n=>{n.type==="error"||n.type==="warn"?me(n.content):bt(n.content)}),q.listenerCount(Ve.UserFeedback)===0&&q.on(Ve.UserFeedback,n=>{n.severity==="error"||n.severity==="warning"?me(n.message):bt(n.message)})),q.drainBacklogs()}function _h(){let n,e,t=s=>{let o=s;o?.type==="admin-settings"&&o.settings&&(e?e.setRemoteAdminSettings(o.settings):n=o.settings)};return process.on("message",t),{setConfig:s=>{e=s,n&&e.setRemoteAdminSettings(n)},cleanup:()=>{process.off("message",t)}}}process.on("uncaughtException",n=>{process.platform==="win32"&&n instanceof Error&&n.message==="Cannot resize a pty that has already exited"||(n instanceof Error?me(n.stack+`
153
- `):me(String(n)+`
154
- `),process.exit(1))});nu().catch(async n=>{let e=setTimeout(()=>{me(`Cleanup timed out, forcing exit...
155
- `),process.exit(1)},5e3);try{await de()}catch(t){me(`Error during final cleanup: ${t instanceof Error?t.message:String(t)}
156
- `)}finally{clearTimeout(e)}if(n instanceof br){let t=n.message;process.env.NO_COLOR||(t=`\x1B[31m${t}\x1B[0m`),me(t+`
157
- `),process.exit(n.exitCode)}me("An unexpected critical error occurred:"),n instanceof Error?me(n.stack+`
158
- `):me(String(n)+`
155
+ ${_}`:L}}}_||(y.error("No input provided via stdin. Input can be provided by piping data into gemini or using the --prompt option."),await de(),process.exit(Me.FATAL_INPUT_ERROR));let ie=Mn;Lr(b,new Ir(_.length,ie,b.getContentGeneratorConfig()?.authType,_));let Te=await ir(r.merged.security.auth.selectedType,r.merged.security.auth.useExternal,b,r);await b.refreshAuth(Te),b.getDebugMode()&&y.log("Session ID: %s",Mn),ft(),await yd({config:b,settings:r,input:_,prompt_id:ie,resumedSessionData:ne}),await de(),process.exit(Me.SUCCESS)}}function ft(){q.listenerCount(Ve.Output)===0&&(q.on(Ve.Output,n=>{n.isStderr?pe(n.chunk,n.encoding):bt(n.chunk,n.encoding)}),q.listenerCount(Ve.ConsoleLog)===0&&q.on(Ve.ConsoleLog,n=>{n.type==="error"||n.type==="warn"?pe(n.content):bt(n.content)}),q.listenerCount(Ve.UserFeedback)===0&&q.on(Ve.UserFeedback,n=>{n.severity==="error"||n.severity==="warning"?pe(n.message):bt(n.message)})),q.drainBacklogs()}function Mh(){let n,e,t=s=>{let o=s;o?.type==="admin-settings"&&o.settings&&(e?e.setRemoteAdminSettings(o.settings):n=o.settings)};return process.on("message",t),{setConfig:s=>{e=s,n&&e.setRemoteAdminSettings(n)},cleanup:()=>{process.off("message",t)}}}process.on("uncaughtException",n=>{process.platform==="win32"&&n instanceof Error&&n.message==="Cannot resize a pty that has already exited"||(n instanceof Error?pe(n.stack+`
156
+ `):pe(String(n)+`
157
+ `),process.exit(1))});au().catch(async n=>{let e=setTimeout(()=>{pe(`Cleanup timed out, forcing exit...
158
+ `),process.exit(1)},5e3);try{await de()}catch(t){pe(`Error during final cleanup: ${t instanceof Error?t.message:String(t)}
159
+ `)}finally{clearTimeout(e)}if(n instanceof Cr){let t=n.message;process.env.NO_COLOR||(t=`\x1B[31m${t}\x1B[0m`),pe(t+`
160
+ `),process.exit(n.exitCode)}pe("An unexpected critical error occurred:"),n instanceof Error?pe(n.stack+`
161
+ `):pe(String(n)+`
159
162
  `),process.exit(1)});
160
163
  /**
161
164
  * @license