| 2112 | `,{level:"error"});throw P}}),J.getMeter("com.anthropic.claude_code",{ISSUES_EXPLAINER:"report the issue at https://github.com/anthropics/claude-code/issues",PACKAGE_URL:"@anthropic-ai/claude-code",README_URL:"https://code.claude.com/docs/en/overview",VERSION:"2.1.88",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-30T21:59:52Z"}.VERSION)}async function Qxz(){let q=Xi8();if(!q)return;let K=parseInt(process.env.CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS||"5000");try{let _=[q.forceFlush()],z=Qb6();if(z)_.push(z.forceFlush());let Y=o36();if(Y)_.push(Y.forceFlush());await Promise.race([Promise.all(_),ml1(K,"OpenTelemetry flush timeout")]),N("Telemetry flushed successfully")}catch(_){if(_ instanceof pl1)N(`Telemetry flush timed out after ${K}ms. Some metrics may not be exported.`,{level:"warn"});else N(`Telemetry flush failed: ${d6(_)}`,{level:"error"})}}function dxz(){let q={},K=process.env.OTEL_EXPORTER_OTLP_HEADERS;if(K)for(let _ of K.split(",")){let[z,...Y]=_.split("=");if(z&&Y.length>0)q[z.trim()]=Y.join("=").trim()}return q}function Bl1(){let q=dh(),K=Ch(),_=Z7(),z={},Y=dxz();if(_?.otelHeadersHelper)z.headers=async()=>{let w=Bv1();return{...Y,...w}};else if(Object.keys(Y).length>0)z.headers=async()=>Y;let $=process.env.OTEL_EXPORTER_OTLP_ENDPOINT;if(!q||$&&b66($)){let w=$I();if(K||w)z.httpAgentOptions={...K,...w&&{ca:w}};return z}let A=$I(),O=(w)=>{return K||A?new ul1.HttpsProxyAgent(q,{...K&&{cert:K.cert,key:K.key,passphrase:K.passphrase},...A&&{ca:A}}):new ul1.HttpsProxyAgent(q)};return z.httpAgentOptions=O,z}var N26,Nt6,Lm,C46,S46,b46,h46,ul1,Ixz=60000,Ut4=5000,Qt4=5000,pl1;var Fl1=y(()=>{v8();G7();vK();Lp6();c9();_8();m8();y8();PI();qv();U1();l8();Cx();Ts6();hg4();Sg4();gN6();w46();N26=O6(nK(),1),Nt6=O6(WV1(),1),Lm=O6(pG6(),1),C46=O6(ZV1(),1),S46=O6(z26(),1),b46=O6(fg4(),1),h46=O6(L$6(),1),ul1=O6(Ep6(),1);pl1=class pl1 extends Error{}});var lt4={};T8(lt4,{performLogout:()=>yt6,clearAuthRelatedCaches:()=>WS8,call:()=>cxz});async function yt6({clearOnboarding:q=!1}){let{flushTelemetry:K}=await Promise.resolve().then(() => (Fl1(),gl1));await K(),await pv1(),c3().delete(),await WS8(),b8((z)=>{let Y={...z};if(q){if(Y.hasCompletedOnboarding=!1,Y.subscriptionNoticeCount=0,Y.hasAvailableSubscription=!1,Y.customApiKeyResponses?.approved)Y.customApiKeyResponses={...Y.customApiKeyResponses,approved:[]}}return Y.oauthAccount=void 0,Y})}async function WS8(){Kq.cache?.clear?.(),LF1(),wD8(),kD8(),hG6(),U$6(),K46.cache?.clear?.(),Hm.cache?.clear?.(),await oF1(),await dL8()}async function cxz(){await yt6({clearOnboarding:!0});let q=Ul1.createElement(k,null,"Successfully logged out from your Anthropic account.");return setTimeout(()=>{eK(0,"logout")},200),q}var Ul1;var Ql1=y(()=>{rw6();s6();o1();lN6();ZD();aN6();G7();HG();V1();RA();$16();VD8();f$6();Ul1=O6(D6(),1)});async function nt4(){try{if(j8().claudeCodeFirstTokenDate!==void 0)return;let K=DJ();if(K.error){H6(Error(`Failed to get auth headers: ${K.error}`));return}let z=`${u7().BASE_API_URL}/api/organization/claude_code_first_token_date`,$=(await $1.get(z,{headers:{...K.headers,"User-Agent":n$()},timeout:1e4})).data?.first_token_date??null;if($!==null){let A=new Date($).getTime();if(isNaN(A)){H6(Error(`Received invalid first_token_date from API: ${$}`));return}}b8((A)=>({...A,claudeCodeFirstTokenDate:$}))}catch(q){H6(q)}}var it4=y(()=>{CK();H3();V1();jG();E8()});import{createServer as lxz}from"http";class dl1{localServer;port=0;promiseResolver=null;promiseRejecter=null;expectedState=null;pendingResponse=null;callbackPath;constructor(q="/callback"){this.localServer=lxz(),this.callbackPath=q}async start(q){return new Promise((K,_)=>{this.localServer.once("error",(z)=>{_(Error(`Failed to start OAuth callback server: ${z.message}`))}),this.localServer.listen(q??0,"localhost",()=>{let z=this.localServer.address();this.port=z.port,K(this.port)})})}getPort(){return this.port}hasPendingResponse(){return this.pendingResponse!==null}async waitForAuthorization(q,K){return new Promise((_,z)=>{this.promiseResolver=_,this.promiseRejecter=z,this.expectedState=q,this.startLocalListener(K)})}handleSuccessRedirect(q,K){if(!this.pendingResponse)return;if(K){K(this.pendingResponse,q),this.pendingResponse=null,d("tengu_oauth_automatic_redirect",{custom_handler:!0});return}let _=KS(q)?u7().CLAUDEAI_SUCCESS_URL:u7().CONSOLE_SUCCESS_URL;this.pendingResponse.writeHead(302,{Location:_}),this.pendingResponse.end(),this.pendingResponse=null,d("tengu_oauth_automatic_redirect",{})}handleErrorRedirect(){if(!this.pendingResponse)return;let q=u7().CLAUDEAI_SUCCESS_URL;this.pendingResponse.writeHead(302,{Location:q}),this.pendingResponse.end(),this.pendingResponse=null,d("tengu_oauth_automatic_redirect_error",{})}startLocalListener(q){this.localServer.on("request",this.handleRedirect.bind(this)),this.localServer.on("error",this.handleError.bind(this)),q()}handleRedirect(q,K){let _=new URL(q.url||"",`http://${q.headers.host||"localhost"}`);if(_.pathname!==this.callbackPath){K.writeHead(404),K.end();return}let z=_.searchParams.get("code")??void 0,Y=_.searchParams.get("state")??void 0;this.validateAndRespond(z,Y,K)}validateAndRespond(q,K,_){if(!q){_.writeHead(400),_.end("Authorization code not found"),this.reject(Error("No authorization code received"));return}if(K!==this.expectedState){_.writeHead(400),_.end("Invalid state parameter"),this.reject(Error("Invalid state parameter"));return}this.pendingResponse=_,this.resolve(q)}handleError(q){H6(q),this.close(),this.reject(q)}resolve(q){if(this.promiseResolver)this.promiseResolver(q),this.promiseResolver=null,this.promiseRejecter=null}reject(q){if(this.promiseRejecter)this.promiseRejecter(q),this.promiseResolver=null,this.promiseRejecter=null}close(){if(this.pendingResponse)this.handleErrorRedirect();if(this.localServer)this.localServer.removeAllListeners(),this.localServer.close()}}var rt4=y(()=>{k8();H3();E8();pW()});import{createHash as nxz,randomBytes as ot4}from"crypto";function cl1(q){return q.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function at4(){return cl1(ot4(32))}function st4(q){let K=nxz("sha256");return K.update(q),cl1(K.digest())}function tt4(){return cl1(ot4(32))}var et4=()=>{};class Eo{codeVerifier;authCodeListener=null;port=null;manualAuthCodeResolver=null;constructor(){this.codeVerifier=at4()}async startOAuthFlow(q,K){this.authCodeListener=new dl1,this.port=await this.authCodeListener.start();let _=st4(this.codeVerifier),z=tt4(),Y={codeChallenge:_,state:z,port:this.port,loginWithClaudeAi:K?.loginWithClaudeAi,inferenceOnly:K?.inferenceOnly,orgUUID:K?.orgUUID,loginHint:K?.loginHint,loginMethod:K?.loginMethod},$=AJ8({...Y,isManual:!0}),A=AJ8({...Y,isManual:!1}),O=await this.waitForAuthorizationCode(z,async()=>{if(K?.skipBrowserOpen)await q($,A);else await q($),await m3(A)}),w=this.authCodeListener?.hasPendingResponse()??!1;d("tengu_oauth_auth_code_received",{automatic:w});try{let j=await NJ1(O,z,this.codeVerifier,this.port,!w,K?.expiresIn),H=await OJ8(j.access_token);if(w){let J=vF6(j.scope);this.authCodeListener?.handleSuccessRedirect(J)}return this.formatTokens(j,H.subscriptionType,H.rateLimitTier,H.rawProfile)}catch(j){if(w)this.authCodeListener?.handleErrorRedirect();throw j}finally{this.authCodeListener?.close()}}async waitForAuthorizationCode(q,K){return new Promise((_,z)=>{this.manualAuthCodeResolver=_,this.authCodeListener?.waitForAuthorization(q,K).then((Y)=>{this.manualAuthCodeResolver=null,_(Y)}).catch((Y)=>{this.manualAuthCodeResolver=null,z(Y)})})}handleManualAuthCodeInput(q){if(this.manualAuthCodeResolver)this.manualAuthCodeResolver(q.authorizationCode),this.manualAuthCodeResolver=null,this.authCodeListener?.close()}formatTokens(q,K,_,z){return{accessToken:q.access_token,refreshToken:q.refresh_token,expiresAt:Date.now()+q.expires_in*1000,scopes:vF6(q.scope),subscriptionType:K,rateLimitTier:_,profile:z,tokenAccount:q.account?{uuid:q.account.uuid,emailAddress:q.account.email_address,organizationUuid:q.organization?.uuid}:void 0}}cleanup(){this.authCodeListener?.close(),this.manualAuthCodeResolver=null}}var Et6=y(()=>{k8();hH();rt4();pW();et4()});import{access as rxz,chmod as oxz,writeFile as axz}from"fs/promises";import{join as Lt6}from"path";function DS8(){return Lt6(c1(),"local")}function Ke4(){return Lt6(DS8(),"claude")}function _e4(){return(process.argv[1]||"").includes("/.claude/local/node_modules/")}async function qe4(q,K,_){try{return await axz(q,K,{encoding:"utf8",flag:"wx",mode:_}),!0}catch(z){if(s1(z)==="EEXIST")return!1;throw z}}async function sxz(){try{let q=DS8();await X8().mkdir(q),await qe4(Lt6(q,"package.json"),g6({name:"claude-local",version:"0.0.1",private:!0},null,2));let K=Lt6(q,"claude");if(await qe4(K,`#!/bin/sh |
| 2123 | `),eK(1)}catch(q){H6(q)}}async function I46(){return(await He4()).external||void 0}async function je4(){return(await He4()).external_message||void 0}async function He4(){try{return await gS("tengu_max_version_config",{})}catch(q){return H6(q),{}}}function ly6(q){let _=N7()?.minimumVersion;if(!_)return!1;let z=!yP(q,_);if(z)N(`Skipping update to ${q} - below minimumVersion ${_}`);return z}function Je4(){return zIz(c1(),".update.lock")}async function $Iz(){let q=X8(),K=Je4();try{let _=await q.stat(K);if(Date.now()-_.mtimeMs<Oe4)return!1;try{let Y=await q.stat(K);if(Date.now()-Y.mtimeMs<Oe4)return!1;await q.unlink(K)}catch(Y){if(!_7(Y))return H6(Y),!1}}catch(_){if(!_7(_))return H6(_),!1}try{return await Ae4(K,`${process.pid}`,{encoding:"utf8",flag:"wx"}),!0}catch(_){let z=s1(_);if(z==="EEXIST")return!1;if(z==="ENOENT")try{return await q.mkdir(c1()),await Ae4(K,`${process.pid}`,{encoding:"utf8",flag:"wx"}),!0}catch(Y){if(s1(Y)==="EEXIST")return!1;return H6(Y),!1}return H6(_),!1}}async function AIz(){let q=X8(),K=Je4();try{if(await q.readFile(K,{encoding:"utf8"})===`${process.pid}`)await q.unlink(K)}catch(_){if(_7(_))return;H6(_)}}async function OIz(){let q=a1.isRunningWithBun(),K=null;if(q)K=await S7("bun",["pm","bin","-g"],{cwd:St6()});else K=await S7("npm",["-g","config","get","prefix"],{cwd:St6()});if(K.code!==0)return H6(Error(`Failed to check ${q?"bun":"npm"} permissions`)),null;return K.stdout.trim()}async function il1(){try{let q=await OIz();if(!q)return{hasPermissions:!1,npmPrefix:null};try{return await _Iz(q,KIz.W_OK),{hasPermissions:!0,npmPrefix:q}}catch{return H6(new TS8("Insufficient permissions for global npm install.")),{hasPermissions:!1,npmPrefix:q}}}catch(q){return H6(q),{hasPermissions:!1,npmPrefix:null}}}async function L26(q){let K=q==="stable"?"stable":"latest",_=await S7("npm",["view",`${{ISSUES_EXPLAINER:"report the issue at https://github.com/anthropics/claude-code/issues",PACKAGE_URL:"@anthropic-ai/claude-code",README_URL:"https://code.claude.com/docs/en/overview",VERSION:"2.1.88",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-30T21:59:52Z"}.PACKAGE_URL}@${K}`,"version","--prefer-online"],{abortSignal:AbortSignal.timeout(5000),cwd:St6()});if(_.code!==0){if(N(`npm view failed with code ${_.code}`),_.stderr)N(`npm stderr: ${_.stderr.trim()}`);else N("npm stderr: (empty)");if(_.stdout)N(`npm stdout: ${_.stdout.trim()}`);return null}return _.stdout.trim()}async function Me4(){let q=await S7("npm",["view",{ISSUES_EXPLAINER:"report the issue at https://github.com/anthropics/claude-code/issues",PACKAGE_URL:"@anthropic-ai/claude-code",README_URL:"https://code.claude.com/docs/en/overview",VERSION:"2.1.88",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-30T21:59:52Z"}.PACKAGE_URL,"dist-tags","--json","--prefer-online"],{abortSignal:AbortSignal.timeout(5000),cwd:St6()});if(q.code!==0)return N(`npm view dist-tags failed with code ${q.code}`),{latest:null,stable:null};try{let K=r8(q.stdout.trim());return{latest:typeof K.latest==="string"?K.latest:null,stable:typeof K.stable==="string"?K.stable:null}}catch(K){return N(`Failed to parse dist-tags: ${K}`),{latest:null,stable:null}}}async function vS8(q){try{return(await $1.get(`${YIz}/${q}`,{timeout:5000,responseType:"text"})).data.trim()}catch(K){return N(`Failed to fetch ${q} from GCS: ${K}`),null}}async function Xe4(){let[q,K]=await Promise.all([vS8("latest"),vS8("stable")]);return{latest:q,stable:K}}async function Ct6(q){if(!await $Iz())return H6(new TS8("Another process is currently installing an update")),d("tengu_auto_updater_lock_contention",{pid:process.pid,currentVersion:{ISSUES_EXPLAINER:"report the issue at https://github.com/anthropics/claude-code/issues",PACKAGE_URL:"@anthropic-ai/claude-code",README_URL:"https://code.claude.com/docs/en/overview",VERSION:"2.1.88",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-30T21:59:52Z"}.VERSION}),"in_progress";try{if(await wIz(),!a1.isRunningWithBun()&&a1.isNpmFromWindowsPath())return H6(Error("Windows NPM detected in WSL environment")),d("tengu_auto_updater_windows_npm_in_wsl",{currentVersion:{ISSUES_EXPLAINER:"report the issue at https://github.com/anthropics/claude-code/issues",PACKAGE_URL:"@anthropic-ai/claude-code",README_URL:"https://code.claude.com/docs/en/overview",VERSION:"2.1.88",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-30T21:59:52Z"}.VERSION}),console.error(` |