makecoder 4.0.57 → 4.0.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cc.mjs +2 -2
- package/dist/coder.js +40 -40
- package/dist/darwin-arm64/cc.js +2 -2
- package/dist/darwin-x64/cc.js +2 -2
- package/dist/gemini/{chunk-P6AAZN7C.js → chunk-266SNVZB.js} +1 -1
- package/dist/gemini/{chunk-C7WYZFGG.js → chunk-2AH4XFVC.js} +2 -2
- package/dist/gemini/{chunk-YHLOYN7E.js → chunk-2BCRFXVD.js} +1 -1
- package/dist/gemini/{chunk-GMCQZQGQ.js → chunk-2I73JSEP.js} +3 -3
- package/dist/gemini/{chunk-VVPG7N67.js → chunk-3AZIBTSH.js} +1 -1
- package/dist/gemini/{chunk-UC3K4MCZ.js → chunk-7U34TXLX.js} +1 -1
- package/dist/gemini/{chunk-LA23QQDZ.js → chunk-C7ISM6PN.js} +1 -1
- package/dist/gemini/{chunk-QQRA4YFW.js → chunk-FJ6IIWF5.js} +1 -1
- package/dist/gemini/{chunk-QCMDS3PD.js → chunk-JKCNEXJF.js} +3 -3
- package/dist/gemini/{chunk-JNCEWGIV.js → chunk-JX43KPLT.js} +1 -1
- package/dist/gemini/{chunk-RKJKHDZC.js → chunk-P6YMHMJL.js} +1 -1
- package/dist/gemini/{chunk-HCTUJMZR.js → chunk-PZSSXHHP.js} +1 -1
- package/dist/gemini/{chunk-YG6QM4WI.js → chunk-QTFKUXKM.js} +1 -1
- package/dist/gemini/{chunk-MUVQ2FAZ.js → chunk-QYJUTNIU.js} +1 -1
- package/dist/gemini/{chunk-ZJ2D6ILW.js → chunk-STX7FBUU.js} +1 -1
- package/dist/gemini/{chunk-NJ4BSMX7.js → chunk-YJXXYFOM.js} +2 -2
- package/dist/gemini/{cleanup-S2LRI2Y4.js → cleanup-HVASUFMM.js} +1 -1
- package/dist/gemini/{cleanup-ZZNAJRKJ.js → cleanup-MJ7HQT46.js} +1 -1
- package/dist/gemini/{core-C22BYMS6.js → core-EOYLD74V.js} +1 -1
- package/dist/gemini/{devtoolsService-EGQAB3JU.js → devtoolsService-B7SSRNHW.js} +2 -2
- package/dist/gemini/{devtoolsService-YXEESS76.js → devtoolsService-FLOV3S5Z.js} +2 -2
- package/dist/gemini/{dist-X3AUJEIX.js → dist-NVGK4PVU.js} +1 -1
- package/dist/gemini/{gemini-X6HMGNFO.js → gemini-2Z2AJTYC.js} +5 -5
- package/dist/gemini/{gemini-ENBHDO7W.js → gemini-DRGPGRHF.js} +5 -5
- package/dist/gemini/gemini.js +2 -2
- package/dist/gemini/{interactiveCli-SZJWTGR5.js → interactiveCli-4K2UKYKF.js} +3 -3
- package/dist/gemini/{interactiveCli-CI6V7WL5.js → interactiveCli-TAIO5CBT.js} +9 -9
- package/dist/gemini/{liteRtServerManager-J7BSXFBK.js → liteRtServerManager-TUTNSHFW.js} +1 -1
- package/dist/gemini/{liteRtServerManager-BDF74U3A.js → liteRtServerManager-XJXZSOE7.js} +1 -1
- package/dist/gemini/{oauth2-provider-P65NTFUD.js → oauth2-provider-NEH5B4N6.js} +1 -1
- package/dist/gemini/{oauth2-provider-3MTIBHLN.js → oauth2-provider-QU5NILIP.js} +1 -1
- package/dist/gemini/{start-DYZJFE46.js → start-SOY6W5ZY.js} +1 -1
- package/dist/gemini/{start-KAI6HBJ2.js → start-TUGBMFO3.js} +1 -1
- package/dist/linux-x64/cc.js +2 -2
- package/dist/win32-x64/cc.js +2 -2
- package/package.json +5 -5
- package/packages/mcp-channel/wecom/package-lock.json +1313 -0
- package/scripts/postinstall.js +12 -12
- /package/{claude → packages}/mcp-channel/wecom/.mcp.json +0 -0
- /package/{claude → packages}/mcp-channel/wecom/package.json +0 -0
- /package/{claude → packages}/mcp-channel/wecom/server.js +0 -0
|
@@ -1088,7 +1088,7 @@ Please try running again with NO_BROWSER=true set.`}),new Aa(`Failed to open bro
|
|
|
1088
1088
|
`);let s,c=await new Promise((u,d)=>{let l=y3r.createInterface({input:process.stdin,output:lV().stdout,terminal:!0}),a=new AbortController;s=setTimeout(()=>{a.abort(new Aa("Authorization timed out after 5 minutes."))},3e5),s.unref();let p=()=>{l.close(),d(a.signal.reason)};a.signal.addEventListener("abort",p,{once:!0}),l.question("Enter the authorization code: ",f=>{a.signal.removeEventListener("abort",p),l.close(),u(f.trim())})}).finally(()=>{s&&clearTimeout(s)});if(!c)return MS(`Authorization code is required.
|
|
1089
1089
|
`),B.error("Authorization code is required."),!1;try{let{tokens:u}=await t.getToken({code:c,codeVerifier:r.codeVerifier,redirect_uri:e});t.setCredentials(u)}catch(u){return MS("Failed to authenticate with authorization code:"+be(u)+`
|
|
1090
1090
|
`),B.error("Failed to authenticate with authorization code:",be(u)),!1}return!0}catch(e){if(e instanceof sS)throw e;return MS("Failed to authenticate with user code:"+be(e)+`
|
|
1091
|
-
`),B.error("Failed to authenticate with user code:",be(e)),!1}}async function _3r(t){let e=await b3r(),r=process.env.OAUTH_CALLBACK_HOST||"127.0.0.1",n=`http://127.0.0.1:${e}/oauth2callback`,o=opt.randomBytes(32).toString("hex"),s=t.generateAuthUrl({redirect_uri:n,access_type:"offline",scope:vEe,state:o}),c=new Promise((u,d)=>{let l=ipt.createServer(async(a,p)=>{try{if(a.url.indexOf("/oauth2callback")===-1){p.writeHead(dV,{Location:EEe}),p.end(),d(new Aa("OAuth callback not received. Unexpected request: "+a.url));return}let f=new h3r.URL(a.url,"http://127.0.0.1:3000").searchParams;if(f.get("error")){p.writeHead(dV,{Location:EEe}),p.end();let g=f.get("error"),y=f.get("error_description")||"No additional details provided";d(new Aa(`Google OAuth error: ${g}. ${y}`))}else if(f.get("state")!==o)p.end("State mismatch. Possible CSRF attack"),d(new Aa("OAuth state mismatch. Possible CSRF attack or browser session issue."));else if(f.get("code"))try{let{tokens:g}=await t.getToken({code:f.get("code"),redirect_uri:n});t.setCredentials(g);try{await pV(t)}catch(y){B.warn("Failed to retrieve Google Account ID during authentication:",be(y))}p.writeHead(dV,{Location:A3r}),p.end(),u()}catch(g){p.writeHead(dV,{Location:EEe}),p.end(),d(new Aa(`Failed to exchange authorization code for tokens: ${be(g)}`))}else d(new Aa("No authorization code received from Google OAuth. Please try authenticating again."))}catch(f){f instanceof Aa?d(f):d(new Aa(`Unexpected error during OAuth authentication: ${be(f)}`))}finally{l.close()}});l.listen(e,r,()=>{}),l.on("error",a=>{d(new Aa(`OAuth callback server error: ${be(a)}`))})});return{authUrl:s,loginCompletePromise:c}}function b3r(){return new Promise((t,e)=>{let r=0;try{let n=process.env.OAUTH_CALLBACK_PORT;if(n)return r=parseInt(n,10),isNaN(r)||r<=0||r>65535?e(new Error(`Invalid value for OAUTH_CALLBACK_PORT: "${n}"`)):t(r);let o=spt.createServer();o.listen(0,()=>{let s=o.address();s&&typeof s=="object"&&(r=s.port)}),o.on("listening",()=>{o.close(),o.unref()}),o.on("error",s=>e(s)),o.on("close",()=>t(r))}catch(n){e(n)}})}async function S3r(){if(_Ee())return Xx.loadCredentials();let e=[Ut.getOAuthCredsPath(),process.env.GOOGLE_APPLICATION_CREDENTIALS].filter(r=>!!r);for(let r of e)try{let n=await YL.readFile(r,"utf-8");return JSON.parse(n)}catch(n){B.debug(`Failed to load credentials from ${r}:`,be(n))}return null}function T3r(){JL.clear()}async function sLi(){try{_Ee()?await Xx.clearCredentials():await YL.rm(Ut.getOAuthCredsPath(),{force:!0}),await hV.clearCachedGoogleAccount(),T3r()}catch(t){B.warn("Failed to clear cached credentials:",t)}}async function pV(t){try{let{token:e}=await t.getAccessToken();if(!e)return;let r=await fetch("https://www.googleapis.com/oauth2/v2/userinfo",{headers:{Authorization:`Bearer ${e}`}});if(!r.ok){B.log("Failed to fetch user info:",r.status,r.statusText);return}let n=await r.json();await hV.cacheGoogleAccount(n.email)}catch(e){B.log("Error retrieving user info:",e)}}function aLi(){JL.clear()}async function C3r(t){let e=Ut.getOAuthCredsPath();await YL.mkdir(m3r.dirname(e),{recursive:!0});let r=JSON.stringify(t,null,2);await YL.writeFile(e,r,{mode:384});try{await YL.chmod(e,384)}catch{}}var upt=(l=>(l.DASHER_USER="DASHER_USER",l.INELIGIBLE_ACCOUNT="INELIGIBLE_ACCOUNT",l.NON_USER_ACCOUNT="NON_USER_ACCOUNT",l.RESTRICTED_AGE="RESTRICTED_AGE",l.RESTRICTED_NETWORK="RESTRICTED_NETWORK",l.UNKNOWN="UNKNOWN",l.UNKNOWN_LOCATION="UNKNOWN_LOCATION",l.UNSUPPORTED_LOCATION="UNSUPPORTED_LOCATION",l.VALIDATION_REQUIRED="VALIDATION_REQUIRED",l))(upt||{}),oy={FREE:"free-tier",LEGACY:"legacy-tier",STANDARD:"standard-tier"},w3r=(o=>(o.Default="DEFAULT",o.Notice="NOTICE",o.Warning="WARNING",o.Error="ERROR",o))(w3r||{}),dpt=(a=>(a[a.UNKNOWN=0]="UNKNOWN",a[a.THUMBSUP=1]="THUMBSUP",a[a.THUMBSDOWN=2]="THUMBSDOWN",a[a.COPY=3]="COPY",a[a.INSERT=4]="INSERT",a[a.ACCEPT_CODE_BLOCK=5]="ACCEPT_CODE_BLOCK",a[a.ACCEPT_ALL=6]="ACCEPT_ALL",a[a.ACCEPT_FILE=7]="ACCEPT_FILE",a[a.DIFF=8]="DIFF",a[a.ACCEPT_RANGE=9]="ACCEPT_RANGE",a))(dpt||{}),ppt=(s=>(s[s.ACTION_STATUS_UNSPECIFIED=0]="ACTION_STATUS_UNSPECIFIED",s[s.ACTION_STATUS_NO_ERROR=1]="ACTION_STATUS_NO_ERROR",s[s.ACTION_STATUS_ERROR_UNKNOWN=2]="ACTION_STATUS_ERROR_UNKNOWN",s[s.ACTION_STATUS_CANCELLED=3]="ACTION_STATUS_CANCELLED",s[s.ACTION_STATUS_EMPTY=4]="ACTION_STATUS_EMPTY",s))(ppt||{}),fpt=(o=>(o[o.INITIATION_METHOD_UNSPECIFIED=0]="INITIATION_METHOD_UNSPECIFIED",o[o.TAB=1]="TAB",o[o.COMMAND=2]="COMMAND",o[o.AGENT=3]="AGENT",o))(fpt||{}),x3r=Y.object({extensionsEnabled:Y.boolean().optional()}),hpt=Y.object({extensionsSetting:x3r.optional(),unmanagedCapabilitiesEnabled:Y.boolean().optional()}),O3r=Y.object({url:Y.string().optional(),type:Y.enum(["sse","http"]).optional(),trust:Y.boolean().optional(),includeTools:Y.array(Y.string()).optional(),excludeTools:Y.array(Y.string()).optional()}),I3r=Y.object({scopes:Y.array(Y.string()).optional(),clientId:Y.string().optional(),clientSecret:Y.string().optional()}),gpt=Y.object({url:Y.string(),type:Y.enum(["sse","http"]),authProviderType:Y.nativeEnum(KL).optional(),oauth:I3r.optional(),targetAudience:Y.string().optional(),targetServiceAccount:Y.string().optional(),headers:Y.record(Y.string()).optional(),trust:Y.boolean().optional(),timeout:Y.number().optional(),description:Y.string().optional(),includeTools:Y.array(Y.string()).optional(),excludeTools:Y.array(Y.string()).optional()}),bEe=Y.object({mcpServers:Y.record(O3r).optional(),requiredMcpServers:Y.record(gpt).optional()}),R3r=Y.object({mcpEnabled:Y.boolean().optional(),mcpConfigJson:Y.string().optional()}),dLi=Y.object({strictModeDisabled:Y.boolean().optional(),mcpSetting:Y.object({mcpEnabled:Y.boolean().optional(),mcpConfig:bEe.optional(),requiredMcpConfig:Y.record(gpt).optional()}).optional(),cliFeatureSetting:hpt.optional()}),mpt=Y.object({secureModeEnabled:Y.boolean().optional(),strictModeDisabled:Y.boolean().optional(),mcpSetting:R3r.optional(),cliFeatureSetting:hpt.optional(),adminControlsApplicable:Y.boolean().optional()});import*as kWt from"node:readline";import{Readable as Qqn}from"node:stream";var BS="GOOGLE_ONE_AI",P3r=new Set([Xf,Qw,Bs]);function ypt(t){return P3r.has(t)}var k3r="https://one.google.com/ai",N3r="https://accounts.google.com/AccountChooser",D3r="gemini_cli",L3r="web";function M3r(t,e){let r=new URLSearchParams({Email:t,continue:e});return`${N3r}?${r.toString()}`}var hLi={MANAGE_ACTIVITY:"hydrogen_cli_settings_ai_credits_activity_page",MANAGE_ADD_CREDITS:"hydrogen_cli_settings_add_credits",EMPTY_WALLET_ADD_CREDITS:"hydrogen_cli_insufficient_credits_add_credits"};function gLi(t,e,r){let n=`${k3r}/${t}`,o=new URLSearchParams({utm_source:D3r,utm_medium:L3r,utm_campaign:r}),s=`${n}?${o.toString()}`;return M3r(e,s)}function Apt(t){if(!t?.availableCredits)return null;let e=t.availableCredits.filter(r=>r.creditType===BS);return e.length===0?null:e.reduce((r,n)=>{let o=parseInt(n.creditAmount??"0",10);return r+(isNaN(o)?0:o)},0)}var SEe=50;function Ept(t,e){return t==="always"&&e!=null&&e>=SEe}function mLi(t,e){return t==="ask"&&e!=null&&e>=SEe}function yLi(t,e){return t!=="never"&&e!=null&&e<SEe}var Qt=Me(Eh(),1);Be();var K3t=Me(WTe(),1),X3t=Me(JTe(),1),Z3t=Me(rCe(),1),eMt=Me(iCe(),1),tMt=Me(sCe(),1),rMt=Me(SM(),1);Pp();var nMt=Me(KCt(),1);il();var iMt=Me(vy(),1),zte=Me(YY(),1),Wte=Me(vY(),1),o_=Me(zp(),1),oMt=Me(vwt(),1);var _Ot=Me(yOt(),1),bOt=Me(vJe(),1);import{createHash as _sn}from"node:crypto";import*as sI from"node:os";var AOt="2380563",EOt="0.43.0";var kr={devin:{name:"devin",displayName:"Devin"},replit:{name:"replit",displayName:"Replit"},cursor:{name:"cursor",displayName:"Cursor"},cloudshell:{name:"cloudshell",displayName:"Cloud Shell"},codespaces:{name:"codespaces",displayName:"GitHub Codespaces"},firebasestudio:{name:"firebasestudio",displayName:"Firebase Studio"},trae:{name:"trae",displayName:"Trae"},vscode:{name:"vscode",displayName:"VS Code"},vscodefork:{name:"vscodefork",displayName:"IDE"},positron:{name:"positron",displayName:"Positron"},antigravity:{name:"antigravity",displayName:"Antigravity"},sublimetext:{name:"sublimetext",displayName:"Sublime Text"},jetbrains:{name:"jetbrains",displayName:"JetBrains IDE"},intellijidea:{name:"intellijidea",displayName:"IntelliJ IDEA"},webstorm:{name:"webstorm",displayName:"WebStorm"},pycharm:{name:"pycharm",displayName:"PyCharm"},goland:{name:"goland",displayName:"GoLand"},androidstudio:{name:"androidstudio",displayName:"Android Studio"},clion:{name:"clion",displayName:"CLion"},rustrover:{name:"rustrover",displayName:"RustRover"},datagrip:{name:"datagrip",displayName:"DataGrip"},phpstorm:{name:"phpstorm",displayName:"PhpStorm"},zed:{name:"zed",displayName:"Zed"},xcode:{name:"xcode",displayName:"XCode"}};function iI(){return!!(process.env.EDITOR_IN_CLOUD_SHELL||process.env.CLOUD_SHELL)}function F2e(){return!!process.env.TERMINAL_EMULATOR?.toLowerCase().includes("jetbrains")}function oI(){return process.env.ANTIGRAVITY_CLI_ALIAS?kr.antigravity:process.env.__COG_BASHRC_SOURCED?kr.devin:process.env.REPLIT_USER?kr.replit:process.env.CURSOR_TRACE_ID?kr.cursor:process.env.CODESPACES?kr.codespaces:iI()?kr.cloudshell:process.env.TERM_PRODUCT==="Trae"?kr.trae:process.env.MONOSPACE_ENV?kr.firebasestudio:process.env.POSITRON==="1"?kr.positron:process.env.TERM_PROGRAM==="sublime"?kr.sublimetext:process.env.ZED_SESSION_ID||process.env.TERM_PROGRAM==="Zed"?kr.zed:process.env.XCODE_VERSION_ACTUAL?kr.xcode:F2e()?kr.jetbrains:kr.vscode}function Asn(t,e){return t.name!==kr.vscode.name?t:!e.command||e.command.toLowerCase().includes("code")?kr.vscode:kr.vscodefork}function Esn(t,e){if(t.name!==kr.jetbrains.name||!e.command)return t;let r=e.command.toLowerCase(),n=[["idea",kr.intellijidea],["webstorm",kr.webstorm],["pycharm",kr.pycharm],["goland",kr.goland],["studio",kr.androidstudio],["clion",kr.clion],["rustrover",kr.rustrover],["datagrip",kr.datagrip],["phpstorm",kr.phpstorm]];for(let[o,s]of n)if(r.includes(o))return s;return t}function vOt(t,e){if(e?.name&&e.displayName)return{name:e.name,displayName:e.displayName};if(process.env.TERM_PROGRAM!=="vscode"&&process.env.TERM_PROGRAM!=="sublime"&&process.env.TERM_PROGRAM!=="Zed"&&!process.env.ZED_SESSION_ID&&!process.env.XCODE_VERSION_ACTUAL&&!F2e())return;let r=oI();return F2e()?Esn(r,t):Asn(r,t)}function bsn(){return process.env.SURFACE?process.env.SURFACE:iI()?kr.cloudshell.name:process.env.GITHUB_SHA?"GitHub":process.env.TERM_PROGRAM==="vscode"?oI().name||kr.vscode.name:"SURFACE_NOT_SET"}function Ssn(){return process.env.GH_WORKFLOW_NAME}function Tsn(){return process.env.GITHUB_REPOSITORY}function Csn(){return process.env.GITHUB_EVENT_NAME}function wsn(){return process.env.GH_PR_NUMBER}function xsn(){return process.env.GH_ISSUE_NUMBER}function Osn(){return process.env.GH_CUSTOM_TRACKING_ID}var Isn="https://play.googleapis.com/log?format=json&hasfast=true",Rsn=1e3*60,NX=1e3,DX=100,SOt="NA",Y6;async function Psn(){try{let t=await _Ot.default.graphics();t.controllers&&t.controllers.length>0?Y6=t.controllers.map(e=>e.model).join(", "):Y6=SOt}catch(t){Y6="FAILED",B.error("Failed to get GPU information for telemetry",be(t))}}async function ksn(){return Y6||await Psn(),Y6??SOt}var gt=class t{static instance;config;sessionData=[];promptId="";installationManager;userAccountManager;hashedGHRepositoryName;events;lastFlushTime=Date.now();flushing=!1;pendingFlush=!1;constructor(e){this.config=e,this.events=new gme.default(Array,NX),this.promptId=e?.getSessionId()??"",this.installationManager=new jA,this.userAccountManager=new FA;let r=Tsn();r&&(this.hashedGHRepositoryName=_sn("sha256").update(r).digest("hex"))}static getInstance(e){if(!(e===void 0||!e?.getUsageStatisticsEnabled()))return t.instance||(t.instance=new t(e)),t.instance}static clearInstance(){t.instance=void 0}enqueueHelper(e,r){let n=this.events.size>=NX;n&&this.events.shift();let o={event_time_ms:Date.now(),source_extension_json:_r(e)};r!==void 0&&(o.exp={gws_experiment:r}),this.events.push([o]),n&&this.config?.getDebugMode()&&B.debug(`ClearcutLogger: Dropped old event to prevent memory leak (queue size: ${this.events.size})`)}enqueueLogEvent(e){try{this.enqueueHelper(e)}catch(r){this.config?.getDebugMode()&&B.warn("ClearcutLogger: Failed to enqueue log event.",r)}}async enqueueLogEventAfterExperimentsLoadAsync(e){try{this.config?.getExperimentsAsync().then(r=>{if(r){let n=[{gemini_cli_key:131,value:r.experimentIds.toString()??"NA"}];e.event_metadata=[[...e.event_metadata[0],...n]]}this.enqueueHelper(e,r?.experimentIds)})}catch(r){B.warn("ClearcutLogger: Failed to enqueue log event.",r)}}createBasicLogEvent(e,r=[]){let n=this.userAccountManager.getCachedGoogleAccount(),o=bsn(),s=Ssn(),c=Csn(),u=wsn(),d=xsn(),l=Osn(),a=[...r,{gemini_cli_key:39,value:o},{gemini_cli_key:54,value:EOt},{gemini_cli_key:55,value:AOt},{gemini_cli_key:82,value:process.platform}];s&&a.push({gemini_cli_key:130,value:s}),this.hashedGHRepositoryName&&a.push({gemini_cli_key:132,value:this.hashedGHRepositoryName}),c&&a.push({gemini_cli_key:176,value:c}),u&&a.push({gemini_cli_key:177,value:u}),d&&a.push({gemini_cli_key:178,value:d}),l&&a.push({gemini_cli_key:179,value:l});let p={console_type:"GEMINI_CLI",application:102,event_name:e,event_metadata:[a]};return n?p.client_email=n:p.client_install_id=this.installationManager.getInstallationId(),p}createLogEvent(e,r=[]){e!=="start_session"&&r.push(...this.sessionData);let n=this.userAccountManager.getLifetimeGoogleAccounts();return r=this.addDefaultFields(r,n),this.createBasicLogEvent(e,r)}flushIfNeeded(){Date.now()-this.lastFlushTime<Rsn||this.flushToClearcut().catch(e=>{B.debug("Error flushing to Clearcut:",e)})}async flushToClearcut(){if(this.flushing)return this.config?.getDebugMode()&&B.debug("ClearcutLogger: Flush already in progress, marking pending flush."),this.pendingFlush=!0,Promise.resolve({});this.flushing=!0,this.config?.getDebugMode()&&B.log("Flushing log events to Clearcut.");let e=this.events.toArray();this.events.clear();let r=[{log_source_name:"CONCORD",request_time_ms:Date.now(),log_event:e}],n={};try{let o=await fetch(Isn,{method:"POST",body:_r(r),headers:{"Content-Type":"application/json"}}),s=await o.text();if(o.status>=200&&o.status<300){this.lastFlushTime=Date.now();let c=Number(JSON.parse(s)[0]);n={...n,nextRequestWaitMs:c}}else this.config?.getDebugMode()&&B.warn(`Error flushing log events: HTTP ${o.status}: ${o.statusText}`),this.requeueFailedEvents(e)}catch(o){this.config?.getDebugMode()&&B.warn("Error flushing log events:",o),this.requeueFailedEvents(e)}return this.flushing=!1,this.pendingFlush&&(this.pendingFlush=!1,this.flushToClearcut().catch(o=>{this.config?.getDebugMode()&&B.debug("Error in pending flush to Clearcut:",o)})),n}async logStartSessionEvent(e){let r=[{gemini_cli_key:1,value:e.model},{gemini_cli_key:2,value:e.embedding_model},{gemini_cli_key:3,value:e.sandbox_enabled.toString()},{gemini_cli_key:4,value:e.core_tools_enabled},{gemini_cli_key:5,value:e.approval_mode},{gemini_cli_key:6,value:e.api_key_enabled.toString()},{gemini_cli_key:7,value:e.vertex_ai_enabled.toString()},{gemini_cli_key:8,value:e.debug_enabled.toString()},{gemini_cli_key:7,value:e.vertex_ai_enabled.toString()},{gemini_cli_key:9,value:e.mcp_servers},{gemini_cli_key:7,value:e.vertex_ai_enabled.toString()},{gemini_cli_key:10,value:e.telemetry_enabled.toString()},{gemini_cli_key:11,value:e.telemetry_log_user_prompts_enabled.toString()},{gemini_cli_key:63,value:e.mcp_servers_count?e.mcp_servers_count.toString():""},{gemini_cli_key:64,value:e.mcp_tools_count?.toString()??""},{gemini_cli_key:65,value:e.mcp_tools?e.mcp_tools:""},{gemini_cli_key:119,value:e.extensions_count.toString()},{gemini_cli_key:120,value:e.extension_ids.toString()},{gemini_cli_key:191,value:e.worktree_active.toString()}],n=sI.cpus();n&&n.length>0&&r.push({gemini_cli_key:137,value:n[0].model}),r.push({gemini_cli_key:138,value:sI.availableParallelism().toString()},{gemini_cli_key:140,value:(sI.totalmem()/1024**3).toFixed(2).toString()});let o=await ksn();r.push({gemini_cli_key:139,value:o}),this.sessionData=r,this.enqueueLogEventAfterExperimentsLoadAsync(this.createLogEvent("start_session",r)).then(()=>{this.flushToClearcut().catch(s=>{B.debug("Error flushing to Clearcut:",s)})})}logNewPromptEvent(e){this.promptId=e.prompt_id;let r=[{gemini_cli_key:13,value:JSON.stringify(e.prompt_length)}];this.enqueueLogEvent(this.createLogEvent("new_prompt",r)),this.flushIfNeeded()}logToolCallEvent(e){let r=[{gemini_cli_key:14,value:JSON.stringify(e.function_name)},{gemini_cli_key:15,value:JSON.stringify(e.decision)},{gemini_cli_key:16,value:JSON.stringify(e.success)},{gemini_cli_key:17,value:JSON.stringify(e.duration_ms)},{gemini_cli_key:19,value:JSON.stringify(e.error_type)},{gemini_cli_key:62,value:JSON.stringify(e.tool_type)},{gemini_cli_key:93,value:JSON.stringify(e.content_length)},{gemini_cli_key:95,value:JSON.stringify(e.mcp_server_name)}];if(e.metadata){let o={model_added_lines:47,model_removed_lines:48,model_added_chars:103,model_removed_chars:104,user_added_lines:49,user_removed_lines:50,user_added_chars:105,user_removed_chars:106};if(e.function_name===rs&&e.metadata.ask_user){let s=e.metadata.ask_user,c={question_types:152,dismissed:153,empty_submission:154,answer_count:155};for(let[u,d]of Object.entries(c))s[u]!==void 0&&r.push({gemini_cli_key:d,value:JSON.stringify(s[u])})}for(let[s,c]of Object.entries(o))e.metadata[s]!==void 0&&r.push({gemini_cli_key:c,value:JSON.stringify(e.metadata[s])})}e.extension_id&&r.push({gemini_cli_key:121,value:e.extension_id});let n=this.createLogEvent("tool_call",r);this.enqueueLogEvent(n),this.flushIfNeeded()}logFileOperationEvent(e){let r=[{gemini_cli_key:14,value:JSON.stringify(e.tool_name)},{gemini_cli_key:57,value:JSON.stringify(e.operation)},{gemini_cli_key:72,value:JSON.stringify(e.lines)},{gemini_cli_key:73,value:JSON.stringify(e.mimetype)},{gemini_cli_key:74,value:JSON.stringify(e.extension)}];e.programming_language&&r.push({gemini_cli_key:56,value:e.programming_language});let n=this.createLogEvent("file_operation",r);this.enqueueLogEvent(n),this.flushIfNeeded()}logApiRequestEvent(e){let r=[{gemini_cli_key:20,value:JSON.stringify(e.model)}];this.enqueueLogEvent(this.createLogEvent("api_request",r)),this.flushIfNeeded()}logApiResponseEvent(e){let r=[{gemini_cli_key:21,value:JSON.stringify(e.model)},{gemini_cli_key:22,value:JSON.stringify(e.status_code)},{gemini_cli_key:23,value:JSON.stringify(e.duration_ms)},{gemini_cli_key:25,value:JSON.stringify(e.usage.input_token_count)},{gemini_cli_key:26,value:JSON.stringify(e.usage.output_token_count)},{gemini_cli_key:27,value:JSON.stringify(e.usage.cached_content_token_count)},{gemini_cli_key:28,value:JSON.stringify(e.usage.thoughts_token_count)},{gemini_cli_key:29,value:JSON.stringify(e.usage.tool_token_count)},{gemini_cli_key:167,value:JSON.stringify(e.usage.context_breakdown?.system_instructions??0)},{gemini_cli_key:168,value:JSON.stringify(e.usage.context_breakdown?.tool_definitions??0)},{gemini_cli_key:169,value:JSON.stringify(e.usage.context_breakdown?.history??0)},{gemini_cli_key:170,value:JSON.stringify(e.usage.context_breakdown?.tool_calls??{})},{gemini_cli_key:171,value:JSON.stringify(e.usage.context_breakdown?.mcp_servers??0)}];this.enqueueLogEvent(this.createLogEvent("api_response",r)),this.flushIfNeeded()}logApiErrorEvent(e){let r=[{gemini_cli_key:30,value:JSON.stringify(e.model)},{gemini_cli_key:31,value:JSON.stringify(e.error_type)},{gemini_cli_key:32,value:JSON.stringify(e.status_code)},{gemini_cli_key:33,value:JSON.stringify(e.duration_ms)}];this.enqueueLogEvent(this.createLogEvent("api_error",r)),this.flushIfNeeded()}logChatCompressionEvent(e){let r=[{gemini_cli_key:60,value:`${e.tokens_before}`},{gemini_cli_key:61,value:`${e.tokens_after}`}];this.enqueueLogEvent(this.createLogEvent("chat_compression",r))}logFlashFallbackEvent(){this.enqueueLogEvent(this.createLogEvent("flash_fallback",[])),this.flushToClearcut().catch(e=>{B.debug("Error flushing to Clearcut:",e)})}logRipgrepFallbackEvent(){this.enqueueLogEvent(this.createLogEvent("ripgrep_fallback",[])),this.flushToClearcut().catch(e=>{B.debug("Error flushing to Clearcut:",e)})}logLoopDetectedEvent(e){let r=[{gemini_cli_key:38,value:JSON.stringify(e.loop_type)}];e.confirmed_by_model&&r.push({gemini_cli_key:129,value:e.confirmed_by_model}),this.enqueueLogEvent(this.createLogEvent("loop_detected",r)),this.flushIfNeeded()}logLoopDetectionDisabledEvent(){let e=[];this.enqueueLogEvent(this.createLogEvent("loop_detection_disabled",e)),this.flushIfNeeded()}logNextSpeakerCheck(e){let r=[{gemini_cli_key:43,value:JSON.stringify(e.finish_reason)},{gemini_cli_key:44,value:JSON.stringify(e.result)}];this.enqueueLogEvent(this.createLogEvent("next_speaker_check",r)),this.flushIfNeeded()}logSlashCommandEvent(e){let r=[{gemini_cli_key:41,value:JSON.stringify(e.command)}];e.subcommand&&r.push({gemini_cli_key:42,value:JSON.stringify(e.subcommand)}),e.status&&r.push({gemini_cli_key:51,value:JSON.stringify(e.status)}),e.extension_id&&r.push({gemini_cli_key:121,value:e.extension_id}),this.enqueueLogEvent(this.createLogEvent("slash_command",r)),this.flushIfNeeded()}logRewindEvent(e){let r=[{gemini_cli_key:144,value:e.outcome}];this.enqueueLogEvent(this.createLogEvent("rewind",r)),this.flushIfNeeded()}logMalformedJsonResponseEvent(e){let r=[{gemini_cli_key:45,value:JSON.stringify(e.model)}];this.enqueueLogEvent(this.createLogEvent("malformed_json_response",r)),this.flushIfNeeded()}logIdeConnectionEvent(e){let r=[{gemini_cli_key:46,value:JSON.stringify(e.connection_type)}];this.enqueueLogEventAfterExperimentsLoadAsync(this.createLogEvent("start_session",r)).then(()=>{this.flushToClearcut().catch(n=>{B.debug("Error flushing to Clearcut:",n)})})}logConversationFinishedEvent(e){let r=[{gemini_cli_key:40,value:this.config?.getSessionId()??""},{gemini_cli_key:59,value:JSON.stringify(e.turnCount)},{gemini_cli_key:58,value:e.approvalMode}];this.enqueueLogEvent(this.createLogEvent("conversation_finished",r)),this.flushIfNeeded()}logEndSessionEvent(){this.enqueueLogEvent(this.createLogEvent("end_session",[])),this.flushToClearcut().catch(e=>{B.debug("Error flushing to Clearcut:",e)})}logInvalidChunkEvent(e){let r=[];e.error_message&&r.push({gemini_cli_key:75,value:e.error_message}),this.enqueueLogEvent(this.createLogEvent("invalid_chunk",r)),this.flushIfNeeded()}logContentRetryEvent(e){let r=[{gemini_cli_key:76,value:String(e.attempt_number)},{gemini_cli_key:77,value:e.error_type},{gemini_cli_key:78,value:String(e.retry_delay_ms)},{gemini_cli_key:20,value:e.model}];this.enqueueLogEvent(this.createLogEvent("content_retry",r)),this.flushIfNeeded()}logContentRetryFailureEvent(e){let r=[{gemini_cli_key:79,value:String(e.total_attempts)},{gemini_cli_key:80,value:e.final_error_type},{gemini_cli_key:20,value:e.model}];e.total_duration_ms&&r.push({gemini_cli_key:81,value:String(e.total_duration_ms)}),this.enqueueLogEvent(this.createLogEvent("content_retry_failure",r)),this.flushIfNeeded()}logNetworkRetryAttemptEvent(e){let r=[{gemini_cli_key:180,value:String(e.attempt)},{gemini_cli_key:181,value:String(e.delay_ms)},{gemini_cli_key:182,value:e.error_type},{gemini_cli_key:20,value:e.model}];this.enqueueLogEvent(this.createLogEvent("retry_attempt",r)),this.flushIfNeeded()}async logExtensionInstallEvent(e){let r=[{gemini_cli_key:85,value:e.hashed_extension_name},{gemini_cli_key:121,value:e.extension_id},{gemini_cli_key:86,value:e.extension_version},{gemini_cli_key:87,value:e.extension_source},{gemini_cli_key:88,value:e.status}];this.enqueueLogEvent(this.createBasicLogEvent("extension_install",r)),await this.flushToClearcut().catch(n=>{B.debug("Error flushing to Clearcut:",n)})}async logExtensionUninstallEvent(e){let r=[{gemini_cli_key:85,value:e.hashed_extension_name},{gemini_cli_key:121,value:e.extension_id},{gemini_cli_key:96,value:e.status}];this.enqueueLogEvent(this.createBasicLogEvent("extension_uninstall",r)),await this.flushToClearcut().catch(n=>{B.debug("Error flushing to Clearcut:",n)})}async logExtensionUpdateEvent(e){let r=[{gemini_cli_key:85,value:e.hashed_extension_name},{gemini_cli_key:121,value:e.extension_id},{gemini_cli_key:86,value:e.extension_version},{gemini_cli_key:117,value:e.extension_previous_version},{gemini_cli_key:87,value:e.extension_source},{gemini_cli_key:118,value:e.status}];this.enqueueLogEvent(this.createBasicLogEvent("extension_update",r)),await this.flushToClearcut().catch(n=>{B.debug("Error flushing to Clearcut:",n)})}logToolOutputTruncatedEvent(e){let r=[{gemini_cli_key:14,value:JSON.stringify(e.tool_name)},{gemini_cli_key:89,value:JSON.stringify(e.original_content_length)},{gemini_cli_key:90,value:JSON.stringify(e.truncated_content_length)},{gemini_cli_key:91,value:JSON.stringify(e.threshold)}],n=this.createLogEvent("tool_output_truncated",r);this.enqueueLogEvent(n),this.flushIfNeeded()}logToolOutputMaskingEvent(e){let r=[{gemini_cli_key:148,value:e.tokens_before.toString()},{gemini_cli_key:149,value:e.tokens_after.toString()},{gemini_cli_key:150,value:e.masked_count.toString()},{gemini_cli_key:151,value:e.total_prunable_tokens.toString()}];this.enqueueLogEvent(this.createLogEvent("tool_output_masking",r)),this.flushIfNeeded()}logModelRoutingEvent(e){let r=[{gemini_cli_key:97,value:e.decision_model},{gemini_cli_key:101,value:e.decision_source},{gemini_cli_key:99,value:e.routing_latency_ms.toString()},{gemini_cli_key:98,value:e.failed.toString()}];e.error_message&&r.push({gemini_cli_key:100,value:e.error_message}),e.reasoning&&this.config?.getTelemetryLogPromptsEnabled()&&r.push({gemini_cli_key:145,value:e.reasoning}),e.enable_numerical_routing!==void 0&&r.push({gemini_cli_key:146,value:e.enable_numerical_routing.toString()}),e.classifier_threshold&&r.push({gemini_cli_key:147,value:e.classifier_threshold}),this.enqueueLogEvent(this.createLogEvent("model_routing",r)),this.flushIfNeeded()}async logExtensionEnableEvent(e){let r=[{gemini_cli_key:85,value:e.hashed_extension_name},{gemini_cli_key:121,value:e.extension_id},{gemini_cli_key:102,value:e.setting_scope}];this.enqueueLogEvent(this.createBasicLogEvent("extension_enable",r)),await this.flushToClearcut().catch(n=>{B.debug("Error flushing to Clearcut:",n)})}logModelSlashCommandEvent(e){let r=[{gemini_cli_key:108,value:e.model_name}];this.enqueueLogEvent(this.createLogEvent("model_slash_command",r)),this.flushIfNeeded()}async logExtensionDisableEvent(e){let r=[{gemini_cli_key:85,value:e.hashed_extension_name},{gemini_cli_key:121,value:e.extension_id},{gemini_cli_key:107,value:e.setting_scope}];this.enqueueLogEvent(this.createBasicLogEvent("extension_disable",r)),await this.flushToClearcut().catch(n=>{B.debug("Error flushing to Clearcut:",n)})}logEditStrategyEvent(e){let r=[{gemini_cli_key:109,value:e.strategy}];this.enqueueLogEvent(this.createLogEvent("edit_strategy",r)),this.flushIfNeeded()}logEditCorrectionEvent(e){let r=[{gemini_cli_key:110,value:e.correction}];this.enqueueLogEvent(this.createLogEvent("edit_correction",r)),this.flushIfNeeded()}logAgentStartEvent(e){let r=[{gemini_cli_key:112,value:e.agent_id},{gemini_cli_key:111,value:e.agent_name}];this.enqueueLogEvent(this.createLogEvent("agent_start",r)),this.flushIfNeeded()}logAgentFinishEvent(e){let r=[{gemini_cli_key:112,value:e.agent_id},{gemini_cli_key:111,value:e.agent_name},{gemini_cli_key:113,value:e.duration_ms.toString()},{gemini_cli_key:114,value:e.turn_count.toString()},{gemini_cli_key:115,value:e.terminate_reason}];this.enqueueLogEvent(this.createLogEvent("agent_finish",r)),this.flushIfNeeded()}logRecoveryAttemptEvent(e){let r=[{gemini_cli_key:112,value:e.agent_id},{gemini_cli_key:111,value:e.agent_name},{gemini_cli_key:122,value:e.reason},{gemini_cli_key:123,value:e.duration_ms.toString()},{gemini_cli_key:124,value:e.success.toString()},{gemini_cli_key:114,value:e.turn_count.toString()}];this.enqueueLogEvent(this.createLogEvent("recovery_attempt",r)),this.flushIfNeeded()}logWebFetchFallbackAttemptEvent(e){let r=[{gemini_cli_key:116,value:e.reason}];this.enqueueLogEvent(this.createLogEvent("web_fetch_fallback_attempt",r)),this.flushIfNeeded()}logLlmLoopCheckEvent(e){let r=[{gemini_cli_key:35,value:e.prompt_id},{gemini_cli_key:126,value:e.flash_confidence.toString()},{gemini_cli_key:127,value:e.main_model},{gemini_cli_key:128,value:e.main_model_confidence.toString()}];this.enqueueLogEvent(this.createLogEvent("llm_loop_check",r)),this.flushIfNeeded()}logHookCallEvent(e){let r=[{gemini_cli_key:133,value:e.hook_event_name},{gemini_cli_key:134,value:e.duration_ms.toString()},{gemini_cli_key:135,value:e.success.toString()}];e.exit_code!==void 0&&r.push({gemini_cli_key:136,value:e.exit_code.toString()}),this.enqueueLogEvent(this.createLogEvent("hook_call",r)),this.flushIfNeeded()}logApprovalModeSwitchEvent(e){let r=[{gemini_cli_key:141,value:e.from_mode},{gemini_cli_key:142,value:e.to_mode}];this.enqueueLogEvent(this.createLogEvent("approval_mode_switch",r)),this.flushIfNeeded()}logApprovalModeDurationEvent(e){let r=[{gemini_cli_key:141,value:e.mode},{gemini_cli_key:143,value:e.duration_ms.toString()}];this.enqueueLogEvent(this.createLogEvent("approval_mode_duration",r)),this.flushIfNeeded()}logPlanExecutionEvent(e){let r=[{gemini_cli_key:58,value:e.approval_mode}];this.enqueueLogEvent(this.createLogEvent("plan_execution",r)),this.flushIfNeeded()}logKeychainAvailabilityEvent(e){let r=[{gemini_cli_key:156,value:JSON.stringify(e.available)}];this.enqueueLogEvent(this.createLogEvent("keychain_availability",r)),this.flushIfNeeded()}logTokenStorageInitializationEvent(e){let r=[{gemini_cli_key:157,value:e.type},{gemini_cli_key:158,value:JSON.stringify(e.forced)}];this.enqueueLogEvent(this.createLogEvent("token_storage_initialization",r)),this.flushIfNeeded()}logOnboardingStartEvent(e){let r=[{gemini_cli_key:192,value:"true"}];this.enqueueLogEvent(this.createLogEvent("onboarding_start",r)),this.flushIfNeeded()}logOnboardingSuccessEvent(e){let r=[];e.userTier&&r.push({gemini_cli_key:193,value:e.userTier}),e.duration_ms!==void 0&&r.push({gemini_cli_key:194,value:e.duration_ms.toString()}),this.enqueueLogEvent(this.createLogEvent("onboarding_success",r)),this.flushIfNeeded()}logStartupStatsEvent(e){let r=[{gemini_cli_key:172,value:JSON.stringify(e.phases)},{gemini_cli_key:173,value:e.os_platform},{gemini_cli_key:174,value:e.os_release},{gemini_cli_key:175,value:JSON.stringify(e.is_docker)}];this.enqueueLogEvent(this.createLogEvent("startup_stats",r)),this.flushIfNeeded()}logCreditsUsedEvent(e){let r=[{gemini_cli_key:185,value:JSON.stringify(e.model)},{gemini_cli_key:186,value:JSON.stringify(e.credits_consumed)},{gemini_cli_key:187,value:JSON.stringify(e.credits_remaining)}];this.enqueueLogEvent(this.createLogEvent("credits_used",r)),this.flushIfNeeded()}logOverageOptionSelectedEvent(e){let r=[{gemini_cli_key:185,value:JSON.stringify(e.model)},{gemini_cli_key:188,value:JSON.stringify(e.selected_option)},{gemini_cli_key:189,value:JSON.stringify(e.credit_balance)}];this.enqueueLogEvent(this.createLogEvent("overage_option_selected",r)),this.flushIfNeeded()}logEmptyWalletMenuShownEvent(e){let r=[{gemini_cli_key:185,value:JSON.stringify(e.model)}];this.enqueueLogEvent(this.createLogEvent("empty_wallet_menu_shown",r)),this.flushIfNeeded()}logCreditPurchaseClickEvent(e){let r=[{gemini_cli_key:185,value:JSON.stringify(e.model)},{gemini_cli_key:190,value:JSON.stringify(e.source)}];this.enqueueLogEvent(this.createLogEvent("credit_purchase_click",r)),this.flushIfNeeded()}logBrowserAgentConnectionEvent(e){let r=[{gemini_cli_key:195,value:e.session_mode},{gemini_cli_key:196,value:e.headless.toString()},{gemini_cli_key:197,value:e.success.toString()},{gemini_cli_key:199,value:e.duration_ms.toString()}];e.error_type&&r.push({gemini_cli_key:198,value:e.error_type}),e.tool_count!==void 0&&r.push({gemini_cli_key:202,value:e.tool_count.toString()}),this.enqueueLogEvent(this.createLogEvent("browser_agent_connection",r)),this.flushIfNeeded()}logBrowserAgentVisionStatusEvent(e){let r=[{gemini_cli_key:200,value:e.enabled.toString()}];e.disabled_reason&&r.push({gemini_cli_key:201,value:e.disabled_reason}),this.enqueueLogEvent(this.createLogEvent("browser_agent_vision_status",r)),this.flushIfNeeded()}logBrowserAgentTaskOutcomeEvent(e){let r=[{gemini_cli_key:197,value:e.success.toString()},{gemini_cli_key:195,value:e.session_mode},{gemini_cli_key:200,value:e.vision_enabled.toString()},{gemini_cli_key:196,value:e.headless.toString()},{gemini_cli_key:199,value:e.duration_ms.toString()}];this.enqueueLogEvent(this.createLogEvent("browser_agent_task_outcome",r)),this.flushIfNeeded()}logBrowserAgentCleanupEvent(e){let r=[{gemini_cli_key:195,value:e.session_mode},{gemini_cli_key:197,value:e.success.toString()},{gemini_cli_key:199,value:e.duration_ms.toString()}];this.enqueueLogEvent(this.createLogEvent("browser_agent_cleanup",r)),this.flushIfNeeded()}addDefaultFields(e,r){let n=[{gemini_cli_key:40,value:this.config?.getSessionId()??""},{gemini_cli_key:36,value:JSON.stringify(this.config?.getContentGeneratorConfig()?.authType)},{gemini_cli_key:37,value:`${r}`},{gemini_cli_key:35,value:this.promptId},{gemini_cli_key:83,value:process.versions.node},{gemini_cli_key:84,value:this.getConfigJson()},{gemini_cli_key:125,value:this.config?.isInteractive().toString()??"false"},{gemini_cli_key:141,value:typeof this.config?.getPolicyEngine=="function"&&typeof this.config.getPolicyEngine()?.getApprovalMode=="function"?this.config.getPolicyEngine().getApprovalMode():""}];return this.config?.getExperiments()&&n.push({gemini_cli_key:131,value:this.config?.getExperiments()?.experimentIds.toString()??"NA"}),[...e,...n]}getProxyAgent(){let e=this.config?.getProxy();if(e){if(e.startsWith("http"))return new bOt.HttpsProxyAgent(e);throw new Error("Unsupported proxy type")}}getConfigJson(){return tKe(this.config)}shutdown(){this.logEndSessionEvent()}requeueFailedEvents(e){let r=e.slice(-DX);e.length>DX&&this.config?.getDebugMode()&&B.warn(`ClearcutLogger: Dropping ${e.length-DX} events due to retry queue limit. Total events: ${e.length}, keeping: ${DX}`);let n=NX-this.events.size,o=Math.min(r.length,n);if(o===0){this.config?.getDebugMode()&&B.debug(`ClearcutLogger: No events re-queued (queue size: ${this.events.size})`);return}let s=r.slice(r.length-o);for(let c=s.length-1;c>=0;c--)this.events.unshift(s[c]);for(;this.events.size>NX;)this.events.pop();this.config?.getDebugMode()&&B.debug(`ClearcutLogger: Re-queued ${o} events for retry (queue size: ${this.events.size})`)}};var K1=Me(xt(),1),COt=Me(zp(),1);import*as TOt from"node:fs";var J6=class{writeStream;constructor(e){this.writeStream=TOt.createWriteStream(e,{flags:"a"})}serialize(e){return _r(e,2)+`
|
|
1091
|
+
`),B.error("Failed to authenticate with user code:",be(e)),!1}}async function _3r(t){let e=await b3r(),r=process.env.OAUTH_CALLBACK_HOST||"127.0.0.1",n=`http://127.0.0.1:${e}/oauth2callback`,o=opt.randomBytes(32).toString("hex"),s=t.generateAuthUrl({redirect_uri:n,access_type:"offline",scope:vEe,state:o}),c=new Promise((u,d)=>{let l=ipt.createServer(async(a,p)=>{try{if(a.url.indexOf("/oauth2callback")===-1){p.writeHead(dV,{Location:EEe}),p.end(),d(new Aa("OAuth callback not received. Unexpected request: "+a.url));return}let f=new h3r.URL(a.url,"http://127.0.0.1:3000").searchParams;if(f.get("error")){p.writeHead(dV,{Location:EEe}),p.end();let g=f.get("error"),y=f.get("error_description")||"No additional details provided";d(new Aa(`Google OAuth error: ${g}. ${y}`))}else if(f.get("state")!==o)p.end("State mismatch. Possible CSRF attack"),d(new Aa("OAuth state mismatch. Possible CSRF attack or browser session issue."));else if(f.get("code"))try{let{tokens:g}=await t.getToken({code:f.get("code"),redirect_uri:n});t.setCredentials(g);try{await pV(t)}catch(y){B.warn("Failed to retrieve Google Account ID during authentication:",be(y))}p.writeHead(dV,{Location:A3r}),p.end(),u()}catch(g){p.writeHead(dV,{Location:EEe}),p.end(),d(new Aa(`Failed to exchange authorization code for tokens: ${be(g)}`))}else d(new Aa("No authorization code received from Google OAuth. Please try authenticating again."))}catch(f){f instanceof Aa?d(f):d(new Aa(`Unexpected error during OAuth authentication: ${be(f)}`))}finally{l.close()}});l.listen(e,r,()=>{}),l.on("error",a=>{d(new Aa(`OAuth callback server error: ${be(a)}`))})});return{authUrl:s,loginCompletePromise:c}}function b3r(){return new Promise((t,e)=>{let r=0;try{let n=process.env.OAUTH_CALLBACK_PORT;if(n)return r=parseInt(n,10),isNaN(r)||r<=0||r>65535?e(new Error(`Invalid value for OAUTH_CALLBACK_PORT: "${n}"`)):t(r);let o=spt.createServer();o.listen(0,()=>{let s=o.address();s&&typeof s=="object"&&(r=s.port)}),o.on("listening",()=>{o.close(),o.unref()}),o.on("error",s=>e(s)),o.on("close",()=>t(r))}catch(n){e(n)}})}async function S3r(){if(_Ee())return Xx.loadCredentials();let e=[Ut.getOAuthCredsPath(),process.env.GOOGLE_APPLICATION_CREDENTIALS].filter(r=>!!r);for(let r of e)try{let n=await YL.readFile(r,"utf-8");return JSON.parse(n)}catch(n){B.debug(`Failed to load credentials from ${r}:`,be(n))}return null}function T3r(){JL.clear()}async function sLi(){try{_Ee()?await Xx.clearCredentials():await YL.rm(Ut.getOAuthCredsPath(),{force:!0}),await hV.clearCachedGoogleAccount(),T3r()}catch(t){B.warn("Failed to clear cached credentials:",t)}}async function pV(t){try{let{token:e}=await t.getAccessToken();if(!e)return;let r=await fetch("https://www.googleapis.com/oauth2/v2/userinfo",{headers:{Authorization:`Bearer ${e}`}});if(!r.ok){B.log("Failed to fetch user info:",r.status,r.statusText);return}let n=await r.json();await hV.cacheGoogleAccount(n.email)}catch(e){B.log("Error retrieving user info:",e)}}function aLi(){JL.clear()}async function C3r(t){let e=Ut.getOAuthCredsPath();await YL.mkdir(m3r.dirname(e),{recursive:!0});let r=JSON.stringify(t,null,2);await YL.writeFile(e,r,{mode:384});try{await YL.chmod(e,384)}catch{}}var upt=(l=>(l.DASHER_USER="DASHER_USER",l.INELIGIBLE_ACCOUNT="INELIGIBLE_ACCOUNT",l.NON_USER_ACCOUNT="NON_USER_ACCOUNT",l.RESTRICTED_AGE="RESTRICTED_AGE",l.RESTRICTED_NETWORK="RESTRICTED_NETWORK",l.UNKNOWN="UNKNOWN",l.UNKNOWN_LOCATION="UNKNOWN_LOCATION",l.UNSUPPORTED_LOCATION="UNSUPPORTED_LOCATION",l.VALIDATION_REQUIRED="VALIDATION_REQUIRED",l))(upt||{}),oy={FREE:"free-tier",LEGACY:"legacy-tier",STANDARD:"standard-tier"},w3r=(o=>(o.Default="DEFAULT",o.Notice="NOTICE",o.Warning="WARNING",o.Error="ERROR",o))(w3r||{}),dpt=(a=>(a[a.UNKNOWN=0]="UNKNOWN",a[a.THUMBSUP=1]="THUMBSUP",a[a.THUMBSDOWN=2]="THUMBSDOWN",a[a.COPY=3]="COPY",a[a.INSERT=4]="INSERT",a[a.ACCEPT_CODE_BLOCK=5]="ACCEPT_CODE_BLOCK",a[a.ACCEPT_ALL=6]="ACCEPT_ALL",a[a.ACCEPT_FILE=7]="ACCEPT_FILE",a[a.DIFF=8]="DIFF",a[a.ACCEPT_RANGE=9]="ACCEPT_RANGE",a))(dpt||{}),ppt=(s=>(s[s.ACTION_STATUS_UNSPECIFIED=0]="ACTION_STATUS_UNSPECIFIED",s[s.ACTION_STATUS_NO_ERROR=1]="ACTION_STATUS_NO_ERROR",s[s.ACTION_STATUS_ERROR_UNKNOWN=2]="ACTION_STATUS_ERROR_UNKNOWN",s[s.ACTION_STATUS_CANCELLED=3]="ACTION_STATUS_CANCELLED",s[s.ACTION_STATUS_EMPTY=4]="ACTION_STATUS_EMPTY",s))(ppt||{}),fpt=(o=>(o[o.INITIATION_METHOD_UNSPECIFIED=0]="INITIATION_METHOD_UNSPECIFIED",o[o.TAB=1]="TAB",o[o.COMMAND=2]="COMMAND",o[o.AGENT=3]="AGENT",o))(fpt||{}),x3r=Y.object({extensionsEnabled:Y.boolean().optional()}),hpt=Y.object({extensionsSetting:x3r.optional(),unmanagedCapabilitiesEnabled:Y.boolean().optional()}),O3r=Y.object({url:Y.string().optional(),type:Y.enum(["sse","http"]).optional(),trust:Y.boolean().optional(),includeTools:Y.array(Y.string()).optional(),excludeTools:Y.array(Y.string()).optional()}),I3r=Y.object({scopes:Y.array(Y.string()).optional(),clientId:Y.string().optional(),clientSecret:Y.string().optional()}),gpt=Y.object({url:Y.string(),type:Y.enum(["sse","http"]),authProviderType:Y.nativeEnum(KL).optional(),oauth:I3r.optional(),targetAudience:Y.string().optional(),targetServiceAccount:Y.string().optional(),headers:Y.record(Y.string()).optional(),trust:Y.boolean().optional(),timeout:Y.number().optional(),description:Y.string().optional(),includeTools:Y.array(Y.string()).optional(),excludeTools:Y.array(Y.string()).optional()}),bEe=Y.object({mcpServers:Y.record(O3r).optional(),requiredMcpServers:Y.record(gpt).optional()}),R3r=Y.object({mcpEnabled:Y.boolean().optional(),mcpConfigJson:Y.string().optional()}),dLi=Y.object({strictModeDisabled:Y.boolean().optional(),mcpSetting:Y.object({mcpEnabled:Y.boolean().optional(),mcpConfig:bEe.optional(),requiredMcpConfig:Y.record(gpt).optional()}).optional(),cliFeatureSetting:hpt.optional()}),mpt=Y.object({secureModeEnabled:Y.boolean().optional(),strictModeDisabled:Y.boolean().optional(),mcpSetting:R3r.optional(),cliFeatureSetting:hpt.optional(),adminControlsApplicable:Y.boolean().optional()});import*as kWt from"node:readline";import{Readable as Qqn}from"node:stream";var BS="GOOGLE_ONE_AI",P3r=new Set([Xf,Qw,Bs]);function ypt(t){return P3r.has(t)}var k3r="https://one.google.com/ai",N3r="https://accounts.google.com/AccountChooser",D3r="gemini_cli",L3r="web";function M3r(t,e){let r=new URLSearchParams({Email:t,continue:e});return`${N3r}?${r.toString()}`}var hLi={MANAGE_ACTIVITY:"hydrogen_cli_settings_ai_credits_activity_page",MANAGE_ADD_CREDITS:"hydrogen_cli_settings_add_credits",EMPTY_WALLET_ADD_CREDITS:"hydrogen_cli_insufficient_credits_add_credits"};function gLi(t,e,r){let n=`${k3r}/${t}`,o=new URLSearchParams({utm_source:D3r,utm_medium:L3r,utm_campaign:r}),s=`${n}?${o.toString()}`;return M3r(e,s)}function Apt(t){if(!t?.availableCredits)return null;let e=t.availableCredits.filter(r=>r.creditType===BS);return e.length===0?null:e.reduce((r,n)=>{let o=parseInt(n.creditAmount??"0",10);return r+(isNaN(o)?0:o)},0)}var SEe=50;function Ept(t,e){return t==="always"&&e!=null&&e>=SEe}function mLi(t,e){return t==="ask"&&e!=null&&e>=SEe}function yLi(t,e){return t!=="never"&&e!=null&&e<SEe}var Qt=Me(Eh(),1);Be();var K3t=Me(WTe(),1),X3t=Me(JTe(),1),Z3t=Me(rCe(),1),eMt=Me(iCe(),1),tMt=Me(sCe(),1),rMt=Me(SM(),1);Pp();var nMt=Me(KCt(),1);il();var iMt=Me(vy(),1),zte=Me(YY(),1),Wte=Me(vY(),1),o_=Me(zp(),1),oMt=Me(vwt(),1);var _Ot=Me(yOt(),1),bOt=Me(vJe(),1);import{createHash as _sn}from"node:crypto";import*as sI from"node:os";var AOt="135b8a5",EOt="0.43.0";var kr={devin:{name:"devin",displayName:"Devin"},replit:{name:"replit",displayName:"Replit"},cursor:{name:"cursor",displayName:"Cursor"},cloudshell:{name:"cloudshell",displayName:"Cloud Shell"},codespaces:{name:"codespaces",displayName:"GitHub Codespaces"},firebasestudio:{name:"firebasestudio",displayName:"Firebase Studio"},trae:{name:"trae",displayName:"Trae"},vscode:{name:"vscode",displayName:"VS Code"},vscodefork:{name:"vscodefork",displayName:"IDE"},positron:{name:"positron",displayName:"Positron"},antigravity:{name:"antigravity",displayName:"Antigravity"},sublimetext:{name:"sublimetext",displayName:"Sublime Text"},jetbrains:{name:"jetbrains",displayName:"JetBrains IDE"},intellijidea:{name:"intellijidea",displayName:"IntelliJ IDEA"},webstorm:{name:"webstorm",displayName:"WebStorm"},pycharm:{name:"pycharm",displayName:"PyCharm"},goland:{name:"goland",displayName:"GoLand"},androidstudio:{name:"androidstudio",displayName:"Android Studio"},clion:{name:"clion",displayName:"CLion"},rustrover:{name:"rustrover",displayName:"RustRover"},datagrip:{name:"datagrip",displayName:"DataGrip"},phpstorm:{name:"phpstorm",displayName:"PhpStorm"},zed:{name:"zed",displayName:"Zed"},xcode:{name:"xcode",displayName:"XCode"}};function iI(){return!!(process.env.EDITOR_IN_CLOUD_SHELL||process.env.CLOUD_SHELL)}function F2e(){return!!process.env.TERMINAL_EMULATOR?.toLowerCase().includes("jetbrains")}function oI(){return process.env.ANTIGRAVITY_CLI_ALIAS?kr.antigravity:process.env.__COG_BASHRC_SOURCED?kr.devin:process.env.REPLIT_USER?kr.replit:process.env.CURSOR_TRACE_ID?kr.cursor:process.env.CODESPACES?kr.codespaces:iI()?kr.cloudshell:process.env.TERM_PRODUCT==="Trae"?kr.trae:process.env.MONOSPACE_ENV?kr.firebasestudio:process.env.POSITRON==="1"?kr.positron:process.env.TERM_PROGRAM==="sublime"?kr.sublimetext:process.env.ZED_SESSION_ID||process.env.TERM_PROGRAM==="Zed"?kr.zed:process.env.XCODE_VERSION_ACTUAL?kr.xcode:F2e()?kr.jetbrains:kr.vscode}function Asn(t,e){return t.name!==kr.vscode.name?t:!e.command||e.command.toLowerCase().includes("code")?kr.vscode:kr.vscodefork}function Esn(t,e){if(t.name!==kr.jetbrains.name||!e.command)return t;let r=e.command.toLowerCase(),n=[["idea",kr.intellijidea],["webstorm",kr.webstorm],["pycharm",kr.pycharm],["goland",kr.goland],["studio",kr.androidstudio],["clion",kr.clion],["rustrover",kr.rustrover],["datagrip",kr.datagrip],["phpstorm",kr.phpstorm]];for(let[o,s]of n)if(r.includes(o))return s;return t}function vOt(t,e){if(e?.name&&e.displayName)return{name:e.name,displayName:e.displayName};if(process.env.TERM_PROGRAM!=="vscode"&&process.env.TERM_PROGRAM!=="sublime"&&process.env.TERM_PROGRAM!=="Zed"&&!process.env.ZED_SESSION_ID&&!process.env.XCODE_VERSION_ACTUAL&&!F2e())return;let r=oI();return F2e()?Esn(r,t):Asn(r,t)}function bsn(){return process.env.SURFACE?process.env.SURFACE:iI()?kr.cloudshell.name:process.env.GITHUB_SHA?"GitHub":process.env.TERM_PROGRAM==="vscode"?oI().name||kr.vscode.name:"SURFACE_NOT_SET"}function Ssn(){return process.env.GH_WORKFLOW_NAME}function Tsn(){return process.env.GITHUB_REPOSITORY}function Csn(){return process.env.GITHUB_EVENT_NAME}function wsn(){return process.env.GH_PR_NUMBER}function xsn(){return process.env.GH_ISSUE_NUMBER}function Osn(){return process.env.GH_CUSTOM_TRACKING_ID}var Isn="https://play.googleapis.com/log?format=json&hasfast=true",Rsn=1e3*60,NX=1e3,DX=100,SOt="NA",Y6;async function Psn(){try{let t=await _Ot.default.graphics();t.controllers&&t.controllers.length>0?Y6=t.controllers.map(e=>e.model).join(", "):Y6=SOt}catch(t){Y6="FAILED",B.error("Failed to get GPU information for telemetry",be(t))}}async function ksn(){return Y6||await Psn(),Y6??SOt}var gt=class t{static instance;config;sessionData=[];promptId="";installationManager;userAccountManager;hashedGHRepositoryName;events;lastFlushTime=Date.now();flushing=!1;pendingFlush=!1;constructor(e){this.config=e,this.events=new gme.default(Array,NX),this.promptId=e?.getSessionId()??"",this.installationManager=new jA,this.userAccountManager=new FA;let r=Tsn();r&&(this.hashedGHRepositoryName=_sn("sha256").update(r).digest("hex"))}static getInstance(e){if(!(e===void 0||!e?.getUsageStatisticsEnabled()))return t.instance||(t.instance=new t(e)),t.instance}static clearInstance(){t.instance=void 0}enqueueHelper(e,r){let n=this.events.size>=NX;n&&this.events.shift();let o={event_time_ms:Date.now(),source_extension_json:_r(e)};r!==void 0&&(o.exp={gws_experiment:r}),this.events.push([o]),n&&this.config?.getDebugMode()&&B.debug(`ClearcutLogger: Dropped old event to prevent memory leak (queue size: ${this.events.size})`)}enqueueLogEvent(e){try{this.enqueueHelper(e)}catch(r){this.config?.getDebugMode()&&B.warn("ClearcutLogger: Failed to enqueue log event.",r)}}async enqueueLogEventAfterExperimentsLoadAsync(e){try{this.config?.getExperimentsAsync().then(r=>{if(r){let n=[{gemini_cli_key:131,value:r.experimentIds.toString()??"NA"}];e.event_metadata=[[...e.event_metadata[0],...n]]}this.enqueueHelper(e,r?.experimentIds)})}catch(r){B.warn("ClearcutLogger: Failed to enqueue log event.",r)}}createBasicLogEvent(e,r=[]){let n=this.userAccountManager.getCachedGoogleAccount(),o=bsn(),s=Ssn(),c=Csn(),u=wsn(),d=xsn(),l=Osn(),a=[...r,{gemini_cli_key:39,value:o},{gemini_cli_key:54,value:EOt},{gemini_cli_key:55,value:AOt},{gemini_cli_key:82,value:process.platform}];s&&a.push({gemini_cli_key:130,value:s}),this.hashedGHRepositoryName&&a.push({gemini_cli_key:132,value:this.hashedGHRepositoryName}),c&&a.push({gemini_cli_key:176,value:c}),u&&a.push({gemini_cli_key:177,value:u}),d&&a.push({gemini_cli_key:178,value:d}),l&&a.push({gemini_cli_key:179,value:l});let p={console_type:"GEMINI_CLI",application:102,event_name:e,event_metadata:[a]};return n?p.client_email=n:p.client_install_id=this.installationManager.getInstallationId(),p}createLogEvent(e,r=[]){e!=="start_session"&&r.push(...this.sessionData);let n=this.userAccountManager.getLifetimeGoogleAccounts();return r=this.addDefaultFields(r,n),this.createBasicLogEvent(e,r)}flushIfNeeded(){Date.now()-this.lastFlushTime<Rsn||this.flushToClearcut().catch(e=>{B.debug("Error flushing to Clearcut:",e)})}async flushToClearcut(){if(this.flushing)return this.config?.getDebugMode()&&B.debug("ClearcutLogger: Flush already in progress, marking pending flush."),this.pendingFlush=!0,Promise.resolve({});this.flushing=!0,this.config?.getDebugMode()&&B.log("Flushing log events to Clearcut.");let e=this.events.toArray();this.events.clear();let r=[{log_source_name:"CONCORD",request_time_ms:Date.now(),log_event:e}],n={};try{let o=await fetch(Isn,{method:"POST",body:_r(r),headers:{"Content-Type":"application/json"}}),s=await o.text();if(o.status>=200&&o.status<300){this.lastFlushTime=Date.now();let c=Number(JSON.parse(s)[0]);n={...n,nextRequestWaitMs:c}}else this.config?.getDebugMode()&&B.warn(`Error flushing log events: HTTP ${o.status}: ${o.statusText}`),this.requeueFailedEvents(e)}catch(o){this.config?.getDebugMode()&&B.warn("Error flushing log events:",o),this.requeueFailedEvents(e)}return this.flushing=!1,this.pendingFlush&&(this.pendingFlush=!1,this.flushToClearcut().catch(o=>{this.config?.getDebugMode()&&B.debug("Error in pending flush to Clearcut:",o)})),n}async logStartSessionEvent(e){let r=[{gemini_cli_key:1,value:e.model},{gemini_cli_key:2,value:e.embedding_model},{gemini_cli_key:3,value:e.sandbox_enabled.toString()},{gemini_cli_key:4,value:e.core_tools_enabled},{gemini_cli_key:5,value:e.approval_mode},{gemini_cli_key:6,value:e.api_key_enabled.toString()},{gemini_cli_key:7,value:e.vertex_ai_enabled.toString()},{gemini_cli_key:8,value:e.debug_enabled.toString()},{gemini_cli_key:7,value:e.vertex_ai_enabled.toString()},{gemini_cli_key:9,value:e.mcp_servers},{gemini_cli_key:7,value:e.vertex_ai_enabled.toString()},{gemini_cli_key:10,value:e.telemetry_enabled.toString()},{gemini_cli_key:11,value:e.telemetry_log_user_prompts_enabled.toString()},{gemini_cli_key:63,value:e.mcp_servers_count?e.mcp_servers_count.toString():""},{gemini_cli_key:64,value:e.mcp_tools_count?.toString()??""},{gemini_cli_key:65,value:e.mcp_tools?e.mcp_tools:""},{gemini_cli_key:119,value:e.extensions_count.toString()},{gemini_cli_key:120,value:e.extension_ids.toString()},{gemini_cli_key:191,value:e.worktree_active.toString()}],n=sI.cpus();n&&n.length>0&&r.push({gemini_cli_key:137,value:n[0].model}),r.push({gemini_cli_key:138,value:sI.availableParallelism().toString()},{gemini_cli_key:140,value:(sI.totalmem()/1024**3).toFixed(2).toString()});let o=await ksn();r.push({gemini_cli_key:139,value:o}),this.sessionData=r,this.enqueueLogEventAfterExperimentsLoadAsync(this.createLogEvent("start_session",r)).then(()=>{this.flushToClearcut().catch(s=>{B.debug("Error flushing to Clearcut:",s)})})}logNewPromptEvent(e){this.promptId=e.prompt_id;let r=[{gemini_cli_key:13,value:JSON.stringify(e.prompt_length)}];this.enqueueLogEvent(this.createLogEvent("new_prompt",r)),this.flushIfNeeded()}logToolCallEvent(e){let r=[{gemini_cli_key:14,value:JSON.stringify(e.function_name)},{gemini_cli_key:15,value:JSON.stringify(e.decision)},{gemini_cli_key:16,value:JSON.stringify(e.success)},{gemini_cli_key:17,value:JSON.stringify(e.duration_ms)},{gemini_cli_key:19,value:JSON.stringify(e.error_type)},{gemini_cli_key:62,value:JSON.stringify(e.tool_type)},{gemini_cli_key:93,value:JSON.stringify(e.content_length)},{gemini_cli_key:95,value:JSON.stringify(e.mcp_server_name)}];if(e.metadata){let o={model_added_lines:47,model_removed_lines:48,model_added_chars:103,model_removed_chars:104,user_added_lines:49,user_removed_lines:50,user_added_chars:105,user_removed_chars:106};if(e.function_name===rs&&e.metadata.ask_user){let s=e.metadata.ask_user,c={question_types:152,dismissed:153,empty_submission:154,answer_count:155};for(let[u,d]of Object.entries(c))s[u]!==void 0&&r.push({gemini_cli_key:d,value:JSON.stringify(s[u])})}for(let[s,c]of Object.entries(o))e.metadata[s]!==void 0&&r.push({gemini_cli_key:c,value:JSON.stringify(e.metadata[s])})}e.extension_id&&r.push({gemini_cli_key:121,value:e.extension_id});let n=this.createLogEvent("tool_call",r);this.enqueueLogEvent(n),this.flushIfNeeded()}logFileOperationEvent(e){let r=[{gemini_cli_key:14,value:JSON.stringify(e.tool_name)},{gemini_cli_key:57,value:JSON.stringify(e.operation)},{gemini_cli_key:72,value:JSON.stringify(e.lines)},{gemini_cli_key:73,value:JSON.stringify(e.mimetype)},{gemini_cli_key:74,value:JSON.stringify(e.extension)}];e.programming_language&&r.push({gemini_cli_key:56,value:e.programming_language});let n=this.createLogEvent("file_operation",r);this.enqueueLogEvent(n),this.flushIfNeeded()}logApiRequestEvent(e){let r=[{gemini_cli_key:20,value:JSON.stringify(e.model)}];this.enqueueLogEvent(this.createLogEvent("api_request",r)),this.flushIfNeeded()}logApiResponseEvent(e){let r=[{gemini_cli_key:21,value:JSON.stringify(e.model)},{gemini_cli_key:22,value:JSON.stringify(e.status_code)},{gemini_cli_key:23,value:JSON.stringify(e.duration_ms)},{gemini_cli_key:25,value:JSON.stringify(e.usage.input_token_count)},{gemini_cli_key:26,value:JSON.stringify(e.usage.output_token_count)},{gemini_cli_key:27,value:JSON.stringify(e.usage.cached_content_token_count)},{gemini_cli_key:28,value:JSON.stringify(e.usage.thoughts_token_count)},{gemini_cli_key:29,value:JSON.stringify(e.usage.tool_token_count)},{gemini_cli_key:167,value:JSON.stringify(e.usage.context_breakdown?.system_instructions??0)},{gemini_cli_key:168,value:JSON.stringify(e.usage.context_breakdown?.tool_definitions??0)},{gemini_cli_key:169,value:JSON.stringify(e.usage.context_breakdown?.history??0)},{gemini_cli_key:170,value:JSON.stringify(e.usage.context_breakdown?.tool_calls??{})},{gemini_cli_key:171,value:JSON.stringify(e.usage.context_breakdown?.mcp_servers??0)}];this.enqueueLogEvent(this.createLogEvent("api_response",r)),this.flushIfNeeded()}logApiErrorEvent(e){let r=[{gemini_cli_key:30,value:JSON.stringify(e.model)},{gemini_cli_key:31,value:JSON.stringify(e.error_type)},{gemini_cli_key:32,value:JSON.stringify(e.status_code)},{gemini_cli_key:33,value:JSON.stringify(e.duration_ms)}];this.enqueueLogEvent(this.createLogEvent("api_error",r)),this.flushIfNeeded()}logChatCompressionEvent(e){let r=[{gemini_cli_key:60,value:`${e.tokens_before}`},{gemini_cli_key:61,value:`${e.tokens_after}`}];this.enqueueLogEvent(this.createLogEvent("chat_compression",r))}logFlashFallbackEvent(){this.enqueueLogEvent(this.createLogEvent("flash_fallback",[])),this.flushToClearcut().catch(e=>{B.debug("Error flushing to Clearcut:",e)})}logRipgrepFallbackEvent(){this.enqueueLogEvent(this.createLogEvent("ripgrep_fallback",[])),this.flushToClearcut().catch(e=>{B.debug("Error flushing to Clearcut:",e)})}logLoopDetectedEvent(e){let r=[{gemini_cli_key:38,value:JSON.stringify(e.loop_type)}];e.confirmed_by_model&&r.push({gemini_cli_key:129,value:e.confirmed_by_model}),this.enqueueLogEvent(this.createLogEvent("loop_detected",r)),this.flushIfNeeded()}logLoopDetectionDisabledEvent(){let e=[];this.enqueueLogEvent(this.createLogEvent("loop_detection_disabled",e)),this.flushIfNeeded()}logNextSpeakerCheck(e){let r=[{gemini_cli_key:43,value:JSON.stringify(e.finish_reason)},{gemini_cli_key:44,value:JSON.stringify(e.result)}];this.enqueueLogEvent(this.createLogEvent("next_speaker_check",r)),this.flushIfNeeded()}logSlashCommandEvent(e){let r=[{gemini_cli_key:41,value:JSON.stringify(e.command)}];e.subcommand&&r.push({gemini_cli_key:42,value:JSON.stringify(e.subcommand)}),e.status&&r.push({gemini_cli_key:51,value:JSON.stringify(e.status)}),e.extension_id&&r.push({gemini_cli_key:121,value:e.extension_id}),this.enqueueLogEvent(this.createLogEvent("slash_command",r)),this.flushIfNeeded()}logRewindEvent(e){let r=[{gemini_cli_key:144,value:e.outcome}];this.enqueueLogEvent(this.createLogEvent("rewind",r)),this.flushIfNeeded()}logMalformedJsonResponseEvent(e){let r=[{gemini_cli_key:45,value:JSON.stringify(e.model)}];this.enqueueLogEvent(this.createLogEvent("malformed_json_response",r)),this.flushIfNeeded()}logIdeConnectionEvent(e){let r=[{gemini_cli_key:46,value:JSON.stringify(e.connection_type)}];this.enqueueLogEventAfterExperimentsLoadAsync(this.createLogEvent("start_session",r)).then(()=>{this.flushToClearcut().catch(n=>{B.debug("Error flushing to Clearcut:",n)})})}logConversationFinishedEvent(e){let r=[{gemini_cli_key:40,value:this.config?.getSessionId()??""},{gemini_cli_key:59,value:JSON.stringify(e.turnCount)},{gemini_cli_key:58,value:e.approvalMode}];this.enqueueLogEvent(this.createLogEvent("conversation_finished",r)),this.flushIfNeeded()}logEndSessionEvent(){this.enqueueLogEvent(this.createLogEvent("end_session",[])),this.flushToClearcut().catch(e=>{B.debug("Error flushing to Clearcut:",e)})}logInvalidChunkEvent(e){let r=[];e.error_message&&r.push({gemini_cli_key:75,value:e.error_message}),this.enqueueLogEvent(this.createLogEvent("invalid_chunk",r)),this.flushIfNeeded()}logContentRetryEvent(e){let r=[{gemini_cli_key:76,value:String(e.attempt_number)},{gemini_cli_key:77,value:e.error_type},{gemini_cli_key:78,value:String(e.retry_delay_ms)},{gemini_cli_key:20,value:e.model}];this.enqueueLogEvent(this.createLogEvent("content_retry",r)),this.flushIfNeeded()}logContentRetryFailureEvent(e){let r=[{gemini_cli_key:79,value:String(e.total_attempts)},{gemini_cli_key:80,value:e.final_error_type},{gemini_cli_key:20,value:e.model}];e.total_duration_ms&&r.push({gemini_cli_key:81,value:String(e.total_duration_ms)}),this.enqueueLogEvent(this.createLogEvent("content_retry_failure",r)),this.flushIfNeeded()}logNetworkRetryAttemptEvent(e){let r=[{gemini_cli_key:180,value:String(e.attempt)},{gemini_cli_key:181,value:String(e.delay_ms)},{gemini_cli_key:182,value:e.error_type},{gemini_cli_key:20,value:e.model}];this.enqueueLogEvent(this.createLogEvent("retry_attempt",r)),this.flushIfNeeded()}async logExtensionInstallEvent(e){let r=[{gemini_cli_key:85,value:e.hashed_extension_name},{gemini_cli_key:121,value:e.extension_id},{gemini_cli_key:86,value:e.extension_version},{gemini_cli_key:87,value:e.extension_source},{gemini_cli_key:88,value:e.status}];this.enqueueLogEvent(this.createBasicLogEvent("extension_install",r)),await this.flushToClearcut().catch(n=>{B.debug("Error flushing to Clearcut:",n)})}async logExtensionUninstallEvent(e){let r=[{gemini_cli_key:85,value:e.hashed_extension_name},{gemini_cli_key:121,value:e.extension_id},{gemini_cli_key:96,value:e.status}];this.enqueueLogEvent(this.createBasicLogEvent("extension_uninstall",r)),await this.flushToClearcut().catch(n=>{B.debug("Error flushing to Clearcut:",n)})}async logExtensionUpdateEvent(e){let r=[{gemini_cli_key:85,value:e.hashed_extension_name},{gemini_cli_key:121,value:e.extension_id},{gemini_cli_key:86,value:e.extension_version},{gemini_cli_key:117,value:e.extension_previous_version},{gemini_cli_key:87,value:e.extension_source},{gemini_cli_key:118,value:e.status}];this.enqueueLogEvent(this.createBasicLogEvent("extension_update",r)),await this.flushToClearcut().catch(n=>{B.debug("Error flushing to Clearcut:",n)})}logToolOutputTruncatedEvent(e){let r=[{gemini_cli_key:14,value:JSON.stringify(e.tool_name)},{gemini_cli_key:89,value:JSON.stringify(e.original_content_length)},{gemini_cli_key:90,value:JSON.stringify(e.truncated_content_length)},{gemini_cli_key:91,value:JSON.stringify(e.threshold)}],n=this.createLogEvent("tool_output_truncated",r);this.enqueueLogEvent(n),this.flushIfNeeded()}logToolOutputMaskingEvent(e){let r=[{gemini_cli_key:148,value:e.tokens_before.toString()},{gemini_cli_key:149,value:e.tokens_after.toString()},{gemini_cli_key:150,value:e.masked_count.toString()},{gemini_cli_key:151,value:e.total_prunable_tokens.toString()}];this.enqueueLogEvent(this.createLogEvent("tool_output_masking",r)),this.flushIfNeeded()}logModelRoutingEvent(e){let r=[{gemini_cli_key:97,value:e.decision_model},{gemini_cli_key:101,value:e.decision_source},{gemini_cli_key:99,value:e.routing_latency_ms.toString()},{gemini_cli_key:98,value:e.failed.toString()}];e.error_message&&r.push({gemini_cli_key:100,value:e.error_message}),e.reasoning&&this.config?.getTelemetryLogPromptsEnabled()&&r.push({gemini_cli_key:145,value:e.reasoning}),e.enable_numerical_routing!==void 0&&r.push({gemini_cli_key:146,value:e.enable_numerical_routing.toString()}),e.classifier_threshold&&r.push({gemini_cli_key:147,value:e.classifier_threshold}),this.enqueueLogEvent(this.createLogEvent("model_routing",r)),this.flushIfNeeded()}async logExtensionEnableEvent(e){let r=[{gemini_cli_key:85,value:e.hashed_extension_name},{gemini_cli_key:121,value:e.extension_id},{gemini_cli_key:102,value:e.setting_scope}];this.enqueueLogEvent(this.createBasicLogEvent("extension_enable",r)),await this.flushToClearcut().catch(n=>{B.debug("Error flushing to Clearcut:",n)})}logModelSlashCommandEvent(e){let r=[{gemini_cli_key:108,value:e.model_name}];this.enqueueLogEvent(this.createLogEvent("model_slash_command",r)),this.flushIfNeeded()}async logExtensionDisableEvent(e){let r=[{gemini_cli_key:85,value:e.hashed_extension_name},{gemini_cli_key:121,value:e.extension_id},{gemini_cli_key:107,value:e.setting_scope}];this.enqueueLogEvent(this.createBasicLogEvent("extension_disable",r)),await this.flushToClearcut().catch(n=>{B.debug("Error flushing to Clearcut:",n)})}logEditStrategyEvent(e){let r=[{gemini_cli_key:109,value:e.strategy}];this.enqueueLogEvent(this.createLogEvent("edit_strategy",r)),this.flushIfNeeded()}logEditCorrectionEvent(e){let r=[{gemini_cli_key:110,value:e.correction}];this.enqueueLogEvent(this.createLogEvent("edit_correction",r)),this.flushIfNeeded()}logAgentStartEvent(e){let r=[{gemini_cli_key:112,value:e.agent_id},{gemini_cli_key:111,value:e.agent_name}];this.enqueueLogEvent(this.createLogEvent("agent_start",r)),this.flushIfNeeded()}logAgentFinishEvent(e){let r=[{gemini_cli_key:112,value:e.agent_id},{gemini_cli_key:111,value:e.agent_name},{gemini_cli_key:113,value:e.duration_ms.toString()},{gemini_cli_key:114,value:e.turn_count.toString()},{gemini_cli_key:115,value:e.terminate_reason}];this.enqueueLogEvent(this.createLogEvent("agent_finish",r)),this.flushIfNeeded()}logRecoveryAttemptEvent(e){let r=[{gemini_cli_key:112,value:e.agent_id},{gemini_cli_key:111,value:e.agent_name},{gemini_cli_key:122,value:e.reason},{gemini_cli_key:123,value:e.duration_ms.toString()},{gemini_cli_key:124,value:e.success.toString()},{gemini_cli_key:114,value:e.turn_count.toString()}];this.enqueueLogEvent(this.createLogEvent("recovery_attempt",r)),this.flushIfNeeded()}logWebFetchFallbackAttemptEvent(e){let r=[{gemini_cli_key:116,value:e.reason}];this.enqueueLogEvent(this.createLogEvent("web_fetch_fallback_attempt",r)),this.flushIfNeeded()}logLlmLoopCheckEvent(e){let r=[{gemini_cli_key:35,value:e.prompt_id},{gemini_cli_key:126,value:e.flash_confidence.toString()},{gemini_cli_key:127,value:e.main_model},{gemini_cli_key:128,value:e.main_model_confidence.toString()}];this.enqueueLogEvent(this.createLogEvent("llm_loop_check",r)),this.flushIfNeeded()}logHookCallEvent(e){let r=[{gemini_cli_key:133,value:e.hook_event_name},{gemini_cli_key:134,value:e.duration_ms.toString()},{gemini_cli_key:135,value:e.success.toString()}];e.exit_code!==void 0&&r.push({gemini_cli_key:136,value:e.exit_code.toString()}),this.enqueueLogEvent(this.createLogEvent("hook_call",r)),this.flushIfNeeded()}logApprovalModeSwitchEvent(e){let r=[{gemini_cli_key:141,value:e.from_mode},{gemini_cli_key:142,value:e.to_mode}];this.enqueueLogEvent(this.createLogEvent("approval_mode_switch",r)),this.flushIfNeeded()}logApprovalModeDurationEvent(e){let r=[{gemini_cli_key:141,value:e.mode},{gemini_cli_key:143,value:e.duration_ms.toString()}];this.enqueueLogEvent(this.createLogEvent("approval_mode_duration",r)),this.flushIfNeeded()}logPlanExecutionEvent(e){let r=[{gemini_cli_key:58,value:e.approval_mode}];this.enqueueLogEvent(this.createLogEvent("plan_execution",r)),this.flushIfNeeded()}logKeychainAvailabilityEvent(e){let r=[{gemini_cli_key:156,value:JSON.stringify(e.available)}];this.enqueueLogEvent(this.createLogEvent("keychain_availability",r)),this.flushIfNeeded()}logTokenStorageInitializationEvent(e){let r=[{gemini_cli_key:157,value:e.type},{gemini_cli_key:158,value:JSON.stringify(e.forced)}];this.enqueueLogEvent(this.createLogEvent("token_storage_initialization",r)),this.flushIfNeeded()}logOnboardingStartEvent(e){let r=[{gemini_cli_key:192,value:"true"}];this.enqueueLogEvent(this.createLogEvent("onboarding_start",r)),this.flushIfNeeded()}logOnboardingSuccessEvent(e){let r=[];e.userTier&&r.push({gemini_cli_key:193,value:e.userTier}),e.duration_ms!==void 0&&r.push({gemini_cli_key:194,value:e.duration_ms.toString()}),this.enqueueLogEvent(this.createLogEvent("onboarding_success",r)),this.flushIfNeeded()}logStartupStatsEvent(e){let r=[{gemini_cli_key:172,value:JSON.stringify(e.phases)},{gemini_cli_key:173,value:e.os_platform},{gemini_cli_key:174,value:e.os_release},{gemini_cli_key:175,value:JSON.stringify(e.is_docker)}];this.enqueueLogEvent(this.createLogEvent("startup_stats",r)),this.flushIfNeeded()}logCreditsUsedEvent(e){let r=[{gemini_cli_key:185,value:JSON.stringify(e.model)},{gemini_cli_key:186,value:JSON.stringify(e.credits_consumed)},{gemini_cli_key:187,value:JSON.stringify(e.credits_remaining)}];this.enqueueLogEvent(this.createLogEvent("credits_used",r)),this.flushIfNeeded()}logOverageOptionSelectedEvent(e){let r=[{gemini_cli_key:185,value:JSON.stringify(e.model)},{gemini_cli_key:188,value:JSON.stringify(e.selected_option)},{gemini_cli_key:189,value:JSON.stringify(e.credit_balance)}];this.enqueueLogEvent(this.createLogEvent("overage_option_selected",r)),this.flushIfNeeded()}logEmptyWalletMenuShownEvent(e){let r=[{gemini_cli_key:185,value:JSON.stringify(e.model)}];this.enqueueLogEvent(this.createLogEvent("empty_wallet_menu_shown",r)),this.flushIfNeeded()}logCreditPurchaseClickEvent(e){let r=[{gemini_cli_key:185,value:JSON.stringify(e.model)},{gemini_cli_key:190,value:JSON.stringify(e.source)}];this.enqueueLogEvent(this.createLogEvent("credit_purchase_click",r)),this.flushIfNeeded()}logBrowserAgentConnectionEvent(e){let r=[{gemini_cli_key:195,value:e.session_mode},{gemini_cli_key:196,value:e.headless.toString()},{gemini_cli_key:197,value:e.success.toString()},{gemini_cli_key:199,value:e.duration_ms.toString()}];e.error_type&&r.push({gemini_cli_key:198,value:e.error_type}),e.tool_count!==void 0&&r.push({gemini_cli_key:202,value:e.tool_count.toString()}),this.enqueueLogEvent(this.createLogEvent("browser_agent_connection",r)),this.flushIfNeeded()}logBrowserAgentVisionStatusEvent(e){let r=[{gemini_cli_key:200,value:e.enabled.toString()}];e.disabled_reason&&r.push({gemini_cli_key:201,value:e.disabled_reason}),this.enqueueLogEvent(this.createLogEvent("browser_agent_vision_status",r)),this.flushIfNeeded()}logBrowserAgentTaskOutcomeEvent(e){let r=[{gemini_cli_key:197,value:e.success.toString()},{gemini_cli_key:195,value:e.session_mode},{gemini_cli_key:200,value:e.vision_enabled.toString()},{gemini_cli_key:196,value:e.headless.toString()},{gemini_cli_key:199,value:e.duration_ms.toString()}];this.enqueueLogEvent(this.createLogEvent("browser_agent_task_outcome",r)),this.flushIfNeeded()}logBrowserAgentCleanupEvent(e){let r=[{gemini_cli_key:195,value:e.session_mode},{gemini_cli_key:197,value:e.success.toString()},{gemini_cli_key:199,value:e.duration_ms.toString()}];this.enqueueLogEvent(this.createLogEvent("browser_agent_cleanup",r)),this.flushIfNeeded()}addDefaultFields(e,r){let n=[{gemini_cli_key:40,value:this.config?.getSessionId()??""},{gemini_cli_key:36,value:JSON.stringify(this.config?.getContentGeneratorConfig()?.authType)},{gemini_cli_key:37,value:`${r}`},{gemini_cli_key:35,value:this.promptId},{gemini_cli_key:83,value:process.versions.node},{gemini_cli_key:84,value:this.getConfigJson()},{gemini_cli_key:125,value:this.config?.isInteractive().toString()??"false"},{gemini_cli_key:141,value:typeof this.config?.getPolicyEngine=="function"&&typeof this.config.getPolicyEngine()?.getApprovalMode=="function"?this.config.getPolicyEngine().getApprovalMode():""}];return this.config?.getExperiments()&&n.push({gemini_cli_key:131,value:this.config?.getExperiments()?.experimentIds.toString()??"NA"}),[...e,...n]}getProxyAgent(){let e=this.config?.getProxy();if(e){if(e.startsWith("http"))return new bOt.HttpsProxyAgent(e);throw new Error("Unsupported proxy type")}}getConfigJson(){return tKe(this.config)}shutdown(){this.logEndSessionEvent()}requeueFailedEvents(e){let r=e.slice(-DX);e.length>DX&&this.config?.getDebugMode()&&B.warn(`ClearcutLogger: Dropping ${e.length-DX} events due to retry queue limit. Total events: ${e.length}, keeping: ${DX}`);let n=NX-this.events.size,o=Math.min(r.length,n);if(o===0){this.config?.getDebugMode()&&B.debug(`ClearcutLogger: No events re-queued (queue size: ${this.events.size})`);return}let s=r.slice(r.length-o);for(let c=s.length-1;c>=0;c--)this.events.unshift(s[c]);for(;this.events.size>NX;)this.events.pop();this.config?.getDebugMode()&&B.debug(`ClearcutLogger: Re-queued ${o} events for retry (queue size: ${this.events.size})`)}};var K1=Me(xt(),1),COt=Me(zp(),1);import*as TOt from"node:fs";var J6=class{writeStream;constructor(e){this.writeStream=TOt.createWriteStream(e,{flags:"a"})}serialize(e){return _r(e,2)+`
|
|
1092
1092
|
`}shutdown(){return new Promise(e=>{this.writeStream.end(e)})}},LX=class extends J6{export(e,r){let n=e.map(o=>this.serialize(o)).join("");this.writeStream.write(n,o=>{r({code:o?K1.ExportResultCode.FAILED:K1.ExportResultCode.SUCCESS,error:o||void 0})})}},MX=class extends J6{export(e,r){let n=e.map(o=>this.serialize(o)).join("");this.writeStream.write(n,o=>{r({code:o?K1.ExportResultCode.FAILED:K1.ExportResultCode.SUCCESS,error:o||void 0})})}},BX=class extends J6{export(e,r){let n=this.serialize(e);this.writeStream.write(n,o=>{r({code:o?K1.ExportResultCode.FAILED:K1.ExportResultCode.SUCCESS,error:o||void 0})})}getPreferredAggregationTemporality(){return COt.AggregationTemporality.CUMULATIVE}async forceFlush(){return Promise.resolve()}};var eVi=Me(as(),1),k3t=Me(g2t(),1),N3t=Me(uPt(),1),D3t=Me(P3t(),1),Xv=Me(xt(),1);var SB=class extends k3t.TraceExporter{constructor(e,r){super({projectId:e,credentials:r,resourceFilter:/^gcp\./})}},TB=class extends N3t.MetricExporter{constructor(e,r){super({projectId:e,credentials:r,prefix:"custom.googleapis.com/gemini_cli"})}export(e,r){super.export(e,n=>{if(n.code===Xv.ExportResultCode.FAILED&&n.error){let o=n.error.message||String(n.error);if(process.env.GEMINI_STRICT_TELEMETRY_LIMITS==="true"&&o.includes("written more frequently than the maximum sampling period")){r({code:Xv.ExportResultCode.SUCCESS});return}}r(n)})}};function bB(t,e=2e5){if(typeof t=="string")return t.length>e?t.substring(0,e)+"... (truncated due to size)":t;if(Array.isArray(t))return t.map(r=>bB(r,e));if(t!==null&&typeof t=="object"){let r={};for(let[n,o]of Object.entries(t))r[n]=bB(o,e);return r}return t}var CB=class{logging;log;pendingWrites=[];constructor(e,r){this.logging=new D3t.Logging({projectId:e,credentials:r}),this.log=this.logging.log("gemini_cli")}export(e,r){try{let n=e.map(s=>{let c={...s.attributes,...s.resource?.attributes,message:s.body},u=process.env.GEMINI_STRICT_TELEMETRY_LIMITS==="true",d=c;if(u){let a=bB(c,1e4),p=JSON.stringify(a);p&&p.length>1e5&&(a=bB(c,2e3),p=JSON.stringify(a),p&&p.length>1e5&&(a=bB(c,5e3),p=JSON.stringify(a),p&&p.length>1e5&&(a={_warning:"Payload heavily truncated due to strict limits",data:p.substring(0,5e4)+"... (truncated)"}))),d=a}return this.log.entry({severity:this.mapSeverityToCloudLogging(s.severityNumber),timestamp:new Date((0,Xv.hrTimeToMilliseconds)(s.hrTime)),resource:{type:"global",labels:{project_id:this.logging.projectId}}},d)}),o=this.log.write(n).then(()=>{r({code:Xv.ExportResultCode.SUCCESS})}).catch(s=>{r({code:Xv.ExportResultCode.FAILED,error:s})}).finally(()=>{let s=this.pendingWrites.indexOf(o);s>-1&&this.pendingWrites.splice(s,1)});this.pendingWrites.push(o)}catch(n){r({code:Xv.ExportResultCode.FAILED,error:n})}}async forceFlush(){this.pendingWrites.length>0&&await Promise.all(this.pendingWrites)}async shutdown(){await this.forceFlush(),this.pendingWrites=[]}mapSeverityToCloudLogging(e){return e?e>=21?"CRITICAL":e>=17?"ERROR":e>=13?"WARNING":e>=9?"INFO":e>=5?"DEBUG":"DEFAULT":"DEFAULT"}};function tR(t){if(t!==void 0)return t==="true"||t==="1"}function L3t(t){if(t!==void 0){if(t==="local"||t==="local")return"local";if(t==="gcp"||t==="gcp")return"gcp"}}async function d_n(t){let e=t.argv??{},r=t.env??{},n=t.settings??{},o=e.telemetry??tR(r.GEMINI_TELEMETRY_ENABLED)??n.enabled,s=tR(r.GEMINI_TELEMETRY_TRACES_ENABLED)??n.traces,c=e.telemetryTarget??r.GEMINI_TELEMETRY_TARGET??n.target,u=L3t(c);if(c!==void 0&&u===void 0)throw new Fw(`Invalid telemetry target: ${String(c)}. Valid values are: local, gcp`);let d=e.telemetryOtlpEndpoint??r.GEMINI_TELEMETRY_OTLP_ENDPOINT??r.OTEL_EXPORTER_OTLP_ENDPOINT??n.otlpEndpoint,l=e.telemetryOtlpProtocol??r.GEMINI_TELEMETRY_OTLP_PROTOCOL??n.otlpProtocol,a=["grpc","http"].find(y=>y===l);if(l!==void 0&&a===void 0)throw new Fw(`Invalid telemetry OTLP protocol: ${String(l)}. Valid values are: grpc, http`);let p=e.telemetryLogPrompts??tR(r.GEMINI_TELEMETRY_LOG_PROMPTS)??n.logPrompts,f=e.telemetryOutfile??r.GEMINI_TELEMETRY_OUTFILE??n.outfile,g=tR(r.GEMINI_TELEMETRY_USE_COLLECTOR)??n.useCollector;return{enabled:o,traces:s,target:u,otlpEndpoint:d,otlpProtocol:a,logPrompts:p,outfile:f,useCollector:g,useCliAuth:tR(r.GEMINI_TELEMETRY_USE_CLI_AUTH)??n.useCliAuth}}var Kke=Me(Eh(),1);function Xke(t,e){B.debug("Conseca Policy Generation Event:",e);let r=gt.getInstance(t);if(r){let s=[];t.getTelemetryLogPromptsEnabled()&&s.push({gemini_cli_key:165,value:_r(e.user_prompt)},{gemini_cli_key:164,value:_r(e.trusted_content)},{gemini_cli_key:161,value:_r(e.policy)}),e.error&&s.push({gemini_cli_key:166,value:e.error}),r.enqueueLogEvent(r.createLogEvent("conseca_policy_generation",s))}if(!Ote())return;let n=Kke.logs.getLogger(vt),o={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};n.emit(o)}function Zke(t,e){B.debug("Conseca Verdict Event:",e);let r=gt.getInstance(t);if(r){let s=[{gemini_cli_key:162,value:_r(e.verdict)}];t.getTelemetryLogPromptsEnabled()&&s.push({gemini_cli_key:165,value:_r(e.user_prompt)},{gemini_cli_key:161,value:_r(e.policy)},{gemini_cli_key:14,value:_r(e.tool_call)},{gemini_cli_key:163,value:e.verdict_rationale}),e.error&&s.push({gemini_cli_key:166,value:e.error}),r.enqueueLogEvent(r.createLogEvent("conseca_verdict",s))}if(!Ote())return;let n=Kke.logs.getLogger(vt),o={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};n.emit(o)}Be();il();import{EventEmitter as b_n}from"node:events";var eNe="**",M3t="**";function Ite(t){let e=t.indexOf(eNe);if(e===-1)return{subject:"",description:t.trim()};let r=t.indexOf(M3t,e+eNe.length);if(r===-1)return{subject:"",description:t.trim()};let n=t.substring(e+eNe.length,r).trim(),o=(t.substring(0,e)+t.substring(r+M3t.length)).trim();return{subject:n,description:o}}import rR from"node:path";import*as oa from"node:fs";import*as jy from"node:fs/promises";import Fy from"node:path";var p_n="logs",f_n="tool-outputs";function B3t(t){if(!t||t==="."||t==="..")throw new Error(`Invalid sessionId: ${t}`);let e=ns(t);if(!e)throw new Error(`Invalid sessionId after sanitization: ${t}`);return e}async function Rte(t,e){try{let r=B3t(t),n=Fy.join(e,p_n),o=Fy.join(n,`session-${r}.jsonl`);await jy.unlink(o).catch(d=>{if(d.code!=="ENOENT")throw d});let s=Fy.join(e,f_n),c=Fy.join(s,`session-${r}`);await jy.rm(c,{recursive:!0,force:!0}).catch(d=>{if(d.code!=="ENOENT")throw d});let u=Fy.join(e,r);await jy.rm(u,{recursive:!0,force:!0}).catch(d=>{if(d.code!=="ENOENT")throw d})}catch(r){B.error(`Error deleting session artifacts for ${t}:`,r)}}async function U3t(t,e,r){let n=B3t(t),o=Fy.join(e,n);if(!o.startsWith(e+Fy.sep))throw new Error(`Dangerous subagent directory path: ${o}`);try{let s=await jy.readdir(o,{withFileTypes:!0}).catch(c=>{if(c.code==="ENOENT")return[];throw c});for(let c of s)if(c.isFile()&&(c.name.endsWith(".json")||c.name.endsWith(".jsonl"))){let u=Fy.basename(c.name,Fy.extname(c.name));await Rte(u,r)}await jy.rm(o,{recursive:!0,force:!0}).catch(c=>{if(c.code!=="ENOENT")throw c})}catch(s){B.error(`Error cleaning up subagents for parent ${t}:`,s),await jy.rm(o,{recursive:!0,force:!0}).catch(()=>{})}}import h_n from"node:readline";import{randomUUID as g_n}from"node:crypto";var Zv="session-",EVi=50,vVi=50*1024;var F3t="Chat recording disabled: No space left on device. The conversation will continue but will not be saved to disk. Free up disk space and restart to enable recording.";function nR(t,e){return t!==null&&typeof t=="object"&&e in t}function iR(t,e){return nR(t,e)&&typeof t[e]=="string"}function m_n(t,e){return nR(t,e)&&t[e]!==null&&typeof t[e]=="object"}function y_n(t){return iR(t,"$rewindTo")}function A_n(t){return iR(t,"id")}function E_n(t){return m_n(t,"$set")}function v_n(t){return iR(t,"sessionId")&&iR(t,"projectHash")}function tNe(t){return iR(t,"text")}function j3t(t){return iR(t,"sessionId")}async function e_(t,e){if(!oa.existsSync(t))return null;try{let r=oa.createReadStream(t),n=h_n.createInterface({input:r,crlfDelay:1/0}),o={},s=new Map,c=[],u=new Map,d=!1,l=!1,a;for await(let _ of n)if(_.trim())try{let b=JSON.parse(_);if(y_n(b)){d&&(l=!0);let T=b.$rewindTo;if(e?.metadataOnly){let O=c.indexOf(T);if(O!==-1){let k=c.splice(O);for(let N of k)u.delete(N)}else c.length=0,u.clear()}else{let O=!1,k=[];for(let[N]of s)N===T&&(O=!0),O&&k.push(N);if(O)for(let N of k)s.delete(N);else s.clear()}}else if(A_n(b)){d&&(l=!0);let T=b.id,O=nR(b,"type")&&b.type==="user",k=nR(b,"type")&&(b.type==="user"||b.type==="gemini");if(e?.metadataOnly&&(c.push(T),u.set(T,{isUser:O,isUserOrAssistant:k})),!a&&O&&nR(b,"content")&&b.content){let N=b.content;Array.isArray(N)?a=N.map(D=>tNe(D)?D.text:"").join(""):typeof N=="string"&&(a=N)}if(!e?.metadataOnly&&(s.set(T,b),e?.maxMessages&&s.size>e.maxMessages)){let N=s.keys().next().value;typeof N=="string"&&s.delete(N)}}else E_n(b)?(nR(b.$set,"memoryScratchpad")&&(d=!!b.$set.memoryScratchpad,l=!1),o={...o,...b.$set}):v_n(b)&&(o={...o,...b})}catch{}if(!o.sessionId||!o.projectHash)return await __n(t,e);let p=Array.isArray(o.messages)?o.messages:[],f=p.length>0?p:Array.from(s.values()),g=p.find(_=>_.type==="user")??null,y=a;if(!y&&g){let _=g.content;Array.isArray(_)?y=_.map(b=>tNe(b)?b.text:"").join(""):typeof _=="string"&&(y=_)}let E=e?.metadataOnly?Array.from(u.values()).filter(_=>_.isUser).length:f.filter(_=>_.type==="user").length,v=e?.metadataOnly?Array.from(u.values()).some(_=>_.isUserOrAssistant):f.some(_=>_.type==="user"||_.type==="gemini");return{sessionId:o.sessionId,projectHash:o.projectHash,startTime:o.startTime||new Date().toISOString(),lastUpdated:o.lastUpdated||new Date().toISOString(),summary:o.summary,memoryScratchpad:o.memoryScratchpad,directories:o.directories,kind:o.kind,messages:e?.metadataOnly?[]:f,messageCount:e?.metadataOnly?p.length||c.length:f.length,userMessageCount:e?.metadataOnly&&p.length>0?p.filter(_=>_.type==="user").length:E,memoryScratchpadIsStale:d?l:void 0,firstUserMessage:y,hasUserOrAssistantMessage:e?.metadataOnly&&p.length>0?p.some(_=>_.type==="user"||_.type==="gemini"):v}}catch(r){return B.error("Error loading conversation record from JSONL:",r),null}}var Pte=class{conversationFile=null;cachedConversation=null;sessionId;projectHash;kind;queuedThoughts=[];queuedTokens=null;context;constructor(e){this.context=e,this.sessionId=e.promptId,this.projectHash=IJe(e.config.getProjectRoot())}async initialize(e,r){try{if(this.kind=r,e){this.conversationFile=e.filePath,this.sessionId=e.conversation.sessionId,this.kind=e.conversation.kind;let n=await e_(this.conversationFile);if(n){if(this.cachedConversation=n,this.projectHash=this.cachedConversation.projectHash,this.conversationFile.endsWith(".json")){this.conversationFile=this.conversationFile+"l";let o={sessionId:this.sessionId,projectHash:this.projectHash,startTime:this.cachedConversation.startTime,lastUpdated:this.cachedConversation.lastUpdated,kind:this.cachedConversation.kind,directories:this.cachedConversation.directories,summary:this.cachedConversation.summary};this.appendRecord(o);for(let s of this.cachedConversation.messages)this.appendRecord(s);this.cachedConversation.memoryScratchpad&&this.appendRecord({$set:{memoryScratchpad:this.cachedConversation.memoryScratchpad}})}this.updateMetadata({sessionId:this.sessionId})}else throw new Error("Failed to load resumed session data from file")}else{this.sessionId=this.context.promptId;let n=rR.join(this.context.config.storage.getProjectTempDir(),"chats");if(this.kind==="subagent"&&this.context.parentSessionId){let l=ns(this.context.parentSessionId);if(!l)throw new Error(`Invalid parentSessionId after sanitization: ${this.context.parentSessionId}`);n=rR.join(n,l)}oa.mkdirSync(n,{recursive:!0});let o=new Date().toISOString().slice(0,16).replace(/:/g,"-"),s=ns(this.sessionId);if(!s)throw new Error(`Invalid sessionId after sanitization: ${this.sessionId}`);let c;this.kind==="subagent"?c=`${s}.jsonl`:c=`${Zv}${o}-${s.slice(0,8)}.jsonl`,this.conversationFile=rR.join(n,c);let u=this.kind==="subagent"?[...this.context.config.getWorkspaceContext()?.getDirectories()??[]]:void 0,d={sessionId:this.sessionId,projectHash:this.projectHash,startTime:new Date().toISOString(),lastUpdated:new Date().toISOString(),kind:this.kind,directories:u};this.appendRecord(d),this.cachedConversation={...d,messages:[]}}this.queuedThoughts=[],this.queuedTokens=null}catch(n){if(ut(n)&&n.code==="ENOSPC"){this.conversationFile=null,B.warn(F3t);return}throw B.error("Error initializing chat recording service:",n),n}}appendRecord(e){if(this.conversationFile)try{let r=JSON.stringify(e)+`
|
|
1093
1093
|
`;oa.mkdirSync(rR.dirname(this.conversationFile),{recursive:!0}),oa.appendFileSync(this.conversationFile,r)}catch(r){if(ut(r)&&r.code==="ENOSPC")this.conversationFile=null,B.warn(F3t);else throw r}}updateMetadata(e){this.cachedConversation&&(Object.assign(this.cachedConversation,e),this.appendRecord({$set:e}))}pushMessage(e){if(!this.cachedConversation)return;this.appendRecord(e);let r=this.cachedConversation.messages.findIndex(n=>n.id===e.id);r!==-1?this.cachedConversation.messages[r]=e:this.cachedConversation.messages.push(e)}getLastMessage(e){return e.messages.at(-1)}newMessage(e,r,n){return{id:g_n(),timestamp:new Date().toISOString(),type:e,content:r,displayContent:n}}recordMessage(e){if(!(!this.conversationFile||!this.cachedConversation))try{let r=this.newMessage(e.type,e.content,e.displayContent);r.type==="gemini"&&(r.thoughts=this.queuedThoughts,r.tokens=this.queuedTokens,r.model=e.model,this.queuedThoughts=[],this.queuedTokens=null),this.pushMessage(r),this.updateMetadata({lastUpdated:new Date().toISOString()})}catch(r){throw B.error("Error saving message to chat history.",r),r}}recordThought(e){this.conversationFile&&this.queuedThoughts.push({...e,timestamp:new Date().toISOString()})}recordMessageTokens(e){if(!(!this.conversationFile||!this.cachedConversation))try{let r={input:e.promptTokenCount??0,output:e.candidatesTokenCount??0,cached:e.cachedContentTokenCount??0,thoughts:e.thoughtsTokenCount??0,tool:e.toolUsePromptTokenCount??0,total:e.totalTokenCount??0},n=this.getLastMessage(this.cachedConversation);n&&n.type==="gemini"&&!n.tokens?(n.tokens=r,this.queuedTokens=null,this.pushMessage(n)):this.queuedTokens=r}catch(r){throw B.error("Error updating message tokens in chat history.",r),r}}recordToolCalls(e,r){if(!this.conversationFile||!this.cachedConversation)return;let n=this.context.toolRegistry,o=r.map(s=>{let c=n.getTool(s.name);return{...s,displayName:c?.displayName||s.name,description:s.description?.trim()||c?.description||"",renderOutputAsMarkdown:c?.isOutputMarkdown||!1}});try{let s=this.getLastMessage(this.cachedConversation);if(!s||s.type!=="gemini"||this.queuedThoughts.length>0){let c={...this.newMessage("gemini",""),type:"gemini",toolCalls:o,thoughts:this.queuedThoughts,model:e};this.queuedThoughts.length>0&&(c.thoughts=this.queuedThoughts,this.queuedThoughts=[]),this.queuedTokens&&(c.tokens=this.queuedTokens,this.queuedTokens=null),this.pushMessage(c)}else{s.toolCalls||(s.toolCalls=[]);let c=[...s.toolCalls];for(let u of o){let d=c.findIndex(l=>l.id===u.id);d!==-1?c[d]={...c[d],...u}:c.push(u)}s.toolCalls=c,this.pushMessage(s)}}catch(s){throw B.error("Error adding tool call to message in chat history.",s),s}}saveSummary(e){if(this.conversationFile)try{this.updateMetadata({summary:e})}catch(r){B.error("Error saving summary to chat history.",r)}}recordDirectories(e){if(this.conversationFile)try{this.updateMetadata({directories:[...e]})}catch(r){B.error("Error saving directories to chat history.",r)}}getConversation(){return this.conversationFile?this.cachedConversation:null}getConversationFilePath(){return this.conversationFile}async deleteSession(e){try{let r=this.context.config.storage.getProjectTempDir(),n=rR.join(r,"chats"),o=this.deriveShortId(e);if(!await oa.promises.stat(n).catch(()=>null))return;let s=await this.getMatchingSessionFiles(n,o);for(let c of s)await this.deleteSessionAndArtifacts(n,c,r)}catch(r){throw B.error("Error deleting session file.",r),r}}deriveShortId(e){let r=e;if(e.startsWith(Zv)){let o=e.replace(/\.jsonl?$/,"").split("-");r=o[o.length-1]}else if(e.length>=8)r=e.slice(0,8);else throw new Error("Invalid sessionId or basename provided for deletion");if(r.length!==8)throw new Error("Derived shortId must be exactly 8 characters");return r}async getMatchingSessionFiles(e,r){return(await oa.promises.readdir(e)).filter(o=>o.startsWith(Zv)&&(o.endsWith(`-${r}.json`)||o.endsWith(`-${r}.jsonl`)))}async deleteSessionAndArtifacts(e,r,n){let o=rR.join(e,r),s;try{let u=Buffer.alloc(4096),d,l;try{l=await oa.promises.open(o,"r");let{bytesRead:a}=await l.read(u,0,4096,0);if(a>0){let p=u.toString("utf8",0,a),f=p.indexOf(`
|
|
1094
1094
|
`);d=f!==-1?p.substring(0,f):p;try{let g=JSON.parse(d);j3t(g)&&(s=g.sessionId)}catch{}}}finally{l!==void 0&&await l.close()}if(!s)try{let a=await oa.promises.readFile(o,"utf8"),p=JSON.parse(a);j3t(p)&&(s=p.sessionId)}catch{}s&&(await Rte(s,n),await U3t(s,e,n))}catch(c){B.error(`Error deleting artifacts for session file ${r}:`,c)}finally{try{await oa.promises.unlink(o)}catch(c){ut(c)&&c.code!=="ENOENT"&&B.error(`Error unlinking session file ${r}:`,c)}}}async deleteCurrentSessionAsync(){if(this.conversationFile)try{let e=this.context.config.storage.getProjectTempDir();await oa.promises.unlink(this.conversationFile).catch(()=>{}),await Rte(this.sessionId,e)}catch(e){throw B.error("Error deleting current session.",e),e}}rewindTo(e){if(!this.conversationFile||!this.cachedConversation)return null;let r=this.cachedConversation.messages.findIndex(n=>n.id===e);return r===-1?(B.error("Message to rewind to not found in conversation history"),this.cachedConversation):(this.cachedConversation.messages=this.cachedConversation.messages.slice(0,r),this.appendRecord({$rewindTo:e}),this.cachedConversation)}updateMessagesFromHistory(e){if(!(!this.conversationFile||!this.cachedConversation))try{let r=new Map;for(let n of e)if(n.role==="user"&&n.parts){let o=n.parts.map(c=>c.functionResponse?.id).filter(c=>!!c);if(o.length===0)continue;let s=o[0];for(let c of n.parts)c.functionResponse?.id&&(s=c.functionResponse.id),r.has(s)||r.set(s,[]),r.get(s).push(c)}for(let n of this.cachedConversation.messages){let o=!1;if(n.type==="gemini"&&n.toolCalls)for(let s of n.toolCalls){let c=r.get(s.id);c!==void 0&&(s.result=c,o=!0)}o&&this.pushMessage(n)}}catch(r){throw B.error("Error updating conversation history from memory.",r),r}}};async function __n(t,e){try{let r=await oa.promises.readFile(t,"utf8"),n=JSON.parse(r);if((s=>typeof s=="object"&&s!==null&&"sessionId"in s)(n)){let s=n;if(e?.metadataOnly){let c,u=s.messages?.find(d=>d.type==="user");if(u){let d=u.content;Array.isArray(d)?c=d.map(l=>tNe(l)?l.text:"").join(""):typeof d=="string"&&(c=d)}return{...s,messages:[],messageCount:s.messages?.length||0,userMessageCount:s.messages?.filter(d=>d.type==="user").length||0,firstUserMessage:c,hasUserOrAssistantMessage:s.messages?.some(d=>d.type==="user"||d.type==="gemini")||!1}}return{...s,userMessageCount:s.messages?.filter(c=>c.type==="user").length||0,hasUserOrAssistantMessage:s.messages?.some(c=>c.type==="user"||c.type==="gemini")||!1}}}catch{}return null}var Q3t=()=>({totalRequests:0,totalErrors:0,totalLatencyMs:0,tokens:{input:0,prompt:0,candidates:0,total:0,cached:0,thoughts:0,tool:0}}),S_n=()=>({api:{totalRequests:0,totalErrors:0,totalLatencyMs:0},tokens:{input:0,prompt:0,candidates:0,total:0,cached:0,thoughts:0,tool:0},roles:{}}),G3t=()=>({models:{},tools:{totalCalls:0,totalSuccess:0,totalFail:0,totalDurationMs:0,totalDecisions:{accept:0,reject:0,modify:0,auto_accept:0},byName:{}},files:{totalLinesAdded:0,totalLinesRemoved:0}}),rNe=class extends b_n{#e=G3t();#t=0;addEvent(e){switch(e["event.name"]){case VL:this.processApiResponse(e);break;case qL:this.processApiError(e);break;case GL:this.processToolCall(e);break;default:return}this.emit("update",{metrics:this.#e,lastPromptTokenCount:this.#t})}getMetrics(){return this.#e}getLastPromptTokenCount(){return this.#t}setLastPromptTokenCount(e){this.#t=e,this.emit("update",{metrics:this.#e,lastPromptTokenCount:this.#t})}clear(e){this.#e=G3t(),this.#t=0,this.emit("clear",e),this.emit("update",{metrics:this.#e,lastPromptTokenCount:this.#t})}hydrate(e){this.clear(e.sessionId);let r=0;for(let n of e.messages)if(n.type==="gemini"){let o=n.model||"unknown",s=this.getOrCreateModelMetrics(o);if(s.api.totalRequests++,n.tokens&&(s.tokens.prompt+=n.tokens.input,s.tokens.candidates+=n.tokens.output,s.tokens.total+=n.tokens.total,s.tokens.cached+=n.tokens.cached,s.tokens.thoughts+=n.tokens.thoughts||0,s.tokens.tool+=n.tokens.tool||0,s.tokens.input=Math.max(0,s.tokens.prompt-s.tokens.cached),r=n.tokens.total),n.toolCalls)for(let c of n.toolCalls){this.#e.tools.totalCalls++,c.status==="success"?this.#e.tools.totalSuccess++:c.status==="error"&&this.#e.tools.totalFail++,this.#e.tools.byName[c.name]||(this.#e.tools.byName[c.name]={count:0,success:0,fail:0,durationMs:0,decisions:{accept:0,reject:0,modify:0,auto_accept:0}});let u=this.#e.tools.byName[c.name];u.count++,c.status==="success"?u.success++:c.status==="error"&&u.fail++}}this.#t=r,this.emit("update",{metrics:this.#e,lastPromptTokenCount:this.#t})}getOrCreateModelMetrics(e){return this.#e.models[e]||(this.#e.models[e]=S_n()),this.#e.models[e]}processApiResponse(e){let r=this.getOrCreateModelMetrics(e.model);if(r.api.totalRequests++,r.api.totalLatencyMs+=e.duration_ms,r.tokens.prompt+=e.usage.input_token_count,r.tokens.candidates+=e.usage.output_token_count,r.tokens.total+=e.usage.total_token_count,r.tokens.cached+=e.usage.cached_content_token_count,r.tokens.thoughts+=e.usage.thoughts_token_count,r.tokens.tool+=e.usage.tool_token_count,r.tokens.input=Math.max(0,r.tokens.prompt-r.tokens.cached),e.role){r.roles[e.role]||(r.roles[e.role]=Q3t());let n=r.roles[e.role];n.totalRequests++,n.totalLatencyMs+=e.duration_ms,n.tokens.prompt+=e.usage.input_token_count,n.tokens.candidates+=e.usage.output_token_count,n.tokens.total+=e.usage.total_token_count,n.tokens.cached+=e.usage.cached_content_token_count,n.tokens.thoughts+=e.usage.thoughts_token_count,n.tokens.tool+=e.usage.tool_token_count,n.tokens.input=Math.max(0,n.tokens.prompt-n.tokens.cached)}}processApiError(e){let r=this.getOrCreateModelMetrics(e.model);if(r.api.totalRequests++,r.api.totalErrors++,r.api.totalLatencyMs+=e.duration_ms,e.role){r.roles[e.role]||(r.roles[e.role]=Q3t());let n=r.roles[e.role];n.totalRequests++,n.totalErrors++,n.totalLatencyMs+=e.duration_ms}}processToolCall(e){let{tools:r,files:n}=this.#e;r.totalCalls++,r.totalDurationMs+=e.duration_ms,e.success?r.totalSuccess++:r.totalFail++,r.byName[e.function_name]||(r.byName[e.function_name]={count:0,success:0,fail:0,durationMs:0,decisions:{accept:0,reject:0,modify:0,auto_accept:0}});let o=r.byName[e.function_name];o.count++,o.durationMs+=e.duration_ms,e.success?o.success++:o.fail++,e.decision&&(r.totalDecisions[e.decision]++,o.decisions[e.decision]++),e.metadata&&(e.metadata.model_added_lines!==void 0&&(n.totalLinesAdded+=e.metadata.model_added_lines),e.metadata.model_removed_lines!==void 0&&(n.totalLinesRemoved+=e.metadata.model_removed_lines))}},Qy=new rNe;var T_n="gemini_cli.overage_menu_shown",q3t=class{"event.name";"event.timestamp";model;credit_balance;overage_strategy;constructor(e,r,n){this["event.name"]="overage_menu_shown",this["event.timestamp"]=new Date().toISOString(),this.model=e,this.credit_balance=r,this.overage_strategy=n}toOpenTelemetryAttributes(e){return{...pt(e),"event.name":T_n,"event.timestamp":this["event.timestamp"],model:this.model,credit_balance:this.credit_balance,overage_strategy:this.overage_strategy}}toLogBody(){return`Overage menu shown for model ${this.model} with ${this.credit_balance} credits available.`}},C_n="gemini_cli.overage_option_selected",kte=class{"event.name";"event.timestamp";model;selected_option;credit_balance;constructor(e,r,n){this["event.name"]="overage_option_selected",this["event.timestamp"]=new Date().toISOString(),this.model=e,this.selected_option=r,this.credit_balance=n}toOpenTelemetryAttributes(e){return{...pt(e),"event.name":C_n,"event.timestamp":this["event.timestamp"],model:this.model,selected_option:this.selected_option,credit_balance:this.credit_balance}}toLogBody(){return`Overage option '${this.selected_option}' selected for model ${this.model}.`}},w_n="gemini_cli.empty_wallet_menu_shown",Nte=class{"event.name";"event.timestamp";model;constructor(e){this["event.name"]="empty_wallet_menu_shown",this["event.timestamp"]=new Date().toISOString(),this.model=e}toOpenTelemetryAttributes(e){return{...pt(e),"event.name":w_n,"event.timestamp":this["event.timestamp"],model:this.model}}toLogBody(){return`Empty wallet menu shown for model ${this.model}.`}},x_n="gemini_cli.credit_purchase_click",Dte=class{"event.name";"event.timestamp";source;model;constructor(e,r){this["event.name"]="credit_purchase_click",this["event.timestamp"]=new Date().toISOString(),this.source=e,this.model=r}toOpenTelemetryAttributes(e){return{...pt(e),"event.name":x_n,"event.timestamp":this["event.timestamp"],source:this.source,model:this.model}}toLogBody(){return`Credit purchase clicked from ${this.source} for model ${this.model}.`}},O_n="gemini_cli.credits_used",oR=class{"event.name";"event.timestamp";model;credits_consumed;credits_remaining;constructor(e,r,n){this["event.name"]="credits_used",this["event.timestamp"]=new Date().toISOString(),this.model=e,this.credits_consumed=r,this.credits_remaining=n}toOpenTelemetryAttributes(e){return{...pt(e),"event.name":O_n,"event.timestamp":this["event.timestamp"],model:this.model,credits_consumed:this.credits_consumed,credits_remaining:this.credits_remaining}}toLogBody(){return`${this.credits_consumed} credits consumed for model ${this.model}. ${this.credits_remaining} remaining.`}},I_n="gemini_cli.api_key_updated",V3t=class{"event.name";"event.timestamp";previous_auth_type;new_auth_type;constructor(e,r){this["event.name"]="api_key_updated",this["event.timestamp"]=new Date().toISOString(),this.previous_auth_type=e,this.new_auth_type=r}toOpenTelemetryAttributes(e){return{...pt(e),"event.name":I_n,"event.timestamp":this["event.timestamp"],previous_auth_type:this.previous_auth_type,new_auth_type:this.new_auth_type}}toLogBody(){return`Auth type changed from ${this.previous_auth_type} to ${this.new_auth_type}.`}};import OB from"node:v8";import r_ from"node:process";var t_=t=>t/1048576,$3t=t=>{let e=t/1073741824;return t<1048576?`${(t/1024).toFixed(1)} KB`:t<1073741824?`${t_(t).toFixed(1)} MB`:`${e.toFixed(2)} GB`};var Lte=class{lastActivityTime=Date.now();idleThresholdMs;constructor(e=3e4){this.idleThresholdMs=e}recordActivity(){this.lastActivityTime=Date.now()}isUserActive(){return Date.now()-this.lastActivityTime<this.idleThresholdMs}getTimeSinceLastActivity(){return Date.now()-this.lastActivityTime}getLastActivityTime(){return this.lastActivityTime}},nNe=new Lte;function R_n(){return nNe}function P_n(){nNe.recordActivity()}function iNe(){return nNe.isUserActive()}var wB=class{waterMarks=new Map;lastUpdateTimes=new Map;growthThresholdPercent;constructor(e=5){if(e<0)throw new Error("growthThresholdPercent must be non-negative.");this.growthThresholdPercent=e}shouldRecordMetric(e,r){let n=Date.now();this.lastUpdateTimes.set(e,n);let o=this.waterMarks.get(e)||0;if(o===0)return this.waterMarks.set(e,r),this.lastUpdateTimes.set(e,n),!0;let s=o*(1+this.growthThresholdPercent/100);return r>s?(this.waterMarks.set(e,r),this.lastUpdateTimes.set(e,n),!0):!1}getHighWaterMark(e){return this.waterMarks.get(e)||0}getAllHighWaterMarks(){return Object.fromEntries(this.waterMarks)}resetHighWaterMark(e){this.waterMarks.delete(e),this.lastUpdateTimes.delete(e)}resetAllHighWaterMarks(){this.waterMarks.clear(),this.lastUpdateTimes.clear()}cleanup(e=36e5){let r=Date.now()-e;for(let[n,o]of this.lastUpdateTimes.entries())o<r&&(this.lastUpdateTimes.delete(n),this.waterMarks.delete(n))}};var xB=class t{lastRecordTimes=new Map;minIntervalMs;static HIGH_PRIORITY_DIVISOR=2;constructor(e=6e4){if(e<0)throw new Error("minIntervalMs must be non-negative.");this.minIntervalMs=e}shouldRecord(e,r=!1){let n=Date.now(),o=this.lastRecordTimes.get(e)||0,s=r?Math.round(this.minIntervalMs/t.HIGH_PRIORITY_DIVISOR):this.minIntervalMs;return n-o>=s?(this.lastRecordTimes.set(e,n),!0):!1}forceRecord(e){this.lastRecordTimes.set(e,Date.now())}getTimeUntilNextAllowed(e,r=!1){let n=Date.now(),o=this.lastRecordTimes.get(e)||0,s=r?Math.round(this.minIntervalMs/t.HIGH_PRIORITY_DIVISOR):this.minIntervalMs,c=o+s;return Math.max(0,c-n)}getStats(){let e=Array.from(this.lastRecordTimes.values());if(e.length===0)return{totalMetrics:0,oldestRecord:0,newestRecord:0,averageInterval:0};let r=Math.min(...e),n=Math.max(...e),o=n-r,s=e.length>1?o/(e.length-1):0;return{totalMetrics:e.length,oldestRecord:r,newestRecord:n,averageInterval:s}}reset(){this.lastRecordTimes.clear()}cleanup(e=36e5){let r=Date.now()-e;for(let[n,o]of this.lastRecordTimes.entries())o<r&&this.lastRecordTimes.delete(n)}};import k_n from"node:v8";import H3t from"node:path";import N_n from"node:fs";import D_n from"node:os";function oNe(){try{let e=`gemini-heap-${Date.now()}.heapsnapshot`,r=N_n.mkdtempSync(H3t.join(D_n.tmpdir(),"gemini-heap-")),n=H3t.join(r,e);return k_n.writeHeapSnapshot(n),n}catch(t){return B.error("Failed to capture heap snapshot:",t),null}}var Mte=class t{intervalId=null;isRunning=!1;lastSnapshot=null;lastCpuUsage=null;monitoringInterval=1e4;highWaterMarkTracker;rateLimiter;useEnhancedMonitoring=!0;lastCleanupTimestamp=Date.now();static STATE_CLEANUP_INTERVAL_MS=15*60*1e3;static STATE_CLEANUP_MAX_AGE_MS=60*60*1e3;constructor(){this.highWaterMarkTracker=new wB(5),this.rateLimiter=new xB(6e4)}start(e,r=1e4){!qA()||this.isRunning||(this.monitoringInterval=r,this.isRunning=!0,this.takeSnapshot("monitoring_start",e),this.intervalId=setInterval(()=>{this.checkAndRecordIfNeeded(e)},this.monitoringInterval).unref())}checkAndRecordIfNeeded(e){if(this.performPeriodicCleanup(),!this.useEnhancedMonitoring){this.takeSnapshot("periodic",e);return}if(!iNe())return;let r=this.getCurrentMemoryUsage(),n=this.highWaterMarkTracker.shouldRecordMetric("rss",r.rss),o=this.highWaterMarkTracker.shouldRecordMetric("heap_used",r.heapUsed),s=this.rateLimiter.shouldRecord("periodic_memory"),c=this.rateLimiter.shouldRecord("high_water_memory",!0);if((n||o)&&c){let u=n?"rss_growth":"heap_growth";this.takeSnapshot(u,e)}else s&&this.takeSnapshotWithoutRecording("periodic_check",e)}performPeriodicCleanup(){let e=Date.now();e-this.lastCleanupTimestamp<t.STATE_CLEANUP_INTERVAL_MS||(this.lastCleanupTimestamp=e,this.highWaterMarkTracker.cleanup(t.STATE_CLEANUP_MAX_AGE_MS),this.rateLimiter.cleanup(t.STATE_CLEANUP_MAX_AGE_MS))}stop(e){this.isRunning&&(this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null),e&&this.takeSnapshot("monitoring_stop",e),this.isRunning=!1)}takeSnapshot(e,r){let n=r_.memoryUsage(),o=OB.getHeapStatistics(),s={timestamp:Date.now(),heapUsed:n.heapUsed,heapTotal:n.heapTotal,external:n.external,rss:n.rss,arrayBuffers:n.arrayBuffers,heapSizeLimit:o.heap_size_limit};if(qA()){zx(r,s.heapUsed,{memory_type:"heap_used",component:e}),zx(r,s.heapTotal,{memory_type:"heap_total",component:e}),zx(r,s.external,{memory_type:"external",component:e}),zx(r,s.rss,{memory_type:"rss",component:e});let c=r_.cpuUsage(this.lastCpuUsage??void 0);this.lastCpuUsage=r_.cpuUsage(),zAe(r,c.user+c.system,{component:e})}return this.lastSnapshot=s,s}takeSnapshotWithoutRecording(e,r){let n=r_.memoryUsage(),o=OB.getHeapStatistics(),s={timestamp:Date.now(),heapUsed:n.heapUsed,heapTotal:n.heapTotal,external:n.external,rss:n.rss,arrayBuffers:n.arrayBuffers,heapSizeLimit:o.heap_size_limit};return this.highWaterMarkTracker.shouldRecordMetric("rss",s.rss),this.highWaterMarkTracker.shouldRecordMetric("heap_used",s.heapUsed),this.lastSnapshot=s,s}getCurrentMemoryUsage(){let e=r_.memoryUsage(),r=OB.getHeapStatistics();return{timestamp:Date.now(),heapUsed:e.heapUsed,heapTotal:e.heapTotal,external:e.external,rss:e.rss,arrayBuffers:e.arrayBuffers,heapSizeLimit:r.heap_size_limit}}getMemoryGrowth(){if(!this.lastSnapshot)return null;let e=this.getCurrentMemoryUsage();return{heapUsed:e.heapUsed-this.lastSnapshot.heapUsed,heapTotal:e.heapTotal-this.lastSnapshot.heapTotal,external:e.external-this.lastSnapshot.external,rss:e.rss-this.lastSnapshot.rss,arrayBuffers:e.arrayBuffers-this.lastSnapshot.arrayBuffers}}getHeapStatistics(){return OB.getHeapStatistics()}getHeapSpaceStatistics(){return OB.getHeapSpaceStatistics()}getProcessMetrics(){return{cpuUsage:r_.cpuUsage(),memoryUsage:r_.memoryUsage(),uptime:r_.uptime()}}recordComponentMemoryUsage(e,r,n){return this.takeSnapshot(n?`${r}_${n}`:r,e)}checkMemoryThreshold(e){let r=this.getCurrentMemoryUsage();return t_(r.heapUsed)>e}getMemoryUsageSummary(){let e=this.getCurrentMemoryUsage();return{heapUsedMB:Math.round(t_(e.heapUsed)*100)/100,heapTotalMB:Math.round(t_(e.heapTotal)*100)/100,externalMB:Math.round(t_(e.external)*100)/100,rssMB:Math.round(t_(e.rss)*100)/100,heapSizeLimitMB:Math.round(t_(e.heapSizeLimit)*100)/100}}setEnhancedMonitoring(e){this.useEnhancedMonitoring=e}getHighWaterMarkStats(){return this.highWaterMarkTracker.getAllHighWaterMarks()}getRateLimitingStats(){return this.rateLimiter.getStats()}forceRecordMemory(e,r="forced"){return this.rateLimiter.forceRecord("forced_memory"),this.takeSnapshot(r,e)}resetHighWaterMarks(){this.highWaterMarkTracker.resetAllHighWaterMarks()}captureHeapSnapshot(){return oNe()}destroy(){this.stop(),this.rateLimiter.reset(),this.highWaterMarkTracker.resetAllHighWaterMarks()}},sR=null;function sNe(){return sR||(sR=new Mte),sR}function IB(){return sR}function L_n(t,e){return sNe().takeSnapshot(e,t)}function aNe(t,e=1e4){sNe().start(t,e)}function M_n(t){sR&&sR.stop(t)}import B_n from"node:process";import{monitorEventLoopDelay as U_n}from"node:perf_hooks";var Bte=class{eventLoopHistogram=null;intervalId=null;isRunning=!1;start(e,r=1e4){!(B_n.env.GEMINI_EVENT_LOOP_MONITOR_ENABLED==="true")||!qA()||this.isRunning||(this.isRunning=!0,this.eventLoopHistogram=U_n({resolution:10}),this.eventLoopHistogram.enable(),this.intervalId=setInterval(()=>{this.takeSnapshot(e)},r).unref())}stop(){this.isRunning&&(this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null),this.eventLoopHistogram&&(this.eventLoopHistogram.disable(),this.eventLoopHistogram=null),this.isRunning=!1)}takeSnapshot(e){if(!this.eventLoopHistogram)return;let r=this.eventLoopHistogram.percentile(50)/1e6,n=this.eventLoopHistogram.percentile(95)/1e6,o=this.eventLoopHistogram.max/1e6;xL(e,r,{percentile:"p50",component:"event_loop_monitor"}),xL(e,n,{percentile:"p95",component:"event_loop_monitor"}),xL(e,o,{percentile:"max",component:"event_loop_monitor"})}},ST=null;function lNe(t,e){ST||(ST=new Bte),ST.start(t,e)}function F_n(){ST&&(ST.stop(),ST=null)}function j_n(){return ST}var cNe=(l=>(l.USER_INPUT_START="user_input_start",l.USER_INPUT_END="user_input_end",l.MESSAGE_ADDED="message_added",l.TOOL_CALL_SCHEDULED="tool_call_scheduled",l.TOOL_CALL_COMPLETED="tool_call_completed",l.STREAM_START="stream_start",l.STREAM_END="stream_end",l.HISTORY_UPDATED="history_updated",l.MANUAL_TRIGGER="manual_trigger",l))(cNe||{});var Q_n={enabled:!0,snapshotThrottleMs:1e3,maxEventBuffer:100,triggerActivities:["user_input_start","message_added","tool_call_scheduled","tool_call_completed","stream_start"]},Ute=class{listeners=new Set;eventBuffer=[];lastSnapshotTime=0;config;isActive=!1;memoryMonitoringListener=null;constructor(e=Q_n){this.config={...e}}start(e){!qA()||this.isActive||(this.isActive=!0,this.memoryMonitoringListener=r=>{this.handleMemoryMonitoringActivity(r,e)},this.addListener(this.memoryMonitoringListener),this.recordActivity("manual_trigger","activity_monitoring_start"))}stop(){this.isActive&&(this.isActive=!1,this.memoryMonitoringListener&&(this.removeListener(this.memoryMonitoringListener),this.memoryMonitoringListener=null),this.eventBuffer=[])}addListener(e){this.listeners.add(e)}removeListener(e){this.listeners.delete(e)}recordActivity(e,r,n){if(!this.isActive||!this.config.enabled)return;let o={type:e,timestamp:Date.now(),context:r,metadata:n};this.eventBuffer.push(o),this.eventBuffer.length>this.config.maxEventBuffer&&this.eventBuffer.shift(),this.listeners.forEach(s=>{try{s(o)}catch(c){B.debug("ActivityMonitor listener error:",c)}})}getRecentActivity(e){let r=[...this.eventBuffer];return e?r.slice(-e):r}getActivityStats(){let e={},r=Number.MAX_SAFE_INTEGER,n=0;for(let o of this.eventBuffer)e[o.type]=(e[o.type]||0)+1,r=Math.min(r,o.timestamp),n=Math.max(n,o.timestamp);return{totalEvents:this.eventBuffer.length,eventTypes:e,timeRange:this.eventBuffer.length>0?{start:r,end:n}:null}}updateConfig(e){this.config={...this.config,...e}}handleMemoryMonitoringActivity(e,r){if(!this.config.triggerActivities.includes(e.type))return;let n=Date.now();if(n-this.lastSnapshotTime<this.config.snapshotThrottleMs)return;this.lastSnapshotTime=n;let o=IB();if(o){let s=e.context?`activity_${e.type}_${e.context}`:`activity_${e.type}`;o.takeSnapshot(s,r)}}isMonitoringActive(){return this.isActive&&this.config.enabled}},aR=null;function z3t(t){return aR||(aR=new Ute(t)),aR}function G_n(){return aR}function q_n(t,e){z3t(e).start(t)}function V_n(){aR&&aR.stop()}Be();var $_n="gemini-cli",H_n="v1",z_n=new FinalizationRegistry(t=>{try{t()}catch(e){B.warn("Error in FinalizationRegistry callback for span cleanup",e)}});function Fte(t,e=1e4){if(typeof t=="string")return ql(t,e,`...[TRUNCATED: original length ${t.length}]`);if(typeof t=="object"&&t!==null){let r=_r(t);return ql(r,e,`...[TRUNCATED: original length ${r.length}]`)}if(typeof t=="number"||typeof t=="boolean")return t}function W_n(t){return typeof t=="object"&&t!==null&&Symbol.asyncIterator in t}async function cf(t,e){let{operation:r,logPrompts:n,sessionId:o,tracesEnabled:s,...c}=t;return c.attributes={...c.attributes,[xq]:o},BQ.getTracer($_n,H_n).startActiveSpan(r,c,async d=>{let l={name:r,attributes:{[P0e]:r,[_L]:vt,[bL]:Nnt,[xq]:o}},a=!1,p=()=>{if(!a){a=!0;try{if(s){if(n!==!1){if(l.input!==void 0){let g=Fte(l.input);g!==void 0&&d.setAttribute(Dnt,g)}if(l.output!==void 0){let g=Fte(l.output);g!==void 0&&d.setAttribute(Lnt,g)}}for(let[g,y]of Object.entries(l.attributes)){let E=Fte(y);E!==void 0&&d.setAttribute(g,E)}}else for(let[g,y]of Object.entries(l.attributes))if(g===P0e||g===_L||g===bL||g===xq){let E=Fte(y);E!==void 0&&d.setAttribute(g,E)}l.error?(d.setStatus({code:LD.ERROR,message:W3t(l.error)}),l.error instanceof Error&&d.recordException(l.error)):d.setStatus({code:LD.OK})}catch(g){fn.error("Error setting span attributes in endSpan",g),d.setStatus({code:LD.ERROR,message:`Error in endSpan: ${W3t(g)}`})}finally{d.end()}}},f=!1;try{let g=await e({metadata:l});if(W_n(g)){f=!0;let y=async function*(){try{yield*g}catch(v){throw l.error=v,v}finally{p()}}(),E=Object.assign(y,g);return z_n.register(E,p),E}return g}catch(g){throw l.error=g,g}finally{f||p()}})}function W3t(t){return t instanceof Error?t.message:typeof t=="string"?t:_r(t)}import{performance as Cg}from"node:perf_hooks";import*as n_ from"node:os";import*as uNe from"node:fs";var jte=class t{phases=new Map;static instance;constructor(){}static getInstance(){return t.instance||(t.instance=new t),t.instance}getStartMarkName(e){return`startup:${e}:start`}getEndMarkName(e){return`startup:${e}:end`}start(e,r){let n=this.phases.get(e);if(n&&!n.ended){B.warn(`[STARTUP] Cannot start phase '${e}': phase is already active. Call end() before starting again.`);return}let o=this.getStartMarkName(e);Cg.mark(o,{detail:r});let s={name:e,startCpuUsage:process.cpuUsage(),details:r,ended:!1};return this.phases.set(e,s),{end:c=>{this._end(s,c)}}}_end(e,r){if(e.ended){B.warn(`[STARTUP] Cannot end phase '${e.name}': phase was already ended.`);return}let n=this.getStartMarkName(e.name),o=this.getEndMarkName(e.name);if(Cg.getEntriesByName(n).length===0){B.warn(`[STARTUP] Cannot measure phase '${e.name}': start mark '${n}' not found (likely cleared by reset).`),e.ended=!0;return}Cg.mark(o,{detail:r}),Cg.measure(e.name,n,o),e.cpuUsage=process.cpuUsage(e.startCpuUsage),e.ended=!0,r&&(e.details={...e.details,...r})}flush(e){B.debug("[STARTUP] StartupProfiler.flush() called with",this.phases.size,"phases");let r={os_platform:n_.platform(),os_arch:n_.arch(),os_release:n_.release(),is_docker:uNe.existsSync("/.dockerenv")},n=Cg.getEntriesByType("measure");for(let s of this.phases.values()){if(!s.ended){B.warn(`[STARTUP] Phase '${s.name}' was started but never ended. Skipping metrics.`);continue}let c=n.find(u=>u.name===s.name);if(c&&s.cpuUsage){let u={...r,cpu_usage_user:s.cpuUsage.user,cpu_usage_system:s.cpuUsage.system,...s.details};B.debug("[STARTUP] Recording metric for phase:",s.name,"duration:",c.duration),HAe(e,c.duration,{phase:s.name,details:u})}else B.debug("[STARTUP] Skipping phase without measure:",s.name)}let o=[];for(let s of this.phases.values()){if(!s.ended)continue;let c=n.find(u=>u.name===s.name);c&&s.cpuUsage&&o.push({name:s.name,duration_ms:Math.round(c.duration),cpu_usage_user_usec:s.cpuUsage.user,cpu_usage_system_usec:s.cpuUsage.system,start_time_usec:Math.round((Cg.timeOrigin+c.startTime)*1e3),end_time_usec:Math.round((Cg.timeOrigin+c.startTime+c.duration)*1e3)})}o.length>0&&Y3t(e,new Wq(o,n_.platform(),n_.release(),uNe.existsSync("/.dockerenv")));for(let s of this.phases.keys()){let c=this.getStartMarkName(s),u=this.getEndMarkName(s);Cg.clearMarks(c),Cg.clearMarks(u),Cg.clearMeasures(s)}this.phases.clear()}},dNe=jte.getInstance();var Jke=(r=>(r.GCP="gcp",r.LOCAL="local",r))(Jke||{}),pNe="local",fNe="http://localhost:4317";var _Ne=class{error(e,...r){B.error(e,...r)}warn(e,...r){B.warn(e,...r)}info(e,...r){B.log(e,...r)}debug(e,...r){B.debug(e,...r)}verbose(e,...r){B.debug(e,...r)}};fn.setLogger(new _Ne,hKe.INFO);var PB,$te,Hte,i_,s_=!1,bNe=!1,kB,cR,uR,SNe=[],RB;function Ote(){return s_}function Vt(t){s_?t():SNe.push(t)}async function ibn(){if(s_)for(;SNe.length>0;){let t=SNe.shift();if(t)try{await t()}catch(e){B.error("Error executing buffered telemetry event",e)}}}function obn(t,e){if(!t)return;let r=t.replace(/^["']|["']$/g,"");try{let n=new URL(r);return e==="grpc"?n.origin:n.href}catch(n){fn.error("Invalid OTLP endpoint URL provided:",r,n);return}}async function Qte(t,e){if(!t.getTelemetryEnabled())return;if(s_){if(e?.client_email&&RB&&e.client_email!==RB){let y=`Telemetry credentials have changed (from ${RB} to ${e.client_email}), but telemetry cannot be re-initialized in this process. Please restart the CLI to use the new account for telemetry.`;B.error(y)}return}if(t.getTelemetryUseCollector()&&t.getTelemetryUseCliAuth()){B.error('Telemetry configuration error: "useCollector" and "useCliAuth" cannot both be true. CLI authentication is only supported with in-process exporters. Disabling telemetry.');return}if(t.getTelemetryUseCliAuth()&&!e){bNe||(bNe=!0,kB=async y=>{t.getTelemetryEnabled()&&t.getTelemetryUseCliAuth()&&(B.log("Telemetry reinit with credentials."),await Qte(t,y))},fV.on("post_auth",kB)),B.log("CLI auth is requested but no credentials, deferring telemetry initialization.");return}let r=(0,iMt.resourceFromAttributes)({[Rq.SERVICE_NAME]:vt,[Rq.SERVICE_VERSION]:process.version,"session.id":t.getSessionId()});cR||(cR=y=>{sMt(t,y)},ve.on("telemetry-keychain-availability",cR)),uR||(uR=y=>{aMt(t,y)},ve.on("telemetry-token-storage-type",uR));let n=t.getTelemetryOtlpEndpoint(),o=t.getTelemetryOtlpProtocol(),s=t.getTelemetryTarget(),c=t.getTelemetryUseCollector(),u=obn(n,o),d=t.getTelemetryOutfile(),l=!!u&&!d,a=process.env.OTLP_GOOGLE_CLOUD_PROJECT||process.env.GOOGLE_CLOUD_PROJECT,p=s==="gcp"&&!c,f,g;if(p)B.log("Creating GCP exporters with projectId:",a,"using",e?"provided credentials":"ADC"),f=new SB(a,e),g=new CB(a,e),i_=new o_.PeriodicExportingMetricReader({exporter:new TB(a,e),exportIntervalMillis:3e4});else if(l)if(o==="http"){let y=E=>{let v=new URL(u);return v.pathname=[v.pathname.replace(/\/$/,""),E].join("/"),v.href};f=new eMt.OTLPTraceExporter({url:y("v1/traces")}),g=new tMt.OTLPLogExporter({url:y("v1/logs")}),i_=new o_.PeriodicExportingMetricReader({exporter:new rMt.OTLPMetricExporter({url:y("v1/metrics")}),exportIntervalMillis:1e4})}else f=new K3t.OTLPTraceExporter({url:u,compression:XA.GZIP}),g=new X3t.OTLPLogExporter({url:u,compression:XA.GZIP}),i_=new o_.PeriodicExportingMetricReader({exporter:new Z3t.OTLPMetricExporter({url:u,compression:XA.GZIP}),exportIntervalMillis:1e4});else d?(f=new LX(d),g=new MX(d),i_=new o_.PeriodicExportingMetricReader({exporter:new BX(d),exportIntervalMillis:1e4})):(f=new zte.ConsoleSpanExporter,g=new Wte.ConsoleLogRecordExporter,i_=new o_.PeriodicExportingMetricReader({exporter:new o_.ConsoleMetricExporter,exportIntervalMillis:1e4}));$te=new zte.BatchSpanProcessor(f),Hte=new Wte.BatchLogRecordProcessor(g),PB=new nMt.NodeSDK({resource:r,spanProcessors:[$te],logRecordProcessors:[Hte],metricReader:i_,instrumentations:[new oMt.HttpInstrumentation]});try{PB.start(),t.getDebugMode()&&B.log("OpenTelemetry SDK started successfully."),RB=e?.client_email,Wnt(t);let y=process.env.GEMINI_MEMORY_MONITOR_INTERVAL;if(B.log(`[TELEMETRY] GEMINI_MEMORY_MONITOR_INTERVAL: ${y}`),y){let E=parseInt(y,10);if(!isNaN(E)&&E>0){aNe(t,E),lNe(t,E);let v=IB();v&&v.setEnhancedMonitoring(!1)}}s_=!0,ibn()}catch(y){B.error("Error starting OpenTelemetry SDK:",y)}process.on("SIGTERM",()=>{hNe(t)}),process.on("SIGINT",()=>{hNe(t)})}async function Y_n(t){if(!(!s_||!$te||!Hte))try{await Promise.all([$te.forceFlush(),Hte.forceFlush(),i_?i_.forceFlush():Promise.resolve()]),t.getDebugMode()&&B.log("OpenTelemetry SDK flushed successfully.")}catch(e){B.error("Error flushing SDK:",e)}}async function hNe(t,e=!0){if(!(!s_||!PB))try{gt.getInstance()?.shutdown(),await PB.shutdown(),t.getDebugMode()&&e&&B.log("OpenTelemetry SDK shut down successfully.")}catch(r){B.error("Error shutting down SDK:",r)}finally{s_=!1,PB=void 0,BQ.disable(),gKe.disable(),MQ.disable(),mKe.disable(),fn.disable(),kB&&(fV.off("post_auth",kB),kB=void 0),cR&&(ve.off("telemetry-keychain-availability",cR),cR=void 0),uR&&(ve.off("telemetry-token-storage-type",uR),uR=void 0),bNe=!1,RB=void 0}}function J_n(t,e){gt.getInstance(t)?.logStartSessionEvent(e),Vt(()=>{t.getExperimentsAsync().then(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)}).catch(r=>{B.error("Failed to log telemetry event",r)})})}function K_n(t,e){gt.getInstance(t)?.logNewPromptEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}function Gte(t,e){let r={...e,"event.name":GL,"event.timestamp":new Date().toISOString()};Qy.addEvent(r),gt.getInstance(t)?.logToolCallEvent(e),Vt(()=>{let n=Qt.logs.getLogger(vt),o={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};if(n.emit(o),BAe(t,e.duration_ms,{function_name:e.function_name,success:e.success,decision:e.decision,tool_type:e.tool_type}),e.metadata){let s=e.metadata.model_added_lines;typeof s=="number"&&s>0&&jAe(t,s,"added",{function_name:e.function_name});let c=e.metadata.model_removed_lines;typeof c=="number"&&c>0&&jAe(t,c,"removed",{function_name:e.function_name})}})}function lR(t,e){gt.getInstance(t)?.logToolOutputTruncatedEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}function lMt(t,e){gt.getInstance(t)?.logToolOutputMaskingEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}function dR(t,e){gt.getInstance(t)?.logFileOperationEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n),FAe(t,{operation:e.operation,lines:e.lines,mimetype:e.mimetype,extension:e.extension,programming_language:e.programming_language})})}function gNe(t,e){gt.getInstance(t)?.logApiRequestEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt);r.emit(e.toLogRecord(t)),r.emit(e.toSemanticLogRecord(t))})}function mNe(t,e){gt.getInstance(t)?.logFlashFallbackEvent(),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}function cMt(t,e){gt.getInstance(t)?.logRipgrepFallbackEvent(),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}function yNe(t,e){let r={...e,"event.name":qL,"event.timestamp":new Date().toISOString()};Qy.addEvent(r),gt.getInstance(t)?.logApiErrorEvent(e),Vt(()=>{let n=Qt.logs.getLogger(vt);n.emit(e.toLogRecord(t)),n.emit(e.toSemanticLogRecord(t)),UAe(t,e.duration_ms,{model:e.model,status_code:e.status_code,error_type:e.error_type}),Iq(t,e.duration_ms,{model:e.model,status_code:e.status_code,genAiAttributes:{...GA(e),"error.type":e.error_type||"unknown"}})})}function ANe(t,e){let r={...e,"event.name":VL,"event.timestamp":new Date().toISOString()};Qy.addEvent(r),gt.getInstance(t)?.logApiResponseEvent(e),Vt(()=>{let n=Qt.logs.getLogger(vt);n.emit(e.toLogRecord(t)),n.emit(e.toSemanticLogRecord(t));let o=GA(e);Iq(t,e.duration_ms,{model:e.model,status_code:e.status_code,genAiAttributes:o});let s=[{count:e.usage.input_token_count,type:"input"},{count:e.usage.output_token_count,type:"output"},{count:e.usage.cached_content_token_count,type:"cache"},{count:e.usage.thoughts_token_count,type:"thought"},{count:e.usage.tool_token_count,type:"tool"}];for(let{count:c,type:u}of s)WAe(t,c,{model:e.model,type:u,genAiAttributes:o})})}function TNe(t,e){gt.getInstance(t)?.logLoopDetectedEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}function uMt(t,e){gt.getInstance(t)?.logLoopDetectionDisabledEvent(),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}function dMt(t,e){gt.getInstance(t)?.logNextSpeakerCheck(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}function X_n(t,e){gt.getInstance(t)?.logSlashCommandEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}function Z_n(t,e){let r={...e,"event.name":hEe,"event.timestamp":new Date().toISOString()};Qy.addEvent(r),gt.getInstance(t)?.logRewindEvent(e),Vt(()=>{let n=Qt.logs.getLogger(vt),o={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};n.emit(o)})}function sbn(t,e){gt.getInstance(t)?.logIdeConnectionEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}function ebn(t,e){gt.getInstance(t)?.logConversationFinishedEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}function qte(t,e){gt.getInstance(t)?.logChatCompressionEvent(e);let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n),Ynt(t,{tokens_before:e.tokens_before,tokens_after:e.tokens_after})}function pMt(t,e){gt.getInstance(t)?.logMalformedJsonResponseEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}function fMt(t,e){gt.getInstance(t)?.logInvalidChunkEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n),QAe(t)})}function TT(t,e){gt.getInstance(t)?.logNetworkRetryAttemptEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n),GAe(t,{model:e.model,attempt:e.attempt})})}function hMt(t,e){gt.getInstance(t)?.logContentRetryEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n),qAe(t)})}function gMt(t,e){gt.getInstance(t)?.logContentRetryFailureEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n),VAe(t)})}function mMt(t,e){gt.getInstance(t)?.logModelRoutingEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n),$Ae(t,e)})}function abn(t,e){gt.getInstance(t)?.logModelSlashCommandEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n),tit(t,e)})}async function tbn(t,e){await gt.getInstance(t)?.logExtensionInstallEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}async function rbn(t,e){await gt.getInstance(t)?.logExtensionUninstallEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}async function nbn(t,e){await gt.getInstance(t)?.logExtensionUpdateEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}async function J3t(t,e){await gt.getInstance(t)?.logExtensionEnableEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}async function lbn(t,e){await gt.getInstance(t)?.logExtensionDisableEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}function NB(t,e){gt.getInstance(t)?.logEditStrategyEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}function CNe(t,e){gt.getInstance(t)?.logEditCorrectionEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}function yMt(t,e){gt.getInstance(t)?.logAgentStartEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}function AMt(t,e){gt.getInstance(t)?.logAgentFinishEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n),rit(t,e)})}function EMt(t,e){gt.getInstance(t)?.logRecoveryAttemptEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n),nit(t,e)})}function Vte(t,e){gt.getInstance(t)?.logWebFetchFallbackAttemptEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}function wNe(t,e){gt.getInstance(t)?.logLlmLoopCheckEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)})}function vMt(t,e){gt.getInstance(t)?.logApprovalModeSwitchEvent(e),Vt(()=>{Qt.logs.getLogger(vt).emit({body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)})})}function _Mt(t,e){gt.getInstance(t)?.logApprovalModeDurationEvent(e),Vt(()=>{Qt.logs.getLogger(vt).emit({body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)})})}function bMt(t,e){gt.getInstance(t)?.logPlanExecutionEvent(e),Vt(()=>{Qt.logs.getLogger(vt).emit({body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)}),eit(t,{approval_mode:e.approval_mode})})}function SMt(t,e){gt.getInstance(t)?.logHookCallEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n),sit(t,e.hook_event_name,e.hook_name,e.duration_ms,e.success)})}function Y3t(t,e){gt.getInstance(t)?.logStartupStatsEvent(e),Vt(()=>{t.getExperimentsAsync().then(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n)}).catch(r=>{B.error("Failed to log telemetry event",r)})})}function sMt(t,e){gt.getInstance(t)?.logKeychainAvailabilityEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n),ait(t,e)})}function aMt(t,e){gt.getInstance(t)?.logTokenStorageInitializationEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n),lit(t,e)})}function ENe(t,e){gt.getInstance(t)?.logOnboardingStartEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n),Xnt(t)})}function vNe(t,e){gt.getInstance(t)?.logOnboardingSuccessEvent(e),Vt(()=>{let r=Qt.logs.getLogger(vt),n={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};r.emit(n),Znt(t,e.userTier,e.duration_ms)})}function xNe(t,e){Vt(()=>{let n=Qt.logs.getLogger(vt),o={body:e.toLogBody(),attributes:e.toOpenTelemetryAttributes(t)};n.emit(o)});let r=gt.getInstance(t);r&&(e instanceof oR?r.logCreditsUsedEvent(e):e instanceof kte?r.logOverageOptionSelectedEvent(e):e instanceof Nte?r.logEmptyWalletMenuShownEvent(e):e instanceof Dte&&r.logCreditPurchaseClickEvent(e))}function ONe(t,e,r){gt.getInstance(t)?.logBrowserAgentConnectionEvent({session_mode:r.session_mode,headless:r.headless,success:r.success,duration_ms:e,error_type:r.error_type,tool_count:r.tool_count}),cit(t,e,r)}function TMt(t,e){gt.getInstance(t)?.logBrowserAgentVisionStatusEvent({enabled:e.enabled,disabled_reason:e.disabled_reason}),dit(t,e)}function CMt(t,e){gt.getInstance(t)?.logBrowserAgentTaskOutcomeEvent({success:e.success,session_mode:e.session_mode,vision_enabled:e.vision_enabled,headless:e.headless,duration_ms:e.duration_ms}),pit(t,e)}function wMt(t){return{request:{model:"models/"+t.model,contents:CT(t.contents)}}}function xMt(t){return t.totalTokens===void 0&&B.warn("Warning: Code Assist API did not return totalTokens. Defaulting to 0."),{totalTokens:t.totalTokens??0}}function RNe(t,e,r,n,o){return{model:t.model,project:r,user_prompt_id:e,request:cbn(t,n),enabled_credit_types:o}}function PNe(t){let e=new wD;e.responseId=t.traceId;let r=t.response;return r?(e.candidates=r.candidates??[],e.automaticFunctionCallingHistory=r.automaticFunctionCallingHistory,e.promptFeedback=r.promptFeedback,e.usageMetadata=r.usageMetadata,e.modelVersion=r.modelVersion,e):(e.candidates=[],e)}function cbn(t,e){return{contents:CT(t.contents),systemInstruction:ubn(t.config?.systemInstruction),cachedContent:t.config?.cachedContent,tools:t.config?.tools,toolConfig:t.config?.toolConfig,labels:t.config?.labels,safetySettings:t.config?.safetySettings,generationConfig:pbn(t.config),session_id:e}}function CT(t){return Array.isArray(t)?t.map(INe):[INe(t)]}function ubn(t){if(t)return INe(t)}function dbn(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)&&!("parts"in t)&&!("role"in t)}function INe(t){return Array.isArray(t)?{role:"user",parts:Yte(t)}:typeof t=="string"?{role:"user",parts:[{text:t}]}:dbn(t)?{role:"user",parts:[OMt(t)]}:{...t,parts:t.parts?Yte(t.parts.filter(e=>e!=null)):[]}}function Yte(t){return t.map(OMt)}function OMt(t){if(typeof t=="string")return{text:t};if("thought"in t&&t.thought){let e=`[Thought: ${t.thought}]`,r={...t};if(delete r.thought,"functionCall"in r||"functionResponse"in r||"inlineData"in r||"fileData"in r)return r;let o=r.text,s=o?String(o):"",c=s?`${s}
|
|
@@ -2514,7 +2514,7 @@ CRITICAL: When you have fully completed the user's task, you MUST call the compl
|
|
|
2514
2514
|
\${task}
|
|
2515
2515
|
</task>
|
|
2516
2516
|
|
|
2517
|
-
First, use <list_pages/> to check if there are any existing pages that can fulfill the user's request. If not, you MUST use <new_page/> to open the relevant URL unless the user explicitly provides different instructions.`,systemPrompt:_ei(e,t.getBrowserAgentConfig().customConfig.allowedDomains)}}};var Nf=class t{static MAX_AUTH_RETRIES=2;authRetryCount=0;async shouldRetryWithHeaders(e,r){if(r.status===401||r.status===403)return this.authRetryCount>=t.MAX_AUTH_RETRIES?void 0:(this.authRetryCount++,this.headers());this.authRetryCount=0}async initialize(){}};var GZt=6e4;async function pb(t){if(t.startsWith("$$")||t.startsWith("!!"))return t.slice(1);if(t.startsWith("$")){let e=t.slice(1),r=process.env[e];if(r===void 0||r==="")throw new Error(`Environment variable '${e}' is not set or is empty. Please set it before using this agent.`);return B.debug(`[AuthValueResolver] Resolved env var: ${e}`),r}if(t.startsWith("!")){let e=t.slice(1).trim();if(!e)throw new Error("Empty command in auth value. Expected format: !command");B.debug("[AuthValueResolver] Executing command for auth value");let r=Hm();try{let{stdout:n}=await el(r.executable,[...r.argsPrefix,e],{signal:AbortSignal.timeout(GZt),windowsHide:!0}),o=n.trim();if(!o)throw new Error(`Command '${e}' returned empty output`);return o}catch(n){throw n instanceof Error&&n.name==="AbortError"?new Error(`Command '${e}' timed out after ${GZt/1e3} seconds`):n}}return t}function qZt(t){return t.startsWith("$")||t.startsWith("!")}var bei="X-API-Key",Ale=class extends Nf{constructor(r){super();this.config=r;this.headerName=r.name??bei}type="apiKey";resolvedKey;headerName;async initialize(){qZt(this.config.key)?(this.resolvedKey=await pb(this.config.key),B.debug(`[ApiKeyAuthProvider] Resolved API key from: ${this.config.key.startsWith("$")?"env var":"command"}`)):this.resolvedKey=this.config.key}async headers(){if(!this.resolvedKey)throw new Error("ApiKeyAuthProvider not initialized. Call initialize() first.");return{[this.headerName]:this.resolvedKey}}async shouldRetryWithHeaders(r,n){if(n.status!==401&&n.status!==403){this.authRetryCount=0;return}if(!(!this.config.key.startsWith("!")||this.config.key.startsWith("!!"))&&!(this.authRetryCount>=Nf.MAX_AUTH_RETRIES))return this.authRetryCount++,B.debug("[ApiKeyAuthProvider] Re-resolving API key after auth failure"),this.resolvedKey=await pb(this.config.key),this.headers()}};var Ele=class extends Nf{constructor(r){super();this.config=r}type="http";resolvedToken;resolvedUsername;resolvedPassword;resolvedValue;async initialize(){let r=this.config;"token"in r?this.resolvedToken=await pb(r.token):"username"in r?(this.resolvedUsername=await pb(r.username),this.resolvedPassword=await pb(r.password)):this.resolvedValue=await pb(r.value),B.debug(`[HttpAuthProvider] Initialized with scheme: ${this.config.scheme}`)}async headers(){let r=this.config;if("token"in r){if(!this.resolvedToken)throw new Error("HttpAuthProvider not initialized");return{Authorization:`Bearer ${this.resolvedToken}`}}if("username"in r){if(!this.resolvedUsername||!this.resolvedPassword)throw new Error("HttpAuthProvider not initialized");return{Authorization:`Basic ${Buffer.from(`${this.resolvedUsername}:${this.resolvedPassword}`).toString("base64")}`}}if(!this.resolvedValue)throw new Error("HttpAuthProvider not initialized");return{Authorization:`${r.scheme} ${this.resolvedValue}`}}async shouldRetryWithHeaders(r,n){if(n.status===401||n.status===403){if(this.authRetryCount>=Nf.MAX_AUTH_RETRIES)return;B.debug("[HttpAuthProvider] Re-resolving values after auth failure"),await this.initialize()}return super.shouldRetryWithHeaders(r,n)}};var VZt=Me(as(),1);var KC=class extends Error{constructor(e){super(e),this.name="ResourceMismatchError"}},Hk=5*60*1e3,Rs=class{static buildWellKnownUrls(e,r=!1){let n=new URL(e),o=`${n.protocol}//${n.host}`,s=r?"":n.pathname.replace(/\/$/,"");return{protectedResource:new URL(`/.well-known/oauth-protected-resource${s}`,o).toString(),authorizationServer:new URL(`/.well-known/oauth-authorization-server${s}`,o).toString()}}static async fetchProtectedResourceMetadata(e){try{let r=await fetch(e);return r.ok?await r.json():null}catch(r){return B.debug(`Failed to fetch protected resource metadata from ${e}: ${be(r)}`),null}}static async fetchAuthorizationServerMetadata(e){try{let r=await fetch(e);return r.ok?await r.json():null}catch(r){return B.debug(`Failed to fetch authorization server metadata from ${e}: ${be(r)}`),null}}static metadataToOAuthConfig(e){return{authorizationUrl:e.authorization_endpoint,issuer:e.issuer,tokenUrl:e.token_endpoint,scopes:e.scopes_supported||[],registrationUrl:e.registration_endpoint}}static async discoverAuthorizationServerMetadata(e){let r=new URL(e),n=`${r.protocol}//${r.host}`,o=[];r.pathname!=="/"&&(o.push(new URL(`/.well-known/oauth-authorization-server${r.pathname}`,n).toString()),o.push(new URL(`/.well-known/openid-configuration${r.pathname}`,n).toString()),o.push(new URL(`${r.pathname}/.well-known/openid-configuration`,n).toString())),o.push(new URL("/.well-known/oauth-authorization-server",n).toString()),o.push(new URL("/.well-known/openid-configuration",n).toString());for(let s of o){let c=await this.fetchAuthorizationServerMetadata(s);if(c)return c}return B.debug(`Metadata discovery failed for authorization server ${e}`),null}static async discoverOAuthConfig(e){try{let r=this.buildWellKnownUrls(e),n=await this.fetchProtectedResourceMetadata(r.protectedResource);if(!n){let s=new URL(e);if(s.pathname&&s.pathname!=="/"){let c=this.buildWellKnownUrls(e,!0);n=await this.fetchProtectedResourceMetadata(c.protectedResource)}}if(n){let s=this.buildResourceParameter(e);if(!this.isEquivalentResourceIdentifier(n.resource,s))throw new KC(`Protected resource ${n.resource} does not match expected ${s}`)}if(n?.authorization_servers?.length){let s=n.authorization_servers[0],c=await this.discoverAuthorizationServerMetadata(s);if(c){let u=this.metadataToOAuthConfig(c);return c.registration_endpoint&&B.log("Dynamic client registration is supported at:",c.registration_endpoint),u}}B.debug(`Trying OAuth discovery fallback at ${e}`);let o=await this.discoverAuthorizationServerMetadata(e);if(o){let s=this.metadataToOAuthConfig(o);return o.registration_endpoint&&B.log("Dynamic client registration is supported at:",o.registration_endpoint),s}return null}catch(r){if(r instanceof KC)throw r;return B.debug(`Failed to discover OAuth configuration: ${be(r)}`),null}}static parseWWWAuthenticateHeader(e){let r=e.match(/resource_metadata="([^"]+)"/);return r?r[1]:null}static async discoverOAuthFromWWWAuthenticate(e,r){let n=this.parseWWWAuthenticateHeader(e);if(!n)return null;let o=await this.fetchProtectedResourceMetadata(n);if(o&&r){let u=this.buildResourceParameter(r);if(!this.isEquivalentResourceIdentifier(o.resource,u))throw new KC(`Protected resource ${o.resource} does not match expected ${u}`)}if(!o?.authorization_servers?.length)return null;let s=o.authorization_servers[0],c=await this.discoverAuthorizationServerMetadata(s);return c?this.metadataToOAuthConfig(c):null}static extractBaseUrl(e){let r=new URL(e);return`${r.protocol}//${r.host}`}static isSSEEndpoint(e){return e.includes("/sse")||!e.includes("/mcp")}static buildResourceParameter(e){let r=new URL(e);return`${r.protocol}//${r.host}${r.pathname}`}static isEquivalentResourceIdentifier(e,r){let n=o=>{try{return this.buildResourceParameter(o)}catch{return o}};return n(e)===n(r)}static parseTokenExpiry(e){try{let r=JSON.parse(Buffer.from(e.split(".")[1],"base64").toString());if(r&&typeof r.exp=="number")return r.exp*1e3}catch(r){B.error("Failed to parse ID token for expiry time with error:",r)}}};var $Zt=/^(.*\.)?run\.app$/,Sei=[/^.+\.googleapis\.com$/,$Zt],vle=class extends Nf{constructor(r,n){super();this.config=r;if(!n)throw new Error("targetUrl must be provided to GoogleCredentialsAuthProvider to determine token audience.");let o=new URL(n).hostname;if($Zt.test(o)&&(this.useIdToken=!0),this.audience=o,!this.useIdToken&&!Sei.some(u=>u.test(o)))throw new Error(`Host "${o}" is not an allowed host for Google Credential provider.`);let c=this.config.scopes&&this.config.scopes.length>0?this.config.scopes:["https://www.googleapis.com/auth/cloud-platform"];this.auth=new VZt.GoogleAuth({scopes:c})}type="google-credentials";auth;useIdToken=!1;audience;cachedToken;tokenExpiryTime;async initialize(){}async headers(){if(this.cachedToken&&this.tokenExpiryTime&&Date.now()<this.tokenExpiryTime-Hk)return{Authorization:`Bearer ${this.cachedToken}`};if(this.cachedToken=void 0,this.tokenExpiryTime=void 0,this.useIdToken)try{let n=await(await this.auth.getIdTokenClient(this.audience)).idTokenProvider.fetchIdToken(this.audience),o=Rs.parseTokenExpiry(n);return o&&(this.tokenExpiryTime=o,this.cachedToken=n),{Authorization:`Bearer ${n}`}}catch(r){let n=`Failed to get ADC ID token: ${r instanceof Error?r.message:String(r)}`;throw B.error(n,r),new Error(n)}try{let r=await this.auth.getClient(),n=await r.getAccessToken();if(n.token){this.cachedToken=n.token;let o=r.credentials;return o.expiry_date&&(this.tokenExpiryTime=o.expiry_date),{Authorization:`Bearer ${n.token}`}}throw new Error("Failed to retrieve ADC access token.")}catch(r){let n=`Failed to get ADC access token: ${r instanceof Error?r.message:String(r)}`;throw B.error(n,r),new Error(n)}}async shouldRetryWithHeaders(r,n){if(n.status!==401&&n.status!==403){this.authRetryCount=0;return}if(!(this.authRetryCount>=Nf.MAX_AUTH_RETRIES))return this.authRetryCount++,B.debug("[GoogleCredentialsAuthProvider] Re-fetching token after auth failure"),this.cachedToken=void 0,this.tokenExpiryTime=void 0,this.headers()}};var fb=class t{static async create(e){let{agentName:r,authConfig:n,agentCard:o}=e;if(!n)return o?.securitySchemes&&Object.keys(o.securitySchemes).length>0,void 0;switch(n.type){case"google-credentials":{let s=new vle(n,e.targetUrl);return await s.initialize(),s}case"apiKey":{let s=new Ale(n);return await s.initialize(),s}case"http":{let s=new Ele(n);return await s.initialize(),s}case"oauth2":{let{OAuth2AuthProvider:s}=await import("./oauth2-provider-3MTIBHLN.js"),c=new s(n,e.agentName??"unknown",o,e.agentCardUrl);return await c.initialize(),c}case"openIdConnect":throw new Error("openIdConnect auth provider not yet implemented");default:{let s=n;throw new Error(`Unknown auth type: ${s.type}`)}}}static async createFromConfig(e,r){return await t.create({authConfig:e,agentName:r})}static validateAuthConfig(e,r){if(!r||Object.keys(r).length===0)return{valid:!0};let n=Object.keys(r);if(!e)return{valid:!1,diff:{requiredSchemes:n,configuredType:void 0,missingConfig:["Authentication is required but not configured"]}};let o=t.findMatchingScheme(e,r);return o.matched?{valid:!0}:{valid:!1,diff:{requiredSchemes:n,configuredType:e.type,missingConfig:o.missingConfig}}}static findMatchingScheme(e,r){let n=[];for(let[o,s]of Object.entries(r))switch(s.type){case"apiKey":if(e.type==="apiKey")return{matched:!0,missingConfig:[]};n.push(`Scheme '${o}' requires apiKey authentication`);break;case"http":if(e.type==="http"){if(e.scheme.toLowerCase()===s.scheme.toLowerCase())return{matched:!0,missingConfig:[]};n.push(`Scheme '${o}' requires HTTP ${s.scheme} authentication, but ${e.scheme} was configured`)}else{if(e.type==="google-credentials"&&s.scheme.toLowerCase()==="bearer")return{matched:!0,missingConfig:[]};n.push(`Scheme '${o}' requires HTTP ${s.scheme} authentication`)}break;case"oauth2":if(e.type==="oauth2")return{matched:!0,missingConfig:[]};n.push(`Scheme '${o}' requires OAuth 2.0 authentication`);break;case"openIdConnect":if(e.type==="openIdConnect")return{matched:!0,missingConfig:[]};n.push(`Scheme '${o}' requires OpenID Connect authentication`);break;case"mutualTLS":n.push(`Scheme '${o}' requires mTLS authentication (not yet supported)`);break;default:{let c=s;n.push(`Unknown security scheme type: ${c.type}`)}}return{matched:!1,missingConfig:n}}static describeRequiredAuth(e){let r=[];for(let[n,o]of Object.entries(e))switch(o.type){case"apiKey":r.push(`API Key (${n}): Send ${o.name} in ${o.in}`);break;case"http":r.push(`HTTP ${o.scheme} (${n})`);break;case"oauth2":r.push(`OAuth 2.0 (${n})`);break;case"openIdConnect":r.push(`OpenID Connect (${n})`);break;case"mutualTLS":r.push(`Mutual TLS (${n})`);break;default:{let s=o;r.push(`Unknown (${n}): ${s.type}`)}}return r.join(" OR ")}};var HZt=100,zk=class t{constructor(e){this.config=e}runtimeAliases={};runtimeOverrides=[];getAvailableModelOptions(e){let r=this.config.modelDefinitions??{},n=e.hasAccessToPreview??!1,o=e.useGemini3_1??!1,s=e.useGemini3_1FlashLite??!1,c=Object.entries(r).filter(([a,p])=>!(p.isVisible!==!0||p.isPreview&&!n||p.tier!=="auto")).map(([a,p])=>({modelId:a,name:p.displayName??lS(a),description:a==="auto-gemini-3"&&o?(p.dialogDescription??"").replace("gemini-3-pro","gemini-3.1-pro"):p.dialogDescription??"",tier:p.tier??"auto"})),u=Object.entries(r).filter(([a,p])=>!(p.isVisible!==!0||p.isPreview&&!n||p.tier==="auto"||e.hasAccessToProModel===!1&&BJe(a)||a===Qw&&!o||a===uQ&&!s)).map(([a,p])=>{let f=this.resolveModelId(a,e),g=this.resolveModelId(a,{useGemini3_1:o,useGemini3_1FlashLite:s});return{modelId:f,name:p.displayName??lS(g),description:p.dialogDescription??"",tier:p.tier??"custom"}}),d=new Set,l=u.filter(a=>d.has(a.modelId)?!1:(d.add(a.modelId),!0));return[...c,...l]}getModelDefinition(e){let r=this.config.modelDefinitions?.[e];if(r)return r;if(!e.startsWith("gemini-"))return{tier:"custom",family:"custom",features:{}}}getModelDefinitions(){return this.config.modelDefinitions??{}}matches(e,r){return Object.entries(e).every(([n,o])=>{if(o===void 0)return!0;switch(n){case"useGemini3_1":return o===r.useGemini3_1;case"useGemini3_1FlashLite":return o===r.useGemini3_1FlashLite;case"useCustomTools":return o===r.useCustomTools;case"hasAccessToPreview":return o===r.hasAccessToPreview;case"requestedModels":return Array.isArray(o)&&!!r.requestedModel&&o.includes(r.requestedModel);default:return!1}})}resolveModelId(e,r={}){let n=this.config.modelIdResolutions?.[e];if(!n)return e;for(let o of n.contexts??[])if(this.matches(o.condition,r))return o.target;return n.default}resolveClassifierModelId(e,r,n={}){let o=this.config.classifierIdResolutions?.[e],s={...n,requestedModel:r};if(!o)return this.resolveModelId(e,s);for(let c of o.contexts??[])if(this.matches(c.condition,s))return c.target;return o.default}getModelChain(e){return this.config.modelChains?.[e]}resolveChain(e,r={}){let n=this.config.modelChains?.[e];if(n)return n.map(o=>({...o,model:this.resolveModelId(o.model,r)}))}registerRuntimeModelConfig(e,r){this.runtimeAliases[e]=r}registerRuntimeModelOverride(e){this.runtimeOverrides.push(e)}internalGetResolvedConfig(e){let{aliases:r={},customAliases:n={},overrides:o=[],customOverrides:s=[]}=this.config||{},c={...r,...n,...this.runtimeAliases},{aliasChain:u,baseModel:d,resolvedConfig:l}=this.resolveAliasChain(e.model,c,e.isChatModel),a=this.buildModelLevelMap(u,d),p=[...o,...s,...this.runtimeOverrides],f=this.findMatchingOverrides(p,e,a);this.sortOverrides(f);let g={model:d,generateContentConfig:l};for(let y of f)g=t.merge(g,y.modelConfig);return{model:g.model,generateContentConfig:g.generateContentConfig??{}}}resolveAliasChain(e,r,n){let o=[];if(r[e]){let s=e,c=new Set;for(;s;){let l=r[s];if(!l)throw new Error(`Alias "${s}" not found.`);if(c.size>=HZt)throw new Error(`Alias inheritance chain exceeded maximum depth of ${HZt}.`);if(c.has(s))throw new Error(`Circular alias dependency: ${[...c,s].join(" -> ")}`);c.add(s),o.push(s),s=l.extends}let u=[...o].reverse(),d={};for(let l of u){let a=r[l];d=t.merge(d,a.modelConfig)}return{aliasChain:u,baseModel:d.model,resolvedConfig:d.generateContentConfig??{}}}if(n){let s="chat-base";if(r[s]){let c=this.resolveAliasChain(s,r);return{aliasChain:[...c.aliasChain,e],baseModel:e,resolvedConfig:c.resolvedConfig}}}return{aliasChain:[e],baseModel:e,resolvedConfig:{}}}buildModelLevelMap(e,r){let n=new Map;return r&&n.set(r,0),e.forEach((o,s)=>n.set(o,s+1)),n}findMatchingOverrides(e,r,n){return e.map((o,s)=>{let c=Object.entries(o.match);if(c.length===0)return null;let u=0;return c.every(([l,a])=>{if(l==="model"){let p=n.get(a);return p===void 0?!1:(u=p,!0)}return l==="overrideScope"&&a==="core"?r.overrideScope==="core"||!r.overrideScope:r[l]===a})?{specificity:c.length,level:u,modelConfig:o.modelConfig,index:s}:null}).filter(o=>o!==null)}sortOverrides(e){e.sort((r,n)=>r.level!==n.level?r.level-n.level:r.specificity!==n.specificity?r.specificity-n.specificity:r.index-n.index)}getResolvedConfig(e){let r=this.internalGetResolvedConfig(e);if(!r.model)throw new Error(`Could not resolve a model name for alias "${e.model}". Please ensure the alias chain or a matching override specifies a model.`);return{model:r.model,generateContentConfig:r.generateContentConfig}}static isObject(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}static merge(e,r){return{model:r.model??e.model,generateContentConfig:t.deepMerge(e.generateContentConfig,r.generateContentConfig)}}static deepMerge(e,r){return t.genericDeepMerge(e,r)}static genericDeepMerge(...e){return e.reduce((r,n)=>(n&&Object.keys(n).forEach(o=>{let s=r[o],c=n[o];t.isObject(s)&&t.isObject(c)?r[o]=t.genericDeepMerge(s,c):r[o]=c}),r),{})}};var dm=class extends Error{userMessage;agentName;constructor(e,r,n,o){super(r,o),this.name="A2AAgentError",this.agentName=e,this.userMessage=n}},fQe=class extends dm{constructor(e,r){let n=`Agent card not found at ${r} (HTTP 404)`,o=`Agent card not found (404) at ${r}. Verify the agent_card_url in your agent definition.`;super(e,n,o),this.name="AgentCardNotFoundError"}},_le=class extends dm{statusCode;constructor(e,r,n){let o=n===401?"Unauthorized":"Forbidden",s=`Agent card request returned ${n} ${o} for ${r}`,c=`Authentication failed (${n} ${o}) at ${r}. Check the "auth" configuration in your agent definition.`;super(e,s,c),this.name="AgentCardAuthError",this.statusCode=n}},ble=class extends dm{requiredAuth;missingFields;constructor(e,r,n){let o=`Agent "${e}" requires authentication but none is configured`,s=`Agent requires ${r} but no auth is configured. Missing: ${n.join(", ")}`;super(e,o,s),this.name="AgentAuthConfigMissingError",this.requiredAuth=r,this.missingFields=n}},Sle=class extends dm{constructor(e,r,n){let o=n instanceof Error?n.message:String(n),s=`Failed to connect to agent "${e}" at ${r}: ${o}`,c=`Connection failed for ${r}: ${o}`;super(e,s,c,{cause:n}),this.name="AgentConnectionError"}};function Tei(t){return typeof t=="object"&&t!==null}function Cei(t){let e=[],r=t,n=0,o=10;for(;r&&n<o;){if(Tei(r)){let s=r;r instanceof Error?e.push(r.message):typeof s.message=="string"&&e.push(s.message),typeof s.code=="string"&&e.push(s.code),typeof s.status=="number"?e.push(String(s.status)):typeof s.statusCode=="number"&&e.push(String(s.statusCode)),r=s.cause}else if(typeof r=="string"){e.push(r);break}else{e.push(String(r));break}n++}return e.join(" ")}function zZt(t,e,r){let n=Cei(r);return/\b(ECONNREFUSED|ENOTFOUND|EHOSTUNREACH|ETIMEDOUT)\b/i.test(n)?new Sle(t,e,r):/\b404\b|\bnot[\s_-]?found\b/i.test(n)?new fQe(t,e):/\b401\b|unauthorized/i.test(n)?new _le(t,e,401):/\b403\b|forbidden/i.test(n)?new _le(t,e,403):new Sle(t,e,r)}function T9(t){return`${t.name}-config`}var WZt="AgentRegistry (Dynamic)",Tle=class{constructor(e){this.config=e}agents=new Map;allDefinitions=new Map;builtInAgents=new Set;initialized=!1;async initialize(){if(this.initialized){await this.loadAgents();return}this.initialized=!0,ve.on("model-changed",this.onModelChanged),await this.loadAgents()}isBuiltIn(e){return this.builtInAgents.has(e)}onModelChanged=()=>{this.refreshAgents("local").catch(e=>{B.error("[AgentRegistry] Failed to refresh agents on model change:",e)})};async reload(){let e=new Map(this.agents),r=[];this.config.getA2AClientManager()?.clearCache(),await this.config.reloadAgents(),await this.loadAgents(r);let n=Array.from(this.agents.values()),o=[],s=[],c=[],u=0,d=0;for(let l of n){l.kind==="local"?u++:l.kind==="remote"&&d++;let a=e.get(l.name);a?l.metadata?.hash!==a.metadata?.hash&&s.push(l.name):o.push(l.name)}for(let l of e.keys())this.agents.has(l)||c.push(l);return ve.emitAgentsRefreshed(),{totalLoaded:n.length,localCount:u,remoteCount:d,newAgents:o,updatedAgents:s,deletedAgents:c,errors:r}}async acknowledgeAgent(e){let r=this.config.getAcknowledgedAgentsService(),n=this.config.getProjectRoot();e.metadata?.hash&&(await r.acknowledge(n,e.name,e.metadata.hash),await this.registerAgent(e),ve.emitAgentsRefreshed())}dispose(){ve.off("model-changed",this.onModelChanged)}async loadAgents(e){if(this.agents.clear(),this.allDefinitions.clear(),this.loadBuiltInAgents(),this.config.getPolicyEngine()?.removeRulesBySource(WZt),!this.config.isAgentsEnabled())return;let r=Ut.getUserAgentsDir(),n=await cQe(r);for(let c of n.errors){B.warn(`[AgentRegistry] Error loading user agent: ${c.message}`);let u=`Agent loading error: ${c.message}`;e?.push(u),ve.emitFeedback("error",u)}await Promise.allSettled(n.agents.map(async c=>{try{this.ensureRemoteAgentHash(c),await this.registerAgent(c,e)}catch(u){let d=`Error registering user agent "${c.name}": ${u instanceof Error?u.message:String(u)}`;B.warn(`[AgentRegistry] ${d}`,u),e?.push(d),ve.emitFeedback("error",d)}}));let o=this.config.getFolderTrust(),s=this.config.isTrustedFolder();if(!o||s){let c=this.config.storage.getProjectAgentsDir(),u=await cQe(c);for(let f of u.errors){let g=`Agent loading error: ${f.message}`;e?.push(g),ve.emitFeedback("error",g)}let d=this.config.getAcknowledgedAgentsService(),l=this.config.getProjectRoot(),a=[],p=[];for(let f of u.agents){if(this.ensureRemoteAgentHash(f),!f.metadata?.hash){p.push(f);continue}await d.isAcknowledged(l,f.name,f.metadata.hash)?p.push(f):a.push(f)}a.length>0&&ve.emitAgentsDiscovered(a),await Promise.allSettled(p.map(async f=>{try{await this.registerAgent(f,e)}catch(g){let y=`Error registering project agent "${f.name}": ${g instanceof Error?g.message:String(g)}`;B.warn(`[AgentRegistry] ${y}`,g),e?.push(y),ve.emitFeedback("error",y)}}))}else ve.emitFeedback("info","Skipping project agents due to untrusted folder. To enable, ensure that the project root is trusted.");for(let c of this.config.getExtensions())c.isActive&&c.agents&&await Promise.allSettled(c.agents.map(async u=>{try{await this.registerAgent(u,e)}catch(d){let l=`Error registering extension agent "${u.name}": ${d instanceof Error?d.message:String(d)}`;B.warn(`[AgentRegistry] ${l}`,d),e?.push(l),ve.emitFeedback("error",l)}}));this.config.getDebugMode()&&B.log(`[AgentRegistry] Loaded with ${this.agents.size} agents.`)}loadBuiltInAgents(){let e=Hae(this.config);this.builtInAgents.add(e.name),this.registerLocalAgent(e);let r=UZt(this.config);this.builtInAgents.add(r.name),this.registerLocalAgent(r);let n=FZt(this.config);this.builtInAgents.add(n.name),this.registerLocalAgent(n);let o=this.config.getBrowserAgentConfig();if(o.enabled){let s=process.env.SANDBOX,c=!!s&&s!=="sandbox-exec"&&s!=="sandbox:none",u=o.customConfig.sessionMode??"persistent";if(c&&u!=="existing")ve.emitFeedback("info",'Browser agent disabled in container sandbox. To use it, set sessionMode to "existing" in settings and start Chrome with --remote-debugging-port=9222 on the host.');else{let d=yle(this.config);this.builtInAgents.add(d.name),this.registerLocalAgent(d)}}}async refreshAgents(e="all"){this.loadBuiltInAgents(),await Promise.allSettled(Array.from(this.agents.values()).map(async r=>{(e==="all"||r.kind===e)&&await this.registerAgent(r)}))}async registerAgent(e,r){e.kind==="local"?this.registerLocalAgent(e):e.kind==="remote"&&await this.registerRemoteAgent(e,r)}registerLocalAgent(e){if(e.kind!=="local")return;if(!e.name||!e.description){B.warn("[AgentRegistry] Skipping invalid agent definition. Missing name or description.");return}this.allDefinitions.set(e.name,e);let r=this.config.getAgentsSettings().overrides?.[e.name];if(!this.isAgentEnabled(e,r)){this.config.getDebugMode()&&B.log(`[AgentRegistry] Skipping disabled agent '${e.name}'`);return}this.agents.has(e.name)&&this.config.getDebugMode()&&B.log(`[AgentRegistry] Overriding agent '${e.name}'`);let n=this.applyOverrides(e,r);this.agents.set(n.name,n),this.registerModelConfigs(n),this.addAgentPolicy(n)}addAgentPolicy(e){let r=this.config.getPolicyEngine();if(r){if(r.hasRuleForTool(e.name,!0)){this.config.getDebugMode()&&B.log(`[AgentRegistry] User policy exists for '${e.name}', skipping dynamic registration.`);return}e.kind==="remote"&&r.addRule({toolName:XC.Name,argsPattern:new RegExp(`"agent_name":\\s*"${e.name}"`),decision:"ask_user",priority:nQ+.1,source:WZt})}}isAgentEnabled(e,r){let o=!(e.experimental===!0);return r&&r.enabled!==void 0&&(o=r.enabled),o}async registerRemoteAgent(e,r){if(e.kind!=="remote")return;if(!e.name){B.warn("[AgentRegistry] Skipping invalid agent definition. Missing name.");return}this.allDefinitions.set(e.name,e);let n=this.config.getAgentsSettings().overrides?.[e.name];if(!this.isAgentEnabled(e,n)){this.config.getDebugMode()&&B.log(`[AgentRegistry] Skipping disabled remote agent '${e.name}'`);return}this.agents.has(e.name)&&this.config.getDebugMode()&&B.log(`[AgentRegistry] Overriding agent '${e.name}'`);let o=e;o.originalDescription===void 0&&(o.originalDescription=o.description);try{let s=this.config.getA2AClientManager();if(!s){B.warn(`[AgentRegistry] Skipping remote agent '${e.name}': A2AClientManager is not available.`);return}let c=ole(o),u;if(e.auth){let f=await fb.create({authConfig:e.auth,agentName:e.name,targetUrl:c,agentCardUrl:o.agentCardUrl});if(!f)throw new Error(`Failed to create auth provider for agent '${e.name}'`);u=f}let d=await s.loadAgent(o.name,ile(o),u);if(d.securitySchemes){let f=fb.validateAuthConfig(e.auth,d.securitySchemes);if(!f.valid&&f.diff){let g=fb.describeRequiredAuth(d.securitySchemes),y=new ble(e.name,g,f.diff.missingConfig);ve.emitFeedback("warning",`[${e.name}] Agent requires authentication: ${g}`),B.warn(`[AgentRegistry] ${y.message}`)}}let l=o.originalDescription,a=d.description,p=[];if(l?.trim()&&p.push(`User Description: ${l.trim()}`),a?.trim()&&p.push(`Agent Description: ${a.trim()}`),d.skills&&d.skills.length>0){let f=d.skills.map(g=>`${g.name}: ${g.description||"No description provided"}`).join(`
|
|
2517
|
+
First, use <list_pages/> to check if there are any existing pages that can fulfill the user's request. If not, you MUST use <new_page/> to open the relevant URL unless the user explicitly provides different instructions.`,systemPrompt:_ei(e,t.getBrowserAgentConfig().customConfig.allowedDomains)}}};var Nf=class t{static MAX_AUTH_RETRIES=2;authRetryCount=0;async shouldRetryWithHeaders(e,r){if(r.status===401||r.status===403)return this.authRetryCount>=t.MAX_AUTH_RETRIES?void 0:(this.authRetryCount++,this.headers());this.authRetryCount=0}async initialize(){}};var GZt=6e4;async function pb(t){if(t.startsWith("$$")||t.startsWith("!!"))return t.slice(1);if(t.startsWith("$")){let e=t.slice(1),r=process.env[e];if(r===void 0||r==="")throw new Error(`Environment variable '${e}' is not set or is empty. Please set it before using this agent.`);return B.debug(`[AuthValueResolver] Resolved env var: ${e}`),r}if(t.startsWith("!")){let e=t.slice(1).trim();if(!e)throw new Error("Empty command in auth value. Expected format: !command");B.debug("[AuthValueResolver] Executing command for auth value");let r=Hm();try{let{stdout:n}=await el(r.executable,[...r.argsPrefix,e],{signal:AbortSignal.timeout(GZt),windowsHide:!0}),o=n.trim();if(!o)throw new Error(`Command '${e}' returned empty output`);return o}catch(n){throw n instanceof Error&&n.name==="AbortError"?new Error(`Command '${e}' timed out after ${GZt/1e3} seconds`):n}}return t}function qZt(t){return t.startsWith("$")||t.startsWith("!")}var bei="X-API-Key",Ale=class extends Nf{constructor(r){super();this.config=r;this.headerName=r.name??bei}type="apiKey";resolvedKey;headerName;async initialize(){qZt(this.config.key)?(this.resolvedKey=await pb(this.config.key),B.debug(`[ApiKeyAuthProvider] Resolved API key from: ${this.config.key.startsWith("$")?"env var":"command"}`)):this.resolvedKey=this.config.key}async headers(){if(!this.resolvedKey)throw new Error("ApiKeyAuthProvider not initialized. Call initialize() first.");return{[this.headerName]:this.resolvedKey}}async shouldRetryWithHeaders(r,n){if(n.status!==401&&n.status!==403){this.authRetryCount=0;return}if(!(!this.config.key.startsWith("!")||this.config.key.startsWith("!!"))&&!(this.authRetryCount>=Nf.MAX_AUTH_RETRIES))return this.authRetryCount++,B.debug("[ApiKeyAuthProvider] Re-resolving API key after auth failure"),this.resolvedKey=await pb(this.config.key),this.headers()}};var Ele=class extends Nf{constructor(r){super();this.config=r}type="http";resolvedToken;resolvedUsername;resolvedPassword;resolvedValue;async initialize(){let r=this.config;"token"in r?this.resolvedToken=await pb(r.token):"username"in r?(this.resolvedUsername=await pb(r.username),this.resolvedPassword=await pb(r.password)):this.resolvedValue=await pb(r.value),B.debug(`[HttpAuthProvider] Initialized with scheme: ${this.config.scheme}`)}async headers(){let r=this.config;if("token"in r){if(!this.resolvedToken)throw new Error("HttpAuthProvider not initialized");return{Authorization:`Bearer ${this.resolvedToken}`}}if("username"in r){if(!this.resolvedUsername||!this.resolvedPassword)throw new Error("HttpAuthProvider not initialized");return{Authorization:`Basic ${Buffer.from(`${this.resolvedUsername}:${this.resolvedPassword}`).toString("base64")}`}}if(!this.resolvedValue)throw new Error("HttpAuthProvider not initialized");return{Authorization:`${r.scheme} ${this.resolvedValue}`}}async shouldRetryWithHeaders(r,n){if(n.status===401||n.status===403){if(this.authRetryCount>=Nf.MAX_AUTH_RETRIES)return;B.debug("[HttpAuthProvider] Re-resolving values after auth failure"),await this.initialize()}return super.shouldRetryWithHeaders(r,n)}};var VZt=Me(as(),1);var KC=class extends Error{constructor(e){super(e),this.name="ResourceMismatchError"}},Hk=5*60*1e3,Rs=class{static buildWellKnownUrls(e,r=!1){let n=new URL(e),o=`${n.protocol}//${n.host}`,s=r?"":n.pathname.replace(/\/$/,"");return{protectedResource:new URL(`/.well-known/oauth-protected-resource${s}`,o).toString(),authorizationServer:new URL(`/.well-known/oauth-authorization-server${s}`,o).toString()}}static async fetchProtectedResourceMetadata(e){try{let r=await fetch(e);return r.ok?await r.json():null}catch(r){return B.debug(`Failed to fetch protected resource metadata from ${e}: ${be(r)}`),null}}static async fetchAuthorizationServerMetadata(e){try{let r=await fetch(e);return r.ok?await r.json():null}catch(r){return B.debug(`Failed to fetch authorization server metadata from ${e}: ${be(r)}`),null}}static metadataToOAuthConfig(e){return{authorizationUrl:e.authorization_endpoint,issuer:e.issuer,tokenUrl:e.token_endpoint,scopes:e.scopes_supported||[],registrationUrl:e.registration_endpoint}}static async discoverAuthorizationServerMetadata(e){let r=new URL(e),n=`${r.protocol}//${r.host}`,o=[];r.pathname!=="/"&&(o.push(new URL(`/.well-known/oauth-authorization-server${r.pathname}`,n).toString()),o.push(new URL(`/.well-known/openid-configuration${r.pathname}`,n).toString()),o.push(new URL(`${r.pathname}/.well-known/openid-configuration`,n).toString())),o.push(new URL("/.well-known/oauth-authorization-server",n).toString()),o.push(new URL("/.well-known/openid-configuration",n).toString());for(let s of o){let c=await this.fetchAuthorizationServerMetadata(s);if(c)return c}return B.debug(`Metadata discovery failed for authorization server ${e}`),null}static async discoverOAuthConfig(e){try{let r=this.buildWellKnownUrls(e),n=await this.fetchProtectedResourceMetadata(r.protectedResource);if(!n){let s=new URL(e);if(s.pathname&&s.pathname!=="/"){let c=this.buildWellKnownUrls(e,!0);n=await this.fetchProtectedResourceMetadata(c.protectedResource)}}if(n){let s=this.buildResourceParameter(e);if(!this.isEquivalentResourceIdentifier(n.resource,s))throw new KC(`Protected resource ${n.resource} does not match expected ${s}`)}if(n?.authorization_servers?.length){let s=n.authorization_servers[0],c=await this.discoverAuthorizationServerMetadata(s);if(c){let u=this.metadataToOAuthConfig(c);return c.registration_endpoint&&B.log("Dynamic client registration is supported at:",c.registration_endpoint),u}}B.debug(`Trying OAuth discovery fallback at ${e}`);let o=await this.discoverAuthorizationServerMetadata(e);if(o){let s=this.metadataToOAuthConfig(o);return o.registration_endpoint&&B.log("Dynamic client registration is supported at:",o.registration_endpoint),s}return null}catch(r){if(r instanceof KC)throw r;return B.debug(`Failed to discover OAuth configuration: ${be(r)}`),null}}static parseWWWAuthenticateHeader(e){let r=e.match(/resource_metadata="([^"]+)"/);return r?r[1]:null}static async discoverOAuthFromWWWAuthenticate(e,r){let n=this.parseWWWAuthenticateHeader(e);if(!n)return null;let o=await this.fetchProtectedResourceMetadata(n);if(o&&r){let u=this.buildResourceParameter(r);if(!this.isEquivalentResourceIdentifier(o.resource,u))throw new KC(`Protected resource ${o.resource} does not match expected ${u}`)}if(!o?.authorization_servers?.length)return null;let s=o.authorization_servers[0],c=await this.discoverAuthorizationServerMetadata(s);return c?this.metadataToOAuthConfig(c):null}static extractBaseUrl(e){let r=new URL(e);return`${r.protocol}//${r.host}`}static isSSEEndpoint(e){return e.includes("/sse")||!e.includes("/mcp")}static buildResourceParameter(e){let r=new URL(e);return`${r.protocol}//${r.host}${r.pathname}`}static isEquivalentResourceIdentifier(e,r){let n=o=>{try{return this.buildResourceParameter(o)}catch{return o}};return n(e)===n(r)}static parseTokenExpiry(e){try{let r=JSON.parse(Buffer.from(e.split(".")[1],"base64").toString());if(r&&typeof r.exp=="number")return r.exp*1e3}catch(r){B.error("Failed to parse ID token for expiry time with error:",r)}}};var $Zt=/^(.*\.)?run\.app$/,Sei=[/^.+\.googleapis\.com$/,$Zt],vle=class extends Nf{constructor(r,n){super();this.config=r;if(!n)throw new Error("targetUrl must be provided to GoogleCredentialsAuthProvider to determine token audience.");let o=new URL(n).hostname;if($Zt.test(o)&&(this.useIdToken=!0),this.audience=o,!this.useIdToken&&!Sei.some(u=>u.test(o)))throw new Error(`Host "${o}" is not an allowed host for Google Credential provider.`);let c=this.config.scopes&&this.config.scopes.length>0?this.config.scopes:["https://www.googleapis.com/auth/cloud-platform"];this.auth=new VZt.GoogleAuth({scopes:c})}type="google-credentials";auth;useIdToken=!1;audience;cachedToken;tokenExpiryTime;async initialize(){}async headers(){if(this.cachedToken&&this.tokenExpiryTime&&Date.now()<this.tokenExpiryTime-Hk)return{Authorization:`Bearer ${this.cachedToken}`};if(this.cachedToken=void 0,this.tokenExpiryTime=void 0,this.useIdToken)try{let n=await(await this.auth.getIdTokenClient(this.audience)).idTokenProvider.fetchIdToken(this.audience),o=Rs.parseTokenExpiry(n);return o&&(this.tokenExpiryTime=o,this.cachedToken=n),{Authorization:`Bearer ${n}`}}catch(r){let n=`Failed to get ADC ID token: ${r instanceof Error?r.message:String(r)}`;throw B.error(n,r),new Error(n)}try{let r=await this.auth.getClient(),n=await r.getAccessToken();if(n.token){this.cachedToken=n.token;let o=r.credentials;return o.expiry_date&&(this.tokenExpiryTime=o.expiry_date),{Authorization:`Bearer ${n.token}`}}throw new Error("Failed to retrieve ADC access token.")}catch(r){let n=`Failed to get ADC access token: ${r instanceof Error?r.message:String(r)}`;throw B.error(n,r),new Error(n)}}async shouldRetryWithHeaders(r,n){if(n.status!==401&&n.status!==403){this.authRetryCount=0;return}if(!(this.authRetryCount>=Nf.MAX_AUTH_RETRIES))return this.authRetryCount++,B.debug("[GoogleCredentialsAuthProvider] Re-fetching token after auth failure"),this.cachedToken=void 0,this.tokenExpiryTime=void 0,this.headers()}};var fb=class t{static async create(e){let{agentName:r,authConfig:n,agentCard:o}=e;if(!n)return o?.securitySchemes&&Object.keys(o.securitySchemes).length>0,void 0;switch(n.type){case"google-credentials":{let s=new vle(n,e.targetUrl);return await s.initialize(),s}case"apiKey":{let s=new Ale(n);return await s.initialize(),s}case"http":{let s=new Ele(n);return await s.initialize(),s}case"oauth2":{let{OAuth2AuthProvider:s}=await import("./oauth2-provider-QU5NILIP.js"),c=new s(n,e.agentName??"unknown",o,e.agentCardUrl);return await c.initialize(),c}case"openIdConnect":throw new Error("openIdConnect auth provider not yet implemented");default:{let s=n;throw new Error(`Unknown auth type: ${s.type}`)}}}static async createFromConfig(e,r){return await t.create({authConfig:e,agentName:r})}static validateAuthConfig(e,r){if(!r||Object.keys(r).length===0)return{valid:!0};let n=Object.keys(r);if(!e)return{valid:!1,diff:{requiredSchemes:n,configuredType:void 0,missingConfig:["Authentication is required but not configured"]}};let o=t.findMatchingScheme(e,r);return o.matched?{valid:!0}:{valid:!1,diff:{requiredSchemes:n,configuredType:e.type,missingConfig:o.missingConfig}}}static findMatchingScheme(e,r){let n=[];for(let[o,s]of Object.entries(r))switch(s.type){case"apiKey":if(e.type==="apiKey")return{matched:!0,missingConfig:[]};n.push(`Scheme '${o}' requires apiKey authentication`);break;case"http":if(e.type==="http"){if(e.scheme.toLowerCase()===s.scheme.toLowerCase())return{matched:!0,missingConfig:[]};n.push(`Scheme '${o}' requires HTTP ${s.scheme} authentication, but ${e.scheme} was configured`)}else{if(e.type==="google-credentials"&&s.scheme.toLowerCase()==="bearer")return{matched:!0,missingConfig:[]};n.push(`Scheme '${o}' requires HTTP ${s.scheme} authentication`)}break;case"oauth2":if(e.type==="oauth2")return{matched:!0,missingConfig:[]};n.push(`Scheme '${o}' requires OAuth 2.0 authentication`);break;case"openIdConnect":if(e.type==="openIdConnect")return{matched:!0,missingConfig:[]};n.push(`Scheme '${o}' requires OpenID Connect authentication`);break;case"mutualTLS":n.push(`Scheme '${o}' requires mTLS authentication (not yet supported)`);break;default:{let c=s;n.push(`Unknown security scheme type: ${c.type}`)}}return{matched:!1,missingConfig:n}}static describeRequiredAuth(e){let r=[];for(let[n,o]of Object.entries(e))switch(o.type){case"apiKey":r.push(`API Key (${n}): Send ${o.name} in ${o.in}`);break;case"http":r.push(`HTTP ${o.scheme} (${n})`);break;case"oauth2":r.push(`OAuth 2.0 (${n})`);break;case"openIdConnect":r.push(`OpenID Connect (${n})`);break;case"mutualTLS":r.push(`Mutual TLS (${n})`);break;default:{let s=o;r.push(`Unknown (${n}): ${s.type}`)}}return r.join(" OR ")}};var HZt=100,zk=class t{constructor(e){this.config=e}runtimeAliases={};runtimeOverrides=[];getAvailableModelOptions(e){let r=this.config.modelDefinitions??{},n=e.hasAccessToPreview??!1,o=e.useGemini3_1??!1,s=e.useGemini3_1FlashLite??!1,c=Object.entries(r).filter(([a,p])=>!(p.isVisible!==!0||p.isPreview&&!n||p.tier!=="auto")).map(([a,p])=>({modelId:a,name:p.displayName??lS(a),description:a==="auto-gemini-3"&&o?(p.dialogDescription??"").replace("gemini-3-pro","gemini-3.1-pro"):p.dialogDescription??"",tier:p.tier??"auto"})),u=Object.entries(r).filter(([a,p])=>!(p.isVisible!==!0||p.isPreview&&!n||p.tier==="auto"||e.hasAccessToProModel===!1&&BJe(a)||a===Qw&&!o||a===uQ&&!s)).map(([a,p])=>{let f=this.resolveModelId(a,e),g=this.resolveModelId(a,{useGemini3_1:o,useGemini3_1FlashLite:s});return{modelId:f,name:p.displayName??lS(g),description:p.dialogDescription??"",tier:p.tier??"custom"}}),d=new Set,l=u.filter(a=>d.has(a.modelId)?!1:(d.add(a.modelId),!0));return[...c,...l]}getModelDefinition(e){let r=this.config.modelDefinitions?.[e];if(r)return r;if(!e.startsWith("gemini-"))return{tier:"custom",family:"custom",features:{}}}getModelDefinitions(){return this.config.modelDefinitions??{}}matches(e,r){return Object.entries(e).every(([n,o])=>{if(o===void 0)return!0;switch(n){case"useGemini3_1":return o===r.useGemini3_1;case"useGemini3_1FlashLite":return o===r.useGemini3_1FlashLite;case"useCustomTools":return o===r.useCustomTools;case"hasAccessToPreview":return o===r.hasAccessToPreview;case"requestedModels":return Array.isArray(o)&&!!r.requestedModel&&o.includes(r.requestedModel);default:return!1}})}resolveModelId(e,r={}){let n=this.config.modelIdResolutions?.[e];if(!n)return e;for(let o of n.contexts??[])if(this.matches(o.condition,r))return o.target;return n.default}resolveClassifierModelId(e,r,n={}){let o=this.config.classifierIdResolutions?.[e],s={...n,requestedModel:r};if(!o)return this.resolveModelId(e,s);for(let c of o.contexts??[])if(this.matches(c.condition,s))return c.target;return o.default}getModelChain(e){return this.config.modelChains?.[e]}resolveChain(e,r={}){let n=this.config.modelChains?.[e];if(n)return n.map(o=>({...o,model:this.resolveModelId(o.model,r)}))}registerRuntimeModelConfig(e,r){this.runtimeAliases[e]=r}registerRuntimeModelOverride(e){this.runtimeOverrides.push(e)}internalGetResolvedConfig(e){let{aliases:r={},customAliases:n={},overrides:o=[],customOverrides:s=[]}=this.config||{},c={...r,...n,...this.runtimeAliases},{aliasChain:u,baseModel:d,resolvedConfig:l}=this.resolveAliasChain(e.model,c,e.isChatModel),a=this.buildModelLevelMap(u,d),p=[...o,...s,...this.runtimeOverrides],f=this.findMatchingOverrides(p,e,a);this.sortOverrides(f);let g={model:d,generateContentConfig:l};for(let y of f)g=t.merge(g,y.modelConfig);return{model:g.model,generateContentConfig:g.generateContentConfig??{}}}resolveAliasChain(e,r,n){let o=[];if(r[e]){let s=e,c=new Set;for(;s;){let l=r[s];if(!l)throw new Error(`Alias "${s}" not found.`);if(c.size>=HZt)throw new Error(`Alias inheritance chain exceeded maximum depth of ${HZt}.`);if(c.has(s))throw new Error(`Circular alias dependency: ${[...c,s].join(" -> ")}`);c.add(s),o.push(s),s=l.extends}let u=[...o].reverse(),d={};for(let l of u){let a=r[l];d=t.merge(d,a.modelConfig)}return{aliasChain:u,baseModel:d.model,resolvedConfig:d.generateContentConfig??{}}}if(n){let s="chat-base";if(r[s]){let c=this.resolveAliasChain(s,r);return{aliasChain:[...c.aliasChain,e],baseModel:e,resolvedConfig:c.resolvedConfig}}}return{aliasChain:[e],baseModel:e,resolvedConfig:{}}}buildModelLevelMap(e,r){let n=new Map;return r&&n.set(r,0),e.forEach((o,s)=>n.set(o,s+1)),n}findMatchingOverrides(e,r,n){return e.map((o,s)=>{let c=Object.entries(o.match);if(c.length===0)return null;let u=0;return c.every(([l,a])=>{if(l==="model"){let p=n.get(a);return p===void 0?!1:(u=p,!0)}return l==="overrideScope"&&a==="core"?r.overrideScope==="core"||!r.overrideScope:r[l]===a})?{specificity:c.length,level:u,modelConfig:o.modelConfig,index:s}:null}).filter(o=>o!==null)}sortOverrides(e){e.sort((r,n)=>r.level!==n.level?r.level-n.level:r.specificity!==n.specificity?r.specificity-n.specificity:r.index-n.index)}getResolvedConfig(e){let r=this.internalGetResolvedConfig(e);if(!r.model)throw new Error(`Could not resolve a model name for alias "${e.model}". Please ensure the alias chain or a matching override specifies a model.`);return{model:r.model,generateContentConfig:r.generateContentConfig}}static isObject(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}static merge(e,r){return{model:r.model??e.model,generateContentConfig:t.deepMerge(e.generateContentConfig,r.generateContentConfig)}}static deepMerge(e,r){return t.genericDeepMerge(e,r)}static genericDeepMerge(...e){return e.reduce((r,n)=>(n&&Object.keys(n).forEach(o=>{let s=r[o],c=n[o];t.isObject(s)&&t.isObject(c)?r[o]=t.genericDeepMerge(s,c):r[o]=c}),r),{})}};var dm=class extends Error{userMessage;agentName;constructor(e,r,n,o){super(r,o),this.name="A2AAgentError",this.agentName=e,this.userMessage=n}},fQe=class extends dm{constructor(e,r){let n=`Agent card not found at ${r} (HTTP 404)`,o=`Agent card not found (404) at ${r}. Verify the agent_card_url in your agent definition.`;super(e,n,o),this.name="AgentCardNotFoundError"}},_le=class extends dm{statusCode;constructor(e,r,n){let o=n===401?"Unauthorized":"Forbidden",s=`Agent card request returned ${n} ${o} for ${r}`,c=`Authentication failed (${n} ${o}) at ${r}. Check the "auth" configuration in your agent definition.`;super(e,s,c),this.name="AgentCardAuthError",this.statusCode=n}},ble=class extends dm{requiredAuth;missingFields;constructor(e,r,n){let o=`Agent "${e}" requires authentication but none is configured`,s=`Agent requires ${r} but no auth is configured. Missing: ${n.join(", ")}`;super(e,o,s),this.name="AgentAuthConfigMissingError",this.requiredAuth=r,this.missingFields=n}},Sle=class extends dm{constructor(e,r,n){let o=n instanceof Error?n.message:String(n),s=`Failed to connect to agent "${e}" at ${r}: ${o}`,c=`Connection failed for ${r}: ${o}`;super(e,s,c,{cause:n}),this.name="AgentConnectionError"}};function Tei(t){return typeof t=="object"&&t!==null}function Cei(t){let e=[],r=t,n=0,o=10;for(;r&&n<o;){if(Tei(r)){let s=r;r instanceof Error?e.push(r.message):typeof s.message=="string"&&e.push(s.message),typeof s.code=="string"&&e.push(s.code),typeof s.status=="number"?e.push(String(s.status)):typeof s.statusCode=="number"&&e.push(String(s.statusCode)),r=s.cause}else if(typeof r=="string"){e.push(r);break}else{e.push(String(r));break}n++}return e.join(" ")}function zZt(t,e,r){let n=Cei(r);return/\b(ECONNREFUSED|ENOTFOUND|EHOSTUNREACH|ETIMEDOUT)\b/i.test(n)?new Sle(t,e,r):/\b404\b|\bnot[\s_-]?found\b/i.test(n)?new fQe(t,e):/\b401\b|unauthorized/i.test(n)?new _le(t,e,401):/\b403\b|forbidden/i.test(n)?new _le(t,e,403):new Sle(t,e,r)}function T9(t){return`${t.name}-config`}var WZt="AgentRegistry (Dynamic)",Tle=class{constructor(e){this.config=e}agents=new Map;allDefinitions=new Map;builtInAgents=new Set;initialized=!1;async initialize(){if(this.initialized){await this.loadAgents();return}this.initialized=!0,ve.on("model-changed",this.onModelChanged),await this.loadAgents()}isBuiltIn(e){return this.builtInAgents.has(e)}onModelChanged=()=>{this.refreshAgents("local").catch(e=>{B.error("[AgentRegistry] Failed to refresh agents on model change:",e)})};async reload(){let e=new Map(this.agents),r=[];this.config.getA2AClientManager()?.clearCache(),await this.config.reloadAgents(),await this.loadAgents(r);let n=Array.from(this.agents.values()),o=[],s=[],c=[],u=0,d=0;for(let l of n){l.kind==="local"?u++:l.kind==="remote"&&d++;let a=e.get(l.name);a?l.metadata?.hash!==a.metadata?.hash&&s.push(l.name):o.push(l.name)}for(let l of e.keys())this.agents.has(l)||c.push(l);return ve.emitAgentsRefreshed(),{totalLoaded:n.length,localCount:u,remoteCount:d,newAgents:o,updatedAgents:s,deletedAgents:c,errors:r}}async acknowledgeAgent(e){let r=this.config.getAcknowledgedAgentsService(),n=this.config.getProjectRoot();e.metadata?.hash&&(await r.acknowledge(n,e.name,e.metadata.hash),await this.registerAgent(e),ve.emitAgentsRefreshed())}dispose(){ve.off("model-changed",this.onModelChanged)}async loadAgents(e){if(this.agents.clear(),this.allDefinitions.clear(),this.loadBuiltInAgents(),this.config.getPolicyEngine()?.removeRulesBySource(WZt),!this.config.isAgentsEnabled())return;let r=Ut.getUserAgentsDir(),n=await cQe(r);for(let c of n.errors){B.warn(`[AgentRegistry] Error loading user agent: ${c.message}`);let u=`Agent loading error: ${c.message}`;e?.push(u),ve.emitFeedback("error",u)}await Promise.allSettled(n.agents.map(async c=>{try{this.ensureRemoteAgentHash(c),await this.registerAgent(c,e)}catch(u){let d=`Error registering user agent "${c.name}": ${u instanceof Error?u.message:String(u)}`;B.warn(`[AgentRegistry] ${d}`,u),e?.push(d),ve.emitFeedback("error",d)}}));let o=this.config.getFolderTrust(),s=this.config.isTrustedFolder();if(!o||s){let c=this.config.storage.getProjectAgentsDir(),u=await cQe(c);for(let f of u.errors){let g=`Agent loading error: ${f.message}`;e?.push(g),ve.emitFeedback("error",g)}let d=this.config.getAcknowledgedAgentsService(),l=this.config.getProjectRoot(),a=[],p=[];for(let f of u.agents){if(this.ensureRemoteAgentHash(f),!f.metadata?.hash){p.push(f);continue}await d.isAcknowledged(l,f.name,f.metadata.hash)?p.push(f):a.push(f)}a.length>0&&ve.emitAgentsDiscovered(a),await Promise.allSettled(p.map(async f=>{try{await this.registerAgent(f,e)}catch(g){let y=`Error registering project agent "${f.name}": ${g instanceof Error?g.message:String(g)}`;B.warn(`[AgentRegistry] ${y}`,g),e?.push(y),ve.emitFeedback("error",y)}}))}else ve.emitFeedback("info","Skipping project agents due to untrusted folder. To enable, ensure that the project root is trusted.");for(let c of this.config.getExtensions())c.isActive&&c.agents&&await Promise.allSettled(c.agents.map(async u=>{try{await this.registerAgent(u,e)}catch(d){let l=`Error registering extension agent "${u.name}": ${d instanceof Error?d.message:String(d)}`;B.warn(`[AgentRegistry] ${l}`,d),e?.push(l),ve.emitFeedback("error",l)}}));this.config.getDebugMode()&&B.log(`[AgentRegistry] Loaded with ${this.agents.size} agents.`)}loadBuiltInAgents(){let e=Hae(this.config);this.builtInAgents.add(e.name),this.registerLocalAgent(e);let r=UZt(this.config);this.builtInAgents.add(r.name),this.registerLocalAgent(r);let n=FZt(this.config);this.builtInAgents.add(n.name),this.registerLocalAgent(n);let o=this.config.getBrowserAgentConfig();if(o.enabled){let s=process.env.SANDBOX,c=!!s&&s!=="sandbox-exec"&&s!=="sandbox:none",u=o.customConfig.sessionMode??"persistent";if(c&&u!=="existing")ve.emitFeedback("info",'Browser agent disabled in container sandbox. To use it, set sessionMode to "existing" in settings and start Chrome with --remote-debugging-port=9222 on the host.');else{let d=yle(this.config);this.builtInAgents.add(d.name),this.registerLocalAgent(d)}}}async refreshAgents(e="all"){this.loadBuiltInAgents(),await Promise.allSettled(Array.from(this.agents.values()).map(async r=>{(e==="all"||r.kind===e)&&await this.registerAgent(r)}))}async registerAgent(e,r){e.kind==="local"?this.registerLocalAgent(e):e.kind==="remote"&&await this.registerRemoteAgent(e,r)}registerLocalAgent(e){if(e.kind!=="local")return;if(!e.name||!e.description){B.warn("[AgentRegistry] Skipping invalid agent definition. Missing name or description.");return}this.allDefinitions.set(e.name,e);let r=this.config.getAgentsSettings().overrides?.[e.name];if(!this.isAgentEnabled(e,r)){this.config.getDebugMode()&&B.log(`[AgentRegistry] Skipping disabled agent '${e.name}'`);return}this.agents.has(e.name)&&this.config.getDebugMode()&&B.log(`[AgentRegistry] Overriding agent '${e.name}'`);let n=this.applyOverrides(e,r);this.agents.set(n.name,n),this.registerModelConfigs(n),this.addAgentPolicy(n)}addAgentPolicy(e){let r=this.config.getPolicyEngine();if(r){if(r.hasRuleForTool(e.name,!0)){this.config.getDebugMode()&&B.log(`[AgentRegistry] User policy exists for '${e.name}', skipping dynamic registration.`);return}e.kind==="remote"&&r.addRule({toolName:XC.Name,argsPattern:new RegExp(`"agent_name":\\s*"${e.name}"`),decision:"ask_user",priority:nQ+.1,source:WZt})}}isAgentEnabled(e,r){let o=!(e.experimental===!0);return r&&r.enabled!==void 0&&(o=r.enabled),o}async registerRemoteAgent(e,r){if(e.kind!=="remote")return;if(!e.name){B.warn("[AgentRegistry] Skipping invalid agent definition. Missing name.");return}this.allDefinitions.set(e.name,e);let n=this.config.getAgentsSettings().overrides?.[e.name];if(!this.isAgentEnabled(e,n)){this.config.getDebugMode()&&B.log(`[AgentRegistry] Skipping disabled remote agent '${e.name}'`);return}this.agents.has(e.name)&&this.config.getDebugMode()&&B.log(`[AgentRegistry] Overriding agent '${e.name}'`);let o=e;o.originalDescription===void 0&&(o.originalDescription=o.description);try{let s=this.config.getA2AClientManager();if(!s){B.warn(`[AgentRegistry] Skipping remote agent '${e.name}': A2AClientManager is not available.`);return}let c=ole(o),u;if(e.auth){let f=await fb.create({authConfig:e.auth,agentName:e.name,targetUrl:c,agentCardUrl:o.agentCardUrl});if(!f)throw new Error(`Failed to create auth provider for agent '${e.name}'`);u=f}let d=await s.loadAgent(o.name,ile(o),u);if(d.securitySchemes){let f=fb.validateAuthConfig(e.auth,d.securitySchemes);if(!f.valid&&f.diff){let g=fb.describeRequiredAuth(d.securitySchemes),y=new ble(e.name,g,f.diff.missingConfig);ve.emitFeedback("warning",`[${e.name}] Agent requires authentication: ${g}`),B.warn(`[AgentRegistry] ${y.message}`)}}let l=o.originalDescription,a=d.description,p=[];if(l?.trim()&&p.push(`User Description: ${l.trim()}`),a?.trim()&&p.push(`Agent Description: ${a.trim()}`),d.skills&&d.skills.length>0){let f=d.skills.map(g=>`${g.name}: ${g.description||"No description provided"}`).join(`
|
|
2518
2518
|
`);p.push(`Skills:
|
|
2519
2519
|
${f}`)}p.length>0&&(e.description=p.join(`
|
|
2520
2520
|
`)),this.config.getDebugMode()&&B.log(`[AgentRegistry] Registered remote agent '${e.name}' with card: ${e.agentCardUrl??"inline JSON"}`),this.agents.set(e.name,e),this.addAgentPolicy(e)}catch(s){let c;s instanceof dm?c=`[${e.name}] ${s.userMessage}`:c=`[${e.name}] Failed to load remote agent: ${s instanceof Error?s.message:String(s)}`,r?.push(c),ve.emitFeedback("error",c),B.warn(`[AgentRegistry] Error loading A2A agent "${e.name}":`,s)}}applyOverrides(e,r){if(e.kind!=="local"||!r)return e;let n={get kind(){return e.kind},get name(){return e.name},get displayName(){return e.displayName},get description(){return e.description},get experimental(){return e.experimental},get metadata(){return e.metadata},get inputConfig(){return e.inputConfig},get outputConfig(){return e.outputConfig},get promptConfig(){return e.promptConfig},get toolConfig(){return e.toolConfig},get processOutput(){return e.processOutput},get runConfig(){return r.runConfig?{...e.runConfig,...r.runConfig}:e.runConfig},get modelConfig(){return r.modelConfig?zk.merge(e.modelConfig,r.modelConfig):e.modelConfig}};return r.tools&&(n.toolConfig={tools:r.tools}),r.mcpServers&&(n.mcpServers={...e.mcpServers,...r.mcpServers}),n}registerModelConfigs(e){let r=e.modelConfig,n=r.model;n==="inherit"&&(n=this.config.getModel());let o={...r,model:n};this.config.modelConfigService.registerRuntimeModelConfig(T9(e),{modelConfig:o}),o.model&&Bl(o.model)&&this.config.modelConfigService.registerRuntimeModelOverride({match:{overrideScope:e.name},modelConfig:{generateContentConfig:o.generateContentConfig}})}getDefinition(e){return this.agents.get(e)}getAllDefinitions(){return Array.from(this.agents.values())}getAllAgentNames(){return Array.from(this.agents.keys())}getAllDiscoveredAgentNames(){return Array.from(this.allDefinitions.keys())}getDiscoveredDefinition(e){return this.allDefinitions.get(e)}ensureRemoteAgentHash(e){e.kind==="remote"&&(e.metadata||(e.metadata={}),e.agentCardUrl?e.metadata.hash=e.agentCardUrl:e.agentCardJson&&(e.metadata.hash=YZt.createHash("sha256").update(e.agentCardJson).digest("hex")))}};import{AsyncLocalStorage as wei}from"node:async_hooks";var JZt=new wei;function hQe(t,e){return JZt.run(t,e)}function Cle(){return JZt.getStore()}var KZt=Me(dse(),1);function C9(t){return typeof t=="object"&&t!==null&&"callId"in t&&"responseParts"in t}function w9(t,e,r=3){let n=e.map(c=>({name:c,distance:KZt.default.get(t,c)}));n.sort((c,u)=>c.distance-u.distance);let o=n.slice(0,r);if(o.length===0)return"";let s=o.map(c=>`"${c.name}"`).join(", ");return o.length>1?` Did you mean one of: ${s}?`:` Did you mean ${s}?`}function $yo(t,e,r){let n;xJe(t)?n=[t.name,t.constructor.name]:n=[t],n.some(o=>gp.includes(o))&&(n=[...new Set([...n,...gp])]);for(let o of r){let s=o.indexOf("(");if(s===-1){if(n.includes(o))return!0;continue}let c=o.substring(0,s);if(!n.includes(c)||!o.endsWith(")"))continue;let u=o.substring(s+1,o.length-1),d;if(typeof e=="string")d=e;else{if(!("command"in e.params))continue;d=String(e.params.command)}if(n.some(l=>gp.includes(l))&&(d===u||d.startsWith(u+" ")))return!0}return!1}var wle=class{constructor(e,r=Pnt,n){this.messageBus=e;this.schedulerId=r;this.onTerminalCall=n}activeCalls=new Map;queue=[];_completedBatch=[];addToolCalls(e){this.enqueue(e)}getToolCall(e){return this.activeCalls.get(e)||this.queue.find(r=>r.request.callId===e)||this._completedBatch.find(r=>r.request.callId===e)}enqueue(e){this.queue.push(...e),this.emitUpdate()}dequeue(){let e=this.queue.shift();return e&&(this.activeCalls.set(e.request.callId,e),this.emitUpdate()),e}peekQueue(){return this.queue[0]}get isActive(){return this.activeCalls.size>0}get allActiveCalls(){return Array.from(this.activeCalls.values())}get activeCallCount(){return this.activeCalls.size}get queueLength(){return this.queue.length}get firstActiveCall(){return this.activeCalls.values().next().value}updateStatus(e,r,n){let o=this.activeCalls.get(e);if(!o)return;let s=this.transitionCall(o,r,n);this.activeCalls.set(e,s),this.emitUpdate()}finalizeCall(e){let r=this.activeCalls.get(e);r&&this.isTerminalCall(r)&&(this._completedBatch.push(r),this.activeCalls.delete(e),this.onTerminalCall?.(r),this.emitUpdate())}updateArgs(e,r,n){let o=this.activeCalls.get(e);if(!o||o.status==="error")return;let s=o.request.display?{...o.request.display}:{name:o.request.name};s.description=n.getDescription(),this.activeCalls.set(e,this.patchCall(o,{request:{...o.request,args:r,display:s},invocation:n})),this.emitUpdate()}setOutcome(e,r){let n=this.activeCalls.get(e);n&&(this.activeCalls.set(e,this.patchCall(n,{outcome:r})),this.emitUpdate())}replaceActiveCallWithTailCall(e,r){this.activeCalls.has(e)&&(this.activeCalls.delete(e),this.queue.unshift(r),this.emitUpdate())}cancelAllQueued(e){if(this.queue.length!==0){for(;this.queue.length>0;){let r=this.queue.shift();if(r.status==="error"){this._completedBatch.push(r),this.onTerminalCall?.(r);continue}let n=this.toCancelled(r,e);this._completedBatch.push(n),this.onTerminalCall?.(n)}this.emitUpdate()}}getSnapshot(){return[...this._completedBatch,...Array.from(this.activeCalls.values()),...this.queue]}clearBatch(){this._completedBatch.length!==0&&(this._completedBatch=[],this.emitUpdate())}get completedBatch(){return[...this._completedBatch]}emitUpdate(){let e=this.getSnapshot();this.messageBus.publish({type:"tool-calls-update",toolCalls:e,schedulerId:this.schedulerId})}isTerminalCall(e){let{status:r}=e;return r==="success"||r==="error"||r==="cancelled"}transitionCall(e,r,n){switch(r){case"success":{if(!C9(n))throw new Error(`Invalid data for 'success' transition (callId: ${e.request.callId})`);return this.toSuccess(e,n)}case"error":{if(!C9(n))throw new Error(`Invalid data for 'error' transition (callId: ${e.request.callId})`);return this.toError(e,n)}case"awaiting_approval":{if(!n)throw new Error(`Missing data for 'awaiting_approval' transition (callId: ${e.request.callId})`);return this.toAwaitingApproval(e,n)}case"scheduled":return this.toScheduled(e);case"cancelled":{if(typeof n!="string"&&!C9(n))throw new Error(`Invalid reason (string) or response for 'cancelled' transition (callId: ${e.request.callId})`);return this.toCancelled(e,n)}case"validating":return this.toValidating(e);case"executing":{if(n!==void 0&&!this.isExecutingToolCallPatch(n))throw new Error(`Invalid patch for 'executing' transition (callId: ${e.request.callId})`);return this.toExecuting(e,n)}default:return r}}isExecutingToolCallPatch(e){return typeof e=="object"&&e!==null}validateHasToolAndInvocation(e,r){if(!("tool"in e&&e.tool&&"invocation"in e&&e.invocation))throw new Error(`Invalid state transition: cannot transition to ${r} without tool/invocation (callId: ${e.request.callId})`)}toSuccess(e,r){this.validateHasToolAndInvocation(e,"success");let n="startTime"in e?e.startTime:void 0;return{request:e.request,tool:e.tool,invocation:e.invocation,status:"success",response:r,durationMs:n?Date.now()-n:void 0,outcome:e.outcome,schedulerId:e.schedulerId,approvalMode:e.approvalMode}}toError(e,r){let n="startTime"in e?e.startTime:void 0;return{request:e.request,status:"error",tool:"tool"in e?e.tool:void 0,response:r,durationMs:n?Date.now()-n:void 0,outcome:e.outcome,schedulerId:e.schedulerId,approvalMode:e.approvalMode}}toAwaitingApproval(e,r){this.validateHasToolAndInvocation(e,"awaiting_approval");let n,o;return this.isEventDrivenApprovalData(r)?(o=r.correlationId,n=r.confirmationDetails):n=r,{request:e.request,tool:e.tool,status:"awaiting_approval",correlationId:o,confirmationDetails:n,startTime:"startTime"in e?e.startTime:void 0,outcome:e.outcome,invocation:e.invocation,schedulerId:e.schedulerId,approvalMode:e.approvalMode}}isEventDrivenApprovalData(e){return typeof e=="object"&&e!==null&&"correlationId"in e&&"confirmationDetails"in e}toScheduled(e){return this.validateHasToolAndInvocation(e,"scheduled"),{request:e.request,tool:e.tool,status:"scheduled",startTime:"startTime"in e?e.startTime:void 0,outcome:e.outcome,invocation:e.invocation,schedulerId:e.schedulerId,approvalMode:e.approvalMode}}toCancelled(e,r){this.validateHasToolAndInvocation(e,"cancelled");let n="startTime"in e?e.startTime:void 0,o;if(this.isWaitingToolCall(e)){let u=e.confirmationDetails;u.type==="edit"&&"fileDiff"in u&&"fileName"in u&&"filePath"in u&&"originalContent"in u&&"newContent"in u&&(o={fileDiff:u.fileDiff,fileName:u.fileName,filePath:u.filePath,originalContent:u.originalContent,newContent:u.newContent,diffStat:u.diffStat??LJe(u.fileDiff)})}let s;if(e.status==="executing"&&e.liveOutput&&(s=e.liveOutput),C9(r)){let u={...r};return u.resultDisplay||(u.resultDisplay=o??s),{request:e.request,tool:e.tool,invocation:e.invocation,status:"cancelled",response:u,durationMs:n?Date.now()-n:void 0,outcome:e.outcome,schedulerId:e.schedulerId,approvalMode:e.approvalMode}}let c=`[Operation Cancelled] Reason: ${r}`;return{request:e.request,tool:e.tool,invocation:e.invocation,status:"cancelled",response:{callId:e.request.callId,responseParts:[{functionResponse:{id:e.request.callId,name:e.request.originalRequestName??e.request.name,response:{error:c}}}],resultDisplay:o??s,error:void 0,errorType:void 0,contentLength:c.length},durationMs:n?Date.now()-n:void 0,outcome:e.outcome,schedulerId:e.schedulerId,approvalMode:e.approvalMode}}isWaitingToolCall(e){return e.status==="awaiting_approval"}patchCall(e,r){return{...e,...r}}toValidating(e){return this.validateHasToolAndInvocation(e,"validating"),{request:e.request,tool:e.tool,status:"validating",startTime:"startTime"in e?e.startTime:void 0,outcome:e.outcome,invocation:e.invocation,schedulerId:e.schedulerId,approvalMode:e.approvalMode}}toExecuting(e,r){this.validateHasToolAndInvocation(e,"executing");let n=r,o=n?.liveOutput??("liveOutput"in e?e.liveOutput:void 0),s=n?.pid??("pid"in e?e.pid:void 0),c=n?.progressMessage??("progressMessage"in e?e.progressMessage:void 0),u=n?.progressPercent??("progressPercent"in e?e.progressPercent:void 0),d=n?.progress??("progress"in e?e.progress:void 0),l=n?.progressTotal??("progressTotal"in e?e.progressTotal:void 0);return{request:e.request,tool:e.tool,status:"executing",startTime:"startTime"in e?e.startTime:void 0,outcome:e.outcome,invocation:e.invocation,liveOutput:o,pid:s,progressMessage:c,progressPercent:u,progress:d,progressTotal:l,schedulerId:e.schedulerId,approvalMode:e.approvalMode}}};import{on as xei}from"node:events";import{randomUUID as Oei}from"node:crypto";async function Iei(t,e,r){if(r.aborted)throw new Error("Operation cancelled");try{for await(let[n]of xei(t,"tool-confirmation-response",{signal:r})){let o=n;if(o.correlationId===e)return{outcome:o.outcome??(o.confirmed?"proceed_once":"cancel"),payload:o.payload}}}catch(n){throw r.aborted||n.name==="AbortError"?new Error("Operation cancelled"):n}throw new Error("Operation cancelled")}async function gQe(t,e,r){let{state:n,onWaitingForConfirmation:o}=r,s=t.request.callId,c="modify_with_editor",u;for(;c==="modify_with_editor";){if(e.aborted)throw new Error("Operation cancelled by user");let d=n.getToolCall(s);if(!d||!("invocation"in d))throw new Error(`Tool call ${s} lost during confirmation loop`);let a=await d.invocation.shouldConfirmExecute(e,r.forcedDecision);if(!a){c="proceed_once";break}r.systemMessage&&(a.systemMessage=r.systemMessage),await Rei(r,a);let p=Oei(),f=a;u=f;let g="ideConfirmation"in a?a.ideConfirmation:void 0;n.updateStatus(s,"awaiting_approval",{confirmationDetails:f,correlationId:p}),o?.(!0);let y=await Nei(r.messageBus,p,e,g);if(o?.(!1),c=y.outcome,"onConfirm"in a&&typeof a.onConfirm=="function"&&await a.onConfirm(c,y.payload),c==="modify_with_editor"){let E=await Pei(r,t,e);E.error&&ve.emitFeedback("error",E.error)}else y.payload&&"newContent"in y.payload&&(await kei(r,t,y.payload,e),c="proceed_once")}return{outcome:c,lastDetails:u}}async function Rei(t,e){t.config.getHookSystem()&&await t.config.getHookSystem()?.fireToolNotificationEvent({...e,onConfirm:async()=>{}})}async function Pei(t,e,r){let{state:n,modifier:o,getPreferredEditor:s}=t,c=s(),u=await QMt(c,r);if(!u)return{error:BMt};let d=await o.handleModifyWithEditor(n.firstActiveCall,u,r);if(d){let l=e.tool.build(d.updatedParams);n.updateArgs(e.request.callId,d.updatedParams,l)}return{}}async function kei(t,e,r,n){let{state:o,modifier:s}=t,c=await s.applyInlineModify(o.firstActiveCall,r,n);if(c){let u=e.tool.build(c.updatedParams);o.updateArgs(e.request.callId,c.updatedParams,u)}}async function Nei(t,e,r,n){let o=new AbortController,s=o.signal,c=()=>o.abort();r.aborted?o.abort():r.addEventListener("abort",c);try{let u=Iei(t,e,s);if(!n)return await u;let d=n.then(l=>({outcome:l.status==="accepted"?"proceed_once":"cancel",payload:l.content?{newContent:l.content}:void 0})).catch(l=>(B.warn("Error waiting for confirmation via IDE",l),new Promise(()=>{})));return await Promise.race([u,d])}finally{r.removeEventListener("abort",c),o.abort()}}function XZt(t,e){return{errorMessage:`Tool execution denied by policy.${e?.denyMessage?` ${e.denyMessage}`:""}`,errorType:"policy_violation"}}async function ZZt(t,e,r){let n=t.tool instanceof si?t.tool.serverName:void 0,o=t.tool.toolAnnotations,s=await e.getPolicyEngine().check({name:t.request.name,args:t.request.args},n,o,r),{decision:c}=s;if(c==="ask_user"&&t.request.isClientInitiated&&!t.request.args?.additional_permissions)return{decision:"allow",rule:s.rule};if(c==="ask_user"&&!e.isInteractive())throw new Error(`Tool execution for "${t.tool.displayName||t.tool.name}" requires user confirmation, which is not supported in non-interactive mode.`);return{decision:c,rule:s.rule}}async function eer(t,e,r,n,o,s){let c=n.config.getApprovalMode();Dei(t,e)&&n.config.setApprovalMode("autoEdit");let u,d;if(e==="proceed_always"||e==="proceed_always_tool"||e==="proceed_always_server"||e==="proceed_always_and_save"){let l=ege.indexOf(c);l!==-1&&(d=ege.slice(l))}if(e==="proceed_always_and_save"&&(n.config&&n.config.isTrustedFolder()&&n.config.getWorkspacePoliciesDir()!==void 0?u="workspace":u="user"),r?.type==="mcp"){await Mei(t,e,r,o,u,d);return}await Lei(t,e,r,o,u,s,n.config,d)}function Dei(t,e){return e==="proceed_always"&&kD.has(t.name)}async function Lei(t,e,r,n,o,s,c,u){if(e==="proceed_always"||e==="proceed_always_and_save"){let d=s?.getPolicyUpdateOptions?.(e)||{};if(!d.commandPrefix&&r?.type==="exec")d.commandPrefix=r.rootCommands;else if(!d.argsPattern&&r?.type==="edit"){let l=c?Ri(r.filePath,c.getTargetDir()):r.filePath;d.argsPattern=a_(l)}await n.publish({type:"update-policy",toolName:t.name,persist:e==="proceed_always_and_save",persistScope:o,modes:u,...d})}}async function Mei(t,e,r,n,o,s){if(!(e==="proceed_always"||e==="proceed_always_tool"||e==="proceed_always_server"||e==="proceed_always_and_save"))return;let u=t.name,d=e==="proceed_always_and_save";e==="proceed_always_server"&&(u=dS(r.serverName,"*")),await n.publish({type:"update-policy",toolName:u,mcpName:r.serverName,persist:d,persistScope:o,modes:s})}function mQe(t,e){if(!(t instanceof rKe))return;let n=(e.getMcpClientManager()?.getMcpServers()??e.getMcpServers()??{})[t.serverName];if(n)return{server_name:t.serverName,tool_name:t.serverToolName,command:n.command,args:n.args,cwd:n.cwd,url:n.url??n.httpUrl,tcp:n.tcp}}async function ter(t,e,r,n,o,s,c,u,d){let l=t.params||{},a=!1,p=[],f=c?mQe(t,c):void 0,g=c?.getHookSystem();if(g&&!d){let E=await g.fireBeforeToolEvent(e,l,f,u);if(E?.shouldStopExecution()){let _=E.getEffectiveReason();return{llmContent:`Agent execution stopped by hook: ${_}`,returnDisplay:`Agent execution stopped by hook: ${_}`,error:{type:"stop_execution",message:_}}}let v=E?.getBlockingError();if(v?.blocked)return{llmContent:`Tool execution blocked: ${v.reason}`,returnDisplay:`Tool execution blocked: ${v.reason}`,error:{type:"execution_failed",message:v.reason}};if(E instanceof M0){let _=E.getModifiedToolInput();if(_){Object.assign(t.params,_),B.debug(`Tool input modified by hook for ${e}`),a=!0,p=Object.keys(_);try{t=n.build(t.params)}catch(b){return{llmContent:`Tool parameter modification by hook failed validation: ${b instanceof Error?b.message:String(b)}`,returnDisplay:"Tool parameter modification by hook failed validation.",error:{type:"invalid_tool_params",message:String(b)}}}}}}let y=await t.execute({...s,abortSignal:r,updateOutput:o});if(a){let E=`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
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);
|
|
2
|
-
import{a,b,c,d,e,f,g,h,i,j,k}from"./chunk-
|
|
2
|
+
import{a,b,c,d,e,f,g,h,i,j,k}from"./chunk-P6YMHMJL.js";import"./chunk-2AH4XFVC.js";import"./chunk-CPZLOVAV.js";import"./chunk-TWIC4BKL.js";import"./chunk-JAFVB6DI.js";import"./chunk-A5A5SUZN.js";import"./chunk-YUXORC52.js";export{k as cleanupCheckpoints,a as registerCleanup,c as registerSyncCleanup,g as registerTelemetryConfig,b as removeCleanup,d as removeSyncCleanup,e as resetCleanupForTesting,h as runExitCleanup,f as runSyncCleanup,i as setupSignalHandlers,j as setupTtyCheck};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
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);
|
|
2
|
-
import{a,b,c,d,e,f,g,h,i,j,k}from"./chunk-
|
|
2
|
+
import{a,b,c,d,e,f,g,h,i,j,k}from"./chunk-FJ6IIWF5.js";import"./chunk-YJXXYFOM.js";import"./chunk-VJDLXRZ3.js";import"./chunk-TWIC4BKL.js";import"./chunk-JAFVB6DI.js";import"./chunk-A5A5SUZN.js";import"./chunk-YUXORC52.js";export{k as cleanupCheckpoints,a as registerCleanup,c as registerSyncCleanup,g as registerTelemetryConfig,b as removeCleanup,d as removeSyncCleanup,e as resetCleanupForTesting,h as runExitCleanup,f as runSyncCleanup,i as setupSignalHandlers,j as setupTtyCheck};
|