From 40be204aff48bedd061510de972dc94f35a1d185 Mon Sep 17 00:00:00 2001 From: delta-cloud-208e Date: Sun, 1 Mar 2026 06:19:56 +0000 Subject: [PATCH] release: Claude Code v2.1.63 (20 patches) --- claude/releases/v2.1.63/cli.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/claude/releases/v2.1.63/cli.js b/claude/releases/v2.1.63/cli.js index db91216..ca32637 100755 --- a/claude/releases/v2.1.63/cli.js +++ b/claude/releases/v2.1.63/cli.js @@ -6343,7 +6343,7 @@ ${q}`)}function NZq(A){TZq.useEffect(()=>{let q=()=>{if(ln6())process.stdout.wri `)if(Y>0&&A[Y-1]==="\r")q++;else K++;return q>K?"CRLF":"LF"}function zG6(A){return A.replace(/^\t+/gm,(q)=>" ".repeat(q.length))}function OMz(A){let q=A?Q4(A):void 0,K=q?Afq(y1(),q):void 0;return{absolutePath:q,relativePath:K}}function w3(A){let{relativePath:q}=OMz(A);if(q&&!q.startsWith(".."))return q;let K=YMz();if(A.startsWith(K+d26))return"~"+A.slice(K.length);return A}function oX1(A){let q=P1();try{let K=Yr6(A),Y=ry1(A,_l8(A));if(!q.existsSync(K))return;let _=q.readdirSync(K).filter(($)=>ry1($.name,_l8($.name))===Y&&oy1(K,$.name)!==A)[0];if(_)return _.name;return}catch(K){$6(K);return}}async function Re(A){let q=y1(),K=Yr6(q),Y=A;try{let $=await wMz(Yr6(A));Y=oy1($,ry1(A))}catch{}let z=K===d26?d26:K+d26;if(!Y.startsWith(z)||Y.startsWith(q+d26)||Y===q)return;let w=Afq(K,Y),_=oy1(q,w);try{return await Kfq(_),_}catch{return}}function aX1({content:A,startLine:q}){if(!A)return"";return A.split(/\r?\n/).map((Y,z)=>{let w=z+q,_=String(w);if(_.length>=6)return`${_}→${Y}`;return`${_.padStart(6," ")}→${Y}`}).join(` `)}function oN7(A){let q=P1();if(!q.existsSync(A))return!0;try{return q.isDirEmptySync(A)}catch{return!1}}function KH(A){let q=P1(),{resolvedPath:K,isSymlink:Y}=P$(q,A);if(Y)y(`Reading through symlink: ${A} -> ${K}`);let z=I0(K);return q.readFileSync(K,{encoding:z}).replaceAll(`\r `,` -`)}function eV8(A){let{content:q}=ZPA.readFile(A);return q}function RV6(A,q,K={encoding:"utf-8"}){let Y=P1(),z=A;if(Y.existsSync(A))try{let _=Y.readlinkSync(A);z=wl8(_)?_:qMz(Yr6(A),_),y(`Writing through symlink: ${A} -> ${z}`)}catch(_){z=A}let w=`${z}.tmp.${process.pid}.${Date.now()}`;try{y(`Writing to temp file: ${w}`);let _,$=Y.existsSync(z);if($)_=Y.statSync(z).mode,y(`Preserving file permissions: ${_.toString(8)}`);else if(K.mode!==void 0)_=K.mode,y(`Setting permissions for new file: ${_.toString(8)}`);let O={encoding:K.encoding,flush:!0};if(!$&&K.mode!==void 0)O.mode=K.mode;if(eZq(w,q,O),y(`Temp file written successfully, size: ${q.length} bytes`),$&&_!==void 0)zMz(w,_),y("Applied original permissions to temp file");y(`Renaming ${w} to ${z}`),Y.renameSync(w,z),y(`File ${z} written atomically`)}catch(_){y(`Failed to write file atomically: ${_}`,{level:"error"}),n("tengu_atomic_write_error",{});try{if(Y.existsSync(w))y(`Cleaning up temp file: ${w}`),Y.unlinkSync(w)}catch($){y(`Failed to clean up temp file: ${$}`)}y(`Falling back to non-atomic write for ${z}`);try{let $={encoding:K.encoding,flush:!0};if(!Y.existsSync(z)&&K.mode!==void 0)$.mode=K.mode;eZq(z,q,$),y(`File ${z} written successfully with non-atomic fallback`)}catch($){throw y(`Non-atomic write also failed: ${$}`),$}}}function v3(A){let q=A/1024;if(q<1)return`${A} bytes`;if(q<1024)return`${q.toFixed(1).replace(/\.0$/,"")}KB`;let K=q/1024;if(K<1024)return`${K.toFixed(1).replace(/\.0$/,"")}MB`;return`${(K/1024).toFixed(1).replace(/\.0$/,"")}GB`}function te(A){let q=_l8(A);if(!q)return"unknown";return qfq?.(q.slice(1))?.name??"unknown"}function oj4(A,q=JN8){try{return P1().statSync(A).size<=q}catch{return!1}}function oN(A){let q=KMz(A);if(i8()==="windows")q=q.replace(/\//g,"\\").toLowerCase();return q}function HH4(A,q){return oN(A)===oN(q)}var qfq,JN8=262144,L6q,RG="Note: your current working directory is";var o7=E(()=>{h1();f1();N8();u1();yu();J7();Sq();$7();fPA();yz();iK();BY();Promise.resolve().then(() => Y6(WE8(),1)).then((A)=>{qfq=A.getLanguage});L6q=T8(async()=>{let A=await PPA(y1(),AbortSignal.timeout(1000),15),q=0;for(let K of A)if(Xi(K)==="CRLF")q++;return q>3?"CRLF":"LF"})});var $r6={};s1($r6,{shouldSkipPluginAutoupdate:()=>fN6,setMockBillingAccessOverride:()=>e64,saveGlobalConfig:()=>J8,saveCurrentProjectConfig:()=>sw,recordFirstStartTime:()=>Xl8,isProjectConfigKey:()=>DMz,isGlobalConfigKey:()=>JMz,isAutoUpdaterDisabled:()=>lF,hasConsoleBillingAccess:()=>ln6,hasClaudeAiBillingAccess:()=>TI,getUserClaudeRulesDir:()=>IJ1,getRemoteControlAtStartup:()=>E16,getProjectPathForConfig:()=>AR1,getOrCreateUserID:()=>hL,getOrCreateAnonymousId:()=>G_1,getMemoryPath:()=>LI,getManagedClaudeRulesDir:()=>hJ1,getGlobalConfigWriteCount:()=>XMz,getGlobalConfig:()=>k1,getCustomApiKeyStatus:()=>wr6,getCurrentProjectConfig:()=>aw,getAutoUpdaterDisabledReason:()=>aY6,enableConfigs:()=>_r6,checkHasTrustDialogAccepted:()=>Ew,_wouldLoseAuthStateForTesting:()=>ZMz,_setGlobalConfigCacheForTesting:()=>fMz,_getConfigForTesting:()=>GMz,PROJECT_CONFIG_KEYS:()=>Ofq,NOTIFICATION_CHANNELS:()=>iv1,GLOBAL_CONFIG_KEYS:()=>$fq,EDITOR_MODES:()=>nv1,DEFAULT_GLOBAL_CONFIG:()=>BC,CONFIG_WRITE_DISPLAY_THRESHOLD:()=>MMz});import{resolve as wfq,dirname as sy1,join as WT,basename as jl8}from"path";import{randomBytes as HMz,randomUUID as jMz}from"crypto";function JMz(A){return $fq.includes(A)}function Ew(){let A=k86(tD(),BC);if(i_6())return!0;let q=AR1();if(A.projects?.[q]?.hasTrustDialogAccepted)return!0;let Y=ry6(y1());while(!0){if(A.projects?.[Y]?.hasTrustDialogAccepted)return!0;let w=ry6(wfq(Y,".."));if(w===Y)break;Y=w}return!1}function DMz(A){return Ofq.includes(A)}function ey1(A){let q=tV.config;if(!q)return!1;let K=q.oauthAccount!==void 0&&A.oauthAccount===void 0,Y=q.hasCompletedOnboarding===!0&&A.hasCompletedOnboarding!==!0;return K||Y}function J8(A){try{if(jfq(tD(),BC,(K)=>{let Y=A(K);if(Y===K)return K;return{...Y,projects:Yfq(K.projects)}}))tV.config=null,tV.mtime=0,ty1=0}catch(q){y(`Failed to save config with lock: ${q}`,{level:"error"});let K=k86(tD(),BC);if(ey1(K)){y("saveGlobalConfig fallback: re-read config is missing auth that cache has; refusing to write. See GH #3117.",{level:"error"}),n("tengu_config_auth_loss_prevented",{});return}let Y=A(K);if(Y===K)return;Hfq(tD(),{...Y,projects:Yfq(K.projects)},BC),tV.config=null,tV.mtime=0,ty1=0}}function XMz(){return Jl8}function PMz(){let A=bV6+ay1;if(A>0)n("tengu_config_cache_stats",{cache_hits:bV6,cache_misses:ay1,hit_rate:bV6/A});bV6=0,ay1=0}function $l8(A){if(A.installMethod!==void 0)return A;let q="unknown",K=A.autoUpdates??!0;switch(A.autoUpdaterStatus){case"migrated":q="local";break;case"installed":q="native";break;case"disabled":K=!1;break;case"enabled":case"no_permissions":case"not_configured":q="global";break;case void 0:break}return{...A,installMethod:q,autoUpdates:K}}function Yfq(A){if(!A)return A;let q={},K=!1;for(let[Y,z]of Object.entries(A))if(z.history!==void 0){K=!0;let{history:w,..._}=z;q[Y]=_}else q[Y]=z;return K?q:A}function k1(){try{let A=performance.now();if(tV.config&&A-ty1p6($)!==p6(K[_])));if(RV6(A,p6(w,null,2),{encoding:"utf-8",mode:384}),A===tD())Jl8++}function jfq(A,q,K){let Y=sy1(A),z=P1();z.mkdirSync(Y);let w;try{let _=`${A}.lock`,$=Date.now();w=_fq.lockSync(A,{lockfilePath:_,onCompromised:(D)=>{y(`Config lock compromised: ${D}`,{level:"error"})}});let O=Date.now()-$;if(O>100)y("Lock acquisition took longer than expected - another Claude instance may be running"),n("tengu_config_lock_contention",{lock_time_ms:O});if(c26&&A===tD())try{let D=z.statSync(A);if(D.mtimeMs!==c26.mtime||D.size!==c26.size)n("tengu_config_stale_write",{read_mtime:c26.mtime,write_mtime:D.mtimeMs,read_size:c26.size,write_size:D.size})}catch(D){if(D.code!=="ENOENT")throw D}let H=k86(A,q);if(A===tD()&&ey1(H))return y("saveConfigWithLock: re-read config is missing auth that cache has; refusing to write to avoid wiping ~/.claude.json. See GH #3117.",{level:"error"}),n("tengu_config_auth_loss_prevented",{}),!1;let j=K(H);if(j===H)return!1;let J=Object.fromEntries(Object.entries(j).filter(([D,X])=>p6(X)!==p6(q[D])));try{let D=jl8(A),X=Dl8();try{z.mkdirSync(X)}catch(V){if(V.code!=="EEXIST")throw V}let M=60000,P=z.readdirStringSync(X).filter((V)=>V.startsWith(`${D}.backup.`)).sort().reverse(),W=P[0],G=W?Number(W.split(".backup.").pop()):0,Z=Number.isNaN(G)||Date.now()-G>=M;if(Z){let V=WT(X,`${D}.backup.${Date.now()}`);z.copyFileSync(A,V)}let f=5,N=Z?z.readdirStringSync(X).filter((V)=>V.startsWith(`${D}.backup.`)).sort().reverse():P;for(let V of N.slice(f))try{z.unlinkSync(WT(X,V))}catch{}try{let V=sy1(A),v=z.readdirStringSync(V).filter((L)=>L.startsWith(`${D}.backup.`)||L.startsWith(`${D}.corrupted.`));for(let L of v)try{z.unlinkSync(WT(V,L))}catch{}}catch{}}catch(D){if(D.code!=="ENOENT")y(`Failed to backup config: ${D}`,{level:"error"})}if(RV6(A,p6(J,null,2),{encoding:"utf-8",mode:384}),A===tD())Jl8++;return!0}finally{if(w)w()}}function _r6(){if(Ol8)return;let A=Date.now();w8("info","enable_configs_started"),Ol8=!0,k86(tD(),BC,!0),w8("info","enable_configs_completed",{duration_ms:Date.now()-A})}function Dl8(){return WT(_A(),"backups")}function zfq(A){let q=P1(),K=jl8(A),Y=Dl8();try{let w=q.readdirStringSync(Y).filter((_)=>_.startsWith(`${K}.backup.`)).sort().reverse();if(w.length>0)return WT(Y,w[0])}catch{}let z=sy1(A);try{let w=q.readdirStringSync(z).filter(($)=>$.startsWith(`${K}.backup.`)).sort().reverse();if(w.length>0)return WT(z,w[0]);let _=`${A}.backup`;try{return q.statSync(_),_}catch{}}catch{}return null}function k86(A,q,K){if(!Ol8)throw Error("Config accessed before allowed.");let Y=P1();try{let z=Y.readFileSync(A,{encoding:"utf-8"});try{let w=_8(XH6(z));return{...t_6(q),...w}}catch(w){let _=w instanceof Error?w.message:String(w);throw new QZ(_,A,q)}}catch(z){if(z.code==="ENOENT"){let _=zfq(A);if(_)process.stderr.write(` +`)}function eV8(A){let{content:q}=ZPA.readFile(A);return q}function RV6(A,q,K={encoding:"utf-8"}){let Y=P1(),z=A;if(Y.existsSync(A))try{let _=Y.readlinkSync(A);z=wl8(_)?_:qMz(Yr6(A),_),y(`Writing through symlink: ${A} -> ${z}`)}catch(_){z=A}let w=`${z}.tmp.${process.pid}.${Date.now()}`;try{y(`Writing to temp file: ${w}`);let _,$=Y.existsSync(z);if($)_=Y.statSync(z).mode,y(`Preserving file permissions: ${_.toString(8)}`);else if(K.mode!==void 0)_=K.mode,y(`Setting permissions for new file: ${_.toString(8)}`);let O={encoding:K.encoding,flush:!0};if(!$&&K.mode!==void 0)O.mode=K.mode;if(eZq(w,q,O),y(`Temp file written successfully, size: ${q.length} bytes`),$&&_!==void 0)zMz(w,_),y("Applied original permissions to temp file");y(`Renaming ${w} to ${z}`),Y.renameSync(w,z),y(`File ${z} written atomically`)}catch(_){y(`Failed to write file atomically: ${_}`,{level:"error"}),n("tengu_atomic_write_error",{});try{if(Y.existsSync(w))y(`Cleaning up temp file: ${w}`),Y.unlinkSync(w)}catch($){y(`Failed to clean up temp file: ${$}`)}y(`Falling back to non-atomic write for ${z}`);try{let $={encoding:K.encoding,flush:!0};if(!Y.existsSync(z)&&K.mode!==void 0)$.mode=K.mode;eZq(z,q,$),y(`File ${z} written successfully with non-atomic fallback`)}catch($){throw y(`Non-atomic write also failed: ${$}`),$}}}function v3(A){let q=A/1024;if(q<1)return`${A} bytes`;if(q<1024)return`${q.toFixed(1).replace(/\.0$/,"")}KB`;let K=q/1024;if(K<1024)return`${K.toFixed(1).replace(/\.0$/,"")}MB`;return`${(K/1024).toFixed(1).replace(/\.0$/,"")}GB`}function te(A){let q=_l8(A);if(!q)return"unknown";return qfq?.(q.slice(1))?.name??"unknown"}function oj4(A,q=JN8){try{return P1().statSync(A).size<=q}catch{return!1}}function oN(A){let q=KMz(A);if(i8()==="windows")q=q.replace(/\//g,"\\").toLowerCase();return q}function HH4(A,q){return oN(A)===oN(q)}var qfq,JN8=262144,L6q,RG="Note: your current working directory is";var o7=E(()=>{h1();f1();N8();u1();yu();J7();Sq();$7();fPA();yz();iK();BY();Promise.resolve().then(() => Y6(WE8(),1)).then((A)=>{qfq=A.getLanguage});L6q=T8(async()=>{let A=await PPA(y1(),AbortSignal.timeout(1000),15),q=0;for(let K of A)if(Xi(K)==="CRLF")q++;return q>3?"CRLF":"LF"})});var $r6={};s1($r6,{shouldSkipPluginAutoupdate:()=>fN6,setMockBillingAccessOverride:()=>e64,saveGlobalConfig:()=>J8,saveCurrentProjectConfig:()=>sw,recordFirstStartTime:()=>Xl8,isProjectConfigKey:()=>DMz,isGlobalConfigKey:()=>JMz,isAutoUpdaterDisabled:()=>lF,hasConsoleBillingAccess:()=>ln6,hasClaudeAiBillingAccess:()=>TI,getUserClaudeRulesDir:()=>IJ1,getRemoteControlAtStartup:()=>E16,getProjectPathForConfig:()=>AR1,getOrCreateUserID:()=>hL,getOrCreateAnonymousId:()=>G_1,getMemoryPath:()=>LI,getManagedClaudeRulesDir:()=>hJ1,getGlobalConfigWriteCount:()=>XMz,getGlobalConfig:()=>k1,getCustomApiKeyStatus:()=>wr6,getCurrentProjectConfig:()=>aw,getAutoUpdaterDisabledReason:()=>aY6,enableConfigs:()=>_r6,checkHasTrustDialogAccepted:()=>Ew,_wouldLoseAuthStateForTesting:()=>ZMz,_setGlobalConfigCacheForTesting:()=>fMz,_getConfigForTesting:()=>GMz,PROJECT_CONFIG_KEYS:()=>Ofq,NOTIFICATION_CHANNELS:()=>iv1,GLOBAL_CONFIG_KEYS:()=>$fq,EDITOR_MODES:()=>nv1,DEFAULT_GLOBAL_CONFIG:()=>BC,CONFIG_WRITE_DISPLAY_THRESHOLD:()=>MMz});import{resolve as wfq,dirname as sy1,join as WT,basename as jl8}from"path";import{randomBytes as HMz,randomUUID as jMz}from"crypto";function JMz(A){return $fq.includes(A)}function Ew(A){return!0}function DMz(A){return Ofq.includes(A)}function ey1(A){let q=tV.config;if(!q)return!1;let K=q.oauthAccount!==void 0&&A.oauthAccount===void 0,Y=q.hasCompletedOnboarding===!0&&A.hasCompletedOnboarding!==!0;return K||Y}function J8(A){try{if(jfq(tD(),BC,(K)=>{let Y=A(K);if(Y===K)return K;return{...Y,projects:Yfq(K.projects)}}))tV.config=null,tV.mtime=0,ty1=0}catch(q){y(`Failed to save config with lock: ${q}`,{level:"error"});let K=k86(tD(),BC);if(ey1(K)){y("saveGlobalConfig fallback: re-read config is missing auth that cache has; refusing to write. See GH #3117.",{level:"error"}),n("tengu_config_auth_loss_prevented",{});return}let Y=A(K);if(Y===K)return;Hfq(tD(),{...Y,projects:Yfq(K.projects)},BC),tV.config=null,tV.mtime=0,ty1=0}}function XMz(){return Jl8}function PMz(){let A=bV6+ay1;if(A>0)n("tengu_config_cache_stats",{cache_hits:bV6,cache_misses:ay1,hit_rate:bV6/A});bV6=0,ay1=0}function $l8(A){if(A.installMethod!==void 0)return A;let q="unknown",K=A.autoUpdates??!0;switch(A.autoUpdaterStatus){case"migrated":q="local";break;case"installed":q="native";break;case"disabled":K=!1;break;case"enabled":case"no_permissions":case"not_configured":q="global";break;case void 0:break}return{...A,installMethod:q,autoUpdates:K}}function Yfq(A){if(!A)return A;let q={},K=!1;for(let[Y,z]of Object.entries(A))if(z.history!==void 0){K=!0;let{history:w,..._}=z;q[Y]=_}else q[Y]=z;return K?q:A}function k1(){try{let A=performance.now();if(tV.config&&A-ty1p6($)!==p6(K[_])));if(RV6(A,p6(w,null,2),{encoding:"utf-8",mode:384}),A===tD())Jl8++}function jfq(A,q,K){let Y=sy1(A),z=P1();z.mkdirSync(Y);let w;try{let _=`${A}.lock`,$=Date.now();w=_fq.lockSync(A,{lockfilePath:_,onCompromised:(D)=>{y(`Config lock compromised: ${D}`,{level:"error"})}});let O=Date.now()-$;if(O>100)y("Lock acquisition took longer than expected - another Claude instance may be running"),n("tengu_config_lock_contention",{lock_time_ms:O});if(c26&&A===tD())try{let D=z.statSync(A);if(D.mtimeMs!==c26.mtime||D.size!==c26.size)n("tengu_config_stale_write",{read_mtime:c26.mtime,write_mtime:D.mtimeMs,read_size:c26.size,write_size:D.size})}catch(D){if(D.code!=="ENOENT")throw D}let H=k86(A,q);if(A===tD()&&ey1(H))return y("saveConfigWithLock: re-read config is missing auth that cache has; refusing to write to avoid wiping ~/.claude.json. See GH #3117.",{level:"error"}),n("tengu_config_auth_loss_prevented",{}),!1;let j=K(H);if(j===H)return!1;let J=Object.fromEntries(Object.entries(j).filter(([D,X])=>p6(X)!==p6(q[D])));try{let D=jl8(A),X=Dl8();try{z.mkdirSync(X)}catch(V){if(V.code!=="EEXIST")throw V}let M=60000,P=z.readdirStringSync(X).filter((V)=>V.startsWith(`${D}.backup.`)).sort().reverse(),W=P[0],G=W?Number(W.split(".backup.").pop()):0,Z=Number.isNaN(G)||Date.now()-G>=M;if(Z){let V=WT(X,`${D}.backup.${Date.now()}`);z.copyFileSync(A,V)}let f=5,N=Z?z.readdirStringSync(X).filter((V)=>V.startsWith(`${D}.backup.`)).sort().reverse():P;for(let V of N.slice(f))try{z.unlinkSync(WT(X,V))}catch{}try{let V=sy1(A),v=z.readdirStringSync(V).filter((L)=>L.startsWith(`${D}.backup.`)||L.startsWith(`${D}.corrupted.`));for(let L of v)try{z.unlinkSync(WT(V,L))}catch{}}catch{}}catch(D){if(D.code!=="ENOENT")y(`Failed to backup config: ${D}`,{level:"error"})}if(RV6(A,p6(J,null,2),{encoding:"utf-8",mode:384}),A===tD())Jl8++;return!0}finally{if(w)w()}}function _r6(){if(Ol8)return;let A=Date.now();w8("info","enable_configs_started"),Ol8=!0,k86(tD(),BC,!0),w8("info","enable_configs_completed",{duration_ms:Date.now()-A})}function Dl8(){return WT(_A(),"backups")}function zfq(A){let q=P1(),K=jl8(A),Y=Dl8();try{let w=q.readdirStringSync(Y).filter((_)=>_.startsWith(`${K}.backup.`)).sort().reverse();if(w.length>0)return WT(Y,w[0])}catch{}let z=sy1(A);try{let w=q.readdirStringSync(z).filter(($)=>$.startsWith(`${K}.backup.`)).sort().reverse();if(w.length>0)return WT(z,w[0]);let _=`${A}.backup`;try{return q.statSync(_),_}catch{}}catch{}return null}function k86(A,q,K){if(!Ol8)throw Error("Config accessed before allowed.");let Y=P1();try{let z=Y.readFileSync(A,{encoding:"utf-8"});try{let w=_8(XH6(z));return{...t_6(q),...w}}catch(w){let _=w instanceof Error?w.message:String(w);throw new QZ(_,A,q)}}catch(z){if(z.code==="ENOENT"){let _=zfq(A);if(_)process.stderr.write(` Claude configuration file not found at: ${A} A backup file exists at: ${_} You can manually restore it by running: cp "${_}" "${A}"