From a8d2261e2827bd1342b890dc2c44d977028c7404 Mon Sep 17 00:00:00 2001 From: delta-cloud-208e Date: Mon, 23 Mar 2026 08:52:55 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20a4z=5Fbypass=5Ffirst=20regex=20=E2=80=94?= =?UTF-8?q?=20function=20changed=20from=205=20to=203=20params=20in=20v2.1.?= =?UTF-8?q?81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Permission function aHY(A,q,K) has 3 params now, old regex expected 5. Fixed to match any param count. All 28 patches GREEN. Co-Authored-By: Claude Opus 4.6 --- claude/releases/v2.1.81/cli.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/claude/releases/v2.1.81/cli.js b/claude/releases/v2.1.81/cli.js index bb64ada..52e3d1d 100755 --- a/claude/releases/v2.1.81/cli.js +++ b/claude/releases/v2.1.81/cli.js @@ -7014,7 +7014,7 @@ Install SoX manually for audio recording.`}`};if(!await w()){let W;if(process.pl `)));for(let C of m)if(C.type==="summary"&&C.leafUuid)_.set(C.leafUuid,C.summary);else if(C.type==="custom-title"&&C.sessionId)Y.set(C.sessionId,C.customTitle);else if(C.type==="tag"&&C.sessionId)z.set(C.sessionId,C.tag);else if(C.type==="agent-name"&&C.sessionId)w.set(C.sessionId,C.agentName);else if(C.type==="agent-color"&&C.sessionId)O.set(C.sessionId,C.agentColor);else if(C.type==="agent-setting"&&C.sessionId)$.set(C.sessionId,C.agentSetting);else if(C.type==="mode"&&C.sessionId)M.set(C.sessionId,C.mode);else if(C.type==="worktree-state"&&C.sessionId)X.set(C.sessionId,C.worktreeSession);else if(C.type==="pr-link"&&C.sessionId)H.set(C.sessionId,C.prNumber),j.set(C.sessionId,C.prUrl),J.set(C.sessionId,C.prRepository)}let g=mu(S);for(let m of g)if(mi(m)){if(m.type==="progress"&&m.data&&typeof m.data==="object"&&"type"in m.data&&Ns6(m.data.type))continue;if(m.type==="progress"&&m.data&&typeof m.data==="object"&&"normalizedMessages"in m.data&&Array.isArray(m.data.normalizedMessages)&&m.data.normalizedMessages.length>0)m.data.normalizedMessages=[];if(K.set(m.uuid,m),of(m))Z.length=0,G=void 0}else if(m.type==="summary"&&m.leafUuid)_.set(m.leafUuid,m.summary);else if(m.type==="custom-title"&&m.sessionId)Y.set(m.sessionId,m.customTitle);else if(m.type==="tag"&&m.sessionId)z.set(m.sessionId,m.tag);else if(m.type==="agent-name"&&m.sessionId)w.set(m.sessionId,m.agentName);else if(m.type==="agent-color"&&m.sessionId)O.set(m.sessionId,m.agentColor);else if(m.type==="agent-setting"&&m.sessionId)$.set(m.sessionId,m.agentSetting);else if(m.type==="mode"&&m.sessionId)M.set(m.sessionId,m.mode);else if(m.type==="worktree-state"&&m.sessionId)X.set(m.sessionId,m.worktreeSession);else if(m.type==="pr-link"&&m.sessionId)H.set(m.sessionId,m.prNumber),j.set(m.sessionId,m.prUrl),J.set(m.sessionId,m.prRepository);else if(m.type==="file-history-snapshot")D.set(m.messageId,m);else if(m.type==="attribution-snapshot")P.set(m.messageId,m);else if(m.type==="content-replacement")if(m.agentId){let C=f.get(m.agentId)??[];f.set(m.agentId,C),C.push(...m.replacements)}else{let C=W.get(m.sessionId)??[];W.set(m.sessionId,C),C.push(...m.replacements)}else if(m.type==="marble-origami-commit")Z.push(m);else if(m.type==="marble-origami-snapshot")G=m}catch{}wHY(K);let v=[...K.values()],k=new Set(v.map((S)=>S.parentUuid).filter((S)=>S!==null)),N=v.filter((S)=>!k.has(S.uuid)),E=new Set,R=!1;if(l8("tengu_pebble_leaf_prune",!1)){let S=new Set;for(let u of v)if(u.parentUuid&&(u.type==="user"||u.type==="assistant"))S.add(u.parentUuid);for(let u of N){let b=new Set,g=u;while(g){if(b.has(g.uuid)){R=!0;break}if(b.add(g.uuid),g.type==="user"||g.type==="assistant"){if(!S.has(g.uuid))E.add(g.uuid);break}g=g.parentUuid?K.get(g.parentUuid):void 0}}}else for(let S of N){let u=new Set,b=S;while(b){if(u.has(b.uuid)){R=!0;break}if(u.add(b.uuid),b.type==="user"||b.type==="assistant"){E.add(b.uuid);break}b=b.parentUuid?K.get(b.parentUuid):void 0}}if(R)Q("tengu_transcript_parent_cycle",{});return{messages:K,summaries:_,customTitles:Y,tags:z,agentNames:w,agentColors:O,agentSettings:$,prNumbers:H,prUrls:j,prRepositories:J,modes:M,worktreeStates:X,fileHistorySnapshots:D,attributionSnapshots:P,contentReplacements:W,agentContentReplacements:f,contextCollapseCommits:Z,contextCollapseSnapshot:G,leafUuids:E}}async function gEq(A){let q=DN(P$6()??IO(l1()),`${A}.jsonl`);return G26(q)}function Oh1(){CV6.cache.clear?.()}async function Ht1(A,q){return(await CV6(A)).has(q)}async function mn6(A){let{messages:q,summaries:K,customTitles:_,tags:Y,agentSettings:z,worktreeStates:w,fileHistorySnapshots:O,attributionSnapshots:$,contentReplacements:H,contextCollapseCommits:j,contextCollapseSnapshot:J}=await gEq(A);if(q.size===0)return null;if(!CV6.cache.has(A))CV6.cache.set(A,Promise.resolve(new Set(q.keys())));let M=gb8(q.values(),(Z)=>!Z.isSidechain);if(!M)return null;let X=Vs6(q,M),D=K.get(M.uuid),P=_.get(M.sessionId),W=Y.get(M.sessionId),f=z.get(A);return{...as1(X,0,D,P,pb8(O,X),W,Gv(A),Fb8($,X),f,H.get(A)??[]),worktreeSession:w.get(A),contextCollapseCommits:j.filter((Z)=>Z.sessionId===A),contextCollapseSnapshot:J?.sessionId===A?J:void 0}}async function zI8(A){let q=await BEq(A),{logs:K}=await v26(q,0,q.length);return Kj6(K).map((_,Y)=>({..._,value:Y}))}async function ra1(A,q){if(q?.skipIndex)return THY(A);return(await Ub8(A,q?.initialEnrichCount??cb8)).logs}async function THY(A){let q=lx(),K;try{K=await Bb8(q,{withFileTypes:!0})}catch{return[]}let _=K.filter((O)=>O.isDirectory()).map((O)=>DN(q,O.name)),z=(await Promise.all(_.map((O)=>kHY(O,A)))).flat(),w=new Map;for(let O of z){let $=`${O.sessionId??""}:${O.leafUuid??""}`,H=w.get($);if(!H||O.modified.getTime()>H.modified.getTime())w.set($,O)}return Kj6([...w.values()]).map((O,$)=>({...O,value:$}))}async function Ub8(A,q=cb8){let K=lx(),_;try{_=await Bb8(K,{withFileTypes:!0})}catch{return{logs:[],allStatLogs:[],nextIndex:0}}let Y=_.filter((H)=>H.isDirectory()).map((H)=>DN(K,H.name)),z=[];for(let H of Y)z.push(...SV6(H,A));let w=UEq(z),{logs:O,nextIndex:$}=await v26(w,0,q);return{logs:O.map((H,j)=>({...H,value:j})),allStatLogs:w,nextIndex:$}}async function vI8(A,q,K=cb8){return(await ys6(A,q,K)).logs}async function ys6(A,q,K=cb8){V(`/resume: loading sessions for cwd=${l1()}, worktrees=[${A.join(", ")}]`);let _=await pEq(A,q);V(`/resume: found ${_.length} session files on disk`);let{logs:Y,nextIndex:z}=await v26(_,0,K);return{logs:Y.map((w,O)=>({...w,value:O})),allStatLogs:_,nextIndex:z}}async function pEq(A,q){let K=lx();if(A.length<=1){let $=l1(),H=IO($);return SV6(H,void 0,$)}let _=process.platform==="win32",Y=A.map(($)=>{let H=UM($);return{path:$,prefix:_?H.toLowerCase():H}});Y.sort(($,H)=>H.prefix.length-$.prefix.length);let z=[],w=new Set,O;try{O=await Bb8(K,{withFileTypes:!0})}catch($){V(`Failed to read projects dir ${K}, falling back to current project: ${$}`);let H=IO(l1());return SV6(H,q,l1())}for(let $ of O){if(!$.isDirectory())continue;let H=_?$.name.toLowerCase():$.name;if(w.has(H))continue;for(let{path:j,prefix:J}of Y)if(H===J||H.startsWith(J+"-")){w.add(H),z.push(...SV6(DN(K,$.name),void 0,j));break}}return UEq(z)}async function wG6(A){let q=DW(A);try{let{messages:K,agentContentReplacements:_}=await G26(q),Y=Array.from(K.values()).filter((H)=>H.agentId===A&&H.isSidechain);if(Y.length===0)return null;let z=new Set(Y.map((H)=>H.parentUuid)),w=gb8(Y,(H)=>!z.has(H.uuid));if(!w)return null;return{messages:Vs6(K,w).filter((H)=>H.agentId===A).map(({isSidechain:H,parentUuid:j,...J})=>J),contentReplacements:_.get(A)??[]}}catch{return null}}function jt1(A){let q=[];for(let K of A)if(K.type==="progress"&&K.data&&typeof K.data==="object"&&"type"in K.data&&K.data.type==="agent_progress"&&"agentId"in K.data&&typeof K.data.agentId==="string")q.push(K.data.agentId);return[...new Set(q)]}function bi1(A){let q={};for(let K of Object.values(A))if(K.type==="in_process_teammate"&&K.identity?.agentId&&K.messages&&K.messages.length>0)q[K.identity.agentId]=K.messages;return q}async function Qb8(A){let q=await Promise.all(A.map(async(_)=>{try{let Y=await wG6(i2(_));if(Y&&Y.messages.length>0)return{agentId:_,transcript:Y.messages};return null}catch{return null}})),K={};for(let _ of q)if(_)K[_.agentId]=_.transcript;return K}async function xi1(){let A=DN(P$6()??IO(l1()),E8(),"subagents"),q;try{q=await Bb8(A,{withFileTypes:!0})}catch{return{}}let K=q.filter((_)=>_.isFile()&&_.name.startsWith("agent-")&&_.name.endsWith(".jsonl")).map((_)=>_.name.slice(6,-6));return Qb8(K)}function db8(A){if(A.type==="attachment"&&ss1()!=="ant"){if(A.attachment.type==="hook_additional_context"&&a6(process.env.CLAUDE_CODE_SAVE_HOOK_ADDITIONAL_CONTEXT))return!0;return!1}if(A.type==="progress"&&Ns6(A.data?.type))return!1;return!0}function FEq(A){return A.filter(db8)}async function JF1(A){return(await zI8())[A]||null}async function Jt1(A){try{let q=WY(),{messages:K}=await G26(q),_=null;for(let Y of K.values())if(Y.type==="assistant"){let z=Y.message.content;if(Array.isArray(z)){for(let w of z)if(w.type==="tool_use"&&w.id===A){_=Y;break}}}else if(Y.type==="user"){let z=Y.message.content;if(Array.isArray(z)){for(let w of z)if(w.type==="tool_result"&&w.tool_use_id===A)return null}}return _}catch{return null}}function Xs6(A){let q=w8(),K=new Map,_;try{_=q.readdirSync(A)}catch{return K}for(let Y of _){if(!Y.isFile()||!Y.name.endsWith(".jsonl"))continue;let z=qE(c$Y(Y.name,".jsonl"));if(!z)continue;let w=DN(A,Y.name);try{let O=q.statSync(w);K.set(z,{path:w,mtime:O.mtime.getTime(),ctime:O.birthtime.getTime(),size:O.size})}catch{V(`Failed to stat session file: ${w}`)}}return K}async function Eb8(A,q){let{messages:K,summaries:_,customTitles:Y,tags:z,agentNames:w,agentColors:O,agentSettings:$,prNumbers:H,prUrls:j,prRepositories:J,modes:M,fileHistorySnapshots:X,attributionSnapshots:D,contentReplacements:P,leafUuids:W}=await G26(A,{keepAllLeaves:!0});if(K.size===0)return[];let f=[],Z=new Map;for(let v of K.values())if(W.has(v.uuid))f.push(v);else if(v.parentUuid){let k=Z.get(v.parentUuid);if(k)k.push(v);else Z.set(v.parentUuid,[v])}let G=[];for(let v of f){let k=Vs6(K,v);if(k.length===0)continue;let N=Z.get(v.uuid);if(N)N.sort((S,u)=>S.timestampu.timestamp?1:0),k.push(...N);let E=k[0],R=v.sessionId;G.push({date:v.timestamp,messages:Yt1(k),fullPath:A,value:0,created:new Date(E.timestamp),modified:new Date(v.timestamp),firstPrompt:_t1(k),messageCount:zt1(k),isSidechain:E.isSidechain??!1,sessionId:R,leafUuid:v.uuid,summary:_.get(v.uuid),customTitle:Y.get(R),tag:z.get(R),agentName:w.get(R),agentColor:O.get(R),agentSetting:$.get(R),mode:M.get(R),prNumber:H.get(R),prUrl:j.get(R),prRepository:J.get(R),gitBranch:v.gitBranch,projectPath:q??E.cwd,fileHistorySnapshots:pb8(X,k),attributionSnapshots:Fb8(D,k),contentReplacements:P.get(R)??[]})}return G}async function kHY(A,q){let K=Xs6(A);if(K.size===0)return[];let _;if(q&&K.size>q)_=[...K.values()].sort((z,w)=>w.mtime-z.mtime).slice(0,q);else _=[...K.values()];let Y=[];for(let z of _)try{let w=await Eb8(z.path);Y.push(...w)}catch{V(`Failed to load session file: ${z.path}`)}return Y}async function NHY(A,q,K){let{head:_,tail:Y}=await lXA(A,q,K);if(!_)return{firstPrompt:"",isSidechain:!1};let z=_.includes('"isSidechain":true')||_.includes('"isSidechain": true'),w=Wj6(_,"cwd"),O=Wj6(_,"teamName"),$=Wj6(_,"agentSetting"),H=iZ(Y,"lastPrompt")||VHY(_)||CEq(_,"content",200)||CEq(_,"text",200)||"",j=iZ(Y,"customTitle")??iZ(_,"customTitle")??iZ(Y,"aiTitle")??iZ(_,"aiTitle"),J=iZ(Y,"summary"),M=iZ(Y,"tag"),X=iZ(Y,"gitBranch")??Wj6(_,"gitBranch"),D=iZ(Y,"prUrl"),P=iZ(Y,"prRepository"),W,f=iZ(Y,"prNumber");if(f)W=parseInt(f,10)||void 0;if(!W){let Z=Y.lastIndexOf('"prNumber":');if(Z>=0){let G=Y.slice(Z+11,Z+25),v=parseInt(G.trim(),10);if(v>0)W=v}}return{firstPrompt:H,gitBranch:X,isSidechain:z,projectPath:w,teamName:O,customTitle:j,summary:J,tag:M,agentSetting:$,prNumber:W,prUrl:D,prRepository:P}}function VHY(A){let q=0,K=!1,_="";while(q=0?A.slice(q,Y):A.slice(q);if(q=Y>=0?Y+1:A.length,!z.includes('"type":"user"')&&!z.includes('"type": "user"'))continue;if(z.includes('"tool_result"'))continue;if(z.includes('"isMeta":true')||z.includes('"isMeta": true'))continue;try{let w=i8(z);if(w.type!=="user")continue;let O=w.message;if(!O)continue;let $=O.content,H=[];if(typeof $==="string")H.push($);else if(Array.isArray($))for(let j of $){let J=j;if(J.type==="text"&&typeof J.text==="string")H.push(J.text)}for(let j of H){if(!j)continue;let J=j.replace(/\n/g," ").trim(),M=c4(J,cW);if(M){let X=M.replace(/^\//,""),D=c4(J,"command-args")?.trim()||"";if(ap().has(X)||!D){if(!_)_=M;continue}return D?`${M} ${D}`:M}if(bEq.test(J))continue;if(J.length>200)J=J.slice(0,200).trim()+"…";return J}}catch{continue}}if(_)return _;return""}function CEq(A,q,K){let _=[`"${q}":"`,`"${q}": "`];for(let Y of _){let z=A.indexOf(Y);if(z<0)continue;let w=z+Y.length,O=w,$=0;while(O_.modified.getTime())q.set(K.sessionId,K)}return Kj6([...q.values()]).map((K,_)=>({...K,value:_}))}function SV6(A,q,K){let Y=[...Xs6(A).entries()].sort((w,O)=>O[1].mtime-w[1].mtime);if(q&&Y.length>q)Y=Y.slice(0,q);let z=[];for(let[w,O]of Y)z.push({date:new Date(O.mtime).toISOString(),messages:[],isLite:!0,fullPath:O.path,value:0,created:new Date(O.ctime),modified:new Date(O.mtime),firstPrompt:"",messageCount:0,fileSize:O.size,isSidechain:!1,sessionId:w,projectPath:K});return Kj6(z).map((w,O)=>({...w,value:O}))}async function EHY(A,q){if(!A.isLite||!A.fullPath)return A;let K=await NHY(A.fullPath,A.fileSize??0,q),_={...A,isLite:!1,firstPrompt:K.firstPrompt,gitBranch:K.gitBranch,isSidechain:K.isSidechain,teamName:K.teamName,customTitle:K.customTitle,summary:K.summary,tag:K.tag,agentSetting:K.agentSetting,prNumber:K.prNumber,prUrl:K.prUrl,prRepository:K.prRepository,projectPath:K.projectPath??A.projectPath};if(!_.firstPrompt&&!_.customTitle)_.firstPrompt="(session)";if(_.isSidechain)return V(`Session ${A.sessionId} filtered from /resume: isSidechain=true`),null;if(_.teamName)return V(`Session ${A.sessionId} filtered from /resume: teamName=${_.teamName}`),null;return _}async function v26(A,q,K){let _=[],Y=Buffer.alloc(ha),z=q;while(z0)V(`/resume: enriched ${w} sessions, ${O} filtered out, ${_.length} visible (${A.length-z} remaining on disk)`);return{logs:_,nextIndex:z}}var o$Y,bEq,s$Y,os1,IO,XN=null,hEq=!1,SEq=10,PHY,xb8,WHY=25,CV6,cb8=50;var u4=L(()=>{YA();Uz();v8();Z0();r8();UA();W_();gA();fj6();U1();n4();yK();qp6();_J8();H8();L8();iI();KO();P_();V8();a9();Xz();t1();B8();Lz();o$Y={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.81",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-20T21:25:42Z"}.VERSION,bEq=new RegExp(`^(?:||<${eN}>|\\[Request interrupted by user[^\\]]*\\]|\\s*[\\s\\S]*\\s*$|\\s*[\\s\\S]*\\s*$)`);s$Y=new Set(["bash_progress","powershell_progress","mcp_progress",...[]]);os1=new Map;IO=z1((A)=>{return DN(lx(),UM(A))});PHY=['"type":"summary"','"type":"custom-title"','"type":"tag"','"type":"agent-name"','"type":"agent-color"','"type":"agent-setting"','"type":"mode"','"type":"worktree-state"','"type":"pr-link"'],xb8=PHY.map((A)=>Buffer.from(A));CV6=z1(async(A)=>{let{messages:q}=await gEq(A);return new Set(q.keys())},(A)=>A)});import{join as PN,normalize as IV6,posix as vA6,sep as LW}from"path";import{homedir as dEq,tmpdir as yHY}from"os";import{randomBytes as LHY}from"crypto";function yZ(A){return A.toLowerCase()}function SHY(A){let q=H4(A),K=yZ(q),_=[{dir:H4(PN(l1(),".claude","skills")),prefix:"/.claude/skills/"},{dir:H4(PN(dEq(),".claude","skills")),prefix:"~/.claude/skills/"}];for(let{dir:Y,prefix:z}of _){let w=yZ(Y);for(let O of[LW,"/"])if(K.startsWith(w+O.toLowerCase())){let $=q.slice(Y.length+O.length),H=$.indexOf("/"),j=LW==="\\"?$.indexOf("\\"):-1,J=H===-1?j:j===-1?H:Math.min(H,j);if(J<=0)return null;let M=$.slice(0,J);if(!M||M==="."||M.includes(".."))return null;if(/[*?[\]]/.test(M))return null;return{skillName:M,pattern:z+M+"/**"}}}return null}function Xt1(A,q){if(E1()==="windows"){let K=QP(A),_=QP(q);return vA6.relative(K,_)}return vA6.relative(A,q)}function cEq(A){if(E1()==="windows")return QP(A);return A}function CHY(){return aZ.map((A)=>B2(A)).filter((A)=>A!==void 0)}function WU1(A){let q=H4(A),K=yZ(q);if(K.endsWith(`${LW}.claude${LW}settings.json`)||K.endsWith(`${LW}.claude${LW}settings.local.json`))return!0;return CHY().some((_)=>yZ(_)===K)}function IHY(A){if(WU1(A))return!0;let q=PN(l1(),".claude","commands"),K=PN(l1(),".claude","agents"),_=PN(l1(),".claude","skills");return wk(A,q)||wk(A,K)||wk(A,_)}function lEq(A){let q=PN(yz(),eg()),K=IV6(A);return K.startsWith(q)&&K.endsWith(".md")}function lb8(){return PN(IO(G8()),E8(),"session-memory")+LW}function tZ6(){return PN(lb8(),"summary.md")}function bHY(A){return IV6(A).startsWith(lb8())}function xHY(A){let q=IO(G8()),K=IV6(A);return K===q||K.startsWith(q+LW)}function ZZ6(){return d_("tengu_scratch")}function qE1(){if(E1()==="windows")return"claude";return`claude-${process.getuid?.()??0}`}function yX8(){return PN(PE(),UM(l1()))+LW}function If8(){return PN(yX8(),E8(),"scratchpad")}async function iEq(){if(!ZZ6())throw Error("Scratchpad directory feature is not enabled");let A=w8(),q=If8();return await A.mkdir(q,{mode:448}),q}function nEq(A){if(!ZZ6())return!1;let q=If8(),K=IV6(A);return K===q||K.startsWith(q+LW)}function uHY(A){let K=H4(A).split(LW),_=K[K.length-1];if(A.startsWith("\\\\")||A.startsWith("//"))return!0;for(let Y=0;YyZ(z)===Y))return!0}return!1}function rEq(A){if(A.indexOf(":",2)!==-1)return!0;if(/~\d/.test(A))return!0;if(A.startsWith("\\\\?\\")||A.startsWith("\\\\.\\")||A.startsWith("//?/")||A.startsWith("//./"))return!0;if(/[.\s]+$/.test(A))return!0;if(/\.(CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])$/i.test(A))return!0;if(/(^|\/|\\)\.{3,}(\/|\\|$)/.test(A))return!0;if(l96(A))return!0;return!1}function dN1(A,q){let K=q??YC(A);for(let _ of K)if(rEq(_))return{safe:!1,message:`Claude requested permissions to write to ${A}, which contains a suspicious Windows path pattern that requires manual approval.`};for(let _ of K)if(IHY(_))return{safe:!1,message:`Claude requested permissions to write to ${A}, but you haven't granted it yet.`};for(let _ of K)if(uHY(_))return{safe:!1,message:`Claude requested permissions to edit ${A} which is a sensitive file.`};return{safe:!0}}function SZ6(A){return new Set([l1(),...A.additionalWorkingDirectories.keys()])}function Jb(A,q,K){let _=K??YC(A),Y=Array.from(SZ6(q)).flatMap((z)=>mHY(z));return _.every((z)=>Y.some((w)=>wk(z,w)))}function wk(A,q){let K=H4(A),_=H4(q),Y=K.replace(/^\/private\/var\//,"/var/").replace(/^\/private\/tmp(\/|$)/,"/tmp$1"),z=_.replace(/^\/private\/var\//,"/var/").replace(/^\/private\/tmp(\/|$)/,"/tmp$1"),w=yZ(Y),O=yZ(z),$=Xt1(O,w);if($==="")return!0;if(Sa($))return!1;return!vA6.isAbsolute($)}function BHY(A){switch(A){case"cliArg":case"command":case"session":return H4(l1());case"userSettings":case"policySettings":case"projectSettings":case"localSettings":case"flagSettings":return x46(A)}}function Mt1(A){return vA6.join(CF,A)}function gHY({patternRoot:A,pattern:q,rootPath:K}){let _=vA6.join(A,q);if(A===K)return Mt1(q);else if(_.startsWith(`${K}${CF}`)){let Y=_.slice(K.length);return Mt1(Y)}else{let Y=vA6.relative(K,A);if(!Y||Y.startsWith(`..${CF}`)||Y==="..")return null;else{let z=vA6.join(Y,q);return Mt1(z)}}}function jk6(A,q){let K=new Set(A.get(null)??[]);for(let[_,Y]of A.entries()){if(_===null)continue;for(let z of Y){let w=gHY({patternRoot:_,pattern:z,rootPath:q});if(w)K.add(w)}}return Array.from(K)}function Jk6(A){let q=aEq(A,"read","deny"),K=new Map;for(let[_,Y]of q.entries())K.set(_,Array.from(Y.keys()));return K}function pHY(A,q){if(A.startsWith(`${CF}${CF}`)){let _=A.slice(1);if(E1()==="windows"&&_.match(/^\/[a-z]\//i)){let Y=_[1]?.toUpperCase()??"C",z=_.slice(2),w=`${Y}:\\`;return{relativePattern:z.startsWith("/")?z.slice(1):z,root:w}}return{relativePattern:_,root:CF}}else if(A.startsWith(`~${CF}`))return{relativePattern:A.slice(1),root:dEq().normalize("NFC")};else if(A.startsWith(CF))return{relativePattern:A,root:BHY(q)};let K=A;if(A.startsWith(`.${CF}`))K=A.slice(2);return{relativePattern:K,root:null}}function aEq(A,q,K){let _=(()=>{switch(q){case"edit":return L4;case"read":return Y4}})(),Y=Dt1(A,_,K),z=new Map;for(let[w,O]of Y.entries()){let{relativePattern:$,root:H}=pHY(w,O.source),j=z.get(H);if(j===void 0)j=new Map,z.set(H,j);j.set($,O)}return z}function mD(A,q,K,_){let Y=H4(A);if(E1()==="windows"&&Y.includes("\\"))Y=QP(Y);let z=aEq(q,K,_);for(let[w,O]of z.entries()){let $=Array.from(O.keys()).map((M)=>{let X=M;if(X.endsWith("/**"))X=X.slice(0,-3);return X}),H=QEq.default().add($),j=Xt1(w??G8(),Y??G8());if(j.startsWith(`..${CF}`))continue;if(!j)continue;let J=H.test(j);if(J.ignored&&J.rule){let M=J.rule.pattern,X=M+"/**";if(O.has(X))return O.get(X)??null;return O.get(M)??null}}return null}function f16(A,q,K){if(typeof A.getPath!=="function")return{behavior:"ask",message:`Claude requested permissions to use ${A.name}, but you haven't granted it yet.`};let _=A.getPath(q),Y=YC(_);for(let j of Y)if(j.startsWith("\\\\")||j.startsWith("//"))return{behavior:"ask",message:`Claude requested permissions to read from ${_}, which appears to be a UNC path that could access network resources.`,decisionReason:{type:"other",reason:"UNC path detected (defense-in-depth check)"}};for(let j of Y)if(rEq(j))return{behavior:"ask",message:`Claude requested permissions to read from ${_}, which contains a suspicious Windows path pattern that requires manual approval.`,decisionReason:{type:"other",reason:"Path contains suspicious Windows-specific patterns (alternate data streams, short names, long path prefixes, or three or more consecutive dots) that require manual verification"}};for(let j of Y){let J=mD(j,K,"read","deny");if(J)return{behavior:"deny",message:`Permission to read ${_} has been denied.`,decisionReason:{type:"rule",rule:J}}}for(let j of Y){let J=mD(j,K,"read","ask");if(J)return{behavior:"ask",message:`Claude requested permissions to read from ${_}, but you haven't granted it yet.`,decisionReason:{type:"rule",rule:J}}}let z=Yw6(A,q,K,Y);if(z.behavior==="allow")return z;if(Jb(_,K,Y))return{behavior:"allow",updatedInput:q,decisionReason:{type:"mode",mode:"default"}};let O=H4(_),$=lN1(O,q);if($.behavior!=="passthrough")return $;let H=mD(_,K,"read","allow");if(H)return{behavior:"allow",updatedInput:q,decisionReason:{type:"rule",rule:H}};return{behavior:"ask",message:`Claude requested permissions to read from ${_}, but you haven't granted it yet.`,suggestions:Ls6(_,"read",K,Y),decisionReason:{type:"workingDir",reason:"Path is outside allowed working directories"}}}function Yw6(A,q,K,_){if(typeof A.getPath!=="function")return{behavior:"ask",message:`Claude requested permissions to use ${A.name}, but you haven't granted it yet.`};let Y=A.getPath(q),z=_??YC(Y);for(let M of z){let X=mD(M,K,"edit","deny");if(X)return{behavior:"deny",message:`Permission to edit ${Y} has been denied.`,decisionReason:{type:"rule",rule:X}}}let w=H4(Y),O=cN1(w,q);if(O.behavior!=="passthrough")return O;let $=mD(Y,K,"edit","allow");if($&&$.source==="session"){let M=$.ruleValue.ruleContent;if(M&&(M.startsWith(dH8.slice(0,-2))||M.startsWith(cH8.slice(0,-2)))&&!M.includes("..")&&M.endsWith("/**"))return{behavior:"allow",updatedInput:q,decisionReason:{type:"rule",rule:$}}}let H=dN1(Y,z);if(!H.safe){let M=SHY(Y),X=M?[{type:"addRules",rules:[{toolName:L4,ruleContent:M.pattern}],behavior:"allow",destination:"session"}]:Ls6(Y,"write",K,z);return{behavior:"ask",message:H.message,suggestions:X,decisionReason:{type:"rule",rule:{source:"policySettings",ruleBehavior:"ask",ruleValue:{toolName:A.name,ruleContent:Y}}}}}for(let M of z){let X=mD(M,K,"edit","ask");if(X)return{behavior:"ask",message:`Claude requested permissions to write to ${Y}, but you haven't granted it yet.`,decisionReason:{type:"rule",rule:X}}}let j=Jb(Y,K,z);if(K.mode==="acceptEdits"&&j)return{behavior:"allow",updatedInput:q,decisionReason:{type:"mode",mode:K.mode}};let J=mD(Y,K,"edit","allow");if(J)return{behavior:"allow",updatedInput:q,decisionReason:{type:"rule",rule:J}};return{behavior:"ask",message:`Claude requested permissions to write to ${Y}, but you haven't granted it yet.`,suggestions:Ls6(Y,"write",K,z),decisionReason:!j?{type:"workingDir",reason:"Path is outside allowed working directories"}:void 0}}function Ls6(A,q,K,_){let Y=!Jb(A,K,_);if(q==="read"&&Y){let z=lU(A);return YC(z).map(($)=>OZ8($,"session")).filter(($)=>$!==void 0)}if(q==="write"||q==="create"){let z=[{type:"setMode",mode:"acceptEdits",destination:"session"}];if(Y){let w=lU(A),O=YC(w);z.push({type:"addDirectories",directories:O,destination:"session"})}return z}return[{type:"setMode",mode:"acceptEdits",destination:"session"}]}function cN1(A,q){let K=IV6(A);if(lEq(K))return{behavior:"allow",updatedInput:q,decisionReason:{type:"other",reason:"Plan files for current session are allowed for writing"}};if(nEq(K))return{behavior:"allow",updatedInput:q,decisionReason:{type:"other",reason:"Scratchpad files for current session are allowed for writing"}};if(jd6(K))return{behavior:"allow",updatedInput:q,decisionReason:{type:"other",reason:"Agent memory files are allowed for writing"}};if(!_q8()&&oa(K))return{behavior:"allow",updatedInput:q,decisionReason:{type:"other",reason:"auto memory files are allowed for writing"}};return{behavior:"passthrough",message:""}}function lN1(A,q){let K=IV6(A);if(bHY(K))return{behavior:"allow",updatedInput:q,decisionReason:{type:"other",reason:"Session memory files are allowed for reading"}};if(xHY(K))return{behavior:"allow",updatedInput:q,decisionReason:{type:"other",reason:"Project directory files are allowed for reading"}};if(lEq(K))return{behavior:"allow",updatedInput:q,decisionReason:{type:"other",reason:"Plan files for current session are allowed for reading"}};let _=ee(),Y=_.endsWith(LW)?_:_+LW;if(K===_||K.startsWith(Y))return{behavior:"allow",updatedInput:q,decisionReason:{type:"other",reason:"Tool result files are allowed for reading"}};if(nEq(K))return{behavior:"allow",updatedInput:q,decisionReason:{type:"other",reason:"Scratchpad files for current session are allowed for reading"}};let z=yX8();if(K.startsWith(z))return{behavior:"allow",updatedInput:q,decisionReason:{type:"other",reason:"Project temp directory files are allowed for reading"}};if(jd6(K))return{behavior:"allow",updatedInput:q,decisionReason:{type:"other",reason:"Agent memory files are allowed for reading"}};if(oa(K))return{behavior:"allow",updatedInput:q,decisionReason:{type:"other",reason:"auto memory files are allowed for reading"}};let w=PN(d1(),"tasks")+LW;if(K===w.slice(0,-1)||K.startsWith(w))return{behavior:"allow",updatedInput:q,decisionReason:{type:"other",reason:"Task files are allowed for reading"}};let O=PN(d1(),"teams")+LW;if(K===O.slice(0,-1)||K.startsWith(O))return{behavior:"allow",updatedInput:q,decisionReason:{type:"other",reason:"Team files are allowed for reading"}};let $=eo1()+LW;if(K.startsWith($))return{behavior:"allow",updatedInput:q,decisionReason:{type:"other",reason:"Bundled skill reference files are allowed for reading"}};return{behavior:"passthrough",message:""}}var QEq,RHY,hHY,CF,PE,eo1,mHY;var i_=L(()=>{v8();t1();UA();W_();Bu();u4();iq();W_();y$();Pj();kz();U1();vw();gA();n4();cP8();Wj();rG();Sb();K$();r8();QEq=_6(k96(),1),RHY=[".gitconfig",".gitmodules",".bashrc",".bash_profile",".zshrc",".zprofile",".profile",".ripgreprc",".mcp.json",".claude.json"],hHY=[".git",".vscode",".idea",".claude"];CF=vA6.sep;PE=z1(function(){let q=process.env.CLAUDE_CODE_TMPDIR||(E1()==="windows"?yHY():"/tmp"),K=w8(),_=q;try{_=K.realpathSync(q)}catch{}return PN(_,qE1())+LW}),eo1=z1(function(){let q=LHY(16).toString("hex");return PN(PE(),"bundled-skills",{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.81",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-20T21:25:42Z"}.VERSION,q)});mHY=z1(YC)});import{posix as FHY}from"path";function ag(A){if(!A)return[];return A.flatMap((q)=>{switch(q.type){case"addRules":return q.rules;default:return[]}})}function gY(A,q){switch(q.type){case"setMode":return V(`Applying permission update: Setting mode to '${q.mode}'`),{...A,mode:q.mode};case"addRules":{let K=q.rules.map((Y)=>p5(Y));V(`Applying permission update: Adding ${q.rules.length} ${q.behavior} rule(s) to destination '${q.destination}': ${x6(K)}`);let _=q.behavior==="allow"?"alwaysAllowRules":q.behavior==="deny"?"alwaysDenyRules":"alwaysAskRules";return{...A,[_]:{...A[_],[q.destination]:[...A[_][q.destination]||[],...K]}}}case"replaceRules":{let K=q.rules.map((Y)=>p5(Y));V(`Replacing all ${q.behavior} rules for destination '${q.destination}' with ${q.rules.length} rule(s): ${x6(K)}`);let _=q.behavior==="allow"?"alwaysAllowRules":q.behavior==="deny"?"alwaysDenyRules":"alwaysAskRules";return{...A,[_]:{...A[_],[q.destination]:K}}}case"addDirectories":{V(`Applying permission update: Adding ${q.directories.length} director${q.directories.length===1?"y":"ies"} with destination '${q.destination}': ${x6(q.directories)}`);let K=new Map(A.additionalWorkingDirectories);for(let _ of q.directories)K.set(_,{path:_,source:q.destination});return{...A,additionalWorkingDirectories:K}}case"removeRules":{let K=q.rules.map((O)=>p5(O));V(`Applying permission update: Removing ${q.rules.length} ${q.behavior} rule(s) from source '${q.destination}': ${x6(K)}`);let _=q.behavior==="allow"?"alwaysAllowRules":q.behavior==="deny"?"alwaysDenyRules":"alwaysAskRules",Y=A[_][q.destination]||[],z=new Set(K),w=Y.filter((O)=>!z.has(O));return{...A,[_]:{...A[_],[q.destination]:w}}}case"removeDirectories":{V(`Applying permission update: Removing ${q.directories.length} director${q.directories.length===1?"y":"ies"}: ${x6(q.directories)}`);let K=new Map(A.additionalWorkingDirectories);for(let _ of q.directories)K.delete(_);return{...A,additionalWorkingDirectories:K}}default:return A}}function Ck(A,q){let K=A;for(let _ of q)K=gY(K,_);return K}function Pt1(A){return A==="localSettings"||A==="userSettings"||A==="projectSettings"}function MF(A){if(!Pt1(A.destination))return;switch(V(`Persisting permission update: ${A.type} to source '${A.destination}'`),A.type){case"addRules":{V(`Persisting ${A.rules.length} ${A.behavior} rule(s) to ${A.destination}`),gg7({ruleValues:A.rules,ruleBehavior:A.behavior},A.destination);break}case"addDirectories":{V(`Persisting ${A.directories.length} director${A.directories.length===1?"y":"ies"} to ${A.destination}`);let K=N1(A.destination)?.permissions?.additionalDirectories||[],_=A.directories.filter((Y)=>!K.includes(Y));if(_.length>0){let Y=[...K,..._];vA(A.destination,{permissions:{additionalDirectories:Y}})}break}case"removeRules":{V(`Removing ${A.rules.length} ${A.behavior} rule(s) from ${A.destination}`);let _=(N1(A.destination)?.permissions||{})[A.behavior]||[],Y=new Set(A.rules.map(p5)),z=_.filter((w)=>{let O=p5(iH(w));return!Y.has(O)});vA(A.destination,{permissions:{[A.behavior]:z}});break}case"removeDirectories":{V(`Removing ${A.directories.length} director${A.directories.length===1?"y":"ies"} from ${A.destination}`);let K=N1(A.destination)?.permissions?.additionalDirectories||[],_=new Set(A.directories),Y=K.filter((z)=>!_.has(z));vA(A.destination,{permissions:{additionalDirectories:Y}});break}case"setMode":{V(`Persisting mode '${A.mode}' to ${A.destination}`),vA(A.destination,{permissions:{defaultMode:A.mode}});break}case"replaceRules":{V(`Replacing all ${A.behavior} rules in ${A.destination} with ${A.rules.length} rule(s)`);let q=A.rules.map(p5);vA(A.destination,{permissions:{[A.behavior]:q}});break}}}function db(A){for(let q of A)MF(q)}function OZ8(A,q="session"){let K=cEq(A);if(K==="/")return;return{type:"addRules",rules:[{toolName:"Read",ruleContent:FHY.isAbsolute(K)?`/${K}/**`:`${K}/**`}],behavior:"allow",destination:q}}var y$=L(()=>{lP();H8();U1();SB();i_();B8()});var eEq={};N8(eEq,{isAutoModeAllowlistedTool:()=>dHY});function dHY(A){return QHY.has(A)}var oEq=null,sEq=null,tEq=null,QHY;var Ayq=L(()=>{W0();kz();tc();DQ6();ec();xd6();QHY=new Set([Y4,b9,jY,ur6,tj,$c6,"ReadMcpResourceTool",Nh,Mk,O66,VE,$66,hC,SC,_w,w66,NE,fb,P_6,tG,W_6,...oEq?[oEq]:[],...sEq?[sEq]:[],...tEq?[tEq]:[],bd6])});function zo6(A){return b48(A)}function SN6(A){return Wt1.flatMap((q)=>(A.alwaysAllowRules[q]||[]).map((K)=>({source:q,ruleBehavior:"allow",ruleValue:iH(K)})))}function Bw(A,q){if(q){if(q.type==="classifier")return`Classifier '${q.classifier}' requires approval for this ${A} command: ${q.reason}`;switch(q.type){case"hook":return q.reason?`Hook '${q.hookName}' blocked this action: ${q.reason}`:`Hook '${q.hookName}' requires approval for this ${A} command`;case"rule":{let _=p5(q.rule.ruleValue),Y=zo6(q.rule.source);return`Permission rule '${_}' from ${Y} requires approval for this ${A} command`}case"subcommandResults":{let _=[];for(let[Y,z]of q.reasons)if(z.behavior==="ask"||z.behavior==="passthrough")if(A==="Bash"){let{commandWithoutRedirections:w,redirections:O}=LE(Y),$=O.length>0?w:Y;_.push($)}else _.push(Y);if(_.length>0)return`This ${A} command contains multiple operations. The following part${_.length>1?"s":""} require${_.length>1?"":"s"} approval: ${_.join(", ")}`;return`This ${A} command contains multiple operations that require approval`}case"permissionPromptTool":return`Tool '${q.permissionPromptToolName}' requires approval for this ${A} command`;case"sandboxOverride":return"Run outside of the sandbox";case"workingDir":return q.reason;case"other":return q.reason;case"mode":return`Current permission mode (${tU(q.mode)}) requires approval for this ${A} command`;case"asyncAgent":return q.reason}}return`Claude requested permissions to use ${A}, but you haven't granted it yet.`}function d16(A){return Wt1.flatMap((q)=>(A.alwaysDenyRules[q]||[]).map((K)=>({source:q,ruleBehavior:"deny",ruleValue:iH(K)})))}function CN6(A){return Wt1.flatMap((q)=>(A.alwaysAskRules[q]||[]).map((K)=>({source:q,ruleBehavior:"ask",ruleValue:iH(K)})))}function ft1(A,q){if(q.ruleValue.ruleContent!==void 0)return!1;let K=Ta8(A);if(q.ruleValue.toolName===K)return!0;let _=zV(q.ruleValue.toolName),Y=zV(K);return _!==null&&Y!==null&&(_.toolName===void 0||_.toolName==="*")&&_.serverName===Y.serverName}function iHY(A,q){return SN6(A).find((K)=>ft1(q,K))||null}function gR8(A,q){return d16(A).find((K)=>ft1(q,K))||null}function Kyq(A,q){return CN6(A).find((K)=>ft1(q,K))||null}function te4(A,q,K){return d16(A).find((_)=>_.ruleValue.toolName===q&&_.ruleValue.ruleContent===K)||null}function kF1(A,q,K){let _=new Set;for(let Y of d16(q))if(Y.ruleValue.toolName===K&&Y.ruleValue.ruleContent!==void 0)_.add(Y.ruleValue.ruleContent);return A.filter((Y)=>!_.has(Y.agentType))}function Rb(A,q,K){return Dt1(A,Ta8(q),K)}function Dt1(A,q,K){let _=new Map,Y=[];switch(K){case"allow":Y=SN6(A);break;case"deny":Y=d16(A);break;case"ask":Y=CN6(A);break}for(let z of Y)if(z.ruleValue.toolName===q&&z.ruleValue.ruleContent!==void 0&&z.ruleBehavior===K)_.set(z.ruleValue.ruleContent,z);return _}async function nHY(A,q,K,_,Y,z){try{for await(let w of bw6(A.name,K,q,_,Y,z,_.abortController.signal)){if(!w.permissionRequestResult)continue;let O=w.permissionRequestResult;if(O.behavior==="allow"){let $=O.updatedInput??q;if(O.updatedPermissions?.length)db(O.updatedPermissions),_.setAppState((H)=>({...H,toolPermissionContext:Ck(H.toolPermissionContext,O.updatedPermissions)}));return{behavior:"allow",updatedInput:$,decisionReason:{type:"hook",hookName:"PermissionRequest"}}}if(O.behavior==="deny"){if(O.interrupt)V(`Hook interrupt: tool=${A.name} hookMessage=${O.message}`),_.abortController.abort();return{behavior:"deny",message:O.message||"Permission denied by hook",decisionReason:{type:"hook",hookName:"PermissionRequest",reason:O.message}}}}}catch(w){H6(w instanceof Error?w:Error(`PermissionRequest hook failed for headless agent: ${String(w)}`))}return null}function bV6(A,q){if(A.localDenialTracking)Object.assign(A.localDenialTracking,q);else A.setAppState((K)=>{if(K.denialTracking===q)return K;return{...K,denialTracking:q}})}function rHY(A,q,K,_,Y,z,w){if(!aYq(A))return null;let O=A.totalDenials>=oR8.maxTotal,$=q.toolPermissionContext.shouldAvoidPermissionPrompts,H=A.totalDenials,j=A.consecutiveDenials,J=O?`${H} actions were blocked this session. Please review the transcript before continuing.`:`${j} consecutive actions were blocked. Please review the transcript before continuing.`;if(Q("tengu_auto_mode_denial_limit_exceeded",{limit:O?"total":"consecutive",mode:$?"headless":"cli",messageID:_.message.id,consecutiveDenials:j,totalDenials:H,toolName:Uq(Y.name)}),$)throw new f_("Agent aborted: too many classifier denials in headless mode");if(V(`Classifier denial limit exceeded, falling back to prompting: ${J}`,{level:"warn"}),O)bV6(w,{...A,totalDenials:0,consecutiveDenials:0});let M=z.decisionReason?.type==="classifier"?z.decisionReason.classifier:"auto-mode";return{...z,decisionReason:{type:"classifier",classifier:M,reason:`${J} -Latest blocked action: ${K}`}}}async function $Yq(A,q,K){let _=K.getAppState(),Y=gR8(_.toolPermissionContext,A);if(Y)return{behavior:"deny",decisionReason:{type:"rule",rule:Y},message:`Permission to use ${A.name} has been denied.`};let z=Kyq(_.toolPermissionContext,A);if(z){if(!(A.name===S7&&OA.isSandboxingEnabled()&&OA.isAutoAllowBashIfSandboxedEnabled()&&ig(q)))return{behavior:"ask",decisionReason:{type:"rule",rule:z},message:Bw(A.name)}}let w={behavior:"passthrough",message:Bw(A.name)};try{let O=A.inputSchema.parse(q);w=await A.checkPermissions(O,K)}catch(O){if(O instanceof f_||O instanceof t9)throw O;H6(O)}if(w?.behavior==="deny")return w;if(w?.behavior==="ask"&&w.decisionReason?.type==="rule"&&w.decisionReason.rule.ruleBehavior==="ask")return w;return null}async function aHY(A,q,K){if(K.abortController.signal.aborted)throw new f_;let _=K.getAppState(),Y=gR8(_.toolPermissionContext,A);if(Y)return{behavior:"deny",decisionReason:{type:"rule",rule:Y},message:`Permission to use ${A.name} has been denied.`};let z=Kyq(_.toolPermissionContext,A);if(z){if(!(A.name===S7&&OA.isSandboxingEnabled()&&OA.isAutoAllowBashIfSandboxedEnabled()&&ig(q)))return{behavior:"ask",decisionReason:{type:"rule",rule:z},message:Bw(A.name)}}let w={behavior:"passthrough",message:Bw(A.name)};try{let j=A.inputSchema.parse(q);w=await A.checkPermissions(j,K)}catch(j){if(j instanceof f_||j instanceof t9)throw j;H6(j)}if(w?.behavior==="deny")return w;if(A.requiresUserInteraction?.()&&w?.behavior==="ask")return w;if(w?.behavior==="ask"&&w.decisionReason?.type==="rule"&&w.decisionReason.rule.ruleBehavior==="ask")return w;if(_=K.getAppState(),_.toolPermissionContext.mode==="bypassPermissions"||_.toolPermissionContext.mode==="plan"&&_.toolPermissionContext.isBypassPermissionsModeAvailable)return{behavior:"allow",updatedInput:qyq(w,q),decisionReason:{type:"mode",mode:_.toolPermissionContext.mode}};let $=iHY(_.toolPermissionContext,A);if($)return{behavior:"allow",updatedInput:qyq(w,q),decisionReason:{type:"rule",rule:$}};let H=w.behavior==="passthrough"?{...w,behavior:"ask",message:Bw(A.name,w.decisionReason)}:w;if(H.behavior==="ask"&&H.suggestions)V(`Permission suggestions for ${A.name}: ${x6(H.suggestions,null,2)}`);return H}async function EGq({rule:A,initialContext:q,setToolPermissionContext:K}){if(A.source==="policySettings"||A.source==="flagSettings"||A.source==="command")throw Error("Cannot delete permission rules from read-only settings");let _=gY(q,{type:"removeRules",rules:[A.ruleValue],behavior:A.ruleBehavior,destination:A.source});switch(A.source){case"localSettings":case"userSettings":case"projectSettings":{Bg7(A);break}case"cliArg":case"session":break}K(_)}function _yq(A,q){let K=new Map;for(let Y of A){let z=`${Y.source}:${Y.ruleBehavior}`;if(!K.has(z))K.set(z,[]);K.get(z).push(Y.ruleValue)}let _=[];for(let[Y,z]of K){let[w,O]=Y.split(":");_.push({type:q,rules:z,behavior:O,destination:w})}return _}function Yyq(A,q){let K=_yq(q,"addRules");return Ck(A,K)}function fOq(A,q){let K=A;if(Ap6()){let z=["userSettings","projectSettings","localSettings","cliArg","session"],w=["allow","deny","ask"];for(let O of z)for(let $ of w)K=gY(K,{type:"replaceRules",rules:[],behavior:$,destination:O})}let _=["userSettings","projectSettings","localSettings"];for(let z of _)for(let w of["allow","deny","ask"])K=gY(K,{type:"replaceRules",rules:[],behavior:w,destination:z});let Y=_yq(q,"replaceRules");return Ck(K,Y)}function qyq(A,q){return("updatedInput"in A?A.updatedInput:void 0)??q}var cHY,lHY=1800000,Wt1,WM=async(A,q,K,_,Y)=>{let z=await aHY(A,q,K);if(z.behavior==="allow"){let w=K.getAppState();{let O=K.localDenialTracking??w.denialTracking;if(w.toolPermissionContext.mode==="auto"&&O&&O.consecutiveDenials>0){let $=ar6(O);bV6(K,$)}}return z}if(z.behavior==="ask"){let w=K.getAppState();if(w.toolPermissionContext.mode==="dontAsk")return{behavior:"deny",decisionReason:{type:"mode",mode:"dontAsk"},message:wyq(A.name)};if(w.toolPermissionContext.mode==="auto"||!1||w.toolPermissionContext.prePlanMode==="auto"){if(A.requiresUserInteraction?.()&&z.behavior==="ask")return z;let O=K.localDenialTracking??w.denialTracking??sR8();if(z.behavior==="ask"&&A.name!==a4)try{let X=A.inputSchema.parse(q),D=await A.checkPermissions(X,{...K,getAppState:()=>{let P=K.getAppState();return{...P,toolPermissionContext:{...P.toolPermissionContext,mode:"acceptEdits"}}}});if(D.behavior==="allow"){let P=ar6(O);return bV6(K,P),V(`Skipping auto mode classifier for ${A.name}: would be allowed in acceptEdits mode`),Q("tengu_auto_mode_decision",{decision:"allowed",toolName:Uq(A.name),agentMsgId:_.message.id,confidence:"high",fastPath:"acceptEdits"}),{behavior:"allow",updatedInput:D.updatedInput??q,decisionReason:{type:"mode",mode:"auto"}}}}catch(X){if(X instanceof f_||X instanceof t9)throw X}if(cHY.isAutoModeAllowlistedTool(A.name)){let X=ar6(O);return bV6(K,X),V(`Skipping auto mode classifier for ${A.name}: tool is on the safe allowlist`),Q("tengu_auto_mode_decision",{decision:"allowed",toolName:Uq(A.name),agentMsgId:_.message.id,confidence:"high",fastPath:"allowlist"}),{behavior:"allow",updatedInput:q,decisionReason:{type:"mode",mode:"auto"}}}let $=gZ4(A.name,q);Ff4(Y);let H;try{H=await kG8(K.messages,$,K.options.tools,w.toolPermissionContext,K.abortController.signal)}finally{p66(Y)}let j=H.unavailable?"unavailable":H.shouldBlock?"blocked":"allowed",J=H.usage&&H.model?xY8(H.model,H.usage):void 0;if(Q("tengu_auto_mode_decision",{decision:j,toolName:Uq(A.name),agentMsgId:_.message.id,classifierModel:H.model,consecutiveDenials:H.shouldBlock?O.consecutiveDenials+1:0,totalDenials:H.shouldBlock?O.totalDenials+1:O.totalDenials,classifierInputTokens:H.usage?.inputTokens,classifierOutputTokens:H.usage?.outputTokens,classifierCacheReadInputTokens:H.usage?.cacheReadInputTokens,classifierCacheCreationInputTokens:H.usage?.cacheCreationInputTokens,classifierDurationMs:H.durationMs,classifierSystemPromptLength:H.promptLengths?.systemPrompt,classifierToolCallsLength:H.promptLengths?.toolCalls,classifierToolResultsLength:H.promptLengths?.toolResults,classifierUserPromptsLength:H.promptLengths?.userPrompts,sessionInputTokens:W76(),sessionOutputTokens:DU(),sessionCacheReadInputTokens:Vy6(),sessionCacheCreationInputTokens:Ey6(),classifierCostUSD:J,classifierStage:H.stage,classifierStage1InputTokens:H.stage1Usage?.inputTokens,classifierStage1OutputTokens:H.stage1Usage?.outputTokens,classifierStage1CacheReadInputTokens:H.stage1Usage?.cacheReadInputTokens,classifierStage1CacheCreationInputTokens:H.stage1Usage?.cacheCreationInputTokens,classifierStage1DurationMs:H.stage1DurationMs,classifierStage1RequestId:H.stage1RequestId,classifierStage1MsgId:H.stage1MsgId,classifierStage1CostUSD:H.stage1Usage&&H.model?xY8(H.model,H.stage1Usage):void 0,classifierStage2InputTokens:H.stage2Usage?.inputTokens,classifierStage2OutputTokens:H.stage2Usage?.outputTokens,classifierStage2CacheReadInputTokens:H.stage2Usage?.cacheReadInputTokens,classifierStage2CacheCreationInputTokens:H.stage2Usage?.cacheCreationInputTokens,classifierStage2DurationMs:H.stage2DurationMs,classifierStage2RequestId:H.stage2RequestId,classifierStage2MsgId:H.stage2MsgId,classifierStage2CostUSD:H.stage2Usage&&H.model?xY8(H.model,H.stage2Usage):void 0}),H.durationMs!==void 0)dB8(H.durationMs);if(H.shouldBlock){if(H.transcriptTooLong){if(w.toolPermissionContext.shouldAvoidPermissionPrompts)throw new f_("Agent aborted: auto mode classifier transcript exceeded context window in headless mode");return V("Auto mode classifier transcript too long, falling back to normal permission handling",{level:"warn"}),{...z,decisionReason:{type:"other",reason:"Auto mode classifier transcript exceeded context window — falling back to manual approval"}}}if(H.unavailable){if(cV("tengu_iron_gate_closed",!0,lHY))return V("Auto mode classifier unavailable, denying with retry guidance (fail closed)",{level:"warn"}),{behavior:"deny",decisionReason:{type:"classifier",classifier:"auto-mode",reason:"Classifier unavailable"},message:$yq(A.name,H.model)};return V("Auto mode classifier unavailable, falling back to normal permission handling (fail open)",{level:"warn"}),z}let X=rYq(O);bV6(K,X),V(`Auto mode classifier blocked action: ${H.reason}`,{level:"warn"});let D=rHY(X,w,H.reason,_,A,z,K);if(D)return D;return{behavior:"deny",decisionReason:{type:"classifier",classifier:"auto-mode",reason:H.reason},message:Oyq(H.reason)}}let M=ar6(O);return bV6(K,M),{behavior:"allow",updatedInput:q,decisionReason:{type:"classifier",classifier:"auto-mode",reason:H.reason}}}if(w.toolPermissionContext.shouldAvoidPermissionPrompts){let O=await nHY(A,q,Y,K,w.toolPermissionContext.mode,z.suggestions);if(O)return O;return{behavior:"deny",decisionReason:{type:"asyncAgent",reason:"Permission prompts are not available in this context"},message:zyq(A.name)}}}return z};var Pj=L(()=>{y$();c1();yT();L8();H8();SB();lP();vw();bC();eQ6();DY();wD();g0();B8();xd6();F66();v8();Rc1();YA();Kw();V8();Kj();Ad();t1();cHY=(Ayq(),o7(eEq)),Wt1=[...aZ,"cliArg","command","session"]});var oHY,Hyq;var jyq=L(()=>{oHY=["python","python3","python2","node","deno","tsx","ruby","perl","php","lua","npx","bunx","npm run","yarn run","pnpm run","bun run","bash","sh","ssh"],Hyq=[...oHY,"zsh","fish","eval","exec","env","xargs","sudo",...[]]});var I5q={};N8(I5q,{verifyAutoModeGateAccess:()=>Pn6,transitionPermissionMode:()=>cn,stripDangerousPermissionsForAutoMode:()=>dn,shouldDisableBypassPermissions:()=>mE8,restoreDangerousPermissions:()=>T26,removeDangerousPermissions:()=>Zyq,prepareContextForPlanMode:()=>Ik6,parseToolListFromCLI:()=>wS,parseBaseToolsFromCLI:()=>Gyq,isOverlyBroadPowerShellAllowRule:()=>eHY,isOverlyBroadBashAllowRule:()=>Zt1,isDefaultPermissionModeAuto:()=>nb8,isDangerousTaskPermission:()=>Pyq,isDangerousPowerShellPermission:()=>Dyq,isDangerousBashPermission:()=>Xyq,isBypassPermissionsModeDisabled:()=>wn,isAutoModeGateEnabled:()=>WN,initializeToolPermissionContext:()=>Tt1,initialPermissionModeFromCLI:()=>vt1,hasAutoModeOptInAnySource:()=>dS8,getAutoModeUnavailableReason:()=>k26,getAutoModeUnavailableNotification:()=>kA6,getAutoModeEnabledStateIfCached:()=>ib8,getAutoModeEnabledState:()=>ea6,findOverlyBroadPowerShellPermissions:()=>qjY,findOverlyBroadBashPermissions:()=>AjY,findDangerousClassifierPermissions:()=>Gt1,createDisabledBypassPermissionsContext:()=>Rz6,checkAndDisableBypassPermissions:()=>Vt1});import{relative as sHY}from"path";import{resolve as tHY}from"path";function Xyq(A,q){if(A!==S7)return!1;if(q===void 0||q==="")return!0;let K=q.trim().toLowerCase();if(K==="*")return!0;for(let _ of Hyq){let Y=_.toLowerCase();if(K===Y)return!0;if(K===`${Y}:*`)return!0;if(K===`${Y}*`)return!0;if(K===`${Y} *`)return!0;if(K.startsWith(`${Y} -`)&&K.endsWith("*"))return!0}return!1}function Dyq(A,q){return!1}function Pyq(A,q){return sZ(A)===a4}function Wyq(A){if(aZ.includes(A)){let q=B2(A);if(q){let K=sHY(G8(),q);return K.lengthp5(iH(k))),O=wS(q);if(K&&K.length>0){let k=Gyq(K),N=new Set(k.map(sZ)),R=ad1().filter((S)=>!N.has(S));O=[...O,...R]}let $=[],H=new Map,j=process.env.PWD;if(j&&j!==l1()&&KjY({originalCwd:l1(),processPwd:j}))H.set(j,{path:j,source:"session"});let J=d_("tengu_disable_bypass_permissions_mode"),M=PA()||{},X=M.permissions?.disableBypassPermissionsMode==="disable",D=!0/*ghq_force_bypass_available*/,P=tj8(),W=[],f=[];if(_==="auto")f=Gt1(P,w);let Z=Yyq({mode:_,additionalWorkingDirectories:H,alwaysAllowRules:{cliArg:w},alwaysDenyRules:{cliArg:O},alwaysAskRules:{},isBypassPermissionsModeAvailable:D,...{isAutoModeAvailable:WN()}},P),G=[...M.permissions?.additionalDirectories||[],...z],v=await Promise.all(G.map((k)=>PN6(k,Z)));for(let k of v)if(k.resultType==="success")Z=gY(Z,{type:"addDirectories",directories:[k.absolutePath],destination:"cliArg"});else if(k.resultType!=="alreadyInWorkingDirectory"&&k.resultType!=="pathNotFound")$.push(WN6(k));return{toolPermissionContext:Z,warnings:$,dangerousPermissions:f,overlyBroadBashPermissions:W}}function kA6(A){let q;switch(A){case"settings":q="auto mode disabled by settings";break;case"circuit-breaker":q="auto mode temporarily unavailable";break;case"model":q="auto mode unavailable for this model";break}return q}async function Pn6(A,q){let K=await yR("tengu_auto_mode_config",{}),_=Nt1(K?.enabled),Y=kt1();IF?.setAutoModeCircuitBroken(_==="disabled"||Y);let z=KK(),w=!!K?.disableFastMode&&(!!q||!1),O=DP6(z)&&!w,$=!1;if(_!=="disabled"&&!Y&&O)$=_==="enabled"||dS8();let H=_!=="disabled"&&!Y&&O,j=IF?.getAutoModeFlagCli()??!1,J=(Z,G)=>Z.isAutoModeAvailable===G?Z:{...Z,isAutoModeAvailable:G};if(H)return{updateContext:(Z)=>J(Z,$)};let M;if(Y)M="settings",V("auto mode disabled: disableAutoMode in settings",{level:"warn"});else if(_==="disabled")M="circuit-breaker",V('auto mode disabled: tengu_auto_mode_config.enabled === "disabled" (circuit breaker)',{level:"warn"});else M="model",V(`auto mode disabled: model ${KK()} does not support auto mode`,{level:"warn"});let X=kA6(M),D=(Z)=>{let G=Z.mode==="auto",v=Z.mode==="plan"&&Z.prePlanMode==="auto";if(!G&&!v)return J(Z,!1);if(IF?.setAutoModeActive(!1),_C(!0),G)return{...gY(T26(Z),{type:"setMode",mode:"default",destination:"session"}),isAutoModeAvailable:!1};return{...T26(Z),prePlanMode:"default",isAutoModeAvailable:!1}},P=A.mode==="auto",W=A.mode==="plan"&&A.prePlanMode==="auto";if(!(P||W||j))return{updateContext:D};if(P||W)return{updateContext:D,notification:X};return{updateContext:D,notification:A.isAutoModeAvailable?X:void 0}}function mE8(){return gX1("tengu_disable_bypass_permissions_mode")}function kt1(){let A=PA()||{};return A.disableAutoMode==="disable"||A.permissions?.disableAutoMode==="disable"}function WN(){if(IF?.isAutoModeCircuitBroken()??!1)return!1;if(kt1())return!1;if(!DP6(KK()))return!1;return!0}function k26(){if(kt1())return"settings";if(IF?.isAutoModeCircuitBroken()??!1)return"circuit-breaker";if(!DP6(KK()))return"model";return null}function Nt1(A){if(A==="enabled"||A==="disabled"||A==="opt-in")return A;return _jY}function ea6(){let A=l8("tengu_auto_mode_config",{});return Nt1(A?.enabled)}function ib8(){let A=l8("tengu_auto_mode_config",Myq);if(A===Myq)return;return Nt1(A?.enabled)}function dS8(){if(IF?.getAutoModeFlagCli()??!1)return!0;return ra()}function wn(){return!1}/*ej6_bypass_patched*/function Rz6(A){let q=A;if(A.mode==="bypassPermissions")q=gY(A,{type:"setMode",mode:"default",destination:"session"});return{...q,isBypassPermissionsModeAvailable:!1}}async function Vt1(A){return}/*fhq_async_disable_patched*/function nb8(){return(PA()||{}).permissions?.defaultMode==="auto"}function Ik6(A){let q=A.mode;if(q==="plan")return A;if(q==="auto")return{...A,prePlanMode:"auto"};if(nb8()&&WN()&&q!=="bypassPermissions")return IF?.setAutoModeActive(!0),{...dn(A),prePlanMode:"auto"};return{...A,prePlanMode:q}}var IF,_jY="disabled",Myq;var NM=L(()=>{r8();UA();Pj();SB();wD();v8();U1();vw();XS8();y$();gA();t1();H8();V8();Lz();_4();yG();zP();lP();jyq();IF=o7(hk6);Myq=Symbol("no-cached-auto-mode-config")});import{dirname as YjY,join as xV6,resolve as vyq,sep as zjY}from"path";import{readdir as wjY,readFile as OjY,stat as Tyq,lstat as $jY,realpath as HjY}from"fs/promises";import{existsSync as yt1}from"fs";import{homedir as jjY}from"os";function li(A,q="Custom item"){let K=A.split(` +Latest blocked action: ${K}`}}}async function $Yq(A,q,K){let _=K.getAppState(),Y=gR8(_.toolPermissionContext,A);if(Y)return{behavior:"deny",decisionReason:{type:"rule",rule:Y},message:`Permission to use ${A.name} has been denied.`};let z=Kyq(_.toolPermissionContext,A);if(z){if(!(A.name===S7&&OA.isSandboxingEnabled()&&OA.isAutoAllowBashIfSandboxedEnabled()&&ig(q)))return{behavior:"ask",decisionReason:{type:"rule",rule:z},message:Bw(A.name)}}let w={behavior:"passthrough",message:Bw(A.name)};try{let O=A.inputSchema.parse(q);w=await A.checkPermissions(O,K)}catch(O){if(O instanceof f_||O instanceof t9)throw O;H6(O)}if(w?.behavior==="deny")return w;if(w?.behavior==="ask"&&w.decisionReason?.type==="rule"&&w.decisionReason.rule.ruleBehavior==="ask")return w;return null}async function aHY(A,q,K){let _bp=await K.getAppState();if(_bp.toolPermissionContext.mode==="bypassPermissions")return{behavior:"allow",updatedInput:q,decisionReason:{type:"mode",mode:"bypassPermissions"}};/*a4z_bypass_first*/if(K.abortController.signal.aborted)throw new f_;let _=K.getAppState(),Y=gR8(_.toolPermissionContext,A);if(Y)return{behavior:"deny",decisionReason:{type:"rule",rule:Y},message:`Permission to use ${A.name} has been denied.`};let z=Kyq(_.toolPermissionContext,A);if(z){if(!(A.name===S7&&OA.isSandboxingEnabled()&&OA.isAutoAllowBashIfSandboxedEnabled()&&ig(q)))return{behavior:"ask",decisionReason:{type:"rule",rule:z},message:Bw(A.name)}}let w={behavior:"passthrough",message:Bw(A.name)};try{let j=A.inputSchema.parse(q);w=await A.checkPermissions(j,K)}catch(j){if(j instanceof f_||j instanceof t9)throw j;H6(j)}if(w?.behavior==="deny")return w;if(A.requiresUserInteraction?.()&&w?.behavior==="ask")return w;if(w?.behavior==="ask"&&w.decisionReason?.type==="rule"&&w.decisionReason.rule.ruleBehavior==="ask")return w;if(_=K.getAppState(),_.toolPermissionContext.mode==="bypassPermissions"||_.toolPermissionContext.mode==="plan"&&_.toolPermissionContext.isBypassPermissionsModeAvailable)return{behavior:"allow",updatedInput:qyq(w,q),decisionReason:{type:"mode",mode:_.toolPermissionContext.mode}};let $=iHY(_.toolPermissionContext,A);if($)return{behavior:"allow",updatedInput:qyq(w,q),decisionReason:{type:"rule",rule:$}};let H=w.behavior==="passthrough"?{...w,behavior:"ask",message:Bw(A.name,w.decisionReason)}:w;if(H.behavior==="ask"&&H.suggestions)V(`Permission suggestions for ${A.name}: ${x6(H.suggestions,null,2)}`);return H}async function EGq({rule:A,initialContext:q,setToolPermissionContext:K}){if(A.source==="policySettings"||A.source==="flagSettings"||A.source==="command")throw Error("Cannot delete permission rules from read-only settings");let _=gY(q,{type:"removeRules",rules:[A.ruleValue],behavior:A.ruleBehavior,destination:A.source});switch(A.source){case"localSettings":case"userSettings":case"projectSettings":{Bg7(A);break}case"cliArg":case"session":break}K(_)}function _yq(A,q){let K=new Map;for(let Y of A){let z=`${Y.source}:${Y.ruleBehavior}`;if(!K.has(z))K.set(z,[]);K.get(z).push(Y.ruleValue)}let _=[];for(let[Y,z]of K){let[w,O]=Y.split(":");_.push({type:q,rules:z,behavior:O,destination:w})}return _}function Yyq(A,q){let K=_yq(q,"addRules");return Ck(A,K)}function fOq(A,q){let K=A;if(Ap6()){let z=["userSettings","projectSettings","localSettings","cliArg","session"],w=["allow","deny","ask"];for(let O of z)for(let $ of w)K=gY(K,{type:"replaceRules",rules:[],behavior:$,destination:O})}let _=["userSettings","projectSettings","localSettings"];for(let z of _)for(let w of["allow","deny","ask"])K=gY(K,{type:"replaceRules",rules:[],behavior:w,destination:z});let Y=_yq(q,"replaceRules");return Ck(K,Y)}function qyq(A,q){return("updatedInput"in A?A.updatedInput:void 0)??q}var cHY,lHY=1800000,Wt1,WM=async(A,q,K,_,Y)=>{let z=await aHY(A,q,K);if(z.behavior==="allow"){let w=K.getAppState();{let O=K.localDenialTracking??w.denialTracking;if(w.toolPermissionContext.mode==="auto"&&O&&O.consecutiveDenials>0){let $=ar6(O);bV6(K,$)}}return z}if(z.behavior==="ask"){let w=K.getAppState();if(w.toolPermissionContext.mode==="dontAsk")return{behavior:"deny",decisionReason:{type:"mode",mode:"dontAsk"},message:wyq(A.name)};if(w.toolPermissionContext.mode==="auto"||!1||w.toolPermissionContext.prePlanMode==="auto"){if(A.requiresUserInteraction?.()&&z.behavior==="ask")return z;let O=K.localDenialTracking??w.denialTracking??sR8();if(z.behavior==="ask"&&A.name!==a4)try{let X=A.inputSchema.parse(q),D=await A.checkPermissions(X,{...K,getAppState:()=>{let P=K.getAppState();return{...P,toolPermissionContext:{...P.toolPermissionContext,mode:"acceptEdits"}}}});if(D.behavior==="allow"){let P=ar6(O);return bV6(K,P),V(`Skipping auto mode classifier for ${A.name}: would be allowed in acceptEdits mode`),Q("tengu_auto_mode_decision",{decision:"allowed",toolName:Uq(A.name),agentMsgId:_.message.id,confidence:"high",fastPath:"acceptEdits"}),{behavior:"allow",updatedInput:D.updatedInput??q,decisionReason:{type:"mode",mode:"auto"}}}}catch(X){if(X instanceof f_||X instanceof t9)throw X}if(cHY.isAutoModeAllowlistedTool(A.name)){let X=ar6(O);return bV6(K,X),V(`Skipping auto mode classifier for ${A.name}: tool is on the safe allowlist`),Q("tengu_auto_mode_decision",{decision:"allowed",toolName:Uq(A.name),agentMsgId:_.message.id,confidence:"high",fastPath:"allowlist"}),{behavior:"allow",updatedInput:q,decisionReason:{type:"mode",mode:"auto"}}}let $=gZ4(A.name,q);Ff4(Y);let H;try{H=await kG8(K.messages,$,K.options.tools,w.toolPermissionContext,K.abortController.signal)}finally{p66(Y)}let j=H.unavailable?"unavailable":H.shouldBlock?"blocked":"allowed",J=H.usage&&H.model?xY8(H.model,H.usage):void 0;if(Q("tengu_auto_mode_decision",{decision:j,toolName:Uq(A.name),agentMsgId:_.message.id,classifierModel:H.model,consecutiveDenials:H.shouldBlock?O.consecutiveDenials+1:0,totalDenials:H.shouldBlock?O.totalDenials+1:O.totalDenials,classifierInputTokens:H.usage?.inputTokens,classifierOutputTokens:H.usage?.outputTokens,classifierCacheReadInputTokens:H.usage?.cacheReadInputTokens,classifierCacheCreationInputTokens:H.usage?.cacheCreationInputTokens,classifierDurationMs:H.durationMs,classifierSystemPromptLength:H.promptLengths?.systemPrompt,classifierToolCallsLength:H.promptLengths?.toolCalls,classifierToolResultsLength:H.promptLengths?.toolResults,classifierUserPromptsLength:H.promptLengths?.userPrompts,sessionInputTokens:W76(),sessionOutputTokens:DU(),sessionCacheReadInputTokens:Vy6(),sessionCacheCreationInputTokens:Ey6(),classifierCostUSD:J,classifierStage:H.stage,classifierStage1InputTokens:H.stage1Usage?.inputTokens,classifierStage1OutputTokens:H.stage1Usage?.outputTokens,classifierStage1CacheReadInputTokens:H.stage1Usage?.cacheReadInputTokens,classifierStage1CacheCreationInputTokens:H.stage1Usage?.cacheCreationInputTokens,classifierStage1DurationMs:H.stage1DurationMs,classifierStage1RequestId:H.stage1RequestId,classifierStage1MsgId:H.stage1MsgId,classifierStage1CostUSD:H.stage1Usage&&H.model?xY8(H.model,H.stage1Usage):void 0,classifierStage2InputTokens:H.stage2Usage?.inputTokens,classifierStage2OutputTokens:H.stage2Usage?.outputTokens,classifierStage2CacheReadInputTokens:H.stage2Usage?.cacheReadInputTokens,classifierStage2CacheCreationInputTokens:H.stage2Usage?.cacheCreationInputTokens,classifierStage2DurationMs:H.stage2DurationMs,classifierStage2RequestId:H.stage2RequestId,classifierStage2MsgId:H.stage2MsgId,classifierStage2CostUSD:H.stage2Usage&&H.model?xY8(H.model,H.stage2Usage):void 0}),H.durationMs!==void 0)dB8(H.durationMs);if(H.shouldBlock){if(H.transcriptTooLong){if(w.toolPermissionContext.shouldAvoidPermissionPrompts)throw new f_("Agent aborted: auto mode classifier transcript exceeded context window in headless mode");return V("Auto mode classifier transcript too long, falling back to normal permission handling",{level:"warn"}),{...z,decisionReason:{type:"other",reason:"Auto mode classifier transcript exceeded context window — falling back to manual approval"}}}if(H.unavailable){if(cV("tengu_iron_gate_closed",!0,lHY))return V("Auto mode classifier unavailable, denying with retry guidance (fail closed)",{level:"warn"}),{behavior:"deny",decisionReason:{type:"classifier",classifier:"auto-mode",reason:"Classifier unavailable"},message:$yq(A.name,H.model)};return V("Auto mode classifier unavailable, falling back to normal permission handling (fail open)",{level:"warn"}),z}let X=rYq(O);bV6(K,X),V(`Auto mode classifier blocked action: ${H.reason}`,{level:"warn"});let D=rHY(X,w,H.reason,_,A,z,K);if(D)return D;return{behavior:"deny",decisionReason:{type:"classifier",classifier:"auto-mode",reason:H.reason},message:Oyq(H.reason)}}let M=ar6(O);return bV6(K,M),{behavior:"allow",updatedInput:q,decisionReason:{type:"classifier",classifier:"auto-mode",reason:H.reason}}}if(w.toolPermissionContext.shouldAvoidPermissionPrompts){let O=await nHY(A,q,Y,K,w.toolPermissionContext.mode,z.suggestions);if(O)return O;return{behavior:"deny",decisionReason:{type:"asyncAgent",reason:"Permission prompts are not available in this context"},message:zyq(A.name)}}}return z};var Pj=L(()=>{y$();c1();yT();L8();H8();SB();lP();vw();bC();eQ6();DY();wD();g0();B8();xd6();F66();v8();Rc1();YA();Kw();V8();Kj();Ad();t1();cHY=(Ayq(),o7(eEq)),Wt1=[...aZ,"cliArg","command","session"]});var oHY,Hyq;var jyq=L(()=>{oHY=["python","python3","python2","node","deno","tsx","ruby","perl","php","lua","npx","bunx","npm run","yarn run","pnpm run","bun run","bash","sh","ssh"],Hyq=[...oHY,"zsh","fish","eval","exec","env","xargs","sudo",...[]]});var I5q={};N8(I5q,{verifyAutoModeGateAccess:()=>Pn6,transitionPermissionMode:()=>cn,stripDangerousPermissionsForAutoMode:()=>dn,shouldDisableBypassPermissions:()=>mE8,restoreDangerousPermissions:()=>T26,removeDangerousPermissions:()=>Zyq,prepareContextForPlanMode:()=>Ik6,parseToolListFromCLI:()=>wS,parseBaseToolsFromCLI:()=>Gyq,isOverlyBroadPowerShellAllowRule:()=>eHY,isOverlyBroadBashAllowRule:()=>Zt1,isDefaultPermissionModeAuto:()=>nb8,isDangerousTaskPermission:()=>Pyq,isDangerousPowerShellPermission:()=>Dyq,isDangerousBashPermission:()=>Xyq,isBypassPermissionsModeDisabled:()=>wn,isAutoModeGateEnabled:()=>WN,initializeToolPermissionContext:()=>Tt1,initialPermissionModeFromCLI:()=>vt1,hasAutoModeOptInAnySource:()=>dS8,getAutoModeUnavailableReason:()=>k26,getAutoModeUnavailableNotification:()=>kA6,getAutoModeEnabledStateIfCached:()=>ib8,getAutoModeEnabledState:()=>ea6,findOverlyBroadPowerShellPermissions:()=>qjY,findOverlyBroadBashPermissions:()=>AjY,findDangerousClassifierPermissions:()=>Gt1,createDisabledBypassPermissionsContext:()=>Rz6,checkAndDisableBypassPermissions:()=>Vt1});import{relative as sHY}from"path";import{resolve as tHY}from"path";function Xyq(A,q){if(A!==S7)return!1;if(q===void 0||q==="")return!0;let K=q.trim().toLowerCase();if(K==="*")return!0;for(let _ of Hyq){let Y=_.toLowerCase();if(K===Y)return!0;if(K===`${Y}:*`)return!0;if(K===`${Y}*`)return!0;if(K===`${Y} *`)return!0;if(K.startsWith(`${Y} -`)&&K.endsWith("*"))return!0}return!1}function Dyq(A,q){return!1}function Pyq(A,q){return sZ(A)===a4}function Wyq(A){if(aZ.includes(A)){let q=B2(A);if(q){let K=sHY(G8(),q);return K.lengthp5(iH(k))),O=wS(q);if(K&&K.length>0){let k=Gyq(K),N=new Set(k.map(sZ)),R=ad1().filter((S)=>!N.has(S));O=[...O,...R]}let $=[],H=new Map,j=process.env.PWD;if(j&&j!==l1()&&KjY({originalCwd:l1(),processPwd:j}))H.set(j,{path:j,source:"session"});let J=d_("tengu_disable_bypass_permissions_mode"),M=PA()||{},X=M.permissions?.disableBypassPermissionsMode==="disable",D=!0/*ghq_force_bypass_available*/,P=tj8(),W=[],f=[];if(_==="auto")f=Gt1(P,w);let Z=Yyq({mode:_,additionalWorkingDirectories:H,alwaysAllowRules:{cliArg:w},alwaysDenyRules:{cliArg:O},alwaysAskRules:{},isBypassPermissionsModeAvailable:D,...{isAutoModeAvailable:WN()}},P),G=[...M.permissions?.additionalDirectories||[],...z],v=await Promise.all(G.map((k)=>PN6(k,Z)));for(let k of v)if(k.resultType==="success")Z=gY(Z,{type:"addDirectories",directories:[k.absolutePath],destination:"cliArg"});else if(k.resultType!=="alreadyInWorkingDirectory"&&k.resultType!=="pathNotFound")$.push(WN6(k));return{toolPermissionContext:Z,warnings:$,dangerousPermissions:f,overlyBroadBashPermissions:W}}function kA6(A){let q;switch(A){case"settings":q="auto mode disabled by settings";break;case"circuit-breaker":q="auto mode temporarily unavailable";break;case"model":q="auto mode unavailable for this model";break}return q}async function Pn6(A,q){let K=await yR("tengu_auto_mode_config",{}),_=Nt1(K?.enabled),Y=kt1();IF?.setAutoModeCircuitBroken(_==="disabled"||Y);let z=KK(),w=!!K?.disableFastMode&&(!!q||!1),O=DP6(z)&&!w,$=!1;if(_!=="disabled"&&!Y&&O)$=_==="enabled"||dS8();let H=_!=="disabled"&&!Y&&O,j=IF?.getAutoModeFlagCli()??!1,J=(Z,G)=>Z.isAutoModeAvailable===G?Z:{...Z,isAutoModeAvailable:G};if(H)return{updateContext:(Z)=>J(Z,$)};let M;if(Y)M="settings",V("auto mode disabled: disableAutoMode in settings",{level:"warn"});else if(_==="disabled")M="circuit-breaker",V('auto mode disabled: tengu_auto_mode_config.enabled === "disabled" (circuit breaker)',{level:"warn"});else M="model",V(`auto mode disabled: model ${KK()} does not support auto mode`,{level:"warn"});let X=kA6(M),D=(Z)=>{let G=Z.mode==="auto",v=Z.mode==="plan"&&Z.prePlanMode==="auto";if(!G&&!v)return J(Z,!1);if(IF?.setAutoModeActive(!1),_C(!0),G)return{...gY(T26(Z),{type:"setMode",mode:"default",destination:"session"}),isAutoModeAvailable:!1};return{...T26(Z),prePlanMode:"default",isAutoModeAvailable:!1}},P=A.mode==="auto",W=A.mode==="plan"&&A.prePlanMode==="auto";if(!(P||W||j))return{updateContext:D};if(P||W)return{updateContext:D,notification:X};return{updateContext:D,notification:A.isAutoModeAvailable?X:void 0}}function mE8(){return gX1("tengu_disable_bypass_permissions_mode")}function kt1(){let A=PA()||{};return A.disableAutoMode==="disable"||A.permissions?.disableAutoMode==="disable"}function WN(){if(IF?.isAutoModeCircuitBroken()??!1)return!1;if(kt1())return!1;if(!DP6(KK()))return!1;return!0}function k26(){if(kt1())return"settings";if(IF?.isAutoModeCircuitBroken()??!1)return"circuit-breaker";if(!DP6(KK()))return"model";return null}function Nt1(A){if(A==="enabled"||A==="disabled"||A==="opt-in")return A;return _jY}function ea6(){let A=l8("tengu_auto_mode_config",{});return Nt1(A?.enabled)}function ib8(){let A=l8("tengu_auto_mode_config",Myq);if(A===Myq)return;return Nt1(A?.enabled)}function dS8(){if(IF?.getAutoModeFlagCli()??!1)return!0;return ra()}function wn(){return!1}/*ej6_bypass_patched*/function Rz6(A){let q=A;if(A.mode==="bypassPermissions")q=gY(A,{type:"setMode",mode:"default",destination:"session"});return{...q,isBypassPermissionsModeAvailable:!1}}async function Vt1(A){return}/*fhq_async_disable_patched*/function nb8(){return(PA()||{}).permissions?.defaultMode==="auto"}function Ik6(A){let q=A.mode;if(q==="plan")return A;if(q==="auto")return{...A,prePlanMode:"auto"};if(nb8()&&WN()&&q!=="bypassPermissions")return IF?.setAutoModeActive(!0),{...dn(A),prePlanMode:"auto"};return{...A,prePlanMode:q}}var IF,_jY="disabled",Myq;var NM=L(()=>{r8();UA();Pj();SB();wD();v8();U1();vw();XS8();y$();gA();t1();H8();V8();Lz();_4();yG();zP();lP();jyq();IF=o7(hk6);Myq=Symbol("no-cached-auto-mode-config")});import{dirname as YjY,join as xV6,resolve as vyq,sep as zjY}from"path";import{readdir as wjY,readFile as OjY,stat as Tyq,lstat as $jY,realpath as HjY}from"fs/promises";import{existsSync as yt1}from"fs";import{homedir as jjY}from"os";function li(A,q="Custom item"){let K=A.split(` `);for(let _ of K){let Y=_.trim();if(Y){let w=Y.match(/^#+\s+(.+)$/)?.[1]??Y;return w.length>100?w.substring(0,97)+"...":w}}return q}function kyq(A){if(A===void 0||A===null)return null;if(!A)return[];let q=[];if(typeof A==="string")q=[A];else if(Array.isArray(A))q=A.filter((_)=>typeof _==="string");if(q.length===0)return[];let K=wS(q);if(K.includes("*"))return["*"];return K}function x16(A){let q=kyq(A);if(q===null)return A===void 0?void 0:[];if(q.includes("*"))return;return q}function Vx(A){let q=kyq(A);if(q===null)return[];return q}async function JjY(A){try{let q=await $jY(A,{bigint:!0});if(q.dev===0n&&q.ino===0n)return null;return`${q.dev}:${q.ino}`}catch{return null}}function MjY(A){let q=C9(A),K=C9(R9());if(!q||!K)return q;let _=CJ(A);if(_&&A$(_)===A$(K))return q;let Y=A$(q),z=A$(K);if(Y!==z&&Y.startsWith(z+zjY))return K;return q}function SU1(A,q){let K=vyq(jjY()).normalize("NFC"),_=MjY(q),Y=vyq(q),z=[];if(!yt1(Y))return z;while(!0){if(A$(Y)===A$(K))break;let w=xV6(Y,".claude",A);if(yt1(w))z.push(w);if(_&&A$(Y)===A$(_))break;let O=YjY(Y);if(O===Y)break;Y=O}return z}async function XjY(A,q){let K=[],_=new Set;async function Y(z){if(q.aborted)return;try{let w=await Tyq(z,{bigint:!0});if(w.isDirectory()){let O=w.dev!==void 0&&w.ino!==void 0?`${w.dev}:${w.ino}`:await HjY(z);if(_.has(O)){V(`Skipping already visited directory (circular symlink): ${z}`);return}_.add(O)}}catch(w){let O=w instanceof Error?w.message:String(w);V(`Failed to stat directory ${z}: ${O}`);return}try{let w=await wjY(z,{withFileTypes:!0});for(let O of w){if(q.aborted)break;let $=xV6(z,O.name);try{if(O.isSymbolicLink())try{let H=await Tyq($);if(H.isDirectory())await Y($);else if(H.isFile()&&O.name.endsWith(".md"))K.push($)}catch(H){let j=H instanceof Error?H.message:String(H);V(`Failed to follow symlink ${$}: ${j}`)}else if(O.isDirectory())await Y($);else if(O.isFile()&&O.name.endsWith(".md"))K.push($)}catch(H){let j=H instanceof Error?H.message:String(H);V(`Failed to access ${$}: ${j}`)}}}catch(w){let O=w instanceof Error?w.message:String(w);V(`Failed to read directory ${z}: ${O}`)}}return await Y(A),K}async function Et1(A){if(!yt1(A))return[];let q=a6(process.env.CLAUDE_CODE_USE_NATIVE_FILE_SEARCH),K=AbortSignal.timeout(3000),_=q?await XjY(A,K):await QI(["--files","--hidden","--follow","--no-ignore","--glob","*.md"],A,K);return(await Promise.all(_.map(async(z)=>{try{let w=await OjY(z,{encoding:"utf-8"}),{frontmatter:O,content:$}=zj(w,z);return{filePath:z,frontmatter:O,content:$}}catch(w){let O=w instanceof Error?w.message:String(w);return V(`Failed to read/parse markdown file: ${z}: ${O}`),null}}))).filter((z)=>z!==null)}var c$q,ii;var ni=L(()=>{uR();Ef();NM();H8();r8();oU();V8();vw();i96();n4();yK();v8();D4();c$q=["commands","agents","output-styles","skills","workflows"];ii=z1(async function(A,q){let K=Date.now(),_=xV6(d1(),A),Y=xV6(zD(),".claude",A),z=SU1(A,q),w=C9(q),O=CJ(q);if(w&&O&&O!==w){let f=A$(xV6(w,".claude",A));if(!z.some((G)=>A$(G)===f)){let G=xV6(O,".claude",A);if(!z.includes(G))z.push(G)}}let[$,H,j]=await Promise.all([Et1(Y).then((f)=>f.map((Z)=>({...Z,baseDir:Y,source:"policySettings"}))),lH("userSettings")&&!(A==="agents"&&uf("agents"))?Et1(_).then((f)=>f.map((Z)=>({...Z,baseDir:_,source:"userSettings"}))):Promise.resolve([]),lH("projectSettings")&&!(A==="agents"&&uf("agents"))?Promise.all(z.map((f)=>Et1(f).then((Z)=>Z.map((G)=>({...G,baseDir:f,source:"projectSettings"}))))):Promise.resolve([])]),J=j.flat(),M=[...$,...H,...J],X=await Promise.all(M.map((f)=>JjY(f.filePath))),D=new Map,P=[];for(let[f,Z]of M.entries()){let G=X[f]??null;if(G===null){P.push(Z);continue}let v=D.get(G);if(v!==void 0){V(`Skipping duplicate file '${Z.filePath}' from ${Z.source} (same inode already loaded from ${v})`);continue}D.set(G,Z.source),P.push(Z)}let W=M.length-P.length;if(W>0)V(`Deduplicated ${W} files in ${A} (same inode via symlinks or hard links)`);return Q("tengu_dir_search",{durationMs:Date.now()-K,managedFilesFound:$.length,userFilesFound:H.length,projectFilesFound:J.length,projectDirsSearched:z.length,subdir:A}),P},(A,q)=>`${A}:${q}`)});import{basename as DjY}from"path";var Nyq;var Vyq=L(()=>{n4();L8();ni();Zh8();H8();Ef();Nyq=z1(async(A)=>{try{return(await ii("output-styles",A)).map(({filePath:_,frontmatter:Y,content:z,source:w})=>{try{let $=DjY(_).replace(/\.md$/,""),H=Y.name||$,j=gR(Y.description,$)??li(z,`Custom ${$} output style`),J=Y["keep-coding-instructions"],M=J===!0||J==="true"?!0:J===!1||J==="false"?!1:void 0;if(Y["force-for-plugin"]!==void 0)V(`Output style "${H}" has force-for-plugin set, but this option only applies to plugin output styles. Ignoring.`,{level:"warn"});return{name:H,description:j,prompt:z.trim(),source:w,keepCodingInstructions:M}}catch(O){return H6(O),null}}).filter((_)=>_!==null)}catch(q){return H6(q),[]}})});function Ewq(){EN6.cache?.clear?.()}async function _D4(){let A=await EN6(G8()),q=Object.values(A).filter((z)=>z!==null&&z.source==="plugin"&&z.forceForPlugin===!0),K=q[0];if(K){if(q.length>1)V(`Multiple plugins have forced output styles: ${q.map((z)=>z.name).join(", ")}. Using: ${K.name}`,{level:"warn"});return V(`Using forced plugin output style: ${K.name}`),K}let Y=PA()?.outputStyle||Pv;return A[Y]??null}var Eyq,Pv="default",pz6,EN6;var Bg=L(()=>{g7();n4();U1();Vyq();Zh8();UA();H8();Eyq=` ## Insights In order to encourage learning, before and after writing code, always provide brief educational explanations about implementation choices using (with backticks):