"Enter "),A4.createElement(T,null,"to open your browser and draft a GitHub issue, or any other key to close."))))}function Uwz(A,q,K,Y){let z=yA6(q),_=`**Bug Description** ${yA6(K)} **Environment Info** - Platform: ${YA.platform} - Terminal: ${YA.terminal} - Version: ${{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.71",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-06T22:45:36Z"}.VERSION||"unknown"} - Feedback ID: ${A} **Errors** \`\`\`json `,$="\n```\n",O=U6(Y),H=`${Fwz}/new?title=${encodeURIComponent(z)}&labels=user-reported,bug&body=`,j=` **Note:** Content was truncated. `,J=encodeURIComponent(_),M=encodeURIComponent("\n```\n"),D=encodeURIComponent(` **Note:** Content was truncated. `),X=encodeURIComponent(O),P=NJq-H.length-J.length-M.length-D.length;if(P<=0){let V=encodeURIComponent("…"),N=50,v=NJq-H.length-V.length-D.length-50,y=_+O+"\n```\n",R=encodeURIComponent(y);if(R.length>v){R=R.slice(0,v);let h=R.lastIndexOf("%");if(h>=R.length-2)R=R.slice(0,h)}return H+R+V+D}if(X.length<=P)return H+J+X+M;let W=encodeURIComponent("…"),Z=50,G=X.slice(0,P-W.length-Z),f=G.lastIndexOf("%");if(f>=G.length-2)G=G.slice(0,f);return H+J+G+W+M+D}async function pwz(A,q){try{let K=await PG({systemPrompt:MK(["Generate a concise, technical issue title (max 80 chars) for a public GitHub issue based on this bug report for Claude Code.","Claude Code is an agentic coding CLI based on the Anthropic API.","The title should:","- Include the type of issue [Bug] or [Feature Request] as the first thing in the title","- Be concise, specific and descriptive of the actual problem","- Use technical terminology appropriate for a software issue",'- For error messages, extract the key error (e.g., "Missing Tool Result Block" rather than the full message)',"- Be direct and clear for developers to understand the problem",'- If you cannot determine a clear issue, use "Bug Report: [brief description]"',"- Any LLM API errors are from the Anthropic API, not from any other model provider","Your response will be directly used as the title of the Github issue, and as such should not contain any other commentary or explaination",'Examples of good titles include: "[Bug] Auto-Compact triggers to soon", "[Bug] Anthropic API Error: Missing Tool Result Block", "[Bug] Error: Invalid Model Name for Opus"']),userPrompt:A,signal:q,options:{hasAppendSystemPrompt:!1,toolChoice:void 0,isNonInteractiveSession:!1,agents:[],querySource:"feedback",mcpTools:[]}}),Y=K.message.content[0]?.type==="text"?K.message.content[0].text:"Bug Report";if(Y.startsWith(wH))return kJq(A);return Y}catch(K){return $6(K),kJq(A)}}function kJq(A){let q=A.split(` `)[0]||"";if(q.length<=60&&q.length>5)return q;let K=q.slice(0,60);if(q.length>60){let Y=K.lastIndexOf(" ");if(Y>30)K=K.slice(0,Y);K+="..."}return K.length<10?"Bug Report":K}function aS1(A){if(A instanceof Error){let q=Error(yA6(A.message));if(A.stack)q.stack=yA6(A.stack);$6(q)}else{let q=yA6(String(A));$6(Error(q))}}async function dwz(A,q){try{await L_();let K=gO();if(K.error)return{success:!1};let Y={"Content-Type":"application/json","User-Agent":ey(),...K.headers},z=await I8.post("https://api.anthropic.com/api/claude_cli_feedback",{content:U6(A)},{headers:Y,timeout:30000,signal:q});if(z.status===200){let w=z.data;if(w?.feedback_id)return{success:!0,feedbackId:w.feedback_id};return aS1(Error("Failed to submit feedback: request did not return feedback_id")),{success:!1}}return aS1(Error("Failed to submit feedback:"+z.status)),{success:!1}}catch(K){if(I8.isCancel(K))return{success:!1};if(I8.isAxiosError(K)&&K.response?.status===403){let Y=K.response.data;if(Y?.error?.type==="permission_error"&&Y?.error?.message?.includes("Custom data retention settings"))return aS1(Error("Cannot submit feedback because custom data retention settings are enabled")),{success:!1,isZdrOrg:!0}}return aS1(K),{success:!1}}}var A4,FL,NJq=7250,Fwz="https://github.com/anthropics/claude-code/issues";var Yi8=k(()=>{n6();H7();WO();x1();K9();U3();xq();uD();bA();B1();zH();vF();RP();A3();SA();Q1();uq();a1();zq();JK();eq();hK();A4=e(W6(),1),FL=e(W6(),1)});var yJq={};m1(yJq,{renderFeedbackComponent:()=>LJq,call:()=>cwz});function LJq(A,q,K,Y="",z={}){return _i8.createElement(EJq,{abortSignal:q,messages:K,initialDescription:Y,onDone:A,backgroundTasks:z})}async function cwz(A,q,K){let Y=K||"";return LJq(A,q.abortController.signal,q.messages,Y)}var _i8;var RJq=k(()=>{Yi8();_i8=e(W6(),1)});var lwz,$i8;var SJq=k(()=>{Z8();Xv();lwz={aliases:["bug"],type:"local-jsx",name:"feedback",description:"Submit feedback about Claude Code",argumentHint:"[report]",isEnabled:()=>!($1(process.env.CLAUDE_CODE_USE_BEDROCK)||$1(process.env.CLAUDE_CODE_USE_VERTEX)||$1(process.env.CLAUDE_CODE_USE_FOUNDRY)||process.env.DISABLE_FEEDBACK_COMMAND||process.env.DISABLE_BUG_COMMAND||process.env.CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC||!1||!_X("allow_product_feedback")),isHidden:!1,load:()=>Promise.resolve().then(() => (RJq(),yJq)),userFacingName(){return"feedback"}},$i8=lwz});function qr(A){return!Array.isArray?mJq(A)==="[object Array]":Array.isArray(A)}function nwz(A){if(typeof A=="string")return A;let q=A+"";return q=="0"&&1/A==-iwz?"-0":q}function rwz(A){return A==null?"":nwz(A)}function XU(A){return typeof A==="string"}function uJq(A){return typeof A==="number"}function owz(A){return A===!0||A===!1||awz(A)&&mJq(A)=="[object Boolean]"}function BJq(A){return typeof A==="object"}function awz(A){return BJq(A)&&A!==null}function QL(A){return A!==void 0&&A!==null}function Oi8(A){return!A.trim().length}function mJq(A){return A==null?A===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(A)}class gJq{constructor(A){this._keys=[],this._keyMap={};let q=0;A.forEach((K)=>{let Y=FJq(K);this._keys.push(Y),this._keyMap[Y.id]=Y,q+=Y.weight}),this._keys.forEach((K)=>{K.weight/=q})}get(A){return this._keyMap[A]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function FJq(A){let q=null,K=null,Y=null,z=1,w=null;if(XU(A)||qr(A))Y=A,q=hJq(A),K=Hi8(A);else{if(!CJq.call(A,"name"))throw Error(A2z("name"));let _=A.name;if(Y=_,CJq.call(A,"weight")){if(z=A.weight,z<=0)throw Error(q2z(_))}q=hJq(_),K=Hi8(_),w=A.getFn}return{path:q,id:K,weight:z,src:Y,getFn:w}}function hJq(A){return qr(A)?A:A.split(".")}function Hi8(A){return qr(A)?A.join("."):A}function K2z(A,q){let K=[],Y=!1,z=(w,_,$)=>{if(!QL(w))return;if(!_[$])K.push(w);else{let O=_[$],H=w[O];if(!QL(H))return;if($===_.length-1&&(XU(H)||uJq(H)||owz(H)))K.push(rwz(H));else if(qr(H)){Y=!0;for(let j=0,J=H.length;j{this._keysMap[q.id]=K})}create(){if(this.isCreated||!this.docs.length)return;if(this.isCreated=!0,XU(this.docs[0]))this.docs.forEach((A,q)=>{this._addString(A,q)});else this.docs.forEach((A,q)=>{this._addObject(A,q)});this.norm.clear()}add(A){let q=this.size();if(XU(A))this._addString(A,q);else this._addObject(A,q)}removeAt(A){this.records.splice(A,1);for(let q=A,K=this.size();q{let w=Y.getFn?Y.getFn(A):this.getFn(A,Y.path);if(!QL(w))return;if(qr(w)){let _=[],$=[{nestedArrIndex:-1,value:w}];while($.length){let{nestedArrIndex:O,value:H}=$.pop();if(!QL(H))continue;if(XU(H)&&!Oi8(H)){let j={v:H,i:O,n:this.norm.get(H)};_.push(j)}else if(qr(H))H.forEach((j,J)=>{$.push({nestedArrIndex:J,value:j})})}K.$[z]=_}else if(XU(w)&&!Oi8(w)){let _={v:w,n:this.norm.get(w)};K.$[z]=_}}),this.records.push(K)}toJSON(){return{keys:this.keys,records:this.records}}}function QJq(A,q,{getFn:K=a3.getFn,fieldNormWeight:Y=a3.fieldNormWeight}={}){let z=new eS1({getFn:K,fieldNormWeight:Y});return z.setKeys(A.map(FJq)),z.setSources(q),z.create(),z}function H2z(A,{getFn:q=a3.getFn,fieldNormWeight:K=a3.fieldNormWeight}={}){let{keys:Y,records:z}=A,w=new eS1({getFn:q,fieldNormWeight:K});return w.setKeys(Y),w.setIndexRecords(z),w}function sS1(A,{errors:q=0,currentLocation:K=0,expectedLocation:Y=0,distance:z=a3.distance,ignoreLocation:w=a3.ignoreLocation}={}){let _=q/A.length;if(w)return _;let $=Math.abs(Y-K);if(!z)return $?1:_;return _+$/z}function j2z(A=[],q=a3.minMatchCharLength){let K=[],Y=-1,z=-1,w=0;for(let _=A.length;w<_;w+=1){let $=A[w];if($&&Y===-1)Y=w;else if(!$&&Y!==-1){if(z=w-1,z-Y+1>=q)K.push([Y,z]);Y=-1}}if(A[w-1]&&w-Y>=q)K.push([Y,w-1]);return K}function J2z(A,q,K,{location:Y=a3.location,distance:z=a3.distance,threshold:w=a3.threshold,findAllMatches:_=a3.findAllMatches,minMatchCharLength:$=a3.minMatchCharLength,includeMatches:O=a3.includeMatches,ignoreLocation:H=a3.ignoreLocation}={}){if(q.length>W_6)throw Error(ewz(W_6));let j=q.length,J=A.length,M=Math.max(0,Math.min(Y,J)),D=w,X=M,P=$>1||O,W=P?Array(J):[],Z;while((Z=A.indexOf(q,X))>-1){let y=sS1(q,{currentLocation:Z,expectedLocation:M,distance:z,ignoreLocation:H});if(D=Math.min(y,D),X=Z+j,P){let R=0;while(R=B;b-=1){let U=b-1,d=K[A.charAt(U)];if(P)W[U]=+!!d;if(F[b]=(F[b+1]<<1|1)&d,y)F[b]|=(G[b+1]|G[b])<<1|1|G[b+1];if(F[b]&N){if(f=sS1(q,{errors:y,currentLocation:U,expectedLocation:M,distance:z,ignoreLocation:H}),f<=D){if(D=f,X=U,X<=M)break;B=Math.max(1,2*M-X)}}}if(sS1(q,{errors:y+1,currentLocation:M,expectedLocation:M,distance:z,ignoreLocation:H})>D)break;G=F}let v={isMatch:X>=0,score:Math.max(0.001,f)};if(P){let y=j2z(W,$);if(!y.length)v.isMatch=!1;else if(O)v.indices=y}return v}function M2z(A){let q={};for(let K=0,Y=A.length;K{this.chunks.push({pattern:J,alphabet:M2z(J),startIndex:M})},j=this.pattern.length;if(j>W_6){let J=0,M=j%W_6,D=j-M;while(J{let{isMatch:W,score:Z,indices:G}=J2z(A,D,X,{location:Y+P,distance:z,threshold:w,findAllMatches:_,minMatchCharLength:$,includeMatches:K,ignoreLocation:O});if(W)J=!0;if(j+=Z,W&&G)H=[...H,...G]});let M={isMatch:J,score:J?j/this.chunks.length:1};if(J&&K)M.indices=H;return M}}class Kr{constructor(A){this.pattern=A}static isMultiMatch(A){return IJq(A,this.multiRegex)}static isSingleMatch(A){return IJq(A,this.singleRegex)}search(){}}function IJq(A,q){let K=A.match(q);return K?K[1]:null}function P2z(A,q={}){return A.split(X2z).map((K)=>{let Y=K.trim().split(D2z).filter((w)=>w&&!!w.trim()),z=[];for(let w=0,_=Y.length;w<_;w+=1){let $=Y[w],O=!1,H=-1;while(!O&&++H{let w=Object.keys(z),_=G2z(z);if(!_&&w.length>1&&!Xi8(z))return Y(xJq(z));if(f2z(z)){let O=_?z[Di8.PATH]:w[0],H=_?z[Di8.PATTERN]:z[O];if(!XU(H))throw Error(twz(O));let j={keyId:Hi8(O),pattern:H};if(K)j.searcher=Mi8(H,q);return j}let $={children:[],operator:w[0]};return w.forEach((O)=>{let H=z[O];if(qr(H))H.forEach((j)=>{$.children.push(Y(j))})}),$};if(!Xi8(A))A=xJq(A);return Y(A)}function T2z(A,{ignoreFieldNorm:q=a3.ignoreFieldNorm}){A.forEach((K)=>{let Y=1;K.matches.forEach(({key:z,norm:w,score:_})=>{let $=z?z.weight:null;Y*=Math.pow(_===0&&$?Number.EPSILON:_,($||1)*(q?1:w))}),K.score=Y})}function V2z(A,q){let K=A.matches;if(q.matches=[],!QL(K))return;K.forEach((Y)=>{if(!QL(Y.indices)||!Y.indices.length)return;let{indices:z,value:w}=Y,_={indices:z,value:w};if(Y.key)_.key=Y.key.src;if(Y.idx>-1)_.refIndex=Y.idx;q.matches.push(_)})}function N2z(A,q){q.score=A.score}function v2z(A,q,{includeMatches:K=a3.includeMatches,includeScore:Y=a3.includeScore}={}){let z=[];if(K)z.push(V2z);if(Y)z.push(N2z);return A.map((w)=>{let{idx:_}=w,$={item:q[_],refIndex:_};if(z.length)z.forEach((O)=>{O(w,$)});return $})}class iC{constructor(A,q={},K){this.options={...a3,...q},this.options.useExtendedSearch,this._keyStore=new gJq(this.options.keys),this.setCollection(A,K)}setCollection(A,q){if(this._docs=A,q&&!(q instanceof eS1))throw Error(swz);this._myIndex=q||QJq(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(A){if(!QL(A))return;this._docs.push(A),this._myIndex.add(A)}remove(A=()=>!1){let q=[];for(let K=0,Y=this._docs.length;K-1)$=$.slice(0,q);return v2z($,this._docs,{includeMatches:K,includeScore:Y})}_searchStringList(A){let q=Mi8(A,this.options),{records:K}=this._myIndex,Y=[];return K.forEach(({v:z,i:w,n:_})=>{if(!QL(z))return;let{isMatch:$,score:O,indices:H}=q.searchIn(z);if($)Y.push({item:z,idx:w,matches:[{score:O,value:z,norm:_,indices:H}]})}),Y}_searchLogical(A){let q=rJq(A,this.options),K=(_,$,O)=>{if(!_.children){let{keyId:j,searcher:J}=_,M=this._findMatches({key:this._keyStore.get(j),value:this._myIndex.getValueForItemAtKeyId($,j),searcher:J});if(M&&M.length)return[{idx:O,item:$,matches:M}];return[]}let H=[];for(let j=0,J=_.children.length;j{if(QL(_)){let O=K(q,_,$);if(O.length){if(!z[$])z[$]={idx:$,item:_,matches:[]},w.push(z[$]);O.forEach(({matches:H})=>{z[$].matches.push(...H)})}}}),w}_searchObjectList(A){let q=Mi8(A,this.options),{keys:K,records:Y}=this._myIndex,z=[];return Y.forEach(({$:w,i:_})=>{if(!QL(w))return;let $=[];if(K.forEach((O,H)=>{$.push(...this._findMatches({key:O,value:w[H],searcher:q}))}),$.length)z.push({idx:_,item:w,matches:$})}),z}_findMatches({key:A,value:q,searcher:K}){if(!QL(q))return[];let Y=[];if(qr(q))q.forEach(({v:z,i:w,n:_})=>{if(!QL(z))return;let{isMatch:$,score:O,indices:H}=K.searchIn(z);if($)Y.push({score:O,key:A,value:z,idx:w,norm:_,indices:H})});else{let{v:z,n:w}=q,{isMatch:_,score:$,indices:O}=K.searchIn(z);if(_)Y.push({score:$,key:A,value:z,norm:w,indices:O})}return Y}}var iwz=1/0,swz="Incorrect 'index' type",twz=(A)=>`Invalid value for key ${A}`,ewz=(A)=>`Pattern length exceeds max of ${A}.`,A2z=(A)=>`Missing ${A} property in key`,q2z=(A)=>`Property 'weight' in key '${A}' must be a positive integer`,CJq,Y2z,z2z,w2z,_2z,a3,$2z,W_6=32,UJq,pJq,dJq,cJq,lJq,iJq,Wi8,Zi8,ji8,bJq,D2z,X2z="|",W2z,Ji8,tS1,Di8,Xi8=(A)=>!!(A[tS1.AND]||A[tS1.OR]),G2z=(A)=>!!A[Di8.PATH],f2z=(A)=>!qr(A)&&BJq(A)&&!Xi8(A),xJq=(A)=>({[tS1.AND]:Object.keys(A).map((q)=>({[q]:A[q]}))});var AC1=k(()=>{CJq=Object.prototype.hasOwnProperty;Y2z={includeMatches:!1,findAllMatches:!1,minMatchCharLength:1},z2z={isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(A,q)=>A.score===q.score?A.idx-1)q=K+z,Y.push([K,q-1]);let w=!!Y.length;return{isMatch:w,score:w?0:1,indices:Y}}};ji8=[UJq,Zi8,dJq,cJq,iJq,lJq,pJq,Wi8],bJq=ji8.length,D2z=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/;W2z=new Set([Wi8.type,Zi8.type]);Ji8=[];tS1={AND:"$and",OR:"$or"},Di8={PATH:"$path",PATTERN:"$val"};iC.version="7.0.0";iC.createIndex=QJq;iC.parseIndex=H2z;iC.config=a3;iC.parseQuery=rJq;Z2z(nJq)});var Gi8={};m1(Gi8,{default:()=>E2z,FileIndex:()=>k2z});var qC1,k2z,E2z;var fi8=k(()=>{try{qC1=(()=>{throw new Error("Cannot require module "+"../../file-index.node");})()}catch(A){qC1=null}k2z=qC1?.FileIndex,E2z=qC1?.FileIndex});import*as MX from"path";async function L2z(){if(KC1)return null;if(va6)return va6;if(ZY())try{return va6=new(await Promise.resolve().then(() => (fi8(),Gi8))).FileIndex,va6}catch(A){return KC1=!0,L(`[FileIndex] Rust module unavailable, falling back to Fuse.js: ${D1(A)}`),$6(A),null}else return KC1=!0,L("[FileIndex] Not in bundled mode, using Fuse.js fallback"),null}function tJq(){va6=null,KC1=!1,Ek6=null,Lk6=[],Z_6=null,kk6++,ka6=null,Vi8=null,YC1=null,Nk6=[],Ni8=null,vi8=null}async function y2z(){let A=I1();if(Vi8===A&&ka6!==null)return ka6;return ka6=Fw(A)!==null,Vi8=A,ka6}function oJq(A,q,K){if(K===q)return A;return A.map((Y)=>{let z=MX.join(q,Y);return MX.relative(K,z)})}function R2z(A){if(A.length===0)return;let q=ki8(A);if(Ek6&&Nk6.length>0){let K=ki8(Nk6),Y=[...Nk6,...K,...A,...q];try{Ek6.loadFromFileList(Y),L(`[FileIndex] rebuilt Rust index with ${Nk6.length} tracked + ${A.length} untracked files`)}catch(z){L(`[FileIndex] failed to rebuild Rust index: ${z}`)}}else{let K=[...A,...q],Y=new Set(Lk6);for(let z of K)if(!Y.has(z))Lk6.push(z);L(`[FileIndex] merged ${A.length} untracked files into JS cache`)}}async function aJq(A,q){let K=`${A}:${q}`;if(vi8===K)return Ni8;let Y=P1(),z=[".ignore",".rgignore"],w=[...new Set([A,q])],_=sJq.default(),$=!1;for(let H of w)for(let j of z){let J=MX.join(H,j);try{let M=await Y.readFile(J,{encoding:"utf8"});_.add(M),$=!0,L(`[FileIndex] loaded ignore patterns from ${J}`)}catch{}}let O=$?_:null;return Ni8=O,vi8=K,O}async function S2z(A,q){let K=Date.now();if(L("[FileIndex] getFilesUsingGit called"),!await y2z())return L("[FileIndex] not a git repo, returning null"),null;try{let Y=Fw(I1());if(!Y)return L("[FileIndex] git rev-parse --show-toplevel failed, falling back to ripgrep"),null;let z=I1(),w=Date.now(),_=await z7(nA(),["-c","core.quotepath=false","ls-files","--recurse-submodules"],{timeout:5000,abortSignal:A,cwd:Y});if(L(`[FileIndex] git ls-files (tracked) took ${Date.now()-w}ms`),_.code!==0)return L(`[FileIndex] git ls-files failed (code=${_.code}, stderr=${_.stderr}), falling back to ripgrep`),null;let $=_.stdout.trim().split(` `).filter(Boolean),O=oJq($,Y,z),H=await aJq(Y,z);if(H){let J=O.length;O=H.filter(O),L(`[FileIndex] applied ignore patterns: ${J} -> ${O.length} files`)}Nk6=O;let j=Date.now()-K;if(L(`[FileIndex] git ls-files: ${O.length} tracked files in ${j}ms`),c("tengu_file_suggestions_git_ls_files",{file_count:O.length,tracked_count:O.length,untracked_count:0,duration_ms:j}),!YC1){let J=q?["-c","core.quotepath=false","ls-files","--others","--exclude-standard"]:["-c","core.quotepath=false","ls-files","--others"],M=kk6;YC1=z7(nA(),J,{timeout:1e4,cwd:Y}).then(async(D)=>{if(M!==kk6)return;if(D.code===0){let X=D.stdout.trim().split(` `).filter(Boolean),P=oJq(X,Y,z),W=await aJq(Y,z);if(W&&P.length>0){let Z=P.length;P=W.filter(P),L(`[FileIndex] applied ignore patterns to untracked: ${Z} -> ${P.length} files`)}L(`[FileIndex] background untracked fetch: ${P.length} files`),R2z(P)}}).catch((D)=>{L(`[FileIndex] background untracked fetch failed: ${D}`)}).finally(()=>{YC1=null})}return O}catch(Y){return L(`[FileIndex] git ls-files error: ${D1(Y)}`),null}}function ki8(A){let q=new Set;for(let K of A){let Y=MX.dirname(K);while(Y!=="."&&!q.has(Y)){let z=MX.dirname(Y);if(z===Y)break;q.add(Y),Y=z}}return[...q].map((K)=>K+MX.sep)}async function C2z(A){return(await Promise.all(qMq.map((K)=>ji(K,A)))).flatMap((K)=>K.map((Y)=>Y.filePath))}async function h2z(A,q){L(`[FileIndex] getProjectFiles called, respectGitignore=${q}`);let K=await S2z(A,q);if(K!==null)return L(`[FileIndex] using git ls-files result (${K.length} files)`),K;L("[FileIndex] git ls-files returned null, falling back to ripgrep");let Y=Date.now(),z=["--files","--follow","--hidden","--glob","!.git/"];if(!q)z.push("--no-ignore-vcs");let _=(await iy(z,".",A)).map((O)=>MX.relative(I1(),O)),$=Date.now()-Y;return L(`[FileIndex] ripgrep: ${_.length} files in ${$}ms`),c("tengu_file_suggestions_ripgrep",{file_count:_.length,duration_ms:$}),_}async function I2z(){let A=AbortSignal.timeout(1e4);try{let q=h7(),K=T1(),Y=q.respectGitignore??K.respectGitignore??!0,z=I1(),[w,_]=await Promise.all([h2z(A,Y),C2z(z)]),$=[...w,..._],H=[...ki8($),...$],j=[],J=await L2z();if(J)try{J.loadFromFileList(H)}catch(M){L(`[FileIndex] Failed to load Rust index, using Fuse.js fallback: ${D1(M)}`),$6(M),j=H}else j=H;return{fileIndex:J,fileList:j}}catch(q){return $6(q),{fileIndex:null,fileList:[]}}}function b2z(A,q){let K=Math.min(A.length,q.length),Y=0;while(YY.displayText),K=q[0];for(let Y=1;YEa6(H.path,H.score))}catch(O){L(`[FileIndex] Rust search failed, falling back to Fuse.js: ${D1(O)}`),$6(O)}L("[FileIndex] Using Fuse.js fallback for search");let Y=[...new Set(q)];if(!K){let O=new Set;for(let H of Y){let j=H.split(MX.sep)[0];if(j){if(O.add(j),O.size>=vk6)break}}return[...O].sort().map(Ea6)}let z=Y.map((O)=>{return{path:O,filename:MX.basename(O),testPenalty:O.includes("test")?1:0}}),w=K.lastIndexOf(MX.sep);if(w>2)z=z.filter((O)=>{return O.path.substring(0,w).startsWith(K.substring(0,w))});let $=new iC(z,{includeScore:!0,threshold:0.5,keys:[{name:"path",weight:1},{name:"filename",weight:2}]}).search(K,{limit:vk6});return $=$.sort((O,H)=>{if(O.score===void 0||H.score===void 0)return 0;if(Math.abs(O.score-H.score)>0.05)return O.score-H.score;return O.item.testPenalty-H.item.testPenalty}),$.map((O)=>O.item.path).slice(0,vk6).map(Ea6)}function Ti8(){if(!Z_6){let A=kk6,q=Date.now();Z_6=I2z().then((K)=>{if(A!==kk6)return K;Ek6=K.fileIndex,Lk6=K.fileList,Z_6=null;let Y=K.fileIndex?"rust index":`${K.fileList.length} files`;return L(`[FileIndex] cache refresh completed in ${Date.now()-q}ms (${Y})`),K}).catch((K)=>{if(L(`[FileIndex] Cache refresh failed: ${D1(K)}`),$6(K),A===kk6)Z_6=null;return{fileIndex:null,fileList:[]}})}}async function u2z(){let A=P1(),q=I1();try{return(await A.readdir(q)).map((Y)=>{let z=MX.join(q,Y.name),w=MX.relative(q,z);return Y.isDirectory()?w+MX.sep:w})}catch(K){return $6(K),[]}}async function AMq(A,q=!1){if(!A&&!q)return[];if(h7().fileSuggestion?.type==="command"){let Y={...R$(),query:A};return(await Ei8(Y)).slice(0,vk6).map(Ea6)}if(A===""||A==="."||A==="./"){let Y=await u2z();return Ti8(),Y.slice(0,vk6).map(Ea6)}let K=Date.now();try{let Y=Ek6||Lk6.length>0;if(Y)Ti8();else if(Ti8(),Z_6)await Z_6;let z=A,w="."+MX.sep;if(A.startsWith(w))z=A.substring(2);if(z.startsWith("~"))z=t4(z);let _=await x2z(Ek6,Lk6,z),$=Date.now()-K;return L(`[FileIndex] generateFileSuggestions: ${_.length} results in ${$}ms (cache ${Y?"hit":"miss"})`),c("tengu_file_suggestions_query",{duration_ms:$,cache_hit:!!Y,result_count:_.length,query_length:A.length}),_}catch(Y){return $6(Y),[]}}function zC1(A,q,K,Y,z,w){let _=typeof A==="string"?A:A.displayText,$=q.substring(0,Y)+_+q.substring(Y+K.length);z($);let O=Y+_.length;w(O)}var sJq,va6=null,KC1=!1,Ek6=null,Lk6,Z_6=null,kk6=0,ka6=null,Vi8=null,YC1=null,Nk6,Ni8=null,vi8=null,vk6=15;var wC1=k(()=>{AC1();x1();Y7();W7();Ji();Kz();Q8();EI();G1();U3();J$();GA();aq();B1();MA();sJq=e(GY6(),1);Lk6=[],Nk6=[]});import{join as B2z}from"path";function m2z(){return`IMPORTANT: This message and these instructions are NOT part of the actual user conversation. Do NOT include any references to "documentation updates", "magic docs", or these update instructions in the document content. Based on the user conversation above (EXCLUDING this documentation update instruction message), update the Magic Doc file to incorporate any NEW learnings, insights, or information that would be valuable to preserve. The file {{docPath}} has already been read for you. Here are its current contents: {{docContents}} Document title: {{docTitle}} {{customInstructions}} Your ONLY task is to use the Edit tool to update the documentation file if there is substantial new information to add, then stop. You can make multiple edits (update multiple sections as needed) - make all Edit tool calls in parallel in a single message. If there's nothing substantial to add, simply respond with a brief explanation and do not call any tools. CRITICAL RULES FOR EDITING: - Preserve the Magic Doc header exactly as-is: # MAGIC DOC: {{docTitle}} - If there's an italicized line immediately after the header, preserve it exactly as-is - Keep the document CURRENT with the latest state of the codebase - this is NOT a changelog or history - Update information IN-PLACE to reflect the current state - do NOT append historical notes or track changes over time - Remove or replace outdated information rather than adding "Previously..." or "Updated to..." notes - Clean up or DELETE sections that are no longer relevant or don't align with the document's purpose - Fix obvious errors: typos, grammar mistakes, broken formatting, incorrect information, or confusing statements - Keep the document well organized: use clear headings, logical section order, consistent formatting, and proper nesting DOCUMENTATION PHILOSOPHY - READ CAREFULLY: - BE TERSE. High signal only. No filler words or unnecessary elaboration. - Documentation is for OVERVIEWS, ARCHITECTURE, and ENTRY POINTS - not detailed code walkthroughs - Do NOT duplicate information that's already obvious from reading the source code - Do NOT document every function, parameter, or line number reference - Focus on: WHY things exist, HOW components connect, WHERE to start reading, WHAT patterns are used - Skip: detailed implementation steps, exhaustive API docs, play-by-play narratives What TO document: - High-level architecture and system design - Non-obvious patterns, conventions, or gotchas - Key entry points and where to start reading code - Important design decisions and their rationale - Critical dependencies or integration points - References to related files, docs, or code (like a wiki) - help readers navigate to relevant context What NOT to document: - Anything obvious from reading the code itself - Exhaustive lists of files, functions, or parameters - Step-by-step implementation details - Low-level code mechanics - Information already in CLAUDE.md or other project docs Use the Edit tool with file_path: {{docPath}} REMEMBER: Only update if there is substantial new information. The Magic Doc header (# MAGIC DOC: {{docTitle}}) must remain unchanged.`}async function g2z(){let A=P1(),q=B2z(OA(),"magic-docs","prompt.md");try{return await A.readFile(q,{encoding:"utf-8"})}catch{return m2z()}}function F2z(A,q){return A.replace(/\{\{(\w+)\}\}/g,(K,Y)=>Object.prototype.hasOwnProperty.call(q,Y)?q[Y]:K)}async function KMq(A,q,K,Y){let z=await g2z(),w=Y?` DOCUMENT-SPECIFIC UPDATE INSTRUCTIONS: The document author has provided specific instructions for how this file should be updated. Pay extra attention to these instructions and follow them carefully: "${Y}" These instructions take priority over the general rules below. Make sure your updates align with these specific guidelines.`:"";return F2z(z,{docContents:A,docPath:q,docTitle:K,customInstructions:w})}var YMq=k(()=>{Y7();Z8()});function zMq(){La6.clear()}function p2z(A){let q=A.match(Q2z);if(!q||!q[1])return null;let K=q[1].trim(),Y=q.index+q[0].length,w=A.slice(Y).match(/^\s*\n(?:\s*\n)?(.+?)(?:\n|$)/);if(w&&w[1]){let $=w[1].match(U2z);if($&&$[1]){let O=$[1].trim();return{title:K,instructions:O}}}return{title:K}}function d2z(){return{agentType:"magic-docs",whenToUse:"Update Magic Docs",tools:[Yq],model:"sonnet",source:"built-in",baseDir:"built-in",getSystemPrompt:()=>""}}async function c2z(A,q){let{messages:K,systemPrompt:Y,userContext:z,systemContext:w,toolUseContext:_}=q,$=dl(_.readFileState),O={..._,readFileState:$},H=P1();try{await H.stat(A.path)}catch(W){if(W.code==="ENOENT"){La6.delete(A.path);return}throw W}let j=await KY.call({file_path:A.path},O),J="",M=j.data;if(M.type==="text")J=M.file.content;let D=p2z(J);if(!D){La6.delete(A.path);return}let X=await KMq(J,A.path,D.title,D.instructions),P=async(W,Z)=>{if(W.name===Yq&&typeof Z==="object"&&Z!==null&&"file_path"in Z){let G=Z.file_path;if(typeof G==="string"&&G===A.path)return{behavior:"allow",updatedInput:Z}}return{behavior:"deny",message:`only ${Yq} is allowed for ${A.path}`,decisionReason:{type:"other",reason:`only ${Yq} is allowed`}}};for await(let W of xC({agentDefinition:d2z(),promptMessages:[A8({content:X})],toolUseContext:O,canUseTool:P,isAsync:!0,forkContextMessages:K,querySource:"magic_docs",override:{systemPrompt:Y,userContext:z,systemContext:w},availableTools:O.options.tools}));}async function wMq(){}var Q2z,U2z,La6,Tg$;var Li8=k(()=>{Y7();Px();YMq();E26();Jl6();OG();SA();Px();Q2z=/^#\s*MAGIC\s+DOC:\s*(.+)$/im,U2z=/^[_*](.+?)[_*]\s*$/m,La6=new Map;Tg$=Og(async function(A){let{messages:q,querySource:K}=A;if(K!=="repl_main_thread")return;if(ya6(q))return;if(La6.size===0)return;for(let w of Array.from(La6.values()))await c2z(w,A)})});var Ri8={};m1(Ri8,{clearSessionCaches:()=>yi8});function yi8(){y_.cache.clear?.(),KH.cache.clear?.(),VN8.cache.clear?.(),tJq(),AQ(),Cz4(),Aq4(null),yH6(null),Bi(),wx4(),uKq(),jqq(),P68(),_Mq(),uG4(),XF1(),VpA(),M24(),D_4(),zMq(),lz4(),Promise.resolve().then(() => (xc8(),d2q)).then(({clearWebFetchCache:A})=>A()),Promise.resolve().then(() => (tW1(),S24)).then(({clearToolSearchDescriptionCache:A})=>A()),Promise.resolve().then(() => (fW(),hW4)).then(({clearAgentDefinitionsCache:A})=>A()),Promise.resolve().then(() => (aY6(),B24)).then(({clearPromptCache:A})=>A())}var _C1=k(()=>{OH();dE();Q1();wC1();B66();kT1();zn();Fy1();Mv6();xf();gG();m16();ZK6();Oi();qf6();Li8();ok8()});var $Mq={};m1($Mq,{clearConversation:()=>Si8});import{randomUUID as l2z}from"crypto";async function Si8({setMessages:A,readFileState:q,getAppState:K,setAppState:Y,setConversationId:z}){if(await Ii8("clear",{getAppState:K,setAppState:Y}),A(()=>[]),z)z(l2z());if(yi8(),rH(DA()),q.clear(),Y)Y((_)=>{for(let[$,O]of Object.entries(_.tasks)){try{if(O.status==="running"){if(O.type==="local_bash"&&"shellCommand"in O&&O.shellCommand)O.shellCommand.kill(),O.shellCommand.cleanup();if("abortController"in O&&O.abortController)O.abortController.abort();if("unregisterCleanup"in O&&typeof O.unregisterCleanup==="function")O.unregisterCleanup()}}catch(H){$6(H)}bH($)}return{..._,tasks:{},attribution:MG6(),fileHistory:{snapshots:[],trackedFiles:new Set,snapshotSequence:0},mcp:{clients:[],tools:[],commands:[],resources:{},pluginReconnectKey:_.mcp.pluginReconnectKey}}});iw4(),hi8(),Zg1({setCurrentAsParent:!0}),await nC();let w=await VW("clear");if(w.length>0)A(()=>w)}var Ci8=k(()=>{Q1();Jx();uq();b16();J$();uJ();_C1();d0();BD();x1();ol()});var OMq={};m1(OMq,{call:()=>i2z});var i2z=async(A,q)=>{return await Si8(q),{type:"text",value:""}};var HMq=k(()=>{Ci8()});var n2z,bi8;var jMq=k(()=>{n2z={type:"local",name:"clear",description:"Clear conversation history and free up context",aliases:["reset","new"],isEnabled:()=>!0,isHidden:!1,supportsNonInteractive:!1,load:()=>Promise.resolve().then(() => (HMq(),OMq)),userFacingName(){return"clear"}},bi8=n2z});var JMq={};m1(JMq,{call:()=>o2z});var r2z,o2z=async(A,q)=>{if(Oz())return{type:"text",value:"Cannot set color: This session is a swarm teammate. Teammate colors are assigned by the team leader."};if(!A||A.trim()==="")return{type:"text",value:`Please provide a color. Available colors: ${sH.join(", ")}, default`};let K=A.trim().toLowerCase();if(r2z.includes(K)){let w=d1(),_=ow();return await $C1(w,"default",_),q.setAppState(($)=>({...$,standaloneAgentContext:{...$.standaloneAgentContext,name:$.standaloneAgentContext?.name??"",color:void 0}})),{type:"text",value:"Session color reset to default"}}if(!sH.includes(K)){let w=sH.join(", ");return{type:"text",value:`Invalid color "${K}". Available colors: ${w}, default`}}let Y=d1(),z=ow();return await $C1(Y,K,z),q.setAppState((w)=>({...w,standaloneAgentContext:{...w.standaloneAgentContext,name:w.standaloneAgentContext?.name??"",color:K}})),{type:"text",value:`Session color set to: ${K}`}};var MMq=k(()=>{uq();Q1();GW();sz();r2z=["default","reset","none","gray","grey"]});var a2z,xi8;var DMq=k(()=>{uY();a2z={type:"local",name:"color",description:"Set the prompt bar color for this session",isEnabled:()=>Z7(),isHidden:!1,supportsNonInteractive:!1,argumentHint:"",load:()=>Promise.resolve().then(() => (MMq(),JMq)),userFacingName(){return"color"}},xi8=a2z});var s2z,XMq;var PMq=k(()=>{aK6();s2z=i6(()=>$q.object({entries:$q.record($q.string(),$q.string())})),XMq=i6(()=>$q.object({organizationId:$q.string(),repo:$q.string(),version:$q.number(),lastModified:$q.string(),checksum:$q.string(),content:s2z()}))});import{join as t2z,relative as e2z,sep as A_z}from"path";import{readdir as q_z,readFile as K_z,mkdir as Y_z,writeFile as z_z,stat as w_z}from"fs/promises";function ZMq(){return{lastKnownChecksum:null}}function mi8(){if(D7()!=="firstParty"||!Om())return!1;let A=g7();return Boolean(A?.accessToken&&A.scopes?.includes(Bk)&&A.scopes.includes($d))}function GMq(A){return`${process.env.TEAM_MEMORY_SYNC_URL||U7().BASE_API_URL}/api/claude_code/team_memory?repo=${encodeURIComponent(A)}`}function fMq(){let A=g7();if(A?.accessToken)return{headers:{Authorization:`Bearer ${A.accessToken}`,"anthropic-beta":G0,"User-Agent":mO()}};return{error:"No OAuth token available for team memory sync"}}async function __z(A,q,K){try{await L_();let Y=fMq();if(Y.error)return{success:!1,error:Y.error,skipRetry:!0,errorType:"auth"};let z={...Y.headers};if(K)z["If-None-Match"]=`"${K.replace(/"/g,"")}"`;let w=GMq(q),_=await I8.get(w,{headers:z,timeout:WMq,validateStatus:(H)=>H===200||H===304||H===404});if(_.status===304)return L("team-memory-sync: not modified (304)",{level:"debug"}),{success:!0,notModified:!0,checksum:K??void 0};if(_.status===404)return L("team-memory-sync: no remote data (404)",{level:"debug"}),A.lastKnownChecksum=null,{success:!0,isEmpty:!0};let $=XMq().safeParse(_.data);if(!$.success)return L("team-memory-sync: invalid response format",{level:"warn"}),{success:!1,error:"Invalid team memory response format",skipRetry:!0,errorType:"parse"};let O=$.data.checksum||_.headers.etag?.replace(/^"|"$/g,"")||void 0;if(O)A.lastKnownChecksum=O;return L(`team-memory-sync: fetched successfully (checksum: ${O??"none"})`,{level:"debug"}),{success:!0,data:$.data,isEmpty:!1,checksum:O}}catch(Y){if(I8.isAxiosError(Y)){let z=Y.response?.status,w=JSON.stringify(Y.response?.data??"");if(L(`team-memory-sync: fetch error ${z}: ${w}`,{level:"warn"}),z===401||z===403)return{success:!1,error:`Not authorized for team memory sync: ${w}`,skipRetry:!0,errorType:"auth",httpStatus:z};if(Y.code==="ECONNABORTED")return{success:!1,error:"Team memory sync request timeout",errorType:"timeout"};if(Y.code==="ECONNREFUSED"||Y.code==="ENOTFOUND")return{success:!1,error:"Cannot connect to server",errorType:"network"};return{success:!1,error:Y.message,errorType:"unknown",httpStatus:z}}return{success:!1,error:Y instanceof Error?Y.message:"Unknown error",errorType:"unknown"}}}async function $_z(A,q,K){let Y=null;for(let z=1;z<=ui8+1;z++){if(Y=await __z(A,q,K),Y.success||Y.skipRetry)return Y;if(z>ui8)return Y;let w=jx(z);L(`team-memory-sync: retry ${z}/${ui8}`,{level:"debug"}),await new Promise((_)=>setTimeout(_,w))}return Y}async function O_z(A,q,K,Y){try{await L_();let z=fMq();if(z.error)return{success:!1,error:z.error,errorType:"auth"};let w={...z.headers,"Content-Type":"application/json"};if(Y)w["If-Match"]=`"${Y.replace(/"/g,"")}"`;let _=GMq(q),$=await I8.put(_,{entries:K},{headers:w,timeout:WMq,validateStatus:(H)=>H===200||H===412});if($.status===412)return L("team-memory-sync: conflict (412 Precondition Failed)",{level:"info"}),{success:!1,conflict:!0,error:"ETag mismatch"};let O=$.data?.checksum;if(O)A.lastKnownChecksum=O;return L(`team-memory-sync: uploaded ${Object.keys(K).length} entries (checksum: ${O??"none"})`,{level:"debug"}),{success:!0,checksum:O,lastModified:$.data?.lastModified}}catch(z){let w=I8.isAxiosError(z)?JSON.stringify(z.response?.data??""):"";L(`team-memory-sync: upload failed: ${z instanceof Error?z.message:""} ${w}`,{level:"warn"});let _="unknown",$;if(I8.isAxiosError(z)){if($=z.response?.status,$===401||$===403)_="auth";else if(z.code==="ECONNABORTED")_="timeout";else if(z.code==="ECONNREFUSED"||z.code==="ENOTFOUND")_="network"}return{success:!1,error:z instanceof Error?z.message:"Unknown error",errorType:_,httpStatus:$}}}async function H_z(){let A=yS(),q={},K=[];async function Y(w){if(Object.keys(q).length>=Sa6)return;try{let _=await q_z(w,{withFileTypes:!0});await Promise.all(_.map(async($)=>{if(Object.keys(q).length>=Sa6)return;let O=t2z(w,$.name);if($.isDirectory())await Y(O);else if($.isFile())try{let H=await w_z(O);if(H.size>Bi8){L(`team-memory-sync: skipping oversized file ${$.name} (${H.size} > ${Bi8} bytes)`,{level:"info"});return}let j=await K_z(O,"utf8"),J=e2z(A,O).replaceAll("\\","/"),M=Qp8(j);if(M.length>0){let D=M[0];K.push({path:J,ruleId:D.ruleId,label:D.label}),L(`team-memory-sync: skipping "${J}" — detected ${D.label}`,{level:"warn"});return}q[J]=j}catch{}}))}catch(_){let $=_.code;if($!=="ENOENT"&&$!=="EACCES"&&$!=="EPERM")throw _}}await Y(A);let z=Object.keys(q);if(z.length>Sa6){L(`team-memory-sync: reached ${Sa6} entry limit, truncating ${z.length} entries`,{level:"warn"});let w={};for(let _ of z.slice(0,Sa6))w[_]=q[_];return{entries:w,skippedSecrets:K}}return{entries:q,skippedSecrets:K}}async function TMq(A){let q=0;for(let[K,Y]of Object.entries(A)){let z;try{z=await JN8(K)}catch(_){if(_ instanceof MP){L(`team-memory-sync: ${_.message}`,{level:"warn"});continue}throw _}if(Buffer.byteLength(Y,"utf8")>Bi8){L(`team-memory-sync: skipping oversized remote entry "${K}"`,{level:"info"});continue}try{let _=z.substring(0,z.lastIndexOf(A_z));await Y_z(_,{recursive:!0}),await z_z(z,Y,"utf8"),q++}catch{L(`team-memory-sync: failed to write "${K}"`,{level:"warn"})}}return q}function VMq(){return mi8()}async function gi8(A,q){let K=q?.writeToDisk??!0,Y=q?.skipEtagCache??!1,z=Date.now();if(!mi8())return c("tengu_team_mem_sync_pull",{success:!1,files_written:0,not_modified:!1,duration_ms:Date.now()-z,errorType:"no_oauth"}),{success:!1,filesWritten:0,error:"OAuth not available"};let w=await FM6();if(!w)return c("tengu_team_mem_sync_pull",{success:!1,files_written:0,not_modified:!1,duration_ms:Date.now()-z,errorType:"no_repo"}),{success:!1,filesWritten:0,error:"No git remote found"};let _=Y?null:A.lastKnownChecksum,$=await $_z(A,w,_);if(!$.success)return c("tengu_team_mem_sync_pull",{success:!1,files_written:0,not_modified:!1,duration_ms:Date.now()-z,...$.errorType&&{errorType:$.errorType},...$.httpStatus&&{status:$.httpStatus}}),{success:!1,filesWritten:0,error:$.error};if($.notModified)return c("tengu_team_mem_sync_pull",{success:!0,files_written:0,not_modified:!0,duration_ms:Date.now()-z}),{success:!0,filesWritten:0,notModified:!0};if($.isEmpty||!$.data)return c("tengu_team_mem_sync_pull",{success:!0,files_written:0,not_modified:!1,duration_ms:Date.now()-z}),{success:!0,filesWritten:0};let O=$.data.content.entries,H=0;if(K){if(H=await TMq(O),H>0){let{getMemoryFiles:j}=await Promise.resolve().then(() => (sD(),fN8));j.cache.clear?.()}L(`team-memory-sync: pulled ${H} files`,{level:"info"})}return c("tengu_team_mem_sync_pull",{success:!0,files_written:H,not_modified:!1,duration_ms:Date.now()-z}),{success:!0,filesWritten:H,entries:O}}async function Fi8(A){let q=Date.now(),K=0;if(!mi8())return c("tengu_team_mem_sync_push",{success:!1,files_uploaded:0,conflict:!1,conflict_retries:0,duration_ms:Date.now()-q,errorType:"no_oauth"}),{success:!1,filesUploaded:0,error:"OAuth not available"};let Y=await FM6();if(!Y)return c("tengu_team_mem_sync_push",{success:!1,files_uploaded:0,conflict:!1,conflict_retries:0,duration_ms:Date.now()-q,errorType:"no_repo"}),{success:!1,filesUploaded:0,error:"No git remote found"};let z=await H_z(),w=z.entries,_=z.skippedSecrets;if(_.length>0){let O=_.map((H)=>`"${H.path}" (${H.label})`).join(", ");L(`team-memory-sync: ${_.length} file(s) skipped due to detected secrets: ${O}. Remove the secret(s) to enable sync for these files.`,{level:"warn"}),c("tengu_team_mem_secret_skipped",{file_count:_.length,rule_ids:_.map((H)=>H.ruleId).join(",")})}let $=!1;for(let O=0;O<=OC1;O++){let H=Object.keys(w).length;if(H===0)return c("tengu_team_mem_sync_push",{success:!0,files_uploaded:0,conflict:!1,conflict_retries:K,duration_ms:Date.now()-q}),{success:!0,filesUploaded:0,..._.length>0&&{skippedSecrets:_}};let j=await O_z(A,Y,w,A.lastKnownChecksum);if(j.success){if($)try{let D={};for(let P of Object.keys(w))if(!(P in z.entries))D[P]=w[P];if(await TMq(D)>0){let{getMemoryFiles:P}=await Promise.resolve().then(() => (sD(),fN8));P.cache.clear?.()}}catch(D){L(`team-memory-sync: post-merge disk write failed (non-fatal, push already succeeded): ${D instanceof Error?D.message:String(D)}`,{level:"warn"})}return L(`team-memory-sync: pushed ${H} files`,{level:"info"}),c("tengu_team_mem_sync_push",{success:!0,files_uploaded:H,conflict:$,conflict_retries:K,duration_ms:Date.now()-q}),{success:!0,filesUploaded:H,checksum:j.checksum,..._.length>0&&{skippedSecrets:_}}}if(!j.conflict)return c("tengu_team_mem_sync_push",{success:!1,files_uploaded:0,conflict:!1,conflict_retries:K,duration_ms:Date.now()-q,...j.errorType&&{errorType:j.errorType},...j.httpStatus&&{status:j.httpStatus}}),{success:!1,filesUploaded:0,error:j.error};if(O>=OC1)return L(`team-memory-sync: giving up after ${OC1} conflict retries`,{level:"warn"}),c("tengu_team_mem_sync_push",{success:!1,files_uploaded:0,conflict:!0,conflict_retries:K,duration_ms:Date.now()-q,errorType:"conflict"}),{success:!1,filesUploaded:0,conflict:!0,error:"Conflict resolution failed after retries"};K++,L(`team-memory-sync: conflict, re-pulling and merging (attempt ${O+1}/${OC1})`,{level:"info"});let J=await gi8(A,{writeToDisk:!1,skipEtagCache:!0});if(!J.success)return c("tengu_team_mem_sync_push",{success:!1,files_uploaded:0,conflict:!0,conflict_retries:K,duration_ms:Date.now()-q,errorType:"conflict"}),{success:!1,filesUploaded:0,error:`Conflict resolution pull failed: ${J.error}`};w={...J.entries??{},...z.entries},$=!0}return c("tengu_team_mem_sync_push",{success:!1,files_uploaded:0,conflict:!1,conflict_retries:K,duration_ms:Date.now()-q}),{success:!1,filesUploaded:0,error:"Unexpected end of conflict resolution loop"}}var WMq=15000,Bi8=250000,Sa6=50,ui8=3,OC1=2;var NMq=k(()=>{A3();RS();U3();uD();bA();L5();yz();L5();G1();B1();Yi();PMq();Up8()});var Qi8={};m1(Qi8,{stopTeamMemoryWatcher:()=>LMq,startTeamMemoryWatcher:()=>X_z,notifyTeamMemoryWrite:()=>P_z,_resetWatcherStateForTesting:()=>W_z});async function M_z(A){if(jC1=!0,Yr)clearTimeout(Yr),Yr=null;try{return await A()}finally{Yr=setTimeout(()=>{if(jC1=!1,Yr=null,yk6&&!Ca6)JC1()},j_z)}}async function D_z(){if(!SA6)return;Ca6=!0;try{let A=await M_z(()=>Fi8(SA6));if(A.success)yk6=!1;if(A.success&&A.filesUploaded>0)L(`team-memory-watcher: pushed ${A.filesUploaded} files`,{level:"info"});else if(!A.success)L(`team-memory-watcher: push failed: ${A.error}`,{level:"warn"})}catch(A){L(`team-memory-watcher: push error: ${D1(A)}`,{level:"warn"})}finally{Ca6=!1,ha6=null}}function JC1(){if(yk6=!0,G_6)clearTimeout(G_6);G_6=setTimeout(()=>{if(Ca6){JC1();return}ha6=D_z()},J_z)}async function EMq(){if(HC1)return;HC1=!0;let A=yS();RA6=(await Promise.resolve().then(() => (VK6(),n31))).default.watch(A,{persistent:!0,ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:vMq,pollInterval:kMq},ignorePermissionErrors:!0,usePolling:!1,atomic:!0});function K(){if(jC1){yk6=!0;return}JC1()}RA6.on("add",K),RA6.on("change",K),RA6.on("unlink",K),L(`team-memory-watcher: watching ${A}`,{level:"debug"}),Kq(async()=>LMq())}async function X_z(){if(!lP1()||!VMq())return;SA6=ZMq();let A=!1,q=0;try{let Y=await gi8(SA6);if(A=Y.success,Y.success&&Y.filesWritten>0)q=Y.filesWritten,L(`team-memory-watcher: initial pull got ${Y.filesWritten} files`,{level:"info"})}catch(Y){L(`team-memory-watcher: initial pull failed: ${D1(Y)}`,{level:"warn"})}let K=!1;if(q>0)await EMq(),K=!0;c("tengu_team_mem_sync_started",{initial_pull_success:A,initial_files_pulled:q,watcher_started:K})}async function P_z(){if(!SA6)return;if(!HC1)await EMq();JC1()}async function LMq(){if(G_6)clearTimeout(G_6),G_6=null;if(Yr)clearTimeout(Yr),Yr=null;if(RA6)await RA6.close(),RA6=null;if(ha6)try{await ha6}catch{}if(yk6&&SA6)try{await Fi8(SA6)}catch{}}function W_z(A){RA6=null,G_6=null,Ca6=!1,yk6=!1,ha6=null,HC1=A?.skipWatcher??!1,jC1=!1,Yr=null,SA6=A?.syncState??null}var vMq=500,kMq=100,j_z,J_z=2000,RA6=null,G_6=null,Ca6=!1,yk6=!1,ha6=null,HC1=!1,jC1=!1,Yr=null,SA6=null;var Ui8=k(()=>{RS();G1();B1();sY();NMq();MA();j_z=vMq+kMq+200});var hMq={};m1(hMq,{registerSessionFileAccessHooks:()=>G_z,isMemoryFileAccess:()=>di8});function SMq(A,q){switch(A){case u4:{let K=KY.inputSchema.safeParse(q);return K.success?K.data.file_path:null}case Yq:{let K=PR1().safeParse(q);if(K.success)return K.data.file_path;let Y=j9q().safeParse(q);return Y.success?Y.data.file_path:null}case Y3:{let K=gP.inputSchema.safeParse(q);return K.success?K.data.file_path:null}default:return null}}function CMq(A,q){switch(A){case u4:{let K=KY.inputSchema.safeParse(q);if(!K.success)return null;return rl6(K.data.file_path)}case fY:{let K=bu.inputSchema.safeParse(q);if(!K.success)return null;if(K.data.path){let Y=rl6(K.data.path);if(Y)return Y}if(K.data.glob){let Y=dV1(K.data.glob);if(Y)return Y}return null}case zz:{let K=zU.inputSchema.safeParse(q);if(!K.success)return null;if(K.data.path){let z=rl6(K.data.path);if(z)return z}let Y=dV1(K.data.pattern);if(Y)return Y;return null}default:return null}}function di8(A,q){if(CMq(A,q)==="session_memory")return!0;let K=SMq(A,q);if(K&&(cV1(K)||RMq.isTeamMemFile(K)))return!0;return!1}async function Z_z(A,q,K){if(A.hook_event_name!=="PostToolUse")return{};let Y=CMq(A.tool_name,A.tool_input),z=y7q(),w=z?{subagent_name:z}:{};if(Y==="session_memory")c("tengu_session_memory_accessed",{...w});else if(Y==="session_transcript")c("tengu_transcript_accessed",{...w});let _=SMq(A.tool_name,A.tool_input);if(_&&cV1(_))switch(c("tengu_memdir_accessed",{tool:A.tool_name,...w}),A.tool_name){case u4:c("tengu_memdir_file_read",{...w});break;case Yq:c("tengu_memdir_file_edit",{...w});break;case Y3:c("tengu_memdir_file_write",{...w});break}if(_&&RMq.isTeamMemFile(_))switch(c("tengu_team_mem_accessed",{tool:A.tool_name,...w}),A.tool_name){case u4:c("tengu_team_mem_file_read",{...w});break;case Yq:c("tengu_team_mem_file_edit",{...w}),yMq?.notifyTeamMemoryWrite();break;case Y3:c("tengu_team_mem_file_write",{...w}),yMq?.notifyTeamMemoryWrite();break}return{}}function G_z(){let A={type:"callback",callback:Z_z,timeout:1,internal:!0};u46({PostToolUse:[{matcher:u4,hooks:[A]},{matcher:fY,hooks:[A]},{matcher:zz,hooks:[A]},{matcher:Yq,hooks:[A]},{matcher:Y3,hooks:[A]}]})}var RMq,yMq;var ci8=k(()=>{Q1();B1();U2();BZ();BH();Px();Iv6();yo6();Eo6();WA6();bI8();k26();RMq=(RS(),W3(W66)),yMq=(Ui8(),W3(Qi8))});function IMq(){return!1}var f_6=k(()=>{ol();Q8();Z8()});import{readFile as f_z,stat as T_z}from"fs/promises";function Rk6(){if(vH6()==="remote"){let _=process.env.CLAUDE_CODE_REMOTE_SESSION_ID;if(_){let $=process.env.SESSION_INGRESS_URL;if(!ly1(_,$)){let O=kv(_,$);return{commit:O,pr:O}}}return{commit:"",pr:""}}let A=d5(),q=Rm6(A)!==null,K=eq4()||q?lH8(A):"Claude Opus 4.6",Y=`\uD83E\uDD16 Generated with [Claude Code](${cy1})`,z=`Co-Authored-By: ${K} `,w=h7();if(w.attribution)return{commit:w.attribution.commit??z,pr:w.attribution.pr??Y};if(w.includeCoAuthoredBy===!1)return{commit:"",pr:""};return{commit:z,pr:Y}}function bMq(A){for(let q of cq1)if(A.includes(`<${q}>`))return!0;return!1}function V_z(A){let q=0;for(let K of A){if(K.type!=="user")continue;let Y=K.message?.content;if(!Y)continue;let z=!1;if(typeof Y==="string"){if(bMq(Y))continue;z=Y.trim().length>0}else if(Array.isArray(Y))z=Y.some((w)=>{if(!w||typeof w!=="object"||!("type"in w))return!1;return w.type==="text"&&typeof w.text==="string"&&!bMq(w.text)||w.type==="image"||w.type==="document"});if(z)q++}return q}function N_z(A){let q=A.filter((K)=>K.type==="user"&&!(("isSidechain"in K)&&K.isSidechain));return V_z(q)}async function v_z(A){let q=A.attribution;if(!q)return 0;let K=q.fileStates,Y=K instanceof Map;if((Y?K.size:Object.keys(K).length)===0)return 0;let w=Y?Array.from(K.keys()):Object.keys(K);if(w.length===0)return 0;try{return(await KK4([q],w)).summary.claudePercent}catch(_){return $6(_),0}}function E_z(A){let q=0;for(let K of A){if(K.type!=="assistant")continue;let Y=K.message?.content;if(!Array.isArray(Y))continue;for(let z of Y){if(z.type!=="tool_use"||!k_z.has(z.name))continue;if(di8(z.name,z.input))q++}}return q}async function L_z(){try{let A=ow(),q=(await T_z(A)).size,K=await AK1(A,q),Y=K?K.postBoundaryBuf:await f_z(A),z=Km(Y);return{promptCount:N_z(z),memoryAccessCount:E_z(z)}}catch{return{promptCount:0,memoryAccessCount:0}}}async function xMq(A){if(vH6()==="remote"){let M=process.env.CLAUDE_CODE_REMOTE_SESSION_ID;if(M){let D=process.env.SESSION_INGRESS_URL;if(!ly1(M,D))return kv(M,D)}return""}let q=h7();if(q.attribution?.pr)return q.attribution.pr;if(q.includeCoAuthoredBy===!1)return"";let K=`\uD83E\uDD16 Generated with [Claude Code](${cy1})`,Y=A();if(L(`PR Attribution: appState.attribution exists: ${!!Y.attribution}`),Y.attribution){let M=Y.attribution.fileStates,X=M instanceof Map?M.size:Object.keys(M).length;L(`PR Attribution: fileStates count: ${X}`)}let[z,{promptCount:w,memoryAccessCount:_}]=await Promise.all([v_z(Y),L_z()]);L(`PR Attribution: claudePercent: ${z}, promptCount: ${w}, memoryAccessCount: ${_}`);let $=t$(d5()),H=await AK4()?$:qK4($);if(z===0&&w===0&&_===0)return L("PR Attribution: returning default (no data)"),K;let j=_>0?`, ${_} ${_===1?"memory":"memories"} recalled`:"",J=`\uD83E\uDD16 Generated with [Claude Code](${cy1}) (${z}% ${w}-shotted by ${H}${j})`;return L(`PR Attribution: returning enhanced: ${J}`),J}var k_z;var MC1=k(()=>{Q1();GA();Xq();uq();J2();yh6();ol();ci8();x1();G1();Ez();U2();BZ();BH();f_6();k_z=new Set([u4,fY,zz,Yq,Y3])});function y_z(){let{commit:A}=Rk6();return`${""}## Context - Current git status: !\`git status\` - Current git diff (staged and unstaged changes): !\`git diff HEAD\` - Current branch: !\`git branch --show-current\` - Recent commits: !\`git log --oneline -10\` ## Git Safety Protocol - NEVER update the git config - NEVER skip hooks (--no-verify, --no-gpg-sign, etc) unless the user explicitly requests it - CRITICAL: ALWAYS create NEW commits. NEVER use git commit --amend, unless the user explicitly requests it - Do not commit files that likely contain secrets (.env, credentials.json, etc). Warn the user if they specifically request to commit those files - If there are no changes to commit (i.e., no untracked files and no modifications), do not create an empty commit - Never use git commands with the -i flag (like git rebase -i or git add -i) since they require interactive input which is not supported ## Your task Based on the above changes, create a single git commit: 1. Analyze all staged changes and draft a commit message: - Look at the recent commits above to follow this repository's commit message style - Summarize the nature of the changes (new feature, enhancement, bug fix, refactoring, test, docs, etc.) - Ensure the message accurately reflects the changes and their purpose (i.e. "add" means a wholly new feature, "update" means an enhancement to an existing feature, "fix" means a bug fix, etc.) - Draft a concise (1-2 sentences) commit message that focuses on the "why" rather than the "what" 2. Stage relevant files and create the commit using HEREDOC syntax: \`\`\` git commit -m "$(cat <<'EOF' Commit message here.${A?` ${A}`:""} EOF )" \`\`\` You have the capability to call multiple tools in a single response. Stage and create the commit using a single message. Do not use any other tools or do anything else. Do not send any other text or messages besides these tool calls.`}var uMq,R_z,BMq;var mMq=k(()=>{cG6();MC1();f_6();uMq=["Bash(git add:*)","Bash(git status:*)","Bash(git commit:*)"];R_z={type:"prompt",name:"commit",description:"Create a git commit",allowedTools:uMq,contentLength:0,isEnabled:()=>!0,isHidden:!1,progressMessage:"creating commit",userFacingName(){return"commit"},source:"builtin",async getPromptForCommand(A,q){let K=y_z();return[{type:"text",text:await IF(K,{...q,getAppState(){let z=q.getAppState();return{...z,toolPermissionContext:{...z.toolPermissionContext,alwaysAllowRules:{...z.toolPermissionContext.alwaysAllowRules,command:uMq}}}}},"/commit")}]}},BMq=R_z});var UMq={};m1(UMq,{fileExtension:()=>QMq,call:()=>g_z});import{mkdir as S_z,writeFile as C_z}from"fs/promises";import{tmpdir as h_z}from"os";import{join as FMq}from"path";function I_z(A){return A.filter((q)=>q.type==="text"&&q.text).map((q)=>q.text).join(` `)}function b_z(A){let q=kY.lexer(K86(A)),K=[];for(let Y of q)if(Y.type==="code"){let z=Y;K.push({code:z.text,lang:z.lang})}return K}function QMq(A){if(A){let q=A.replace(/[^a-zA-Z0-9]/g,"");if(q&&q!=="plaintext")return`.${q}`}return".txt"}async function DC1(A,q){if(await yG(A)){let z=A.split(` `).length;return`Copied to clipboard (${A.length} characters, ${z} lines)`}let Y=FMq(gMq,q);try{return await S_z(gMq,{recursive:!0}),await C_z(Y,A,"utf-8"),`${Gw6()} Written to ${Y}`}catch{return Gw6()}}function x_z(A,q){let K=A.split(` `)[0]??"";if(B8(K)<=q)return K;let Y="",z=0,w=q-1;for(let _ of K){let $=B8(_);if(z+$>w)break;Y+=_,z+=$}return Y+"…"}function u_z(A){let q=Y6(21),{fullText:K,codeBlocks:Y,onDone:z}=A,w=K.length,_;if(q[0]!==K)_=K.split(` `),q[0]=K,q[1]=_;else _=q[1];let $=`${w} chars, ${_.length} lines`,O;if(q[2]!==$)O={label:"Full response",value:"full",description:$},q[2]=$,q[3]=O;else O=q[3];let H;if(q[4]!==Y||q[5]!==O){let Z;if(q[7]===Symbol.for("react.memo_cache_sentinel"))Z={label:"Always copy full response",value:"always",description:"Skip this picker in the future (revert via /config)"},q[7]=Z;else Z=q[7];H=[O,...Y.map(m_z),Z],q[4]=Y,q[5]=O,q[6]=H}else H=q[6];let j=H,J;if(q[8]!==Y||q[9]!==K||q[10]!==z)J=async function(G){if(G==="always"){if(!T1().copyFullResponse)_8(B_z);c("tengu_copy",{block_count:Y.length,always:!0});let V=await DC1(K,"response.md");z(`${V} Preference saved. Use /config to change copyFullResponse`);return}if(G==="full"){c("tengu_copy",{block_count:Y.length});let V=await DC1(K,"response.md");z(V);return}let f=Y[G];if(f){c("tengu_copy",{selected_block:G,block_count:Y.length});let V=await DC1(f.code,`copy${QMq(f.lang)}`);z(V)}else z("Copy cancelled",{display:"system"})},q[8]=Y,q[9]=K,q[10]=z,q[11]=J;else J=q[11];let M=J,D;if(q[12]===Symbol.for("react.memo_cache_sentinel"))D=Ia6.default.createElement(T,{dimColor:!0},"Select content to copy:"),q[12]=D;else D=q[12];let X;if(q[13]!==M)X=(Z)=>{M(Z)},q[13]=M,q[14]=X;else X=q[14];let P;if(q[15]!==z)P=()=>{z("Copy cancelled",{display:"system"})},q[15]=z,q[16]=P;else P=q[16];let W;if(q[17]!==j||q[18]!==X||q[19]!==P)W=Ia6.default.createElement(m9,null,D,Ia6.default.createElement(E8,{options:j,hideIndexes:!1,onChange:X,onCancel:P})),q[17]=j,q[18]=X,q[19]=P,q[20]=W;else W=q[20];return W}function B_z(A){return{...A,copyFullResponse:!0}}function m_z(A,q){return{label:x_z(A.code,60),value:q,description:[A.lang,A.code.split(` `).length>1?`${A.code.split(` `).length} lines`:void 0].filter(Boolean).join(", ")||void 0}}var Ia6,gMq,g_z=async(A,q)=>{let K=wv(q.messages);if(!K)return A("No assistant message to copy"),null;let Y=K.message.content;if(!Array.isArray(Y)||Y.length===0)return A("No content to copy"),null;let z=I_z(Y);if(!z)return A("No text content to copy"),null;let w=b_z(z),_=T1();if(w.length===0||_.copyFullResponse){c("tengu_copy",{always:_.copyFullResponse,block_count:w.length});let $=await DC1(z,"response.md");return A($),null}return Ia6.default.createElement(u_z,{fullText:z,codeBlocks:w,onDone:A})};var pMq=k(()=>{K1();n6();Kp6();$P();ai();SA();_5();y5();B1();Q8();Ia6=e(W6(),1),gMq=FMq(h_z(),"claude")});var F_z,li8;var dMq=k(()=>{F_z={type:"local-jsx",name:"copy",description:"Copy Claude's last response or a code block to clipboard",isEnabled:()=>!0,isHidden:!1,load:()=>Promise.resolve().then(() => (pMq(),UMq)),userFacingName(){return"copy"}},li8=F_z});function T_6(A){let q=Y6(10),{message:K,bold:Y,dimColor:z,subtitle:w}=A,_=Y===void 0?!1:Y,$=z===void 0?!1:z,O;if(q[0]===Symbol.for("react.memo_cache_sentinel"))O=Sk6.default.createElement(Sq,null),q[0]=O;else O=q[0];let H;if(q[1]!==_||q[2]!==$||q[3]!==K)H=Sk6.default.createElement(m,{flexDirection:"row"},O,Sk6.default.createElement(T,{bold:_,dimColor:$}," ",K)),q[1]=_,q[2]=$,q[3]=K,q[4]=H;else H=q[4];let j;if(q[5]!==w)j=w&&Sk6.default.createElement(T,{dimColor:!0},w),q[5]=w,q[6]=j;else j=q[6];let J;if(q[7]!==H||q[8]!==j)J=Sk6.default.createElement(m,{flexDirection:"column"},H,j),q[7]=H,q[8]=j,q[9]=J;else J=q[9];return J}var Sk6;var XC1=k(()=>{K1();n6();E$();Sk6=e(W6(),1)});import{join as Q_z}from"path";import{readdir as U_z}from"fs/promises";function ii8(){let A=[process.argv[1]||"",process.execPath||""],q=["/build-ant/","/build-ant-native/","/build-external/","/build-external-native/"];return A.some((K)=>q.some((Y)=>K.includes(Y)))}function d_z(A){let q=ii8()?"claude-dev":"claude",K=new URL(`${q}://resume`);return K.searchParams.set("session",A),K.searchParams.set("cwd",I1()),K.toString()}async function cMq(){if(ii8())return!0;let A=process.platform;if(A==="darwin")return $3("/Applications/Claude.app");else if(A==="linux"){let{code:q,stdout:K}=await W8("xdg-mime",["query","default","x-scheme-handler/claude"]);return q===0&&K.trim().length>0}else if(A==="win32"){let{code:q}=await W8("reg",["query","HKEY_CLASSES_ROOT\\claude","/ve"]);return q===0}return!1}async function c_z(){let A=process.platform;if(A==="darwin"){let{code:q,stdout:K}=await W8("defaults",["read","/Applications/Claude.app/Contents/Info.plist","CFBundleShortVersionString"]);if(q!==0)return null;let Y=K.trim();return Y.length>0?Y:null}else if(A==="win32"){let q=process.env.LOCALAPPDATA;if(!q)return null;let K=Q_z(q,"AnthropicClaude");try{let z=(await U_z(K)).filter((w)=>w.startsWith("app-")).map((w)=>w.slice(4)).filter((w)=>ba6.coerce(w)!==null).sort((w,_)=>{let $=ba6.coerce(w),O=ba6.coerce(_);return $.compare(O)});return z.length>0?z[z.length-1]:null}catch{return null}}return null}async function lMq(){if(!await cMq())return{status:"not-installed"};let q;try{q=await c_z()}catch{return{status:"ready",version:"unknown"}}if(!q)return{status:"ready",version:"unknown"};let K=ba6.coerce(q);if(!K||!dD(K.version,p_z))return{status:"version-too-old",version:q};return{status:"ready",version:q}}async function l_z(A){let q=process.platform;if(L(`Opening deep link: ${A}`),q==="darwin"){if(ii8()){let{code:Y}=await W8("osascript",["-e",`tell application "Electron" to open location "${A}"`]);return Y===0}let{code:K}=await W8("open",[A]);return K===0}else if(q==="linux"){let{code:K}=await W8("xdg-open",[A]);return K===0}else if(q==="win32"){let{code:K}=await W8("cmd",["/c","start","",A]);return K===0}return!1}async function iMq(){let A=d1();if(!await cMq())return{success:!1,error:"Claude Desktop is not installed. Install it from https://claude.ai/download"};let K=d_z(A);if(!await l_z(K))return{success:!1,error:"Failed to open Claude Desktop. Please try opening it manually.",deepLinkUrl:K};return{success:!0,deepLinkUrl:K}}var ba6,p_z="1.1.2396";var nMq=k(()=>{p7();aq();Q1();W7();G1();ba6=e(T06(),1)});function i_z(){switch(process.platform){case"win32":return"https://claude.ai/api/desktop/win32/x64/exe/latest/redirect";default:return"https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect"}}function PC1(A){let q=Y6(20),{onDone:K}=A,[Y,z]=Cv.useState("checking"),[w,_]=Cv.useState(null),[$,O]=Cv.useState(""),H;if(q[0]!==w||q[1]!==K||q[2]!==Y)H=(W)=>{if(Y==="error"){K(w??"Unknown error",{display:"system"});return}if(Y==="prompt-download"){if(W==="y"||W==="Y")$Y(i_z()).catch(n_z),K(`Starting download. Re-run /desktop once you’ve installed the app. Learn more at ${rMq}`,{display:"system"});else if(W==="n"||W==="N")K(`The desktop app is required for /desktop. Learn more at ${rMq}`,{display:"system"})}},q[0]=w,q[1]=K,q[2]=Y,q[3]=H;else H=q[3];kA(H);let j,J;if(q[4]!==K)j=()=>{(async function(){z("checking");let G=await lMq();if(G.status==="not-installed"){O("Claude Desktop is not installed."),z("prompt-download");return}if(G.status==="version-too-old"){O(`Claude Desktop needs to be updated (found v${G.version}, need v1.1.2396+).`),z("prompt-download");return}z("flushing"),await zr(),z("opening");let f=await iMq();if(!f.success){_(f.error??"Failed to open Claude Desktop"),z("error");return}z("success"),setTimeout(async()=>{K("Session transferred to Claude Desktop",{display:"system"}),await $K(0,"other")},500)})().catch((Z)=>{_(D1(Z)),z("error")})},J=[K],q[4]=K,q[5]=j,q[6]=J;else j=q[5],J=q[6];if(Cv.useEffect(j,J),Y==="error"){let W;if(q[7]!==w)W=Cv.default.createElement(T,{color:"error"},"Error: ",w),q[7]=w,q[8]=W;else W=q[8];let Z;if(q[9]===Symbol.for("react.memo_cache_sentinel"))Z=Cv.default.createElement(T,{dimColor:!0},"Press any key to continue…"),q[9]=Z;else Z=q[9];let G;if(q[10]!==W)G=Cv.default.createElement(m,{flexDirection:"column",paddingX:2},W,Z),q[10]=W,q[11]=G;else G=q[11];return G}if(Y==="prompt-download"){let W;if(q[12]!==$)W=Cv.default.createElement(T,null,$),q[12]=$,q[13]=W;else W=q[13];let Z;if(q[14]===Symbol.for("react.memo_cache_sentinel"))Z=Cv.default.createElement(T,null,"Download now? (y/n)"),q[14]=Z;else Z=q[14];let G;if(q[15]!==W)G=Cv.default.createElement(m,{flexDirection:"column",paddingX:2},W,Z),q[15]=W,q[16]=G;else G=q[16];return G}let M;if(q[17]===Symbol.for("react.memo_cache_sentinel"))M={checking:"Checking for Claude Desktop…",flushing:"Saving session…",opening:"Opening Claude Desktop…",success:"Opening in Claude Desktop…"},q[17]=M;else M=q[17];let X=M[Y],P;if(q[18]!==X)P=Cv.default.createElement(T_6,{message:X}),q[18]=X,q[19]=P;else P=q[19];return P}function n_z(){}var Cv,rMq="https://clau.de/desktop";var ni8=k(()=>{K1();n6();XC1();nMq();RP();uq();B_();MA();Cv=e(W6(),1)});var aMq={};m1(aMq,{call:()=>r_z});async function r_z(A){return oMq.default.createElement(PC1,{onDone:A})}var oMq;var sMq=k(()=>{ni8();oMq=e(W6(),1)});function tMq(){if(process.platform==="darwin")return!0;if(process.platform==="win32"&&process.arch==="x64")return!0;return!1}var o_z,eMq;var ADq=k(()=>{o_z={type:"local-jsx",name:"desktop",aliases:["app"],description:"Continue the current session in Claude Desktop",isEnabled:tMq,get isHidden(){return!tMq()},load:()=>Promise.resolve().then(() => (sMq(),aMq)),userFacingName(){return"desktop"}},eMq=o_z});function KDq(A,q){let{commit:K,pr:Y}=Rk6(),z=q??Y,w=process.env.SAFEUSER||"",_=process.env.USER||"",$="",O=" and `--reviewer anthropics/claude-code`",H=" (and add `--add-reviewer anthropics/claude-code`)",j=` ## Changelog [If this PR contains user-facing changes, add a changelog entry here. Otherwise, remove this section.] `,J=` 5. After creating/updating the PR, check if the user's CLAUDE.md mentions posting to Slack channels. If it does, use ToolSearch to search for "slack send message" tools. If ToolSearch finds a Slack tool, ask the user if they'd like you to post the PR URL to the relevant Slack channel. Only post if the user confirms. If ToolSearch returns no results or errors, skip this step silently—do not mention the failure, do not attempt workarounds, and do not try alternative approaches.`;return`${$}## Context - \`SAFEUSER\`: ${w} - \`whoami\`: ${_} - \`git status\`: !\`git status\` - \`git diff HEAD\`: !\`git diff HEAD\` - \`git branch --show-current\`: !\`git branch --show-current\` - \`git diff ${A}...HEAD\`: !\`git diff ${A}...HEAD\` - \`gh pr view --json number 2>/dev/null || true\`: !\`gh pr view --json number 2>/dev/null || true\` ## Git Safety Protocol - NEVER update the git config - NEVER run destructive/irreversible git commands (like push --force, hard reset, etc) unless the user explicitly requests them - NEVER skip hooks (--no-verify, --no-gpg-sign, etc) unless the user explicitly requests it - NEVER run force push to main/master, warn the user if they request it - Do not commit files that likely contain secrets (.env, credentials.json, etc) - Never use git commands with the -i flag (like git rebase -i or git add -i) since they require interactive input which is not supported ## Your task Analyze all changes that will be included in the pull request, making sure to look at all relevant commits (NOT just the latest commit, but ALL commits that will be included in the pull request from the git diff ${A}...HEAD output above). Based on the above changes: 1. Create a new branch if on ${A} (use SAFEUSER from context above for the branch name prefix, falling back to whoami if SAFEUSER is empty, e.g., \`username/feature-name\`) 2. Create a single commit with an appropriate message using heredoc syntax${K?", ending with the attribution text shown in the example below":""}: \`\`\` git commit -m "$(cat <<'EOF' Commit message here.${K?` ${K}`:""} EOF )" \`\`\` 3. Push the branch to origin 4. If a PR already exists for this branch (check the gh pr view output above), update the PR title and body using \`gh pr edit\` to reflect the current diff${H}. Otherwise, create a pull request using \`gh pr create\` with heredoc syntax for the body${O}. - IMPORTANT: Keep PR titles short (under 70 characters). Use the body for details. \`\`\` gh pr create --title "Short, descriptive title" --body "$(cat <<'EOF' ## Summary <1-3 bullet points> ## Test plan [Bulleted markdown checklist of TODOs for testing the pull request...]${j}${z?` ${z}`:""} EOF )" \`\`\` You have the capability to call multiple tools in a single response. You MUST do all of the above in a single message.${J} Return the PR URL when you're done, so the user can see it.`}var qDq,a_z,YDq;var zDq=k(()=>{cG6();MC1();U3();f_6();qDq=["Bash(git checkout --branch:*)","Bash(git checkout -b:*)","Bash(git add:*)","Bash(git status:*)","Bash(git push:*)","Bash(git commit:*)","Bash(gh pr create:*)","Bash(gh pr edit:*)","Bash(gh pr view:*)","Bash(gh pr merge:*)","ToolSearch","mcp__slack__send_message","mcp__claude_ai_Slack__slack_send_message"];a_z={type:"prompt",name:"commit-push-pr",description:"Commit, push, and open a PR",allowedTools:qDq,context:"fork",get contentLength(){return KDq("main").length},isEnabled:()=>!0,isHidden:!1,progressMessage:"creating commit and PR",userFacingName(){return"commit-push-pr"},source:"builtin",async getPromptForCommand(A,q){let[K,Y]=await Promise.all([dV(),xMq(q.getAppState)]),z=KDq(K,Y);if(A&&A.trim())z+=` ## Additional instructions from user ${A.trim()}`;return[{type:"text",text:await IF(z,{...q,getAppState(){let _=q.getAppState();return{..._,toolPermissionContext:{..._.toolPermissionContext,alwaysAllowRules:{..._.toolPermissionContext.alwaysAllowRules,command:qDq}}}}},"/commit-push-pr")}]}},YDq=a_z});var $Dq={};m1($Dq,{call:()=>t_z});async function e_z(A,q,K,Y){q.onCompactProgress?.({type:"hooks_start",hookType:"pre_compact"}),q.setSDKStatus?.("compacting");try{let[z,w]=await Promise.all([CT6({trigger:"manual",customInstructions:K||null},q.abortController.signal),_Dq(q,A)]),_=fC8(K,z.newCustomInstructions);q.setStreamMode?.("requesting"),q.setResponseLength?.(()=>0),q.onCompactProgress?.({type:"compact_start"});let $=await Y.reactiveCompactOnPromptTooLong(A,w,{customInstructions:_,trigger:"manual"});if(!$.ok)switch($.reason){case"too_few_groups":throw Error(yT6);case"aborted":throw Error(hi);case"exhausted":case"error":throw Error(LT6)}return x16(void 0),Bi(),Kl6(),y_.cache.clear?.(),{type:"compact",compactionResult:{...$.result,userDisplayMessage:z.userDisplayMessage},displayText:ri8(q,z.userDisplayMessage)}}finally{q.setStreamMode?.("requesting"),q.setResponseLength?.(()=>0),q.onCompactProgress?.({type:"compact_end"}),q.setSDKStatus?.(null)}}function ri8(A,q){let K=MV6("tip"),Y=WP("app:toggleTranscript","Global","ctrl+o"),z=[...A.options.verbose?[]:[`(${Y} to see full summary)`],...q?[q]:[],...K?[K]:[]];return M1.dim("Compacted "+z.join(` `))}async function _Dq(A,q){let K=A.getAppState(),Y=await UW(A.options.tools,A.options.mainLoopModel,Array.from(K.toolPermissionContext.additionalWorkingDirectories.keys()),A.options.mcpClients),z=eQ({mainThreadAgentDefinition:void 0,toolUseContext:A,customSystemPrompt:A.options.customSystemPrompt,defaultSystemPrompt:Y,appendSystemPrompt:A.options.appendSystemPrompt}),[w,_]=await Promise.all([y_(),KH()]);return{systemPrompt:z,userContext:w,systemContext:_,toolUseContext:A,forkContextMessages:q}}var wDq=null,t_z=async(A,q)=>{let{abortController:K,messages:Y}=q;if(Y.length===0)throw Error("No messages to compact");let z=A.trim();try{if(!z){let O=await WT1(Y,q.agentId);if(O)return y_.cache.clear?.(),Bi(),Kl6(),{type:"compact",compactionResult:O,displayText:ri8(q)}}if(wDq?.isReactiveOnlyMode())return await e_z(Y,q,z,wDq);let _=(await zQ(Y,q)).messages,$=await RT6(_,q,await _Dq(q,_),!1,z,!1);return x16(void 0),Kl6(),y_.cache.clear?.(),Bi(),{type:"compact",compactionResult:$,displayText:ri8(q,$.userDisplayMessage)}}catch(w){if(K.signal.aborted)throw Error("Compaction canceled.");else if(pa(w,yT6))throw Error(yT6);else if(pa(w,LT6))throw Error(LT6);else throw $6(w),Error(`Error during compaction: ${w}`)}};var ODq=k(()=>{MA();dE();bi();yL();ir6();_L();DT1();ZT1();IT6();x1();kT1();B66();iK();uV1();_i();J$()});var A$z,HDq;var jDq=k(()=>{Z8();A$z={type:"local",name:"compact",description:"Clear conversation history but keep a summary in context. Optional: /compact [instructions for summarization]",isEnabled:()=>!$1(process.env.DISABLE_COMPACT),isHidden:!1,supportsNonInteractive:!0,argumentHint:"",load:()=>Promise.resolve().then(() => (ODq(),$Dq)),userFacingName(){return"compact"}},HDq=A$z});function rC(A){let q=Y6(11),{title:K,color:Y,defaultTab:z,children:w,hidden:_,useFullWidth:$,selectedTab:O,onTabChange:H,banner:j,disableNavigation:J}=A,{columns:M}=PA(),D=w.map(K$z),X=z?D.findIndex((t)=>z===t[0]):0,P=O!==void 0,[W,Z]=V_6.useState(X!==-1?X:0),G=P?D.findIndex((t)=>t[0]===O):-1,f=P?G!==-1?G:0:W,V=(t)=>{let s=(f+D.length+t)%D.length,H6=D[s]?.[0];if(P&&H&&H6)H(H6);else Z(s)},N=!_&&!J,v;if(q[0]!==N)v={context:"Tabs",isActive:N},q[0]=N,q[1]=v;else v=q[1];f7({"tabs:next":()=>V(1),"tabs:previous":()=>V(-1)},v);let y=K?B8(K)+1:0,R=D.reduce(q$z,0),h=y+R+21,B=$?Math.max(0,M-h):0,x=$?M:void 0,F=m,g="column",b=!_&&PU.default.createElement(m,{flexDirection:"row",gap:1},K!==void 0&&PU.default.createElement(T,{bold:!0,color:Y},K),D.map((t,s)=>{let[H6,Z6]=t;return PU.default.createElement(T,{key:H6,backgroundColor:Y&&f===s?Y:void 0,color:Y&&f===s?"inverseText":void 0,bold:f===s}," ",Z6," ")}),PU.default.createElement(T,{dimColor:!0},"(←/→ or tab to cycle)"),B>0&&PU.default.createElement(T,null," ".repeat(B))),U=_?0:1,d;if(q[2]!==w||q[3]!==x||q[4]!==U)d=PU.default.createElement(m,{width:x,marginTop:U},w),q[2]=w,q[3]=x,q[4]=U,q[5]=d;else d=q[5];let l;if(q[6]!==F||q[7]!==j||q[8]!==b||q[9]!==d)l=PU.default.createElement(F,{flexDirection:g},b,j,d),q[6]=F,q[7]=j,q[8]=b,q[9]=d,q[10]=l;else l=q[10];return PU.default.createElement(oi8.Provider,{value:{selectedTab:D[f][0],width:x}},l)}function q$z(A,q){let[,K]=q;return A+(K?B8(K):0)+2+1}function K$z(A){return[A.props.id??A.props.title,A.props.title]}function U_(A){let q=Y6(3),{title:K,id:Y,children:z}=A,{selectedTab:w,width:_}=V_6.useContext(oi8);if(w!==(Y??K))return null;let $;if(q[0]!==z||q[1]!==_)$=PU.default.createElement(m,{width:_},z),q[0]=z,q[1]=_,q[2]=$;else $=q[2];return $}function JDq(){let{width:A}=V_6.useContext(oi8);return A}var PU,V_6,oi8;var N_6=k(()=>{K1();n6();H7();xq();y5();PU=e(W6(),1),V_6=e(W6(),1),oi8=V_6.createContext({selectedTab:void 0,width:void 0})});function MDq(A){let q=Y6(3),K,Y;if(q[0]!==A){Y=Symbol.for("react.early_return_sentinel");A:{let{context:z,flat:w}=A===void 0?{}:A,_=lH(),$=[];if(z?.readFileState)$F(z.readFileState).forEach((j)=>{let J=z.readFileState.get(j);if(J&&j.endsWith("/CLAUDE.md")&&!_.some((M)=>M.path===j))$.push({path:j,content:J.content,type:"Project",isNested:!0})});let O=[..._,...$];if(O.length===0){Y=null;break A}if(w){Y=AM.createElement(m,{flexDirection:"row",columnGap:1,flexWrap:"wrap"},O.map((j,J)=>{let M=T3(j.path),D=j.isNested?"nested":TL8(j.type),X=J{let M=T3(j.path),D=j.isNested?"nested: ":`${TL8(j.type)}: `,X=j.parent?(H.get(j.parent)??0)+1:0;if(H.set(j.path,X),X===0)return AM.createElement(T,{key:J},AM.createElement(T,{dimColor:!0}," L "),`${D}${M}`);else{let P=" ".repeat(X-1);return AM.createElement(T,{key:J}," ".repeat(D.length+2),P,AM.createElement(T,{dimColor:!0}," L "),M)}}))}q[0]=A,q[1]=K,q[2]=Y}else K=q[1],Y=q[2];if(Y!==Symbol.for("react.early_return_sentinel"))return Y;return K}var AM;var DDq=k(()=>{K1();n6();sD();p7();VL8();OG();AM=e(W6(),1)});function Y$z(){let A=d1(),K=kC(A)??I5.createElement(T,{dimColor:!0},"/rename to add a name");return[{label:"Version",value:{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.71",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-06T22:45:36Z"}.VERSION},{label:"Session name",value:K},{label:"Session ID",value:A},{label:"cwd",value:I1()},...aE1(),...sE1()]}function z$z({mainLoopModel:A,mcp:q,theme:K,context:Y}){return[{label:"Model",value:Q8q(A)},...x8q(q.clients,Y.options.ideInstallationStatus,K),...u8q(q.clients,K),{label:"Memory",value:I5.createElement(MDq,{context:Y,flat:!0})},...b8q(),...m8q()]}async function w$z(){return[...await g8q(),...await F8q(),...B8q()]}function _$z(A){let q=Y6(8),{value:K}=A;if(Array.isArray(K)){let Y;if(q[0]!==K){let w;if(q[2]!==K.length)w=(_,$)=>I5.createElement(T,{key:$},_,${(async function(){let N=[Y$z(),z$z({mainLoopModel:Y,mcp:z,theme:J,context:K})],v=await w$z();$(N),j(v)})()},D=[Y,z,J,K],q[2]=K,q[3]=Y,q[4]=z,q[5]=J,q[6]=M,q[7]=D;else M=q[6],D=q[7];I5.useEffect(M,D);let X;if(q[8]!==_)X=_.map(O$z),q[8]=_,q[9]=X;else X=q[9];let P;if(q[10]!==H)P=H.length>0&&I5.createElement(m,{flexDirection:"column",paddingBottom:1},I5.createElement(T,{bold:!0},"System Diagnostics"),H.map($$z)),q[10]=H,q[11]=P;else P=q[11];let W;if(q[12]!==X||q[13]!==P)W=I5.createElement(m,{flexDirection:"column",gap:1},X,P),q[12]=X,q[13]=P,q[14]=W;else W=q[14];let Z;if(q[15]===Symbol.for("react.memo_cache_sentinel"))Z=I5.createElement(T,{dimColor:!0},I5.createElement(G8,{action:"confirm:no",context:"Settings",fallback:"Esc",description:"cancel"})),q[15]=Z;else Z=q[15];let G;if(q[16]!==W)G=I5.createElement(m,{flexDirection:"column"},W,Z),q[16]=W,q[17]=G;else G=q[17];return G}function $$z(A,q){return I5.createElement(m,{key:q,flexDirection:"row",gap:1,paddingX:1},I5.createElement(T,{color:"error"},q1.warning),typeof A==="string"?I5.createElement(T,{wrap:"wrap"},A):A)}function O$z(A,q){return A.length>0&&I5.createElement(m,{key:q,flexDirection:"column"},A.map(H$z))}function H$z(A,q){let{label:K,value:Y}=A;return I5.createElement(m,{key:q,flexDirection:"row",gap:1,flexShrink:0},K!==void 0&&I5.createElement(T,{bold:!0},K,":"),I5.createElement(_$z,{value:Y}))}function j$z(A){return A.mcp}function J$z(A){return A.mainLoopModel}var I5;var PDq=k(()=>{K1();n6();t7();pA();Q1();DDq();RF8();W7();uq();hK();I5=e(W6(),1)});async function WDq(){if(process.platform==="darwin"){let A=oi();if((await GY(`security delete-generic-password -a $USER -s "${A}"`,{shell:!0,reject:!1})).exitCode!==0)throw Error("Failed to delete keychain entry")}}function hv(A){return A.slice(-20)}var xa6=k(()=>{Zw6();Ef()});var ai8={};m1(ai8,{isBridgeEnabledBlocking:()=>ua6,isBridgeEnabled:()=>wr,checkBridgeMinVersion:()=>Ba6});function wr(){return p8("tengu_ccr_bridge",!1)}async function ua6(){return Ck6("tengu_ccr_bridge")}function Ba6(){{let A=UL("tengu_bridge_min_version",{minVersion:"0.0.0"});if(A.minVersion&&V06({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.71",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-06T22:45:36Z"}.VERSION,A.minVersion))return`Your version of 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.71",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-06T22:45:36Z"}.VERSION}) is too old for Remote Control. Version ${A.minVersion} or higher is required. Run \`claude update\` to update.`}return null}var _r=k(()=>{rA()});function hk6(A){let q=Y6(59),{onThemeSelect:K,showIntroText:Y,helpText:z,showHelpTextBelow:w,hideEscToCancel:_,skipExitHandling:$,onCancel:O}=A,H=Y===void 0?!1:Y,j=z===void 0?"":z,J=w===void 0?!1:w,M=_===void 0?!1:_,D=$===void 0?!1:$,[X]=G7(),P=t06(),{columns:W}=PA(),Z;if(q[0]===Symbol.for("react.memo_cache_sentinel"))Z=dp8(),q[0]=Z;else Z=q[0];let G=Z,f;if(q[1]!==X)f=G===null?V9q(X):null,q[1]=X,q[2]=f;else f=q[2];let V=f,{setPreviewTheme:N,savePreview:v,cancelPreview:y}=fj1(),R=V1(D$z)??!1,h=q7();uj1("ThemePicker");let B=zK("theme:toggleSyntaxHighlighting","ThemePicker","ctrl+t"),x;if(q[3]!==h||q[4]!==R)x=()=>{if(G===null){let a=!R;xA("userSettings",{syntaxHighlightingDisabled:a}),h((r)=>({...r,settings:{...r.settings,syntaxHighlightingDisabled:a}}))}},q[3]=h,q[4]=R,q[5]=x;else x=q[5];let F;if(q[6]===Symbol.for("react.memo_cache_sentinel"))F={context:"ThemePicker"},q[6]=F;else F=q[6];V8("theme:toggleSyntaxHighlighting",x,F);let g=z3(D?M$z:void 0),b;if(q[7]===Symbol.for("react.memo_cache_sentinel"))b=[...[],{label:"Dark mode",value:"dark"},{label:"Light mode",value:"light"},{label:"Dark mode (colorblind-friendly)",value:"dark-daltonized"},{label:"Light mode (colorblind-friendly)",value:"light-daltonized"},{label:"Dark mode (ANSI colors only)",value:"dark-ansi"},{label:"Light mode (ANSI colors only)",value:"light-ansi"}],q[7]=b;else b=q[7];let U=b,d;if(q[8]!==H)d=H?bK.createElement(T,null,"Let's get started."):bK.createElement(T,{bold:!0,color:"permission"},"Theme"),q[8]=H,q[9]=d;else d=q[9];let l;if(q[10]===Symbol.for("react.memo_cache_sentinel"))l=bK.createElement(T,{bold:!0},"Choose the text style that looks best with your terminal"),q[10]=l;else l=q[10];let t;if(q[11]!==j||q[12]!==J)t=j&&!J&&bK.createElement(T,{dimColor:!0},j),q[11]=j,q[12]=J,q[13]=t;else t=q[13];let s;if(q[14]!==t)s=bK.createElement(m,{flexDirection:"column"},l,t),q[14]=t,q[15]=s;else s=q[15];let H6;if(q[16]!==N)H6=(a)=>{N(a)},q[16]=N,q[17]=H6;else H6=q[17];let Z6;if(q[18]!==K||q[19]!==v)Z6=(a)=>{v(),K(a)},q[18]=K,q[19]=v,q[20]=Z6;else Z6=q[20];let G6;if(q[21]!==y||q[22]!==O||q[23]!==D)G6=D?()=>{y(),O?.()}:async()=>{y(),await $K(0)},q[21]=y,q[22]=O,q[23]=D,q[24]=G6;else G6=q[24];let q6;if(q[25]!==H6||q[26]!==Z6||q[27]!==G6||q[28]!==P)q6=bK.createElement(E8,{options:U,onFocus:H6,onChange:Z6,onCancel:G6,visibleOptionCount:U.length,defaultValue:P,defaultFocusValue:P}),q[25]=H6,q[26]=Z6,q[27]=G6,q[28]=P,q[29]=q6;else q6=q[29];let w6;if(q[30]!==d||q[31]!==s||q[32]!==q6)w6=bK.createElement(m,{flexDirection:"column",gap:1},d,s,q6),q[30]=d,q[31]=s,q[32]=q6,q[33]=w6;else w6=q[33];let j6;if(q[34]===Symbol.for("react.memo_cache_sentinel"))j6={oldStart:1,newStart:1,oldLines:3,newLines:3,lines:[" function greet() {",'- console.log("Hello, World!");','+ console.log("Hello, Claude!");'," }"]},q[34]=j6;else j6=q[34];let _6;if(q[35]!==W)_6=bK.createElement(m,{flexDirection:"column",borderTop:!0,borderBottom:!0,borderLeft:!1,borderRight:!1,borderStyle:"dashed",borderColor:"subtle"},bK.createElement(Ev,{patch:j6,dim:!1,filePath:"demo.js",firstLine:null,width:W})),q[35]=W,q[36]=_6;else _6=q[36];let k6=G==="env"?`Syntax highlighting disabled (via CLAUDE_CODE_SYNTAX_HIGHLIGHT=${process.env.CLAUDE_CODE_SYNTAX_HIGHLIGHT})`:G==="build"?"Syntax highlighting available only in native build":R?`Syntax highlighting disabled (${B} to enable)`:V?`Syntax theme: ${V.theme}${V.source?` (from ${V.source})`:""} (${B} to disable)`:`Syntax highlighting enabled (${B} to disable)`,P6;if(q[37]!==k6)P6=bK.createElement(T,{dimColor:!0}," ",k6),q[37]=k6,q[38]=P6;else P6=q[38];let A6;if(q[39]!==_6||q[40]!==P6)A6=bK.createElement(m,{flexDirection:"column",width:"100%"},_6,P6),q[39]=_6,q[40]=P6,q[41]=A6;else A6=q[41];let K6;if(q[42]!==w6||q[43]!==A6)K6=bK.createElement(m,{flexDirection:"column",gap:1},w6,A6),q[42]=w6,q[43]=A6,q[44]=K6;else K6=q[44];let z6=K6;if(!H){let a;if(q[45]!==z6)a=bK.createElement(m,{flexDirection:"column"},z6),q[45]=z6,q[46]=a;else a=q[46];let r;if(q[47]!==j||q[48]!==J)r=J&&j&&bK.createElement(m,{marginLeft:3},bK.createElement(T,{dimColor:!0},j)),q[47]=j,q[48]=J,q[49]=r;else r=q[49];let X6;if(q[50]!==g||q[51]!==M)X6=!M&&bK.createElement(m,null,bK.createElement(T,{dimColor:!0,italic:!0},g.pending?bK.createElement(bK.Fragment,null,"Press ",g.keyName," again to exit"):bK.createElement(e8,null,bK.createElement(J8,{shortcut:"Enter",action:"select"}),bK.createElement(J8,{shortcut:"Esc",action:"cancel"})))),q[50]=g,q[51]=M,q[52]=X6;else X6=q[52];let O6;if(q[53]!==r||q[54]!==X6)O6=bK.createElement(m,{marginTop:1},r,X6),q[53]=r,q[54]=X6,q[55]=O6;else O6=q[55];let D6;if(q[56]!==a||q[57]!==O6)D6=bK.createElement(bK.Fragment,null,a,O6),q[56]=a,q[57]=O6,q[58]=D6;else D6=q[58];return D6}return z6}function M$z(){}function D$z(A){return A.settings.syntaxHighlightingDisabled}var bK;var WC1=k(()=>{K1();n6();HY();XA6();KO();B_();n6();xq();JK();eq();Cv6();GA();pA();H7();LJ();Lg();bK=e(W6(),1)});function Ik6(A){let q=Y6(79),{initial:K,sessionModel:Y,onSelect:z,onCancel:w,isStandaloneCommand:_,showFastModeNotice:$}=A,O=q7(),H=z3(),j=K===null?ga6:K,[J,M]=ZC1.useState(j),D=V1(Z$z),[X,P]=ZC1.useState(!1),W=V1(W$z),Z;if(q[0]!==W)Z=W!==void 0?_E(W):void 0,q[0]=W,q[1]=Z;else Z=q[1];let[G,f]=ZC1.useState(Z),V=D??!1,N;if(q[2]!==V)N=$_6(V),q[2]=V,q[3]=N;else N=q[3];let v=N,y;A:{if(K!==null&&!v.some((b6)=>b6.value===K)){let b6;if(q[4]!==K)b6=YP(K),q[4]=K,q[5]=b6;else b6=q[5];let R6;if(q[6]!==K||q[7]!==b6)R6={value:K,label:b6,description:"Current model"},q[6]=K,q[7]=b6,q[8]=R6;else R6=q[8];let x6;if(q[9]!==v||q[10]!==R6)x6=[...v,R6],q[9]=v,q[10]=R6,q[11]=x6;else x6=q[11];y=x6;break A}y=v}let R=y,h;if(q[12]!==R)h=R.map(P$z),q[12]=R,q[13]=h;else h=q[13];let B=h,x;if(q[14]!==j||q[15]!==B)x=B.some((b6)=>b6.value===j)?j:B[0]?.value??void 0,q[14]=j,q[15]=B,q[16]=x;else x=q[16];let F=x,g=Math.min(10,B.length),b=Math.max(0,B.length-g),U;if(q[17]!==J||q[18]!==B)U=B.find((b6)=>b6.value===J)?.label,q[17]=J,q[18]=B,q[19]=U;else U=q[19];let d=U,l;if(q[20]!==J)l=GDq(J),q[20]=J,q[21]=l;else l=q[21];let t=l,s;if(q[22]!==W||q[23]!==X)s=(b6)=>{if(M(b6),!X&&W===void 0)f(ma6(b6))},q[22]=W,q[23]=X,q[24]=s;else s=q[24];let H6=s,Z6;if(q[25]!==t||q[26]!==J)Z6=()=>{if(t){let b6=ma6(J);f((R6)=>TDq(R6??b6,"left")),P(!0)}},q[25]=t,q[26]=J,q[27]=Z6;else Z6=q[27];let G6=Z6,q6;if(q[28]!==t||q[29]!==J)q6=()=>{if(t){let b6=ma6(J);f((R6)=>TDq(R6??b6,"right")),P(!0)}},q[28]=t,q[29]=J,q[30]=q6;else q6=q[30];let w6=q6,j6;if(q[31]!==G6||q[32]!==w6)j6={"modelPicker:decreaseEffort":G6,"modelPicker:increaseEffort":w6},q[31]=G6,q[32]=w6,q[33]=j6;else j6=q[33];let _6;if(q[34]===Symbol.for("react.memo_cache_sentinel"))_6={context:"ModelPicker"},q[34]=_6;else _6=q[34];f7(j6,_6);let k6;if(q[35]!==G||q[36]!==X||q[37]!==z||q[38]!==O)k6=function(R6){c("tengu_model_command_menu_effort",{effort:G});let x6=ma6(R6),d6=G===x6?void 0:G;xA("userSettings",{effortLevel:d6}),O((L6)=>({...L6,effortValue:d6}));let t6=X&&GDq(R6)?G:void 0;if(R6===ga6){z(null,t6);return}z(R6,t6)},q[35]=G,q[36]=X,q[37]=z,q[38]=O,q[39]=k6;else k6=q[39];let P6=k6,A6,K6;if(q[40]===Symbol.for("react.memo_cache_sentinel"))A6=n4.createElement(T,{color:"remember",bold:!0},"Select model"),K6=n4.createElement(T,{dimColor:!0},"Switch between Claude models. Applies to this session and future Claude Code sessions. For other/previous model names, specify with --model."),q[40]=A6,q[41]=K6;else A6=q[40],K6=q[41];let z6;if(q[42]!==Y)z6=Y&&n4.createElement(T,{dimColor:!0},"Currently using ",YP(Y)," for this session (set by plan mode). Selecting a model will undo this."),q[42]=Y,q[43]=z6;else z6=q[43];let a;if(q[44]!==z6)a=n4.createElement(m,{marginBottom:1,flexDirection:"column"},A6,K6,z6),q[44]=z6,q[45]=a;else a=q[45];let r=w??X$z,X6;if(q[46]!==H6||q[47]!==P6||q[48]!==F||q[49]!==j||q[50]!==B||q[51]!==r||q[52]!==g)X6=n4.createElement(m,{flexDirection:"column"},n4.createElement(E8,{defaultValue:j,defaultFocusValue:F,options:B,onChange:P6,onFocus:H6,onCancel:r,visibleOptionCount:g})),q[46]=H6,q[47]=P6,q[48]=F,q[49]=j,q[50]=B,q[51]=r,q[52]=g,q[53]=X6;else X6=q[53];let O6;if(q[54]!==b)O6=b>0&&n4.createElement(m,{paddingLeft:3},n4.createElement(T,{dimColor:!0},"and ",b," more…")),q[54]=b,q[55]=O6;else O6=q[55];let D6;if(q[56]!==X6||q[57]!==O6)D6=n4.createElement(m,{flexDirection:"column",marginBottom:1},X6,O6),q[56]=X6,q[57]=O6,q[58]=D6;else D6=q[58];let y6;if(q[59]!==G||q[60]!==d||q[61]!==t||q[62]!==J)y6=n4.createElement(m,{marginBottom:1,flexDirection:"column"},t?n4.createElement(T,{dimColor:!0},n4.createElement(fDq,{effort:G})," ",Pb(G)," ","effort",G===ma6(J)?" (default)":""," ",n4.createElement(T,{color:"subtle"},"← → to adjust")):n4.createElement(T,{color:"subtle"},n4.createElement(fDq,{effort:void 0})," Effort not supported",d?` for ${d}`:"")),q[59]=G,q[60]=d,q[61]=t,q[62]=J,q[63]=y6;else y6=q[63];let C6;if(q[64]!==$)C6=gq()?$?n4.createElement(m,{marginBottom:1},n4.createElement(T,{dimColor:!0},"Fast mode is ",n4.createElement(T,{bold:!0},"ON")," and available with"," ",EE," only (/fast). Switching to other models turn off fast mode.")):kJ()&&!Jg()?n4.createElement(m,{marginBottom:1},n4.createElement(T,{dimColor:!0},"Use ",n4.createElement(T,{bold:!0},"/fast")," to turn on Fast mode (",EE," only).")):null:null,q[64]=$,q[65]=C6;else C6=q[65];let h6;if(q[66]!==a||q[67]!==D6||q[68]!==y6||q[69]!==C6)h6=n4.createElement(m,{flexDirection:"column"},a,D6,y6,C6),q[66]=a,q[67]=D6,q[68]=y6,q[69]=C6,q[70]=h6;else h6=q[70];let f6;if(q[71]!==H||q[72]!==_)f6=_&&n4.createElement(T,{dimColor:!0,italic:!0},H.pending?n4.createElement(n4.Fragment,null,"Press ",H.keyName," again to exit"):n4.createElement(e8,null,n4.createElement(J8,{shortcut:"Enter",action:"confirm"}),n4.createElement(G8,{action:"select:cancel",context:"Select",fallback:"Esc",description:"exit"}))),q[71]=H,q[72]=_,q[73]=f6;else f6=q[73];let M6;if(q[74]!==h6||q[75]!==f6)M6=n4.createElement(m,{flexDirection:"column"},h6,f6),q[74]=h6,q[75]=f6,q[76]=M6;else M6=q[76];let V6=M6;if(!_)return V6;let p6;if(q[77]!==V6)p6=n4.createElement(m9,{color:"permission"},V6),q[77]=V6,q[78]=p6;else p6=q[78];return p6}function X$z(){}function P$z(A){return{...A,value:A.value===null?ga6:A.value}}function W$z(A){return A.effortValue}function Z$z(A){return gq()?A.fastMode:!1}function GDq(A){if(!A)return!1;if(A===ga6)return DR(m0());return DR(J5(A))}function fDq(A){let q=Y6(3),{effort:K}=A,Y;if(q[0]===Symbol.for("react.memo_cache_sentinel"))Y=["low","medium","high"],q[0]=Y;else Y=q[0];let z=Y,w=K?z.indexOf(K)+1:0,_;if(q[1]!==w)_=n4.createElement(n4.Fragment,null,z.map(($,O)=>n4.createElement(T,{key:O,color:O{K1();n6();H7();N06();Ya6();Xq();eV();GA();pA();HY();KO();$P();JK();hK();eq();B1();aZ();n4=e(W6(),1),ZC1=e(W6(),1)});function v_6(A,q){if(!A7())return!1;if(q)return!0;if(A===null||!rk(A))return!1;let K=A.toLowerCase().replace(/\[1m\]$/,"").trim();return K==="sonnet"||K==="opus"||K.includes("sonnet-4-6")||K.includes("opus-4-6")}var fC1=k(()=>{bA();PM()});var VDq={};m1(VDq,{ClaudeMdExternalIncludesDialog:()=>si8});function si8(A){let q=Y6(18),{onDone:K,isStandaloneDialog:Y,externalIncludes:z}=A,w;if(q[0]===Symbol.for("react.memo_cache_sentinel"))w=[],q[0]=w;else w=q[0];WU.default.useEffect(V$z,w);let _;if(q[1]!==K)_=(G)=>{if(G==="no")c("tengu_claude_md_external_includes_dialog_declined",{}),T_(T$z);else c("tengu_claude_md_external_includes_dialog_accepted",{}),T_(f$z);K()},q[1]=K,q[2]=_;else _=q[2];let $=_,O;if(q[3]!==$)O=()=>{$("no")},q[3]=$,q[4]=O;else O=q[4];let H=O,j=!Y,J=!Y,M;if(q[5]===Symbol.for("react.memo_cache_sentinel"))M=WU.default.createElement(T,null,"This project's CLAUDE.md imports files outside the current working directory. Never allow this for third-party repositories."),q[5]=M;else M=q[5];let D;if(q[6]!==z)D=z&&z.length>0&&WU.default.createElement(m,{flexDirection:"column"},WU.default.createElement(T,{dimColor:!0},"External imports:"),z.map(G$z)),q[6]=z,q[7]=D;else D=q[7];let X;if(q[8]===Symbol.for("react.memo_cache_sentinel"))X=WU.default.createElement(T,{dimColor:!0},"Important: Only use Claude Code with files you trust. Accessing untrusted files may pose security risks"," ",WU.default.createElement(d7,{url:"https://code.claude.com/docs/en/security"})," "),q[8]=X;else X=q[8];let P;if(q[9]===Symbol.for("react.memo_cache_sentinel"))P=[{label:"Yes, allow external imports",value:"yes"},{label:"No, disable external imports",value:"no"}],q[9]=P;else P=q[9];let W;if(q[10]!==$)W=WU.default.createElement(E8,{options:P,onChange:(G)=>$(G)}),q[10]=$,q[11]=W;else W=q[11];let Z;if(q[12]!==H||q[13]!==W||q[14]!==j||q[15]!==J||q[16]!==D)Z=WU.default.createElement(l8,{title:"Allow external CLAUDE.md file imports?",color:"warning",onCancel:H,hideBorder:j,hideInputGuide:J},M,D,X,W),q[12]=H,q[13]=W,q[14]=j,q[15]=J,q[16]=D,q[17]=Z;else Z=q[17];return Z}function G$z(A,q){return WU.default.createElement(T,{key:q,dimColor:!0}," ",A.path)}function f$z(A){return{...A,hasClaudeMdExternalIncludesApproved:!0,hasClaudeMdExternalIncludesWarningShown:!0}}function T$z(A){return{...A,hasClaudeMdExternalIncludesApproved:!1,hasClaudeMdExternalIncludesWarningShown:!0}}function V$z(){c("tengu_claude_md_includes_dialog_shown",{})}var WU;var ti8=k(()=>{K1();n6();HY();Q8();B1();n6();zq();WU=e(W6(),1)});function NDq(A){let q=Y6(17),{currentVersion:K,onChoice:Y}=A,z;if(q[0]!==Y)z=function(W){Y(W)},q[0]=Y,q[1]=z;else z=q[1];let w=z,_;if(q[2]!==Y)_=function(){Y("cancel")},q[2]=Y,q[3]=_;else _=q[3];let $=_,O;if(q[4]!==K)O=Fa6.default.createElement(T,null,"The stable channel may have an older version than what you're currently running (",K,")."),q[4]=K,q[5]=O;else O=q[5];let H;if(q[6]===Symbol.for("react.memo_cache_sentinel"))H=Fa6.default.createElement(T,{dimColor:!0},"How would you like to handle this?"),q[6]=H;else H=q[6];let j;if(q[7]===Symbol.for("react.memo_cache_sentinel"))j={label:"Allow possible downgrade to stable version",value:"downgrade"},q[7]=j;else j=q[7];let J=`Stay on current version (${K}) until stable catches up`,M;if(q[8]!==J)M=[j,{label:J,value:"stay"}],q[8]=J,q[9]=M;else M=q[9];let D;if(q[10]!==w||q[11]!==M)D=Fa6.default.createElement(E8,{options:M,onChange:w}),q[10]=w,q[11]=M,q[12]=D;else D=q[12];let X;if(q[13]!==$||q[14]!==O||q[15]!==D)X=Fa6.default.createElement(l8,{title:"Switch to Stable Channel",onCancel:$,color:"permission",hideBorder:!0,hideInputGuide:!0},O,H,D),q[13]=$,q[14]=O,q[15]=D,q[16]=X;else X=q[16];return X}var Fa6;var vDq=k(()=>{K1();n6();HY();zq();Fa6=e(W6(),1)});function kDq(A){return Object.entries(A).map(([q,K])=>({label:K?.name??N$z,value:q,description:K?.description??v$z}))}function TC1(A){let q=Y6(16),{initialStyle:K,onComplete:Y,onCancel:z,isStandaloneCommand:w}=A,_;if(q[0]===Symbol.for("react.memo_cache_sentinel"))_=[],q[0]=_;else _=q[0];let[$,O]=Qa6.useState(_),[H,j]=Qa6.useState(!0),J,M;if(q[1]===Symbol.for("react.memo_cache_sentinel"))J=()=>{CA6(I1()).then((V)=>{let N=kDq(V);O(N),j(!1)}).catch(()=>{let V=kDq(m26);O(V),j(!1)})},M=[],q[1]=J,q[2]=M;else J=q[1],M=q[2];Qa6.useEffect(J,M);let D;if(q[3]!==Y)D=(V)=>{Y(V)},q[3]=Y,q[4]=D;else D=q[4];let X=D,P=!w,W=!w,Z;if(q[5]===Symbol.for("react.memo_cache_sentinel"))Z=pL.createElement(m,{marginTop:1},pL.createElement(T,{dimColor:!0},"This changes how Claude Code communicates with you")),q[5]=Z;else Z=q[5];let G;if(q[6]!==X||q[7]!==K||q[8]!==H||q[9]!==$)G=pL.createElement(m,{flexDirection:"column",gap:1},Z,H?pL.createElement(T,{dimColor:!0},"Loading output styles…"):pL.createElement(E8,{options:$,onChange:X,visibleOptionCount:10,defaultValue:K})),q[6]=X,q[7]=K,q[8]=H,q[9]=$,q[10]=G;else G=q[10];let f;if(q[11]!==z||q[12]!==P||q[13]!==W||q[14]!==G)f=pL.createElement(l8,{title:"Preferred output style",onCancel:z,hideInputGuide:P,hideBorder:W},G),q[11]=z,q[12]=P,q[13]=W,q[14]=G,q[15]=f;else f=q[15];return f}var pL,Qa6,N$z="Default",v$z="Claude completes coding tasks efficiently and provides concise responses";var ei8=k(()=>{K1();n6();_5();xx();W7();zq();pL=e(W6(),1),Qa6=e(W6(),1)});function EDq(A){let q=Y6(13),{initialLanguage:K,onComplete:Y,onCancel:z}=A,[w,_]=An8.useState(K),[$,O]=An8.useState((K??"").length),H;if(q[0]===Symbol.for("react.memo_cache_sentinel"))H={context:"Settings"},q[0]=H;else H=q[0];V8("confirm:no",z,H);let j;if(q[1]!==w||q[2]!==Y)j=function(){let f=w?.trim();Y(f||void 0)},q[1]=w,q[2]=Y,q[3]=j;else j=q[3];let J=j,M;if(q[4]===Symbol.for("react.memo_cache_sentinel"))M=k_6.default.createElement(T,null,"Enter your preferred response language:"),q[4]=M;else M=q[4];let D;if(q[5]===Symbol.for("react.memo_cache_sentinel"))D=k_6.default.createElement(T,null,q1.pointer),q[5]=D;else D=q[5];let X=w??"",P;if(q[6]!==$||q[7]!==J||q[8]!==X)P=k_6.default.createElement(m,{flexDirection:"row",gap:1},D,k_6.default.createElement(sK,{value:X,onChange:_,onSubmit:J,focus:!0,showCursor:!0,placeholder:`e.g., Japanese, 日本語, Español${q1.ellipsis}`,columns:60,cursorOffset:$,onChangeCursorOffset:O})),q[6]=$,q[7]=J,q[8]=X,q[9]=P;else P=q[9];let W;if(q[10]===Symbol.for("react.memo_cache_sentinel"))W=k_6.default.createElement(T,{dimColor:!0},"Leave empty for default (English)"),q[10]=W;else W=q[10];let Z;if(q[11]!==P)Z=k_6.default.createElement(m,{flexDirection:"column",gap:1},M,P,W),q[11]=P,q[12]=Z;else Z=q[12];return Z}var k_6,An8;var LDq=k(()=>{K1();n6();WO();t7();H7();k_6=e(W6(),1),An8=e(W6(),1)});function ZU(A){let q=Y6(15),{query:K,placeholder:Y,isFocused:z,isTerminalFocused:w,prefix:_,width:$,cursorOffset:O}=A,H=Y===void 0?"Search…":Y,j=_===void 0?"⌕":_,J=O??K.length,M=z?"suggestion":void 0,D=!z,X=!z,P;if(q[0]!==z||q[1]!==w||q[2]!==J||q[3]!==H||q[4]!==K)P=z?cP.default.createElement(cP.default.Fragment,null,K?w?cP.default.createElement(cP.default.Fragment,null,cP.default.createElement(T,null,K.slice(0,J)),cP.default.createElement(T,{inverse:!0},J{K1();n6();cP=e(W6(),1)});function k$z(A,q){if(A.ctrl&&(q==="k"||q==="u"||q==="w"))return!0;if(A.meta&&A.backspace)return!0;return!1}function E$z(A,q){return(A.ctrl||A.meta)&&q==="y"}function GU({isActive:A,onExit:q,onExitUp:K,columns:Y,passthroughCtrlKeys:z=[],initialQuery:w=""}){let{columns:_}=PA(),$=Y??_,[O,H]=Ua6.useState(w),[j,J]=Ua6.useState(w.length),M=Ua6.useCallback((D)=>{H(D),J(D.length)},[]);return kA((D,X)=>{let P=oK.fromText(O,$,j);if(X.ctrl&&z.includes(D.toLowerCase()))return;if(!k$z(X,D))fp6();if(!E$z(X,D))Tp6();if(X.return||X.downArrow){q();return}if(X.upArrow){if(K)K();return}if(X.escape){if(O.length>0)H(""),J(0);else q();return}if(X.backspace){if(X.meta){let{cursor:Z,killed:G}=P.deleteWordBefore();il(G,"prepend"),H(Z.text),J(Z.offset);return}if(O.length===0){q();return}let W=P.backspace();H(W.text),J(W.offset);return}if(X.delete){let W=P.del();H(W.text),J(W.offset);return}if(X.leftArrow&&(X.ctrl||X.meta||X.fn)){let W=P.prevWord();J(W.offset);return}if(X.rightArrow&&(X.ctrl||X.meta||X.fn)){let W=P.nextWord();J(W.offset);return}if(X.leftArrow){let W=P.left();J(W.offset);return}if(X.rightArrow){let W=P.right();J(W.offset);return}if(X.home){J(0);return}if(X.end){J(O.length);return}if(X.ctrl){switch(D.toLowerCase()){case"a":J(0);return;case"e":J(O.length);return;case"b":J(P.left().offset);return;case"f":J(P.right().offset);return;case"d":{let W=P.del();H(W.text),J(W.offset);return}case"h":{if(O.length===0){q();return}let W=P.backspace();H(W.text),J(W.offset);return}case"k":{let{cursor:W,killed:Z}=P.deleteToLineEnd();il(Z,"append"),H(W.text),J(W.offset);return}case"u":{let{cursor:W,killed:Z}=P.deleteToLineStart();il(Z,"prepend"),H(W.text),J(W.offset);return}case"w":{let{cursor:W,killed:Z}=P.deleteWordBefore();il(Z,"prepend"),H(W.text),J(W.offset);return}case"y":{let W=P01();if(W.length>0){let Z=P.offset,G=P.insert(W);W01(Z,W.length),H(G.text),J(G.offset)}return}}return}if(X.meta){switch(D.toLowerCase()){case"b":J(P.prevWord().offset);return;case"f":J(P.nextWord().offset);return;case"d":{let W=P.deleteWordAfter();H(W.text),J(W.offset);return}case"y":{let W=Z01();if(W){let{text:Z,start:G,length:f}=W,V=O.slice(0,G),N=O.slice(G+f),v=V+Z+N,y=G+Z.length;G01(Z.length),H(v),J(y)}return}}return}if(X.tab)return;if(D){let W=P.insert(D);H(W.text),J(W.offset)}},{isActive:A}),{query:O,setQuery:M,cursorOffset:j}}var Ua6;var xk6=k(()=>{n6();EY6();xq();Ua6=e(W6(),1)});function yDq({onClose:A,context:q,setTabsHidden:K,onSearchModeChange:Y}){let[,z]=G7(),w=t06(),[_,$]=oT.useState(T1()),O=t1.useRef(T1()),[H,j]=oT.useState(h7()),J=t1.useRef(h7()),[M,D]=oT.useState(H?.outputStyle||BP),X=t1.useRef(M),[P,W]=oT.useState(H?.language),Z=t1.useRef(P),[G,f]=oT.useState(0),[V,N]=oT.useState(0),[v,y]=oT.useState(!0),R=V_(),{rows:h}=PA(),B=Math.max(5,h-15),x=V1((f6)=>f6.mainLoopModel),F=V1((f6)=>f6.verbose),g=V1((f6)=>f6.thinkingEnabled),b=V1((f6)=>gq()?f6.fastMode:!1),U=V1((f6)=>f6.promptSuggestionEnabled),d=VC1()||pa6()==="enabled",l=q7(),[t,s]=oT.useState({}),H6=t1.useRef(g),[Z6,G6]=oT.useState(!1),[q6,w6]=oT.useState(null),{query:j6,setQuery:_6,cursorOffset:k6}=GU({isActive:v&&q6===null,onExit:()=>{y(!1)}}),P6=v&&j6.length>0;t1.useEffect(()=>{Y?.(P6)},[P6,Y]);let A6=dj1(q.options.mcpClients),K6=!$1(process.env.CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING),z6=aP1(),a=H26();async function r(f6){c("tengu_config_model_changed",{from_model:x,to_model:f6}),l((V6)=>({...V6,mainLoopModel:f6})),s((V6)=>{let p6=YP(f6)+(v_6(f6,!1)?" · Billed as extra usage":"");if("model"in V6){let{model:b6,...R6}=V6;return{...R6,model:p6}}return{...V6,model:p6}})}function X6(f6){_8((M6)=>({...M6,verbose:f6})),$({...T1(),verbose:f6}),l((M6)=>({...M6,verbose:f6})),s((M6)=>{if("verbose"in M6){let{verbose:V6,...p6}=M6;return p6}return{...M6,verbose:f6}})}let O6=[{id:"autoCompactEnabled",label:"Auto-compact",value:_.autoCompactEnabled,type:"boolean",onChange(f6){_8((M6)=>({...M6,autoCompactEnabled:f6})),$({...T1(),autoCompactEnabled:f6}),c("tengu_auto_compact_setting_changed",{enabled:f6})}},{id:"spinnerTipsEnabled",label:"Show tips",value:H?.spinnerTipsEnabled??!0,type:"boolean",onChange(f6){xA("localSettings",{spinnerTipsEnabled:f6}),j((M6)=>({...M6,spinnerTipsEnabled:f6})),c("tengu_tips_setting_changed",{enabled:f6})}},{id:"prefersReducedMotion",label:"Reduce motion",value:H?.prefersReducedMotion??!1,type:"boolean",onChange(f6){xA("localSettings",{prefersReducedMotion:f6}),j((M6)=>({...M6,prefersReducedMotion:f6})),l((M6)=>({...M6,settings:{...M6.settings,prefersReducedMotion:f6}})),c("tengu_reduce_motion_setting_changed",{enabled:f6})}},{id:"thinkingEnabled",label:"Thinking mode",value:g??!0,type:"boolean",onChange(f6){l((M6)=>({...M6,thinkingEnabled:f6})),xA("userSettings",{alwaysThinkingEnabled:f6?void 0:!1}),c("tengu_thinking_toggled",{enabled:f6})}},...gq()&&kJ()?[{id:"fastMode",label:`Fast mode (${EE} only)`,value:!!b,type:"boolean",onChange(f6){if(X56(),xA("userSettings",{fastMode:f6?!0:void 0}),f6)l((M6)=>({...M6,mainLoopModel:Cm6,mainLoopModelForSession:null,fastMode:!0})),s((M6)=>({...M6,model:Cm6,"Fast mode":"ON"}));else l((M6)=>({...M6,fastMode:!1})),s((M6)=>({...M6,"Fast mode":"OFF"}))}}]:[],...p8("tengu_chomp_inflection",!0)?[{id:"promptSuggestionEnabled",label:"Prompt suggestions",value:U,type:"boolean",onChange(f6){l((M6)=>({...M6,promptSuggestionEnabled:f6})),xA("userSettings",{promptSuggestionEnabled:f6?void 0:!1})}}]:[],...[],...[],...K6?[{id:"fileCheckpointingEnabled",label:"Rewind code (checkpoints)",value:_.fileCheckpointingEnabled,type:"boolean",onChange(f6){_8((M6)=>({...M6,fileCheckpointingEnabled:f6})),$({...T1(),fileCheckpointingEnabled:f6}),c("tengu_file_history_snapshots_setting_changed",{enabled:f6})}}]:[],{id:"verbose",label:"Verbose output",value:F,type:"boolean",onChange:X6},{id:"terminalProgressBarEnabled",label:"Terminal progress bar",value:_.terminalProgressBarEnabled,type:"boolean",onChange(f6){_8((M6)=>({...M6,terminalProgressBarEnabled:f6})),$({...T1(),terminalProgressBarEnabled:f6}),c("tengu_terminal_progress_bar_setting_changed",{enabled:f6})}},{id:"defaultPermissionMode",label:"Default permission mode",value:H?.permissions?.defaultMode||"default",options:(()=>{let f6=["default","plan"],M6=hZ,V6=["bypassPermissions","pen"];if(!d)V6.push("auto");return[...f6,...M6.filter((p6)=>!f6.includes(p6)&&!V6.includes(p6))]})(),type:"enum",onChange(f6){let M6=yI(f6),V6=iUA(M6)?zs(M6):M6,p6=xA("userSettings",{permissions:{...H?.permissions,defaultMode:V6}});if(p6.error){$6(p6.error);return}j((b6)=>({...b6,permissions:{...b6?.permissions,defaultMode:V6}})),s((b6)=>({...b6,defaultPermissionMode:f6})),c("tengu_config_changed",{setting:"defaultPermissionMode",value:f6})}},{id:"respectGitignore",label:"Respect .gitignore in file picker",value:_.respectGitignore,type:"boolean",onChange(f6){_8((M6)=>({...M6,respectGitignore:f6})),$({...T1(),respectGitignore:f6}),c("tengu_respect_gitignore_setting_changed",{enabled:f6})}},{id:"copyFullResponse",label:"Always copy full response (skip /copy picker)",value:_.copyFullResponse,type:"boolean",onChange(f6){_8((M6)=>({...M6,copyFullResponse:f6})),$({...T1(),copyFullResponse:f6}),c("tengu_config_changed",{setting:"copyFullResponse",value:String(f6)})}},a?{id:"autoUpdatesChannel",label:"Auto-update channel",value:"disabled",type:"managedEnum",onChange(){}}:{id:"autoUpdatesChannel",label:"Auto-update channel",value:H?.autoUpdatesChannel??"latest",type:"managedEnum",onChange(){}},{id:"theme",label:"Theme",value:w,type:"managedEnum",onChange:z},{id:"notifChannel",label:"Notifications",value:_.preferredNotifChannel,options:["auto","iterm2","terminal_bell","iterm2_with_bell","kitty","ghostty","notifications_disabled"],type:"enum",onChange(f6){_8((M6)=>({...M6,preferredNotifChannel:f6})),$({...T1(),preferredNotifChannel:f6})}},{id:"outputStyle",label:"Output style",value:M,type:"managedEnum",onChange:()=>{}},{id:"language",label:"Language",value:P??"Default (English)",type:"managedEnum",onChange:()=>{}},{id:"editorMode",label:"Editor mode",value:_.editorMode==="emacs"?"normal":_.editorMode||"normal",options:["normal","vim"],type:"enum",onChange(f6){_8((M6)=>({...M6,editorMode:f6})),$({...T1(),editorMode:f6}),c("tengu_editor_mode_changed",{mode:f6,source:"config_panel"})}},...p8("tengu_pr_status_cli",!1)?[{id:"prStatusFooterEnabled",label:"Show PR status footer",value:_.prStatusFooterEnabled??!0,type:"boolean",onChange(f6){_8((M6)=>{if(M6.prStatusFooterEnabled===f6)return M6;return{...M6,prStatusFooterEnabled:f6}}),$({...T1(),prStatusFooterEnabled:f6}),c("tengu_pr_status_footer_setting_changed",{enabled:f6})}}]:[],{id:"model",label:"Model",value:x===null?"Default (recommended)":x,type:"managedEnum",onChange:r},...A6?[{id:"diffTool",label:"Diff tool",value:_.diffTool??"auto",options:["terminal","auto"],type:"enum",onChange(f6){_8((M6)=>({...M6,diffTool:f6})),$({...T1(),diffTool:f6}),c("tengu_diff_tool_changed",{tool:f6,source:"config_panel"})}}]:[],...!gM()?[{id:"autoConnectIde",label:"Auto-connect to IDE (external terminal)",value:_.autoConnectIde??!1,type:"boolean",onChange(f6){_8((M6)=>({...M6,autoConnectIde:f6})),$({...T1(),autoConnectIde:f6}),c("tengu_auto_connect_ide_changed",{enabled:f6,source:"config_panel"})}}]:[],...gM()?[{id:"autoInstallIdeExtension",label:"Auto-install IDE extension",value:_.autoInstallIdeExtension??!0,type:"boolean",onChange(f6){_8((M6)=>({...M6,autoInstallIdeExtension:f6})),$({...T1(),autoInstallIdeExtension:f6}),c("tengu_auto_install_ide_extension_changed",{enabled:f6,source:"config_panel"})}}]:[],{id:"claudeInChromeDefaultEnabled",label:"Claude in Chrome enabled by default",value:_.claudeInChromeDefaultEnabled??!0,type:"boolean",onChange(f6){_8((M6)=>({...M6,claudeInChromeDefaultEnabled:f6})),$({...T1(),claudeInChromeDefaultEnabled:f6}),c("tengu_claude_in_chrome_setting_changed",{enabled:f6})}},...Z7()?(()=>{let f6=zU8();return[{id:"teammateMode",label:f6?`Teammate mode [overridden: ${f6}]`:"Teammate mode",value:_.teammateMode??"auto",options:["auto","tmux","in-process"],type:"enum",onChange(V6){if(V6!=="auto"&&V6!=="tmux"&&V6!=="in-process")return;wU8(V6),_8((p6)=>({...p6,teammateMode:V6})),$({...T1(),teammateMode:V6}),c("tengu_teammate_mode_changed",{mode:V6})}}]})():[],...wr()?[{id:"remoteControlAtStartup",label:"Enable Remote Control for all sessions",value:_.remoteControlAtStartup===void 0?"default":String(_.remoteControlAtStartup),options:["true","false","default"],type:"enum",onChange(f6){if(f6==="default")_8((V6)=>{if(V6.remoteControlAtStartup===void 0)return V6;let p6={...V6};return delete p6.remoteControlAtStartup,p6}),$({...T1(),remoteControlAtStartup:void 0});else{let V6=f6==="true";_8((p6)=>{if(p6.remoteControlAtStartup===V6)return p6;return{...p6,remoteControlAtStartup:V6}}),$({...T1(),remoteControlAtStartup:V6})}let M6=NA6();l((V6)=>{if(V6.replBridgeEnabled===M6)return V6;return{...V6,replBridgeEnabled:M6}})}}]:[],...z6?[{id:"showExternalIncludesDialog",label:"External CLAUDE.md includes",value:(()=>{if(f_().hasClaudeMdExternalIncludesApproved)return"true";else return"false"})(),type:"managedEnum",onChange(){}}]:[],...process.env.ANTHROPIC_API_KEY&&!Gf()?[{id:"apiKey",label:t1.createElement(T,null,"Use custom API key:"," ",t1.createElement(T,{bold:!0},hv(process.env.ANTHROPIC_API_KEY))),searchText:"Use custom API key",value:Boolean(process.env.ANTHROPIC_API_KEY&&_.customApiKeyResponses?.approved?.includes(hv(process.env.ANTHROPIC_API_KEY))),type:"boolean",onChange(f6){_8((M6)=>{let V6={...M6};if(!V6.customApiKeyResponses)V6.customApiKeyResponses={approved:[],rejected:[]};if(!V6.customApiKeyResponses.approved)V6.customApiKeyResponses={...V6.customApiKeyResponses,approved:[]};if(!V6.customApiKeyResponses.rejected)V6.customApiKeyResponses={...V6.customApiKeyResponses,rejected:[]};if(process.env.ANTHROPIC_API_KEY){let p6=hv(process.env.ANTHROPIC_API_KEY);if(f6)V6.customApiKeyResponses={...V6.customApiKeyResponses,approved:[...(V6.customApiKeyResponses.approved??[]).filter((b6)=>b6!==p6),p6],rejected:(V6.customApiKeyResponses.rejected??[]).filter((b6)=>b6!==p6)};else V6.customApiKeyResponses={...V6.customApiKeyResponses,approved:(V6.customApiKeyResponses.approved??[]).filter((b6)=>b6!==p6),rejected:[...(V6.customApiKeyResponses.rejected??[]).filter((b6)=>b6!==p6),p6]}}return V6}),$(T1())}}]:[]],D6=t1.useMemo(()=>{if(!j6)return O6;let f6=j6.toLowerCase();return O6.filter((M6)=>{if(M6.id.toLowerCase().includes(f6))return!0;return("searchText"in M6?M6.searchText:M6.label).toLowerCase().includes(f6)})},[O6,j6]);t1.useEffect(()=>{if(G>=D6.length){let f6=Math.max(0,D6.length-1);f(f6),N(Math.max(0,f6-B+1));return}N((f6)=>{if(G=f6+B)return G-B+1;return f6})},[D6.length,G,B]);let y6=oT.useCallback((f6)=>{N((M6)=>{if(f6=M6+B)return f6-B+1;return M6})},[B]),C6=oT.useCallback(()=>{if(q6!==null)return;let f6=Object.entries(t).map(([b6,R6])=>{return c("tengu_config_changed",{key:b6,value:R6}),`Set ${b6} to ${M1.bold(R6)}`}),M6=Gf()?void 0:process.env.ANTHROPIC_API_KEY,V6=Boolean(M6&&O.current.customApiKeyResponses?.approved?.includes(hv(M6))),p6=Boolean(M6&&_.customApiKeyResponses?.approved?.includes(hv(M6)));if(V6!==p6)f6.push(`${p6?"Enabled":"Disabled"} custom API key`),c("tengu_config_changed",{key:"env.ANTHROPIC_API_KEY",value:p6});if(_.theme!==O.current.theme)f6.push(`Set theme to ${M1.bold(_.theme)}`);if(_.preferredNotifChannel!==O.current.preferredNotifChannel)f6.push(`Set notifications to ${M1.bold(_.preferredNotifChannel)}`);if(M!==X.current)f6.push(`Set output style to ${M1.bold(M)}`);if(P!==Z.current)f6.push(`Set response language to ${M1.bold(P??"Default (English)")}`);if(_.editorMode!==O.current.editorMode)f6.push(`Set editor mode to ${M1.bold(_.editorMode||"emacs")}`);if(_.diffTool!==O.current.diffTool)f6.push(`Set diff tool to ${M1.bold(_.diffTool)}`);if(_.autoConnectIde!==O.current.autoConnectIde)f6.push(`${_.autoConnectIde?"Enabled":"Disabled"} auto-connect to IDE`);if(_.autoInstallIdeExtension!==O.current.autoInstallIdeExtension)f6.push(`${_.autoInstallIdeExtension?"Enabled":"Disabled"} auto-install IDE extension`);if(_.autoCompactEnabled!==O.current.autoCompactEnabled)f6.push(`${_.autoCompactEnabled?"Enabled":"Disabled"} auto-compact`);if(_.respectGitignore!==O.current.respectGitignore)f6.push(`${_.respectGitignore?"Enabled":"Disabled"} respect .gitignore in file picker`);if(_.copyFullResponse!==O.current.copyFullResponse)f6.push(`${_.copyFullResponse?"Enabled":"Disabled"} always copy full response`);if(_.terminalProgressBarEnabled!==O.current.terminalProgressBarEnabled)f6.push(`${_.terminalProgressBarEnabled?"Enabled":"Disabled"} terminal progress bar`);if(_.remoteControlAtStartup!==O.current.remoteControlAtStartup){let b6=_.remoteControlAtStartup===void 0?"Reset Remote Control to default":`${_.remoteControlAtStartup?"Enabled":"Disabled"} Remote Control for all sessions`;f6.push(b6)}if(H?.autoUpdatesChannel!==J.current?.autoUpdatesChannel)f6.push(`Set auto-update channel to ${M1.bold(H?.autoUpdatesChannel??"latest")}`);if(f6.length>0)A(f6.join(` `));else A("Config dialog dismissed",{display:"system"})},[q6,t,_,x,M,P,H?.autoUpdatesChannel,gq()?H?.fastMode:void 0,A]);V8("confirm:no",C6,{context:"Settings",isActive:q6===null});let h6=oT.useCallback(()=>{let f6=D6[G];if(!f6||!f6.onChange)return;if(f6.type==="boolean"){if(f6.onChange(!f6.value),f6.id==="thinkingEnabled"){if(!f6.value===H6.current)G6(!1);else if(q.messages.some((p6)=>p6.type==="assistant"))G6(!0)}return}if(f6.id==="theme"||f6.id==="model"||f6.id==="showExternalIncludesDialog"||f6.id==="outputStyle"||f6.id==="language")switch(f6.id){case"theme":w6("Theme"),K(!0);return;case"model":w6("Model"),K(!0);return;case"showExternalIncludesDialog":w6("ExternalIncludes"),K(!0);return;case"outputStyle":w6("OutputStyle"),K(!0);return;case"language":w6("Language"),K(!0);return}if(f6.id==="autoUpdatesChannel"){if(a){w6("EnableAutoUpdates"),K(!0);return}if((H?.autoUpdatesChannel??"latest")==="latest")w6("ChannelDowngrade"),K(!0);else xA("userSettings",{autoUpdatesChannel:"latest",minimumVersion:void 0}),j((V6)=>({...V6,autoUpdatesChannel:"latest",minimumVersion:void 0})),c("tengu_autoupdate_channel_changed",{channel:"latest"});return}if(f6.type==="enum"){let V6=(f6.options.indexOf(f6.value)+1)%f6.options.length;f6.onChange(f6.options[V6]);return}},[a,D6,G,H?.autoUpdatesChannel,K]);return f7({"select:previous":()=>{if(G6(!1),G===0)y(!0),N(0);else{let f6=Math.max(0,G-1);f(f6),y6(f6)}},"select:next":()=>{G6(!1);let f6=Math.min(D6.length-1,G+1);f(f6),y6(f6)},"select:accept":h6,"settings:search":()=>{y(!0),_6("")}},{context:"Settings",isActive:q6===null&&!v}),kA((f6,M6)=>{if(M6.escape){if(j6.length>0)_6("");else y(!1);return}if(M6.return||M6.downArrow)y(!1),f(0),N(0)},{isActive:v&&q6===null}),kA((f6,M6)=>{if(!M6.ctrl&&!M6.meta&&f6.length>0&&!/^\s+$/.test(f6))y(!0),_6(f6)},{isActive:!v&&q6===null}),t1.createElement(m,{flexDirection:"column",width:"100%"},q6==="Theme"?t1.createElement(t1.Fragment,null,t1.createElement(hk6,{onThemeSelect:(f6)=>{z(f6),w6(null),K(!1)},onCancel:()=>{w6(null),K(!1)},hideEscToCancel:!0,skipExitHandling:!0}),t1.createElement(m,null,t1.createElement(T,{dimColor:!0,italic:!0},t1.createElement(e8,null,t1.createElement(J8,{shortcut:"Enter",action:"select"}),t1.createElement(G8,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"cancel"}))))):q6==="Model"?t1.createElement(t1.Fragment,null,t1.createElement(Ik6,{initial:x,onSelect:(f6,M6)=>{r(f6),w6(null),K(!1)},onCancel:()=>{w6(null),K(!1)},showFastModeNotice:gq()?b&&nO(x)&&kJ():!1}),t1.createElement(T,{dimColor:!0},t1.createElement(e8,null,t1.createElement(J8,{shortcut:"Enter",action:"confirm"}),t1.createElement(G8,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"cancel"})))):q6==="ExternalIncludes"?t1.createElement(t1.Fragment,null,t1.createElement(si8,{onDone:()=>{w6(null),K(!1)},externalIncludes:AG6()}),t1.createElement(T,{dimColor:!0},t1.createElement(e8,null,t1.createElement(J8,{shortcut:"Enter",action:"confirm"}),t1.createElement(G8,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"disable external includes"})))):q6==="OutputStyle"?t1.createElement(t1.Fragment,null,t1.createElement(TC1,{initialStyle:M,onComplete:(f6)=>{D(f6??BP),w6(null),K(!1),xA("localSettings",{outputStyle:f6}),c("tengu_output_style_changed",{style:f6??BP,source:"config_panel",settings_source:"localSettings"})},onCancel:()=>{w6(null),K(!1)}}),t1.createElement(T,{dimColor:!0},t1.createElement(e8,null,t1.createElement(J8,{shortcut:"Enter",action:"confirm"}),t1.createElement(G8,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"cancel"})))):q6==="Language"?t1.createElement(t1.Fragment,null,t1.createElement(EDq,{initialLanguage:P,onComplete:(f6)=>{W(f6),w6(null),K(!1),xA("userSettings",{language:f6}),c("tengu_language_changed",{language:f6??"default",source:"config_panel"})},onCancel:()=>{w6(null),K(!1)}}),t1.createElement(T,{dimColor:!0},t1.createElement(e8,null,t1.createElement(J8,{shortcut:"Enter",action:"confirm"}),t1.createElement(G8,{action:"confirm:no",context:"Settings",fallback:"Esc",description:"cancel"})))):q6==="EnableAutoUpdates"?t1.createElement(l8,{title:"Enable Auto-Updates",onCancel:()=>{w6(null),K(!1)},hideBorder:!0,hideInputGuide:!0},a!=="config"?t1.createElement(t1.Fragment,null,t1.createElement(T,null,"Auto-updates are controlled by an environment variable and cannot be changed here."),t1.createElement(T,{dimColor:!0},"Unset"," ",a?.includes("NONESSENTIAL")?"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC":"DISABLE_AUTOUPDATER"," ","to re-enable auto-updates.")):t1.createElement(E8,{options:[{label:"Enable with latest channel",value:"latest"},{label:"Enable with stable channel",value:"stable"}],onChange:(f6)=>{w6(null),K(!1),_8((M6)=>({...M6,autoUpdates:!0})),$({...T1(),autoUpdates:!0}),xA("userSettings",{autoUpdatesChannel:f6,minimumVersion:void 0}),j((M6)=>({...M6,autoUpdatesChannel:f6,minimumVersion:void 0})),c("tengu_autoupdate_enabled",{channel:f6})}})):q6==="ChannelDowngrade"?t1.createElement(NDq,{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.71",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-06T22:45:36Z"}.VERSION,onChoice:(f6)=>{if(w6(null),K(!1),f6==="cancel")return;let M6={autoUpdatesChannel:"stable"};if(f6==="stay")M6.minimumVersion={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.71",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-06T22:45:36Z"}.VERSION;xA("userSettings",M6),j((V6)=>({...V6,...M6})),c("tengu_autoupdate_channel_changed",{channel:"stable",minimum_version_set:f6==="stay"})}}):t1.createElement(m,{flexDirection:"column",marginY:1,gap:1},t1.createElement(T,null,"Configure Claude Code preferences"),t1.createElement(ZU,{query:j6,isFocused:v,isTerminalFocused:R,cursorOffset:k6,placeholder:"Search settings..."}),t1.createElement(m,{flexDirection:"column"},D6.length===0?t1.createElement(T,{dimColor:!0,italic:!0},'No settings match "',j6,'"'):t1.createElement(t1.Fragment,null,V>0&&t1.createElement(T,{dimColor:!0},q1.arrowUp," ",V," more above"),D6.slice(V,V+B).map((f6,M6)=>{let p6=V+M6===G;return t1.createElement(t1.Fragment,{key:f6.id},t1.createElement(m,null,t1.createElement(m,{width:44},t1.createElement(T,{color:p6?"suggestion":void 0},p6?q1.pointer:" "," ",f6.label)),t1.createElement(m,{key:p6?"selected":"unselected"},f6.type==="boolean"?t1.createElement(t1.Fragment,null,t1.createElement(T,{color:p6?"suggestion":void 0},f6.value.toString()),Z6&&f6.id==="thinkingEnabled"&&t1.createElement(T,{color:"warning"}," ","Changing thinking mode mid-conversation will increase latency and may reduce quality.")):f6.id==="theme"?t1.createElement(T,{color:p6?"suggestion":void 0},(()=>{return{auto:"Auto (follow system)",dark:"Dark mode",light:"Light mode","dark-daltonized":"Dark mode (colorblind-friendly)","light-daltonized":"Light mode (colorblind-friendly)","dark-ansi":"Dark mode (ANSI colors only)","light-ansi":"Light mode (ANSI colors only)"}[f6.value.toString()]||f6.value.toString()})()):f6.id==="notifChannel"?t1.createElement(T,{color:p6?"suggestion":void 0},(()=>{switch(f6.value.toString()){case"auto":return"Auto";case"iterm2":return t1.createElement(t1.Fragment,null,"iTerm2 ",t1.createElement(T,{dimColor:!0},"(OSC 9)"));case"terminal_bell":return t1.createElement(t1.Fragment,null,"Terminal Bell"," ",t1.createElement(T,{dimColor:!0},"(\\a)"));case"kitty":return t1.createElement(t1.Fragment,null,"Kitty ",t1.createElement(T,{dimColor:!0},"(OSC 99)"));case"ghostty":return t1.createElement(t1.Fragment,null,"Ghostty"," ",t1.createElement(T,{dimColor:!0},"(OSC 777)"));case"iterm2_with_bell":return"iTerm2 w/ Bell";case"notifications_disabled":return"Disabled";default:return f6.value.toString()}})()):f6.id==="defaultPermissionMode"?t1.createElement(T,{color:p6?"suggestion":void 0},Vd(f6.value)):f6.id==="autoUpdatesChannel"&&a?t1.createElement(m,{flexDirection:"column"},t1.createElement(T,{color:p6?"suggestion":void 0},"disabled"),t1.createElement(T,{dimColor:!0},"(",a,")")):t1.createElement(T,{color:p6?"suggestion":void 0},f6.value.toString()))))}),V+B{n6();H7();t7();Q8();xa6();Q8();iK();k0();XP();x1();B1();_r();WC1();pA();GC1();Xq();fC1();ti8();vDq();zq();HY();ei8();LDq();sD();JK();hK();eq();bk6();M$();GA();xx();Z8();rA();uY();Dv6();xk6();xq();aZ();t1=e(W6(),1),oT=e(W6(),1)});async function SDq(){if(!A7()||!Cf())return{};let A=g7();if(A&&JQ(A.expiresAt))return null;let q=gO();if(q.error)throw Error(`Auth error: ${q.error}`);let K={"Content-Type":"application/json","User-Agent":mO(),...q.headers},Y=`${U7().BASE_API_URL}/api/oauth/usage`;return(await I8.get(Y,{headers:K,timeout:5000})).data}var CDq=k(()=>{A3();uD();L5();bA();EW()});function ca6(A){let q=Y6(13),{ratio:K,width:Y,fillColor:z,emptyColor:w}=A,_=Math.min(1,Math.max(0,K)),$=Math.floor(_*Y),O;if(q[0]!==$)O=da6[da6.length-1].repeat($),q[0]=$,q[1]=O;else O=q[1];let H;if(q[2]!==_||q[3]!==O||q[4]!==$||q[5]!==Y){if(H=[O],$0){let P;if(q[7]!==X)P=da6[0].repeat(X),q[7]=X,q[8]=P;else P=q[8];H.push(P)}}q[2]=_,q[3]=O,q[4]=$,q[5]=Y,q[6]=H}else H=q[6];let j=H.join(""),J;if(q[9]!==w||q[10]!==z||q[11]!==j)J=hDq.default.createElement(T,{color:z,backgroundColor:w},j),q[9]=w,q[10]=z,q[11]=j,q[12]=J;else J=q[12];return J}var hDq,da6;var Kn8=k(()=>{K1();n6();hDq=e(W6(),1),da6=[" ","▏","▎","▍","▌","▋","▊","▉","█"]});function IDq(A){let q=Y6(34),{title:K,limit:Y,maxWidth:z,showTimeInReset:w,extraSubtext:_}=A,$=w===void 0?!0:w,{utilization:O,resets_at:H}=Y;if(O===null)return null;let j=`${Math.floor(O)}% used`,J;if(H){let M;if(q[0]!==H||q[1]!==$)M=xdA(H,!0,$),q[0]=H,q[1]=$,q[2]=M;else M=q[2];J=`Resets ${M}`}if(_)if(J)J=`${_} · ${J}`;else J=_;if(z>=62){let M;if(q[3]!==K)M=e7.createElement(T,{bold:!0},K),q[3]=K,q[4]=M;else M=q[4];let D=O/100,X;if(q[5]!==D)X=e7.createElement(ca6,{ratio:D,width:50,fillColor:"rate_limit_fill",emptyColor:"rate_limit_empty"}),q[5]=D,q[6]=X;else X=q[6];let P;if(q[7]!==j)P=e7.createElement(T,null,j),q[7]=j,q[8]=P;else P=q[8];let W;if(q[9]!==X||q[10]!==P)W=e7.createElement(m,{flexDirection:"row",gap:1},X,P),q[9]=X,q[10]=P,q[11]=W;else W=q[11];let Z;if(q[12]!==J)Z=J&&e7.createElement(T,{dimColor:!0},J),q[12]=J,q[13]=Z;else Z=q[13];let G;if(q[14]!==M||q[15]!==W||q[16]!==Z)G=e7.createElement(m,{flexDirection:"column"},M,W,Z),q[14]=M,q[15]=W,q[16]=Z,q[17]=G;else G=q[17];return G}else{let M;if(q[18]!==K)M=e7.createElement(T,{bold:!0},K),q[18]=K,q[19]=M;else M=q[19];let D;if(q[20]!==J)D=J&&e7.createElement(e7.Fragment,null,e7.createElement(T,null," "),e7.createElement(T,{dimColor:!0},"· ",J)),q[20]=J,q[21]=D;else D=q[21];let X;if(q[22]!==M||q[23]!==D)X=e7.createElement(T,null,M,D),q[22]=M,q[23]=D,q[24]=X;else X=q[24];let P=O/100,W;if(q[25]!==z||q[26]!==P)W=e7.createElement(ca6,{ratio:P,width:z,fillColor:"rate_limit_fill",emptyColor:"rate_limit_empty"}),q[25]=z,q[26]=P,q[27]=W;else W=q[27];let Z;if(q[28]!==j)Z=e7.createElement(T,null,j),q[28]=j,q[29]=Z;else Z=q[29];let G;if(q[30]!==X||q[31]!==W||q[32]!==Z)G=e7.createElement(m,{flexDirection:"column"},X,W,Z),q[30]=X,q[31]=W,q[32]=Z,q[33]=G;else G=q[33];return G}}function bDq(){let[A,q]=uk6.useState(null),[K,Y]=uk6.useState(null),[z,w]=uk6.useState(!0),{columns:_}=PA(),$=_-2,O=Math.min($,80),H=e7.useCallback(async()=>{w(!0),Y(null);try{let J=await SDq();q(J)}catch(J){$6(J);let M=J,D=M.response?.data?U6(M.response.data):void 0;Y(D?`Failed to load usage data: ${D}`:"Failed to load usage data")}finally{w(!1)}},[]);if(uk6.useEffect(()=>{H()},[H]),V8("settings:retry",()=>{H()},{context:"Settings",isActive:!!K&&!z}),K)return e7.createElement(m,{flexDirection:"column",gap:1},e7.createElement(T,{color:"error"},"Error: ",K),e7.createElement(T,{dimColor:!0},e7.createElement(e8,null,e7.createElement(G8,{action:"settings:retry",context:"Settings",fallback:"r",description:"retry"}),e7.createElement(G8,{action:"confirm:no",context:"Settings",fallback:"Esc",description:"cancel"}))));if(!A)return e7.createElement(m,{flexDirection:"column",gap:1},e7.createElement(T,{dimColor:!0},"Loading usage data…"),e7.createElement(T,{dimColor:!0},e7.createElement(G8,{action:"confirm:no",context:"Settings",fallback:"Esc",description:"cancel"})));let j=[{title:"Current session",limit:A.five_hour},{title:"Current week (all models)",limit:A.seven_day},{title:"Current week (Sonnet only)",limit:A.seven_day_sonnet}];return e7.createElement(m,{flexDirection:"column",gap:1,width:"100%"},j.some(({limit:J})=>J)||e7.createElement(T,{dimColor:!0},"/usage is only available for subscription plans."),j.map(({title:J,limit:M})=>M&&e7.createElement(IDq,{key:J,title:J,limit:M,maxWidth:O})),A.extra_usage&&e7.createElement(L$z,{extraUsage:A.extra_usage,maxWidth:O}),e7.createElement(T,{dimColor:!0},e7.createElement(G8,{action:"confirm:no",context:"Settings",fallback:"Esc",description:"cancel"})))}function L$z(A){let q=Y6(20),{extraUsage:K,maxWidth:Y}=A,z=K3();if(!(z==="pro"||z==="max"))return!1;if(!K.is_enabled){if(r86.isEnabled()){let f;if(q[0]===Symbol.for("react.memo_cache_sentinel"))f=e7.createElement(m,{flexDirection:"column"},e7.createElement(T,{bold:!0},Yn8),e7.createElement(T,{dimColor:!0},"Extra usage not enabled • /extra-usage to enable")),q[0]=f;else f=q[0];return f}return null}if(K.monthly_limit===null){let f;if(q[1]===Symbol.for("react.memo_cache_sentinel"))f=e7.createElement(m,{flexDirection:"column"},e7.createElement(T,{bold:!0},Yn8),e7.createElement(T,{dimColor:!0},"Unlimited")),q[1]=f;else f=q[1];return f}if(typeof K.used_credits!=="number"||typeof K.utilization!=="number")return null;let _=K.used_credits/100,$;if(q[2]!==_)$=hm6(_,2),q[2]=_,q[3]=$;else $=q[3];let O=$,H=K.monthly_limit/100,j;if(q[4]!==H)j=hm6(H,2),q[4]=H,q[5]=j;else j=q[5];let J=j,M,D,X,P;if(q[6]!==K.utilization){let f=new Date,V=new Date(f.getFullYear(),f.getMonth()+1,1);M=IDq,P=Yn8,D=K.utilization,X=V.toISOString(),q[6]=K.utilization,q[7]=M,q[8]=D,q[9]=X,q[10]=P}else M=q[7],D=q[8],X=q[9],P=q[10];let W;if(q[11]!==D||q[12]!==X)W={utilization:D,resets_at:X},q[11]=D,q[12]=X,q[13]=W;else W=q[13];let Z=`${O} / ${J} spent`,G;if(q[14]!==M||q[15]!==Y||q[16]!==P||q[17]!==W||q[18]!==Z)G=e7.createElement(M,{title:P,limit:W,showTimeInReset:!1,extraSubtext:Z,maxWidth:Y}),q[14]=M,q[15]=Y,q[16]=P,q[17]=W,q[18]=Z,q[19]=G;else G=q[19];return G}var e7,uk6,Yn8="Extra usage";var xDq=k(()=>{K1();n6();xq();CDq();x1();Kn8();hK();eq();H7();Tr6();kE();bA();Oq();a1();e7=e(W6(),1),uk6=e(W6(),1)});function Bk6(A){let q=Y6(19),{onClose:K,context:Y,defaultTab:z}=A,[w,_]=zn8.useState(!1),[$,O]=zn8.useState(!1),H;if(q[0]!==K||q[1]!==w)H=()=>{if(w)return;K("Status dialog dismissed",{display:"system"})},q[0]=K,q[1]=w,q[2]=H;else H=q[2];let j=H,J=!w,M;if(q[3]!==J)M={context:"Settings",isActive:J},q[3]=J,q[4]=M;else M=q[4];V8("confirm:no",j,M);let D;if(q[5]!==Y)D=rW.createElement(U_,{key:"status",title:"Status"},rW.createElement(XDq,{context:Y})),q[5]=Y,q[6]=D;else D=q[6];let X;if(q[7]!==Y||q[8]!==K)X=rW.createElement(U_,{key:"config",title:"Config"},rW.createElement(yDq,{context:Y,onClose:K,setTabsHidden:_,onSearchModeChange:O})),q[7]=Y,q[8]=K,q[9]=X;else X=q[9];let P;if(q[10]===Symbol.for("react.memo_cache_sentinel"))P=rW.createElement(U_,{key:"usage",title:"Usage"},rW.createElement(bDq,null)),q[10]=P;else P=q[10];let W;if(q[11]!==D||q[12]!==X)W=[D,X,P],q[11]=D,q[12]=X,q[13]=W;else W=q[13];let Z=W,G;if(q[14]!==$||q[15]!==z||q[16]!==Z||q[17]!==w)G=rW.createElement(m9,{color:"permission"},rW.createElement(rC,{title:"Settings:",color:"permission",defaultTab:z,hidden:w,disableNavigation:$},Z)),q[14]=$,q[15]=z,q[16]=Z,q[17]=w,q[18]=G;else G=q[18];return G}var rW,zn8;var NC1=k(()=>{K1();H7();$P();N_6();PDq();RDq();xDq();rW=e(W6(),1),zn8=e(W6(),1)});var uDq={};m1(uDq,{call:()=>y$z});var wn8,y$z=async(A,q)=>{return wn8.createElement(Bk6,{onClose:A,context:q,defaultTab:"Config"})};var BDq=k(()=>{NC1();wn8=e(W6(),1)});var R$z,mDq;var gDq=k(()=>{R$z={aliases:["settings"],type:"local-jsx",name:"config",description:"Open config panel",isEnabled:()=>!0,isHidden:!1,load:()=>Promise.resolve().then(() => (BDq(),uDq)),userFacingName(){return"config"}},mDq=R$z});function S$z(A){return`${Math.round(A/1000)}k`}function FDq(A){let q=new Map;for(let Y of A){let z=LM6(Y.source),w=q.get(z)||[];w.push(Y),q.set(z,w)}for(let[Y,z]of q.entries())q.set(Y,z.sort((w,_)=>_.tokens-w.tokens));let K=new Map;for(let Y of C$z){let z=q.get(Y);if(z)K.set(Y,z)}return K}function QDq(A){let q=Y6(81),{data:K}=A,{categories:Y,totalTokens:z,rawMaxTokens:w,percentage:_,gridRows:$,model:O,memoryFiles:H,mcpTools:j,deferredBuiltinTools:J,systemTools:M,systemPromptSections:D,agents:X,skills:P,messageBreakdown:W}=K,Z,G,f,V,N,v,y,R,h,B;if(q[0]!==Y||q[1]!==$||q[2]!==j||q[3]!==O||q[4]!==_||q[5]!==w||q[6]!==M||q[7]!==J||q[8]!==z){let t=J===void 0?[]:J,s=Y.filter(a$z),H6;if(q[19]!==Y)H6=Y.some(o$z),q[19]=Y,q[20]=H6;else H6=q[20];let Z6=H6,G6=t.length>0,q6=Y.find(r$z);if(G=m,y="column",R=1,q[21]===Symbol.for("react.memo_cache_sentinel"))h=wA.createElement(T,{bold:!0},"Context Usage"),q[21]=h;else h=q[21];let w6;if(q[22]!==$)w6=$.map(i$z),q[22]=$,q[23]=w6;else w6=q[23];let j6;if(q[24]!==w6)j6=wA.createElement(m,{flexDirection:"column",flexShrink:0},w6),q[24]=w6,q[25]=j6;else j6=q[25];let _6;if(q[26]!==z)_6=Math.round(z/1000),q[26]=z,q[27]=_6;else _6=q[27];let k6;if(q[28]!==w)k6=Math.round(w/1000),q[28]=w,q[29]=k6;else k6=q[29];let P6;if(q[30]!==O||q[31]!==_||q[32]!==_6||q[33]!==k6)P6=wA.createElement(T,{dimColor:!0},O," · ",_6,"k/",k6,"k tokens (",_,"%)"),q[30]=O,q[31]=_,q[32]=_6,q[33]=k6,q[34]=P6;else P6=q[34];let A6,K6;if(q[35]===Symbol.for("react.memo_cache_sentinel"))A6=wA.createElement(T,null," "),K6=wA.createElement(T,{dimColor:!0,italic:!0},"Estimated usage by category"),q[35]=A6,q[36]=K6;else A6=q[35],K6=q[36];let z6;if(q[37]!==w)z6=(D6,y6)=>{let C6=cX(D6.tokens),h6=D6.isDeferred?"N/A":`${(D6.tokens/w*100).toFixed(1)}%`,f6=D6.name===vC1,M6=D6.name,V6=D6.isDeferred?" ":f6?"⛝":"⛁";return wA.createElement(m,{key:y6},wA.createElement(T,{color:D6.color},V6),wA.createElement(T,null," ",M6,": "),wA.createElement(T,{dimColor:!0},C6," tokens (",h6,")"))},q[37]=w,q[38]=z6;else z6=q[38];let a=s.map(z6),r;if(q[39]!==Y||q[40]!==w)r=(Y.find(l$z)?.tokens??0)>0&&wA.createElement(m,null,wA.createElement(T,{dimColor:!0},"⛶"),wA.createElement(T,null," Free space: "),wA.createElement(T,{dimColor:!0},S$z(Y.find(c$z)?.tokens||0)," ","(",((Y.find(d$z)?.tokens||0)/w*100).toFixed(1),"%)")),q[39]=Y,q[40]=w,q[41]=r;else r=q[41];let X6=q6&&q6.tokens>0&&wA.createElement(m,null,wA.createElement(T,{color:q6.color},"⛝"),wA.createElement(T,{dimColor:!0}," ",q6.name,": "),wA.createElement(T,{dimColor:!0},cX(q6.tokens)," tokens (",(q6.tokens/w*100).toFixed(1),"%)")),O6;if(q[42]!==P6||q[43]!==a||q[44]!==r||q[45]!==X6)O6=wA.createElement(m,{flexDirection:"column",gap:0,flexShrink:0},P6,A6,K6,a,r,X6),q[42]=P6,q[43]=a,q[44]=r,q[45]=X6,q[46]=O6;else O6=q[46];if(q[47]!==j6||q[48]!==O6)B=wA.createElement(m,{flexDirection:"row",gap:2},j6,O6),q[47]=j6,q[48]=O6,q[49]=B;else B=q[49];if(Z=m,f="column",V=-1,q[50]!==Z6||q[51]!==j)N=j.length>0&&wA.createElement(m,{flexDirection:"column",marginTop:1},wA.createElement(m,null,wA.createElement(T,{bold:!0},"MCP tools"),wA.createElement(T,{dimColor:!0}," ","· /mcp",Z6?" (loaded on-demand)":"")),j.some(p$z)&&wA.createElement(m,{flexDirection:"column",marginTop:1},wA.createElement(T,{dimColor:!0},"Loaded"),j.filter(U$z).map(Q$z)),Z6&&j.some(F$z)&&wA.createElement(m,{flexDirection:"column",marginTop:1},wA.createElement(T,{dimColor:!0},"Available"),j.filter(g$z).map(m$z)),!Z6&&j.map(B$z)),q[50]=Z6,q[51]=j,q[52]=N;else N=q[52];v=(M&&M.length>0||G6)&&!1,q[0]=Y,q[1]=$,q[2]=j,q[3]=O,q[4]=_,q[5]=w,q[6]=M,q[7]=J,q[8]=z,q[9]=Z,q[10]=G,q[11]=f,q[12]=V,q[13]=N,q[14]=v,q[15]=y,q[16]=R,q[17]=h,q[18]=B}else Z=q[9],G=q[10],f=q[11],V=q[12],N=q[13],v=q[14],y=q[15],R=q[16],h=q[17],B=q[18];let x;if(q[53]!==D)x=D&&D.length>0&&!1,q[53]=D,q[54]=x;else x=q[54];let F;if(q[55]!==X)F=X.length>0&&wA.createElement(m,{flexDirection:"column",marginTop:1},wA.createElement(m,null,wA.createElement(T,{bold:!0},"Custom agents"),wA.createElement(T,{dimColor:!0}," · /agents")),Array.from(FDq(X).entries()).map(x$z)),q[55]=X,q[56]=F;else F=q[56];let g;if(q[57]!==H)g=H.length>0&&wA.createElement(m,{flexDirection:"column",marginTop:1},wA.createElement(m,null,wA.createElement(T,{bold:!0},"Memory files"),wA.createElement(T,{dimColor:!0}," · /memory")),H.map(b$z)),q[57]=H,q[58]=g;else g=q[58];let b;if(q[59]!==P)b=P&&P.tokens>0&&wA.createElement(m,{flexDirection:"column",marginTop:1},wA.createElement(m,null,wA.createElement(T,{bold:!0},"Skills"),wA.createElement(T,{dimColor:!0}," · /skills")),Array.from(FDq(P.skillFrontmatter).entries()).map(h$z)),q[59]=P,q[60]=b;else b=q[60];let U;if(q[61]!==W)U=W&&!1,q[61]=W,q[62]=U;else U=q[62];let d;if(q[63]!==Z||q[64]!==x||q[65]!==F||q[66]!==g||q[67]!==b||q[68]!==U||q[69]!==f||q[70]!==V||q[71]!==N||q[72]!==v)d=wA.createElement(Z,{flexDirection:f,marginLeft:V},N,v,x,F,g,b,U),q[63]=Z,q[64]=x,q[65]=F,q[66]=g,q[67]=b,q[68]=U,q[69]=f,q[70]=V,q[71]=N,q[72]=v,q[73]=d;else d=q[73];let l;if(q[74]!==G||q[75]!==d||q[76]!==y||q[77]!==R||q[78]!==h||q[79]!==B)l=wA.createElement(G,{flexDirection:y,paddingLeft:R},h,B,d),q[74]=G,q[75]=d,q[76]=y,q[77]=R,q[78]=h,q[79]=B,q[80]=l;else l=q[80];return l}function h$z(A){let[q,K]=A;return wA.createElement(m,{key:q,flexDirection:"column",marginTop:1},wA.createElement(T,{dimColor:!0},q),K.map(I$z))}function I$z(A,q){return wA.createElement(m,{key:q},wA.createElement(T,null,"└ ",A.name,": "),wA.createElement(T,{dimColor:!0},cX(A.tokens)," tokens"))}function b$z(A,q){return wA.createElement(m,{key:q},wA.createElement(T,null,"└ ",T3(A.path),": "),wA.createElement(T,{dimColor:!0},cX(A.tokens)," tokens"))}function x$z(A){let[q,K]=A;return wA.createElement(m,{key:q,flexDirection:"column",marginTop:1},wA.createElement(T,{dimColor:!0},q),K.map(u$z))}function u$z(A,q){return wA.createElement(m,{key:q},wA.createElement(T,null,"└ ",A.agentType,": "),wA.createElement(T,{dimColor:!0},cX(A.tokens)," tokens"))}function B$z(A,q){return wA.createElement(m,{key:q},wA.createElement(T,null,"└ ",A.name,": "),wA.createElement(T,{dimColor:!0},cX(A.tokens)," tokens"))}function m$z(A,q){return wA.createElement(m,{key:q},wA.createElement(T,{dimColor:!0},"└ ",A.name))}function g$z(A){return!A.isLoaded}function F$z(A){return!A.isLoaded}function Q$z(A,q){return wA.createElement(m,{key:q},wA.createElement(T,null,"└ ",A.name,": "),wA.createElement(T,{dimColor:!0},cX(A.tokens)," tokens"))}function U$z(A){return A.isLoaded}function p$z(A){return A.isLoaded}function d$z(A){return A.name==="Free space"}function c$z(A){return A.name==="Free space"}function l$z(A){return A.name==="Free space"}function i$z(A,q){return wA.createElement(m,{key:q,flexDirection:"row",marginLeft:-1},A.map(n$z))}function n$z(A,q){if(A.categoryName==="Free space")return wA.createElement(T,{key:q,dimColor:!0},"⛶ ");if(A.categoryName===vC1)return wA.createElement(T,{key:q,color:A.color},"⛝ ");return wA.createElement(T,{key:q,color:A.color},A.squareFullness>=0.7?"⛁ ":"⛀ ")}function r$z(A){return A.name===vC1}function o$z(A){return A.isDeferred&&A.name.includes("MCP")}function a$z(A){return A.tokens>0&&A.name!=="Free space"&&A.name!==vC1&&!A.isDeferred}var wA,vC1="Autocompact buffer",C$z;var UDq=k(()=>{K1();n6();F2();p7();Oq();wA=e(W6(),1);C$z=["Project","User","Managed","Plugin","Built-in"]});import{PassThrough as s$z}from"stream";function t$z(A){let q=Y6(5),{children:K}=A,{exit:Y}=zW6(),z,w;if(q[0]!==Y)z=()=>{let $=setTimeout(Y,0);return()=>clearTimeout($)},w=[Y],q[0]=Y,q[1]=z,q[2]=w;else z=q[1],w=q[2];dDq.useLayoutEffect(z,w);let _;if(q[3]!==K)_=hA6.createElement(hA6.Fragment,null,K),q[3]=K,q[4]=_;else _=q[4];return _}function AOz(A){let q=A.indexOf(pDq);if(q===-1)return A;let K=q+pDq.length,Y=A.indexOf(e$z,K);if(Y===-1)return A;return A.slice(K,Y)}function _n8(A){return new Promise(async(q)=>{let K="",Y=new s$z;Y.on("data",(w)=>{K+=w.toString()}),await(await kb(hA6.createElement(t$z,null,A),{stdout:Y,patchConsole:!1})).waitUntilExit(),await q(AOz(K))})}async function kC1(A){let q=await _n8(A);return lz(q)}var hA6,dDq,pDq="\x1B[?2026h",e$z="\x1B[?2026l";var EC1=k(()=>{K1();n6();uf();hA6=e(W6(),1),dDq=e(W6(),1)});var cDq={};m1(cDq,{call:()=>qOz});async function qOz(A,q){let{messages:K,getAppState:Y,options:{mainLoopModel:z,tools:w}}=q,_=XC(K),{messages:$}=await zQ(_),O=process.stdout.columns||80,H=Y(),j=await LC1($,z,async()=>H.toolPermissionContext,w,H.agentDefinitions,O,q,void 0,_),J=await _n8($n8.createElement(QDq,{data:j}));return A(J),null}var $n8;var lDq=k(()=>{UDq();la6();EC1();_L();SA();$n8=e(W6(),1)});var iDq={};m1(iDq,{call:()=>KOz});async function KOz(A,q){let{messages:K,getAppState:Y,options:{mainLoopModel:z,tools:w,agentDefinitions:_}}=q,$=XC(K),{messages:O}=await zQ($),H=Y(),j=await LC1(O,z,async()=>H.toolPermissionContext,w,_,void 0,q,void 0,$);return{type:"text",value:YOz(j)}}function YOz(A){let{categories:q,totalTokens:K,rawMaxTokens:Y,percentage:z,model:w,memoryFiles:_,mcpTools:$,agents:O,skills:H,messageBreakdown:j,systemTools:J,systemPromptSections:M}=A,D=`## Context Usage `;D+=`**Model:** ${w} `,D+=`**Tokens:** ${cX(K)} / ${cX(Y)} (${z}%) `;let X=q.filter((P)=>P.tokens>0&&P.name!=="Free space"&&P.name!=="Autocompact buffer");if(X.length>0){D+=`### Estimated usage by category `,D+=`| Category | Tokens | Percentage | `,D+=`|----------|--------|------------| `;for(let Z of X){let G=(Z.tokens/Y*100).toFixed(1);D+=`| ${Z.name} | ${cX(Z.tokens)} | ${G}% | `}let P=q.find((Z)=>Z.name==="Free space");if(P&&P.tokens>0){let Z=(P.tokens/Y*100).toFixed(1);D+=`| Free space | ${cX(P.tokens)} | ${Z}% | `}let W=q.find((Z)=>Z.name==="Autocompact buffer");if(W&&W.tokens>0){let Z=(W.tokens/Y*100).toFixed(1);D+=`| Autocompact buffer | ${cX(W.tokens)} | ${Z}% | `}D+=` `}if($.length>0){D+=`### MCP Tools `,D+=`| Tool | Server | Tokens | `,D+=`|------|--------|--------| `;for(let P of $)D+=`| ${P.name} | ${P.serverName} | ${cX(P.tokens)} | `;D+=` `}if(J&&J.length>0,M&&M.length>0,O.length>0){D+=`### Custom Agents `,D+=`| Agent Type | Source | Tokens | `,D+=`|------------|--------|--------| `;for(let P of O){let W;switch(P.source){case"projectSettings":W="Project";break;case"userSettings":W="User";break;case"localSettings":W="Local";break;case"flagSettings":W="Flag";break;case"policySettings":W="Policy";break;case"plugin":W="Plugin";break;case"built-in":W="Built-in";break;default:W=String(P.source)}D+=`| ${P.agentType} | ${W} | ${cX(P.tokens)} | `}D+=` `}if(_.length>0){D+=`### Memory Files `,D+=`| Type | Path | Tokens | `,D+=`|------|------|--------| `;for(let P of _)D+=`| ${P.type} | ${P.path} | ${cX(P.tokens)} | `;D+=` `}if(H&&H.tokens>0&&H.skillFrontmatter.length>0){D+=`### Skills `,D+=`| Skill | Source | Tokens | `,D+=`|-------|--------|--------| `;for(let P of H.skillFrontmatter)D+=`| ${P.name} | ${LM6(P.source)} | ${cX(P.tokens)} | `;D+=` `}return D}var nDq=k(()=>{la6();_L();SA();F2();Oq()});var rDq,oDq;var aDq=k(()=>{Q1();rDq={name:"context",description:"Visualize current context usage as a colored grid",isEnabled:()=>!u7(),isHidden:!1,type:"local-jsx",load:()=>Promise.resolve().then(() => (lDq(),cDq)),userFacingName(){return this.name}},oDq={type:"local",name:"context",supportsNonInteractive:!0,description:"Show current context usage",get isHidden(){return!u7()},isEnabled(){return u7()},load:()=>Promise.resolve().then(() => (nDq(),iDq)),userFacingName(){return"context"}}});var sDq={};m1(sDq,{call:()=>zOz});var zOz=async()=>{if(A7()){let A;if(TT.isUsingOverage)A="You are currently using your overages to power your Claude Code usage. We will automatically switch you back to your subscription rate limits when they reset";else A="You are currently using your subscription to power your Claude Code usage";return{type:"text",value:A}}return{type:"text",value:vO1()}};var tDq=k(()=>{kE();bA();al()});var wOz,On8;var eDq=k(()=>{bA();wOz={type:"local",name:"cost",description:"Show the total cost and duration of the current session",isEnabled:()=>!0,get isHidden(){return A7()},supportsNonInteractive:!0,load:()=>Promise.resolve().then(() => (tDq(),sDq)),userFacingName(){return"cost"}},On8=wOz});function AXq(){let[A,q]=IA6.useState(null),[K,Y]=IA6.useState(new Map),[z,w]=IA6.useState(!0);return IA6.useEffect(()=>{let _=!1;async function $(){try{let[O,H]=await Promise.all([U9q(),p9q()]);if(!_)q(O),Y(H),w(!1)}catch(O){if(!_)q(null),Y(new Map),w(!1)}}return $(),()=>{_=!0}},[]),IA6.useMemo(()=>{if(!A)return{stats:null,files:[],hunks:new Map,loading:z};let{stats:_,perFileStats:$}=A,O=[];for(let[H,j]of $){let J=K.get(H),M=j.isUntracked??!1,D=!j.isBinary&&!M&&!J,X=j.added+j.removed,P=!D&&!j.isBinary&&X>_Oz;O.push({path:H,linesAdded:j.added,linesRemoved:j.removed,isBinary:j.isBinary,isLargeFile:D,isTruncated:P,isUntracked:M})}return O.sort((H,j)=>H.path.localeCompare(j.path)),{stats:_,files:O,hunks:K,loading:!1}},[A,K,z])}var IA6,_Oz=400;var qXq=k(()=>{vR1();IA6=e(W6(),1)});function $Oz(A){if(!A||typeof A!=="object")return!1;let q=A,K=typeof q.filePath==="string",Y=Array.isArray(q.structuredPatch)&&q.structuredPatch.length>0,z=q.type==="create"&&typeof q.content==="string";return K&&(Y||z)}function OOz(A){return"type"in A&&(A.type==="create"||A.type==="update")}function HOz(A){let q=0,K=0;for(let Y of A)for(let z of Y.lines)if(z.startsWith("+"))q++;else if(z.startsWith("-"))K++;return{added:q,removed:K}}function jOz(A){if(A.type!=="user")return"";let q=A.message.content,K=typeof q==="string"?q:"";if(K.length<=30)return K;return K.slice(0,29)+"…"}function KXq(A){let q=0,K=0;for(let Y of A.files.values())q+=Y.linesAdded,K+=Y.linesRemoved;A.stats={filesChanged:A.files.size,linesAdded:q,linesRemoved:K}}function YXq(A){let q=yC1.useRef({completedTurns:[],currentTurn:null,lastProcessedIndex:0,lastTurnIndex:0});return yC1.useMemo(()=>{let K=q.current;if(A.length0)KXq(K.currentTurn),K.completedTurns.push(K.currentTurn);K.lastTurnIndex++,K.currentTurn={turnIndex:K.lastTurnIndex,userPromptPreview:jOz(w),timestamp:w.timestamp,files:new Map,stats:{filesChanged:0,linesAdded:0,linesRemoved:0}}}else if(K.currentTurn&&w.toolUseResult){let $=w.toolUseResult;if($Oz($)){let{filePath:O,structuredPatch:H}=$,j="type"in $&&$.type==="create",J=K.currentTurn.files.get(O);if(!J)J={filePath:O,hunks:[],isNewFile:j,linesAdded:0,linesRemoved:0},K.currentTurn.files.set(O,J);if(j&&H.length===0&&OOz($)){let D=$.content.split(` `),X={oldStart:0,oldLines:0,newStart:1,newLines:D.length,lines:D.map((P)=>"+"+P)};J.hunks.push(X),J.linesAdded+=D.length}else{J.hunks.push(...H);let{added:M,removed:D}=HOz(H);J.linesAdded+=M,J.linesRemoved+=D}if(j)J.isNewFile=!0}}}K.lastProcessedIndex=A.length;let Y=[...K.completedTurns];if(K.currentTurn&&K.currentTurn.files.size>0)KXq(K.currentTurn),Y.push(K.currentTurn);return Y.reverse()},[A])}var yC1;var zXq=k(()=>{yC1=e(W6(),1)});function wXq(A){let q=Y6(36),{files:K,selectedIndex:Y}=A,{columns:z}=PA(),w;A:{if(K.length===0||K.length<=ia6){let f;if(q[0]!==K.length)f={startIndex:0,endIndex:K.length},q[0]=K.length,q[1]=f;else f=q[1];w=f;break A}let W=Math.max(0,Y-Math.floor(ia6/2)),Z=W+ia6;if(Z>K.length)Z=K.length,W=Math.max(0,Z-ia6);let G;if(q[2]!==Z||q[3]!==W)G={startIndex:W,endIndex:Z},q[2]=Z,q[3]=W,q[4]=G;else G=q[4];w=G}let{startIndex:_,endIndex:$}=w;if(K.length===0){let W;if(q[5]===Symbol.for("react.memo_cache_sentinel"))W=oW.default.createElement(T,{dimColor:!0},"No changed files"),q[5]=W;else W=q[5];return W}let O,H,j,J,M,D;if(q[6]!==z||q[7]!==$||q[8]!==K||q[9]!==Y||q[10]!==_){let W=K.slice(_,$),Z=_>0;H=$ia6;let G=Math.max(20,z-16-3-4);if(O=m,J="column",q[17]!==Z||q[18]!==j||q[19]!==_)M=j&&oW.default.createElement(T,{dimColor:!0},Z?` ↑ ${_} more file${_!==1?"s":""}`:" "),q[17]=Z,q[18]=j,q[19]=_,q[20]=M;else M=q[20];let f;if(q[21]!==G||q[22]!==Y||q[23]!==_)f=(V,N)=>oW.default.createElement(JOz,{key:V.path,file:V,isSelected:_+N===Y,maxPathWidth:G}),q[21]=G,q[22]=Y,q[23]=_,q[24]=f;else f=q[24];D=W.map(f),q[6]=z,q[7]=$,q[8]=K,q[9]=Y,q[10]=_,q[11]=O,q[12]=H,q[13]=j,q[14]=J,q[15]=M,q[16]=D}else O=q[11],H=q[12],j=q[13],J=q[14],M=q[15],D=q[16];let X;if(q[25]!==$||q[26]!==K.length||q[27]!==H||q[28]!==j)X=j&&oW.default.createElement(T,{dimColor:!0},H?` ↓ ${K.length-$} more file${K.length-$!==1?"s":""}`:" "),q[25]=$,q[26]=K.length,q[27]=H,q[28]=j,q[29]=X;else X=q[29];let P;if(q[30]!==O||q[31]!==J||q[32]!==M||q[33]!==D||q[34]!==X)P=oW.default.createElement(O,{flexDirection:J},M,D,X),q[30]=O,q[31]=J,q[32]=M,q[33]=D,q[34]=X,q[35]=P;else P=q[35];return P}function JOz(A){let q=Y6(14),{file:K,isSelected:Y,maxPathWidth:z}=A,w;if(q[0]!==K.path||q[1]!==z)w=pM6(K.path,z),q[0]=K.path,q[1]=z,q[2]=w;else w=q[2];let _=w,O=`${Y?q1.pointer+" ":" "}${_}`,H=Y?"background":void 0,j;if(q[3]!==Y||q[4]!==O||q[5]!==H)j=oW.default.createElement(T,{bold:Y,color:H,inverse:Y},O),q[3]=Y,q[4]=O,q[5]=H,q[6]=j;else j=q[6];let J;if(q[7]===Symbol.for("react.memo_cache_sentinel"))J=oW.default.createElement(m,{flexGrow:1}),q[7]=J;else J=q[7];let M;if(q[8]!==K||q[9]!==Y)M=oW.default.createElement(MOz,{file:K,isSelected:Y}),q[8]=K,q[9]=Y,q[10]=M;else M=q[10];let D;if(q[11]!==j||q[12]!==M)D=oW.default.createElement(m,{flexDirection:"row"},j,J,M),q[11]=j,q[12]=M,q[13]=D;else D=q[13];return D}function MOz(A){let q=Y6(20),{file:K,isSelected:Y}=A;if(K.isUntracked){let H=!Y,j;if(q[0]!==H)j=oW.default.createElement(T,{dimColor:H,italic:!0},"untracked"),q[0]=H,q[1]=j;else j=q[1];return j}if(K.isBinary){let H=!Y,j;if(q[2]!==H)j=oW.default.createElement(T,{dimColor:H,italic:!0},"Binary file"),q[2]=H,q[3]=j;else j=q[3];return j}if(K.isLargeFile){let H=!Y,j;if(q[4]!==H)j=oW.default.createElement(T,{dimColor:H,italic:!0},"Large file modified"),q[4]=H,q[5]=j;else j=q[5];return j}let z;if(q[6]!==K.linesAdded||q[7]!==Y)z=K.linesAdded>0&&oW.default.createElement(T,{color:"diffAddedWord",bold:Y},"+",K.linesAdded),q[6]=K.linesAdded,q[7]=Y,q[8]=z;else z=q[8];let w=K.linesAdded>0&&K.linesRemoved>0&&" ",_;if(q[9]!==K.linesRemoved||q[10]!==Y)_=K.linesRemoved>0&&oW.default.createElement(T,{color:"diffRemovedWord",bold:Y},"-",K.linesRemoved),q[9]=K.linesRemoved,q[10]=Y,q[11]=_;else _=q[11];let $;if(q[12]!==K.isTruncated||q[13]!==Y)$=K.isTruncated&&oW.default.createElement(T,{dimColor:!Y}," (truncated)"),q[12]=K.isTruncated,q[13]=Y,q[14]=$;else $=q[14];let O;if(q[15]!==z||q[16]!==w||q[17]!==_||q[18]!==$)O=oW.default.createElement(T,null,z,w,_,$),q[15]=z,q[16]=w,q[17]=_,q[18]=$,q[19]=O;else O=q[19];return O}var oW,ia6=5;var _Xq=k(()=>{K1();n6();t7();xq();Oq();oW=e(W6(),1)});import{resolve as DOz}from"path";function $Xq(A){let q=Y6(53),{filePath:K,hunks:Y,isLargeFile:z,isBinary:w,isTruncated:_,isUntracked:$}=A,{columns:O}=PA(),H;A:{if(!K){let R;if(q[0]===Symbol.for("react.memo_cache_sentinel"))R={firstLine:null,fileContent:void 0},q[0]=R;else R=q[0];H=R;break A}let V,N;if(q[1]!==K){let R=DOz(I1(),K);V=HXq(R),N=V?.split(` `)[0]??null,q[1]=K,q[2]=V,q[3]=N}else V=q[2],N=q[3];let v=V??void 0,y;if(q[4]!==N||q[5]!==v)y={firstLine:N,fileContent:v},q[4]=N,q[5]=v,q[6]=y;else y=q[6];H=y}let{firstLine:j,fileContent:J}=H;if($){let V;if(q[7]!==K)V=ew.default.createElement(T,{bold:!0},K),q[7]=K,q[8]=V;else V=q[8];let N;if(q[9]===Symbol.for("react.memo_cache_sentinel"))N=ew.default.createElement(T,{dimColor:!0}," (untracked)"),q[9]=N;else N=q[9];let v;if(q[10]!==V)v=ew.default.createElement(m,null,V,N),q[10]=V,q[11]=v;else v=q[11];let y;if(q[12]===Symbol.for("react.memo_cache_sentinel"))y=ew.default.createElement(CE,{padding:4}),q[12]=y;else y=q[12];let R;if(q[13]===Symbol.for("react.memo_cache_sentinel"))R=ew.default.createElement(T,{dimColor:!0,italic:!0},"New file not yet staged."),q[13]=R;else R=q[13];let h;if(q[14]!==K)h=ew.default.createElement(m,{flexDirection:"column"},R,ew.default.createElement(T,{dimColor:!0,italic:!0},"Run `git add ",K,"` to see line counts.")),q[14]=K,q[15]=h;else h=q[15];let B;if(q[16]!==v||q[17]!==h)B=ew.default.createElement(m,{flexDirection:"column",width:"100%"},v,y,h),q[16]=v,q[17]=h,q[18]=B;else B=q[18];return B}if(w){let V;if(q[19]!==K)V=ew.default.createElement(m,null,ew.default.createElement(T,{bold:!0},K)),q[19]=K,q[20]=V;else V=q[20];let N;if(q[21]===Symbol.for("react.memo_cache_sentinel"))N=ew.default.createElement(CE,{padding:4}),q[21]=N;else N=q[21];let v;if(q[22]===Symbol.for("react.memo_cache_sentinel"))v=ew.default.createElement(m,{flexDirection:"column"},ew.default.createElement(T,{dimColor:!0,italic:!0},"Binary file - cannot display diff")),q[22]=v;else v=q[22];let y;if(q[23]!==V)y=ew.default.createElement(m,{flexDirection:"column",width:"100%"},V,N,v),q[23]=V,q[24]=y;else y=q[24];return y}if(z){let V;if(q[25]!==K)V=ew.default.createElement(m,null,ew.default.createElement(T,{bold:!0},K)),q[25]=K,q[26]=V;else V=q[26];let N;if(q[27]===Symbol.for("react.memo_cache_sentinel"))N=ew.default.createElement(CE,{padding:4}),q[27]=N;else N=q[27];let v;if(q[28]===Symbol.for("react.memo_cache_sentinel"))v=ew.default.createElement(m,{flexDirection:"column"},ew.default.createElement(T,{dimColor:!0,italic:!0},"Large file - diff exceeds 1 MB limit")),q[28]=v;else v=q[28];let y;if(q[29]!==V)y=ew.default.createElement(m,{flexDirection:"column",width:"100%"},V,N,v),q[29]=V,q[30]=y;else y=q[30];return y}let M;if(q[31]!==K)M=ew.default.createElement(T,{bold:!0},K),q[31]=K,q[32]=M;else M=q[32];let D;if(q[33]!==_)D=_&&ew.default.createElement(T,{dimColor:!0}," (truncated)"),q[33]=_,q[34]=D;else D=q[34];let X;if(q[35]!==M||q[36]!==D)X=ew.default.createElement(m,null,M,D),q[35]=M,q[36]=D,q[37]=X;else X=q[37];let P;if(q[38]===Symbol.for("react.memo_cache_sentinel"))P=ew.default.createElement(CE,{padding:4}),q[38]=P;else P=q[38];let W;if(q[39]!==O||q[40]!==J||q[41]!==K||q[42]!==j||q[43]!==Y)W=Y.length===0?ew.default.createElement(T,{dimColor:!0},"No diff content"):Y.map((V,N)=>ew.default.createElement(Ev,{key:N,patch:V,filePath:K,firstLine:j,fileContent:J,dim:!1,width:O-2-2})),q[39]=O,q[40]=J,q[41]=K,q[42]=j,q[43]=Y,q[44]=W;else W=q[44];let Z;if(q[45]!==W)Z=ew.default.createElement(m,{flexDirection:"column"},W),q[45]=W,q[46]=Z;else Z=q[46];let G;if(q[47]!==_)G=_&&ew.default.createElement(T,{dimColor:!0,italic:!0},"… diff truncated (exceeded 400 line limit)"),q[47]=_,q[48]=G;else G=q[48];let f;if(q[49]!==X||q[50]!==Z||q[51]!==G)f=ew.default.createElement(m,{flexDirection:"column",width:"100%"},X,P,Z,G),q[49]=X,q[50]=Z,q[51]=G,q[52]=f;else f=q[52];return f}var ew;var OXq=k(()=>{K1();n6();XA6();p7();W7();xq();gg6();ew=e(W6(),1)});var jXq={};m1(jXq,{DiffDialog:()=>POz});function XOz(A){let q=Array.from(A.files.values()).map((Y)=>({path:Y.filePath,linesAdded:Y.linesAdded,linesRemoved:Y.linesRemoved,isBinary:!1,isLargeFile:!1,isTruncated:!1,isNewFile:Y.isNewFile})).sort((Y,z)=>Y.path.localeCompare(z.path)),K=new Map;for(let Y of A.files.values())K.set(Y.filePath,Y.hunks);return{stats:{filesCount:A.stats.filesChanged,linesAdded:A.stats.linesAdded,linesRemoved:A.stats.linesRemoved},files:q,hunks:K,loading:!1}}function POz(A){let q=Y6(81),{messages:K,onDone:Y}=A,z=AXq(),w=YXq(K),[_,$]=$r.useState("list"),[O,H]=$r.useState(0),[j,J]=$r.useState(0),M;if(q[0]===Symbol.for("react.memo_cache_sentinel"))M={type:"current"},q[0]=M;else M=q[0];let D;if(q[1]!==w){D=[M];for(let y6 of w)D.push({type:"turn",turnIndex:y6.turnIndex});q[1]=w,q[2]=D}else D=q[2];let X=D,P;if(q[3]!==z||q[4]!==j||q[5]!==X||q[6]!==w){A:{let y6=X[j];if(!y6||y6.type==="current"){P=z;break A}let C6;if(q[8]!==y6)C6=(f6)=>f6.turnIndex===y6.turnIndex,q[8]=y6,q[9]=C6;else C6=q[9];let h6=w.find(C6);if(!h6){P=z;break A}P=XOz(h6)}q[3]=z,q[4]=j,q[5]=X,q[6]=w,q[7]=P}else P=q[7];let W=P,Z=X[j],G;if(q[10]!==Z||q[11]!==w)G=Z?.type==="turn"?w.find((y6)=>y6.turnIndex===Z.turnIndex):null,q[10]=Z,q[11]=w,q[12]=G;else G=q[12];let f=G,V=W.files[O],N;if(q[13]!==W.hunks||q[14]!==V)N=V?W.hunks.get(V.path)||[]:[],q[13]=W.hunks,q[14]=V,q[15]=N;else N=q[15];let v=N,y,R;if(q[16]!==j||q[17]!==X.length)y=()=>{if(j>=X.length)J(Math.max(0,X.length-1))},R=[X.length,j],q[16]=j,q[17]=X.length,q[18]=y,q[19]=R;else y=q[18],R=q[19];$r.useEffect(y,R);let h=$r.useRef(j),B,x;if(q[20]!==j)B=()=>{if(h.current!==j)H(0),h.current=j},x=[j],q[20]=j,q[21]=B,q[22]=x;else B=q[21],x=q[22];$r.useEffect(B,x),wX("diff-dialog");let F,g;if(q[23]!==X.length||q[24]!==_)g=()=>{if(_==="detail")$("list");else if(_==="list"&&X.length>1)J(ZOz)},F=()=>{if(_==="list"&&X.length>1)J((y6)=>Math.min(X.length-1,y6+1))},q[23]=X.length,q[24]=_,q[25]=F,q[26]=g;else F=q[25],g=q[26];let b;if(q[27]!==_)b=()=>{if(_==="detail")$("list")},q[27]=_,q[28]=b;else b=q[28];let U;if(q[29]!==V||q[30]!==_)U=()=>{if(_==="list"&&V)$("detail")},q[29]=V,q[30]=_,q[31]=U;else U=q[31];let d;if(q[32]!==_)d=()=>{if(_==="list")H(WOz)},q[32]=_,q[33]=d;else d=q[33];let l;if(q[34]!==W.files.length||q[35]!==_)l=()=>{if(_==="list")H((y6)=>Math.min(W.files.length-1,y6+1))},q[34]=W.files.length,q[35]=_,q[36]=l;else l=q[36];let t;if(q[37]!==F||q[38]!==b||q[39]!==U||q[40]!==d||q[41]!==l||q[42]!==g)t={"diff:previousSource":g,"diff:nextSource":F,"diff:back":b,"diff:viewDetails":U,"diff:previousFile":d,"diff:nextFile":l},q[37]=F,q[38]=b,q[39]=U,q[40]=d,q[41]=l,q[42]=g,q[43]=t;else t=q[43];let s;if(q[44]===Symbol.for("react.memo_cache_sentinel"))s={context:"DiffDialog"},q[44]=s;else s=q[44];f7(t,s);let H6;if(q[45]!==W.stats)H6=W.stats?S$.default.createElement(T,{dimColor:!0},W.stats.filesCount," file",W.stats.filesCount!==1?"s":""," changed",W.stats.linesAdded>0&&S$.default.createElement(T,{color:"diffAddedWord"}," +",W.stats.linesAdded),W.stats.linesRemoved>0&&S$.default.createElement(T,{color:"diffRemovedWord"}," -",W.stats.linesRemoved)):null,q[45]=W.stats,q[46]=H6;else H6=q[46];let Z6=H6,G6=f?`Turn ${f.turnIndex}`:"Uncommitted changes",q6=f?f.userPromptPreview?`"${f.userPromptPreview}"`:"":"(git diff HEAD)",w6;if(q[47]!==j||q[48]!==X||q[49]!==w)w6=X.length>1?S$.default.createElement(m,null,j>0&&S$.default.createElement(T,{dimColor:!0},"◀ "),X.map((y6,C6)=>{let h6=C6===j,f6=y6.type==="turn"?w.find((V6)=>V6.turnIndex===y6.turnIndex):null,M6=y6.type==="current"?"Current":`T${f6?.turnIndex??"?"}`;return S$.default.createElement(T,{key:C6,dimColor:!h6,bold:h6},C6>0?" · ":"",M6)}),j0&&W.files.length===0){k6="Too many files to display details";break A}k6="Working tree is clean"}let P6=k6,A6;if(q[51]!==q6)A6=q6&&S$.default.createElement(T,{dimColor:!0}," ",q6),q[51]=q6,q[52]=A6;else A6=q[52];let K6;if(q[53]!==G6||q[54]!==A6)K6=S$.default.createElement(T,null,G6,A6),q[53]=G6,q[54]=A6,q[55]=K6;else K6=q[55];let z6=K6,a;if(q[56]!==Y||q[57]!==_)a=function(){if(_==="detail")$("list");else Y("Diff dialog dismissed",{display:"system"})},q[56]=Y,q[57]=_,q[58]=a;else a=q[58];let r=a,X6;if(q[59]!==_6||q[60]!==X.length||q[61]!==_)X6=(y6)=>y6.pending?S$.default.createElement(T,null,"Press ",y6.keyName," again to exit"):_==="list"?S$.default.createElement(e8,null,X.length>1&&S$.default.createElement(T,null,"←/→ source"),S$.default.createElement(T,null,"↑/↓ select"),S$.default.createElement(T,null,"Enter view"),S$.default.createElement(T,null,_6," close")):S$.default.createElement(e8,null,S$.default.createElement(T,null,"← back"),S$.default.createElement(T,null,_6," close")),q[59]=_6,q[60]=X.length,q[61]=_,q[62]=X6;else X6=q[62];let O6;if(q[63]!==W.files||q[64]!==P6||q[65]!==V?.isBinary||q[66]!==V?.isLargeFile||q[67]!==V?.isTruncated||q[68]!==V?.isUntracked||q[69]!==V?.path||q[70]!==v||q[71]!==O||q[72]!==_)O6=W.files.length===0?S$.default.createElement(m,{marginTop:1},S$.default.createElement(T,{dimColor:!0},P6)):_==="list"?S$.default.createElement(m,{flexDirection:"column",marginTop:1},S$.default.createElement(wXq,{files:W.files,selectedIndex:O})):S$.default.createElement(m,{flexDirection:"column",marginTop:1},S$.default.createElement($Xq,{filePath:V?.path||"",hunks:v,isLargeFile:V?.isLargeFile,isBinary:V?.isBinary,isTruncated:V?.isTruncated,isUntracked:V?.isUntracked})),q[63]=W.files,q[64]=P6,q[65]=V?.isBinary,q[66]=V?.isLargeFile,q[67]=V?.isTruncated,q[68]=V?.isUntracked,q[69]=V?.path,q[70]=v,q[71]=O,q[72]=_,q[73]=O6;else O6=q[73];let D6;if(q[74]!==r||q[75]!==j6||q[76]!==Z6||q[77]!==X6||q[78]!==O6||q[79]!==z6)D6=S$.default.createElement(l8,{title:z6,onCancel:r,color:"background",inputGuide:X6},j6,Z6,O6),q[74]=r,q[75]=j6,q[76]=Z6,q[77]=X6,q[78]=O6,q[79]=z6,q[80]=D6;else D6=q[80];return D6}function WOz(A){return Math.max(0,A-1)}function ZOz(A){return Math.max(0,A-1)}var S$,$r;var JXq=k(()=>{K1();n6();H7();PL();qXq();zXq();_Xq();OXq();LJ();zq();eq();S$=e(W6(),1),$r=e(W6(),1)});var MXq={};m1(MXq,{call:()=>GOz});var Hn8,GOz=async(A,q)=>{let{DiffDialog:K}=await Promise.resolve().then(() => (JXq(),jXq));return Hn8.createElement(K,{messages:q.messages,onDone:A})};var DXq=k(()=>{Hn8=e(W6(),1)});var XXq;var PXq=k(()=>{XXq={type:"local-jsx",name:"diff",description:"View uncommitted changes and per-turn diffs",isEnabled:()=>!0,isHidden:!1,load:()=>Promise.resolve().then(() => (DXq(),MXq)),userFacingName(){return this.name}}});var WXq;var ZXq=k(()=>{WXq={isEnabled:()=>!1,isHidden:!0,name:"stub"}});function RC1(){let A=Y6(1),q;if(A[0]===Symbol.for("react.memo_cache_sentinel"))q=na6.createElement(T,{color:"permission"},"Press ",na6.createElement(T,{bold:!0},"Enter")," to continue…"),A[0]=q;else q=A[0];return q}var na6;var jn8=k(()=>{K1();n6();na6=e(W6(),1)});function CC1(){let A=Y6(6),{addNotification:q,removeNotification:K}=Vq(),[Y,z]=SC1.useState(fOz),w;if(A[0]===Symbol.for("react.memo_cache_sentinel"))w=()=>{let{errors:H}=Sn();z(H)},A[0]=w;else w=A[0];jG6(w);let $,O;if(A[1]!==q||A[2]!==Y||A[3]!==K)$=()=>{if(Lq())return;if(Y.length>0){let H=`Found ${Y.length} settings ${Y.length===1?"issue":"issues"} · /doctor for details`;q({key:GXq,text:H,color:"warning",priority:"high",timeoutMs:60000})}else K(GXq)},O=[Y,q,K],A[1]=q,A[2]=Y,A[3]=K,A[4]=$,A[5]=O;else $=A[4],O=A[5];return SC1.useEffect($,O),Y}function fOz(){let{errors:A}=Sn();return A}var SC1,GXq="settings-errors";var Jn8=k(()=>{K1();Q1();Mr6();R01();qw();SC1=e(W6(),1)});function TOz(A,q,K,Y){if(!Bw(A))return A;q=CB(q,A);var z=-1,w=q.length,_=w-1,$=A;while($!=null&&++z{vR6();MH6();ey6();Pf();N46();fXq=TOz});function VOz(A,q,K,Y){return Y=typeof Y=="function"?Y:void 0,A==null?A:fXq(A,q,K,Y)}var VXq;var NXq=k(()=>{TXq();VXq=VOz});function vXq(A,q={}){let{showValues:K=!0,hideFunctions:Y=!1,themeName:z="dark",treeCharColors:w={}}=q,_=[],$=new WeakSet;function O(J,M){if(!M)return J;return uA(M,z)(J)}function H(J,M,D,X=0){if(typeof J==="string"){_.push(M+O(J,w.value));return}if(typeof J!=="object"||J===null){if(K){let W=String(J);_.push(M+O(W,w.value))}return}if($.has(J)){_.push(M+O("[Circular]",w.value));return}$.add(J);let P=Object.keys(J).filter((W)=>{let Z=J[W];if(Y&&typeof Z==="function")return!1;return!0});P.forEach((W,Z)=>{let G=J[W],f=Z===P.length-1,V=X===0&&Z===0?"":M,N=f?ra6.lastBranch:ra6.branch,v=O(N,w.treeChar),y=W.trim()===""?"":O(W,w.key),R=V+v+(y?" "+y:""),h=W.trim()!=="";if(G&&typeof G==="object"&&$.has(G)){let B=O("[Circular]",w.value);_.push(R+(h?": ":R?" ":"")+B)}else if(G&&typeof G==="object"&&!Array.isArray(G)){_.push(R);let B=f?ra6.empty:ra6.line,x=O(B,w.treeChar),F=V+x+" ";H(G,F,f,X+1)}else if(Array.isArray(G))_.push(R+(h?": ":R?" ":"")+"[Array("+G.length+")]");else if(K){let B=typeof G==="function"?"[Function]":String(G),x=O(B,w.value);R+=(h?": ":R?" ":"")+x,_.push(R)}else _.push(R)})}let j=Object.keys(A);if(j.length===0)return O("(empty)",w.value);if(j.length===1&&j[0]!==void 0&&j[0].trim()===""&&typeof A[j[0]]==="string"){let J=j[0],M=O(ra6.lastBranch,w.treeChar),D=O(A[J],w.value);return M+" "+D}return H(A,"",!0),_.join(` `)}var ra6;var kXq=k(()=>{t7();We();ra6={branch:q1.lineUpDownRight,lastBranch:q1.lineUpRight,line:q1.lineVertical,empty:" "}});function NOz(A){let q={};return A.forEach((K)=>{if(!K.path){q[""]=K.message;return}let Y=K.path.split("."),z=K.path;if(K.invalidValue!==null&&K.invalidValue!==void 0&&Y.length>0){let w=[];for(let _=0;_{let J=O[j]||[];J.sort(kOz);let M=NOz(J),D=new Map;J.forEach((P)=>{if(P.suggestion||P.docLink){let W=`${P.suggestion||""}|${P.docLink||""}`;if(!D.has(W))D.set(W,{suggestion:P.suggestion,docLink:P.docLink})}});let X=vXq(M,{showValues:!0,themeName:Y,treeCharColors:{treeChar:"inactive",key:"text",value:"inactive"}});return DX.createElement(m,{key:j,flexDirection:"column"},DX.createElement(T,null,j),DX.createElement(m,{marginLeft:1},DX.createElement(T,{dimColor:!0},X)),D.size>0&&DX.createElement(m,{flexDirection:"column",marginTop:1},Array.from(D.values()).map(vOz)))}),q[0]=K,q[1]=Y,q[2]=z,q[3]=w,q[4]=_}else z=q[2],w=q[3],_=q[4];let $;if(q[5]!==z||q[6]!==w||q[7]!==_)$=DX.createElement(z,{flexDirection:w},_),q[5]=z,q[6]=w,q[7]=_,q[8]=$;else $=q[8];return $}function vOz(A,q){return DX.createElement(m,{key:`suggestion-pair-${q}`,flexDirection:"column",marginBottom:1},A.suggestion&&DX.createElement(T,{dimColor:!0,wrap:"wrap"},A.suggestion),A.docLink&&DX.createElement(T,{dimColor:!0,wrap:"wrap"},"Learn more: ",A.docLink))}function kOz(A,q){if(!A.path&&q.path)return-1;if(A.path&&!q.path)return 1;return(A.path||"").localeCompare(q.path||"")}function EOz(A,q){let K=q.file||"(file not specified)";if(!A[K])A[K]=[];return A[K].push(q),A}var DX;var Mn8=k(()=>{K1();n6();NXq();kXq();DX=e(W6(),1)});function LOz(A){let q=Y6(26),{scope:K,parsingErrors:Y,warnings:z}=A,w=Y.length>0,_=z.length>0;if(!w&&!_)return null;let $;if(q[0]!==w||q[1]!==_)$=(w||_)&&VO.default.createElement(T,{color:w?"error":"warning"},"[",w?"Failed to parse":"Contains warnings","]"," "),q[0]=w,q[1]=_,q[2]=$;else $=q[2];let O;if(q[3]!==K)O=Xl6(K),q[3]=K,q[4]=O;else O=q[4];let H;if(q[5]!==O)H=VO.default.createElement(T,null,O),q[5]=O,q[6]=H;else H=q[6];let j;if(q[7]!==$||q[8]!==H)j=VO.default.createElement(m,null,$,H),q[7]=$,q[8]=H,q[9]=j;else j=q[9];let J;if(q[10]===Symbol.for("react.memo_cache_sentinel"))J=VO.default.createElement(T,{dimColor:!0},"Location: "),q[10]=J;else J=q[10];let M;if(q[11]!==K)M=EG(K),q[11]=K,q[12]=M;else M=q[12];let D;if(q[13]!==M)D=VO.default.createElement(m,null,J,VO.default.createElement(T,{dimColor:!0},M)),q[13]=M,q[14]=D;else D=q[14];let X;if(q[15]!==Y)X=Y.map(ROz),q[15]=Y,q[16]=X;else X=q[16];let P;if(q[17]!==z)P=z.map(yOz),q[17]=z,q[18]=P;else P=q[18];let W;if(q[19]!==X||q[20]!==P)W=VO.default.createElement(m,{marginLeft:1,flexDirection:"column"},X,P),q[19]=X,q[20]=P,q[21]=W;else W=q[21];let Z;if(q[22]!==W||q[23]!==j||q[24]!==D)Z=VO.default.createElement(m,{flexDirection:"column",marginTop:1},j,D,W),q[22]=W,q[23]=j,q[24]=D,q[25]=Z;else Z=q[25];return Z}function yOz(A,q){let K=A.mcpErrorMetadata?.serverName;return VO.default.createElement(m,{key:`warning-${q}`},VO.default.createElement(T,null,VO.default.createElement(T,{dimColor:!0},"└ "),VO.default.createElement(T,{color:"warning"},"[Warning]"),VO.default.createElement(T,{dimColor:!0}," ",K&&`[${K}] `,A.path&&A.path!==""?`${A.path}: `:"",A.message)))}function ROz(A,q){let K=A.mcpErrorMetadata?.serverName;return VO.default.createElement(m,{key:`error-${q}`},VO.default.createElement(T,null,VO.default.createElement(T,{dimColor:!0},"└ "),VO.default.createElement(T,{color:"error"},"[Error]"),VO.default.createElement(T,{dimColor:!0}," ",K&&`[${K}] `,A.path&&A.path!==""?`${A.path}: `:"",A.message)))}function bC1(){let A=Y6(2),q,K;if(A[0]===Symbol.for("react.memo_cache_sentinel")){K=Symbol.for("react.early_return_sentinel");A:{let Y=UJ("user"),z=UJ("project"),w=UJ("local"),_=UJ("enterprise"),$=[{scope:"user",config:Y},{scope:"project",config:z},{scope:"local",config:w},{scope:"enterprise",config:_}],O=$.some(hOz),H=$.some(COz);if(!O&&!H){K=null;break A}q=VO.default.createElement(m,{flexDirection:"column",marginTop:1,marginBottom:1},VO.default.createElement(T,{bold:!0},"MCP Config Diagnostics"),VO.default.createElement(m,{marginTop:1},VO.default.createElement(T,{dimColor:!0},"For help configuring MCP servers, see:"," ",VO.default.createElement(d7,{url:"https://code.claude.com/docs/en/mcp"},"https://code.claude.com/docs/en/mcp"))),$.map(SOz))}A[0]=q,A[1]=K}else q=A[0],K=A[1];if(K!==Symbol.for("react.early_return_sentinel"))return K;return q}function SOz(A){let{scope:q,config:K}=A;return VO.default.createElement(LOz,{key:q,scope:q,parsingErrors:IC1(K.errors,"fatal"),warnings:IC1(K.errors,"warning")})}function COz(A){let{config:q}=A;return IC1(q.errors,"warning").length>0}function hOz(A){let{config:q}=A;return IC1(q.errors,"fatal").length>0}function IC1(A,q){return A.filter((K)=>K.mcpErrorMetadata?.severity===q)}var VO;var Dn8=k(()=>{K1();n6();LG();YD();n6();VO=e(W6(),1)});function EXq(){let A=Y6(2);if(!eE())return null;let q,K;if(A[0]===Symbol.for("react.memo_cache_sentinel")){K=Symbol.for("react.early_return_sentinel");A:{let Y=Iw4();if(Y.length===0){K=null;break A}let z=Y.filter(uOz),w=Y.filter(xOz);q=qM.default.createElement(m,{flexDirection:"column",marginTop:1,marginBottom:1},qM.default.createElement(T,{bold:!0,color:z.length>0?"error":"warning"},"Keybinding Configuration Issues"),qM.default.createElement(m,null,qM.default.createElement(T,{dimColor:!0},"Location: "),qM.default.createElement(T,{dimColor:!0},cY6())),qM.default.createElement(m,{marginLeft:1,flexDirection:"column",marginTop:1},z.map(bOz),w.map(IOz)))}A[0]=q,A[1]=K}else q=A[0],K=A[1];if(K!==Symbol.for("react.early_return_sentinel"))return K;return q}function IOz(A,q){return qM.default.createElement(m,{key:`warning-${q}`,flexDirection:"column"},qM.default.createElement(m,null,qM.default.createElement(T,{dimColor:!0},"└ "),qM.default.createElement(T,{color:"warning"},"[Warning]"),qM.default.createElement(T,{dimColor:!0}," ",A.message)),A.suggestion&&qM.default.createElement(m,{marginLeft:3},qM.default.createElement(T,{dimColor:!0},"→ ",A.suggestion)))}function bOz(A,q){return qM.default.createElement(m,{key:`error-${q}`,flexDirection:"column"},qM.default.createElement(m,null,qM.default.createElement(T,{dimColor:!0},"└ "),qM.default.createElement(T,{color:"error"},"[Error]"),qM.default.createElement(T,{dimColor:!0}," ",A.message)),A.suggestion&&qM.default.createElement(m,{marginLeft:3},qM.default.createElement(T,{dimColor:!0},"→ ",A.suggestion)))}function xOz(A){return A.severity==="warning"}function uOz(A){return A.severity==="error"}var qM;var LXq=k(()=>{K1();n6();wi();qM=e(W6(),1)});function oa6(A){if(!A)return 0;return A.activeAgents.filter((q)=>q.source!=="built-in").reduce((q,K)=>{let Y=`${K.agentType}: ${K.whenToUse}`;return q+Iz(Y)},0)}var E_6=15000;var Xn8=k(()=>{UN()});function BOz(A){return A==="projectSettings"||A==="policySettings"||A==="command"}function xC1(A){return aa6(A)}function yXq(A,q,K){let Y=xC1(q.source),z=xC1(K.source),w=q.ruleValue.toolName;if(A==="deny")return`Remove the "${w}" deny rule from ${Y}, or remove the specific allow rule from ${z}`;return`Remove the "${w}" ask rule from ${Y}, or remove the specific allow rule from ${z}`}function mOz(A,q,K){let{toolName:Y,ruleContent:z}=A.ruleValue;if(z===void 0)return{shadowed:!1};let w=q.find((_)=>_.ruleValue.toolName===Y&&_.ruleValue.ruleContent===void 0);if(!w)return{shadowed:!1};if(Y===f4&&K.sandboxAutoAllowEnabled){if(!BOz(w.source))return{shadowed:!1}}return{shadowed:!0,shadowedBy:w,shadowType:"ask"}}function gOz(A,q){let{toolName:K,ruleContent:Y}=A.ruleValue;if(Y===void 0)return{shadowed:!1};let z=q.find((w)=>w.ruleValue.toolName===K&&w.ruleValue.ruleContent===void 0);if(!z)return{shadowed:!1};return{shadowed:!0,shadowedBy:z,shadowType:"deny"}}function mk6(A,q){let K=[],Y=gk6(A),z=Fk6(A),w=JU(A);for(let _ of Y){let $=gOz(_,w);if($.shadowed){let H=xC1($.shadowedBy.source);K.push({rule:_,reason:`Blocked by "${$.shadowedBy.ruleValue.toolName}" deny rule (from ${H})`,shadowedBy:$.shadowedBy,shadowType:"deny",fix:yXq("deny",$.shadowedBy,_)});continue}let O=mOz(_,z,q);if(O.shadowed){let H=xC1(O.shadowedBy.source);K.push({rule:_,reason:`Shadowed by "${O.shadowedBy.ruleValue.toolName}" ask rule (from ${H})`,shadowedBy:O.shadowedBy,shadowType:"ask",fix:yXq("ask",O.shadowedBy,_)})}}return K}var uC1=k(()=>{xJ()});async function FOz(){let A=G66();if(A.length===0)return null;let q=A.sort((Y,z)=>z.content.length-Y.content.length).map((Y)=>`${Y.path}: ${Y.content.length.toLocaleString()} chars`);return{type:"claudemd_files",severity:"warning",message:A.length===1?`Large CLAUDE.md file detected (${A[0].content.length.toLocaleString()} chars > ${OF.toLocaleString()})`:`${A.length} large CLAUDE.md files detected (each > ${OF.toLocaleString()} chars)`,details:q,currentValue:A.length,threshold:OF}}async function QOz(A){if(!A)return null;let q=oa6(A);if(q<=E_6)return null;let K=A.activeAgents.filter((z)=>z.source!=="built-in").map((z)=>{let w=`${z.agentType}: ${z.whenToUse}`;return{name:z.agentType,tokens:Iz(w)}}).sort((z,w)=>w.tokens-z.tokens),Y=K.slice(0,5).map((z)=>`${z.name}: ~${z.tokens.toLocaleString()} tokens`);if(K.length>5)Y.push(`(${K.length-5} more custom agents)`);return{type:"agent_descriptions",severity:"warning",message:`Large agent descriptions (~${q.toLocaleString()} tokens > ${E_6.toLocaleString()})`,details:Y,currentValue:q,threshold:E_6}}async function UOz(A,q,K){let Y=A.filter((z)=>z.isMcp);if(Y.length===0)return null;try{let z=d5(),{mcpToolTokens:w,mcpToolDetails:_}=await Pn8(A,q,K,z);if(w<=Qk6)return null;let $=new Map;for(let j of _){let M=j.name.split("__")[1]||"unknown",D=$.get(M)||{count:0,tokens:0};$.set(M,{count:D.count+1,tokens:D.tokens+j.tokens})}let O=Array.from($.entries()).sort((j,J)=>J[1].tokens-j[1].tokens),H=O.slice(0,5).map(([j,J])=>`${j}: ${J.count} tools (~${J.tokens.toLocaleString()} tokens)`);if(O.length>5)H.push(`(${O.length-5} more servers)`);return{type:"mcp_tools",severity:"warning",message:`Large MCP tools context (~${w.toLocaleString()} tokens > ${Qk6.toLocaleString()})`,details:H,currentValue:w,threshold:Qk6}}catch(z){let w=Y.reduce((_,$)=>{let O=($.name?.length||0)+$.description.length;return _+Iz(O.toString())},0);if(w<=Qk6)return null;return{type:"mcp_tools",severity:"warning",message:`Large MCP tools context (~${w.toLocaleString()} tokens estimated > ${Qk6.toLocaleString()})`,details:[`${Y.length} MCP tools detected (token count estimated)`],currentValue:w,threshold:Qk6}}}async function pOz(A){let q=await A(),K=mA.isSandboxingEnabled()&&mA.isAutoAllowBashIfSandboxedEnabled(),Y=mk6(q,{sandboxAutoAllowEnabled:K});if(Y.length===0)return null;let z=Y.flatMap((w)=>[`${K5(w.rule.ruleValue)}: ${w.reason}`,` Fix: ${w.fix}`]);return{type:"unreachable_rules",severity:"warning",message:`${Y.length} unreachable permission rule${Y.length===1?"":"s"} detected`,details:z,currentValue:Y.length,threshold:0}}async function RXq(A,q,K){let[Y,z,w,_]=await Promise.all([FOz(),QOz(q),UOz(A,K,q),pOz(K)]);return{claudeMdWarning:Y,agentWarning:z,mcpWarning:w,unreachableRulesWarning:_}}var Qk6=25000;var SXq=k(()=>{sD();Xn8();la6();UN();Xq();uC1();Pw();E0()});function CXq(){let A=Y6(2);if(!mA.isSupportedPlatform())return null;if(!mA.isSandboxEnabledInSettings())return null;let q,K;if(A[0]===Symbol.for("react.memo_cache_sentinel")){K=Symbol.for("react.early_return_sentinel");A:{let Y=mA.checkDependencies(),z=Y.errors.length>0,w=Y.warnings.length>0;if(!z&&!w){K=null;break A}q=lP.default.createElement(m,{flexDirection:"column"},lP.default.createElement(T,{bold:!0},"Sandbox"),lP.default.createElement(T,null,"└ Status: ",lP.default.createElement(T,{color:z?"error":"warning"},z?"Missing dependencies":"Available (with warnings)")),Y.errors.map(cOz),Y.warnings.map(dOz),z&&lP.default.createElement(T,{dimColor:!0},"└ Run /sandbox for install instructions"))}A[0]=q,A[1]=K}else q=A[0],K=A[1];if(K!==Symbol.for("react.early_return_sentinel"))return K;return q}function dOz(A,q){return lP.default.createElement(T,{key:q,color:"warning"},"└ ",A)}function cOz(A,q){return lP.default.createElement(T,{key:q,color:"error"},"└ ",A)}var lP;var hXq=k(()=>{K1();n6();Pw();lP=e(W6(),1)});var IXq={};m1(IXq,{Doctor:()=>Zn8});import{join as Wn8}from"path";function lOz(A){let q=Y6(8),{promise:K}=A,Y=K7.use(K);if(!Y.latest){let $;if(q[0]===Symbol.for("react.memo_cache_sentinel"))$=K7.default.createElement(T,{dimColor:!0},"└ Failed to fetch versions"),q[0]=$;else $=q[0];return $}let z;if(q[1]!==Y.stable)z=Y.stable&&K7.default.createElement(T,null,"└ Stable version: ",Y.stable),q[1]=Y.stable,q[2]=z;else z=q[2];let w;if(q[3]!==Y.latest)w=K7.default.createElement(T,null,"└ Latest version: ",Y.latest),q[3]=Y.latest,q[4]=w;else w=q[4];let _;if(q[5]!==z||q[6]!==w)_=K7.default.createElement(K7.default.Fragment,null,z,w),q[5]=z,q[6]=w,q[7]=_;else _=q[7];return _}function Zn8(A){let q=Y6(84),{onDone:K}=A,Y=V1(JHz),z=V1(jHz),w=V1(HHz),_=V1(OHz);z3();let $;if(q[0]!==z)$=z||[],q[0]=z,q[1]=$;else $=q[1];let O=$,[H,j]=L_6.useState(null),[J,M]=L_6.useState(null),[D,X]=L_6.useState(null),[P,W]=L_6.useState(null),Z=CC1(),G;if(q[2]===Symbol.for("react.memo_cache_sentinel"))G=j26().then(_Hz),q[2]=G;else G=q[2];let f=G,V=h7()?.autoUpdatesChannel??"latest",N;if(q[3]!==Z)N=Z.filter(wHz),q[3]=Z,q[4]=N;else N=q[4];let v=N,y;if(q[5]===Symbol.for("react.memo_cache_sentinel"))y=[{name:"BASH_MAX_OUTPUT_LENGTH",default:K18,upperLimit:q18},{name:"TASK_MAX_OUTPUT_LENGTH",default:Qc8,upperLimit:Fc8},{name:"CLAUDE_CODE_MAX_OUTPUT_TOKENS",...Ks("claude-opus-4-6")}].map(zHz).filter(YHz),q[5]=y;else y=q[5];let R=y,h,B;if(q[6]!==Y||q[7]!==w||q[8]!==O)h=()=>{j26().then(j),(async()=>{let d6=Wn8(OA(),"agents"),t6=Wn8(DA(),".claude","agents"),{activeAgents:L6,allAgents:u6,failedFiles:e6}=Y,[H1,Z1]=await Promise.all([$3(d6),$3(t6)]),v1={activeAgents:L6.map(KHz),userAgentsDir:d6,projectAgentsDir:t6,userDirExists:H1,projectDirExists:Z1,failedFiles:e6};M(v1);let T6=await RXq(O,{activeAgents:L6,allAgents:u6,failedFiles:e6},async()=>w);if(X(T6),l86()){let v6=Wn8(bE1(),"claude","locks"),A1=lE1(v6),F6=L8q(v6);W({enabled:!0,locks:F6,locksDir:v6,staleLocksCleaned:A1})}else W({enabled:!1,locks:[],locksDir:"",staleLocksCleaned:0})})()},B=[w,O,Y],q[6]=Y,q[7]=w,q[8]=O,q[9]=h,q[10]=B;else h=q[9],B=q[10];L_6.useEffect(h,B);let x;if(q[11]!==K)x=()=>{K("Claude Code diagnostics dismissed",{display:"system"})},q[11]=K,q[12]=x;else x=q[12];let F=x,g;if(q[13]!==F)g={"confirm:yes":F,"confirm:no":F},q[13]=F,q[14]=g;else g=q[14];let b;if(q[15]===Symbol.for("react.memo_cache_sentinel"))b={context:"Confirmation"},q[15]=b;else b=q[15];if(f7(g,b),!H){let d6;if(q[16]===Symbol.for("react.memo_cache_sentinel"))d6=K7.default.createElement(m9,null,K7.default.createElement(T,{dimColor:!0},"Checking installation status…")),q[16]=d6;else d6=q[16];return d6}let U;if(q[17]===Symbol.for("react.memo_cache_sentinel"))U=K7.default.createElement(T,{bold:!0},"Diagnostics"),q[17]=U;else U=q[17];let d;if(q[18]!==H.installationType||q[19]!==H.version)d=K7.default.createElement(T,null,"└ Currently running: ",H.installationType," (",H.version,")"),q[18]=H.installationType,q[19]=H.version,q[20]=d;else d=q[20];let l;if(q[21]!==H.packageManager)l=H.packageManager&&K7.default.createElement(T,null,"└ Package manager: ",H.packageManager),q[21]=H.packageManager,q[22]=l;else l=q[22];let t;if(q[23]!==H.installationPath)t=K7.default.createElement(T,null,"└ Path: ",H.installationPath),q[23]=H.installationPath,q[24]=t;else t=q[24];let s;if(q[25]!==H.invokedBinary)s=K7.default.createElement(T,null,"└ Invoked: ",H.invokedBinary),q[25]=H.invokedBinary,q[26]=s;else s=q[26];let H6;if(q[27]!==H.configInstallMethod)H6=K7.default.createElement(T,null,"└ Config install method: ",H.configInstallMethod),q[27]=H.configInstallMethod,q[28]=H6;else H6=q[28];let Z6=H.ripgrepStatus.working?"OK":"Not working",G6=H.ripgrepStatus.mode==="embedded"?"bundled":H.ripgrepStatus.mode==="builtin"?"vendor":H.ripgrepStatus.systemPath||"system",q6;if(q[29]!==Z6||q[30]!==G6)q6=K7.default.createElement(T,null,"└ Search: ",Z6," (",G6,")"),q[29]=Z6,q[30]=G6,q[31]=q6;else q6=q[31];let w6;if(q[32]!==H.recommendation)w6=H.recommendation&&K7.default.createElement(K7.default.Fragment,null,K7.default.createElement(T,null),K7.default.createElement(T,{color:"warning"},"Recommendation: ",H.recommendation.split(` `)[0]),K7.default.createElement(T,{dimColor:!0},H.recommendation.split(` `)[1])),q[32]=H.recommendation,q[33]=w6;else w6=q[33];let j6;if(q[34]!==H.multipleInstallations)j6=H.multipleInstallations.length>1&&K7.default.createElement(K7.default.Fragment,null,K7.default.createElement(T,null),K7.default.createElement(T,{color:"warning"},"Warning: Multiple installations found"),H.multipleInstallations.map(qHz)),q[34]=H.multipleInstallations,q[35]=j6;else j6=q[35];let _6;if(q[36]!==H.warnings)_6=H.warnings.length>0&&K7.default.createElement(K7.default.Fragment,null,K7.default.createElement(T,null),H.warnings.map(AHz)),q[36]=H.warnings,q[37]=_6;else _6=q[37];let k6;if(q[38]!==v)k6=v.length>0&&K7.default.createElement(m,{flexDirection:"column",marginTop:1,marginBottom:1},K7.default.createElement(T,{bold:!0},"Invalid Settings"),K7.default.createElement(hC1,{errors:v})),q[38]=v,q[39]=k6;else k6=q[39];let P6;if(q[40]!==d||q[41]!==l||q[42]!==t||q[43]!==s||q[44]!==H6||q[45]!==q6||q[46]!==w6||q[47]!==j6||q[48]!==_6||q[49]!==k6)P6=K7.default.createElement(m,{flexDirection:"column"},U,d,l,t,s,H6,q6,w6,j6,_6,k6),q[40]=d,q[41]=l,q[42]=t,q[43]=s,q[44]=H6,q[45]=q6,q[46]=w6,q[47]=j6,q[48]=_6,q[49]=k6,q[50]=P6;else P6=q[50];let A6;if(q[51]===Symbol.for("react.memo_cache_sentinel"))A6=K7.default.createElement(T,{bold:!0},"Updates"),q[51]=A6;else A6=q[51];let K6=H.packageManager?"Managed by package manager":H.autoUpdates,z6;if(q[52]!==K6)z6=K7.default.createElement(T,null,"└ Auto-updates:"," ",K6),q[52]=K6,q[53]=z6;else z6=q[53];let a;if(q[54]!==H.hasUpdatePermissions)a=H.hasUpdatePermissions!==null&&K7.default.createElement(T,null,"└ Update permissions:"," ",H.hasUpdatePermissions?"Yes":"No (requires sudo)"),q[54]=H.hasUpdatePermissions,q[55]=a;else a=q[55];let r;if(q[56]===Symbol.for("react.memo_cache_sentinel"))r=K7.default.createElement(T,null,"└ Auto-update channel: ",V),q[56]=r;else r=q[56];let X6;if(q[57]===Symbol.for("react.memo_cache_sentinel"))X6=K7.default.createElement(K7.Suspense,{fallback:null},K7.default.createElement(lOz,{promise:f})),q[57]=X6;else X6=q[57];let O6;if(q[58]!==z6||q[59]!==a)O6=K7.default.createElement(m,{flexDirection:"column"},A6,z6,a,r,X6),q[58]=z6,q[59]=a,q[60]=O6;else O6=q[60];let D6,y6,C6,h6;if(q[61]===Symbol.for("react.memo_cache_sentinel"))D6=K7.default.createElement(CXq,null),y6=K7.default.createElement(bC1,null),C6=K7.default.createElement(EXq,null),h6=R.length>0&&K7.default.createElement(m,{flexDirection:"column"},K7.default.createElement(T,{bold:!0},"Environment Variables"),R.map(eOz)),q[61]=D6,q[62]=y6,q[63]=C6,q[64]=h6;else D6=q[61],y6=q[62],C6=q[63],h6=q[64];let f6;if(q[65]!==P)f6=P?.enabled&&K7.default.createElement(m,{flexDirection:"column"},K7.default.createElement(T,{bold:!0},"Version Locks"),P.staleLocksCleaned>0&&K7.default.createElement(T,{dimColor:!0},"└ Cleaned ",P.staleLocksCleaned," stale lock(s)"),P.locks.length===0?K7.default.createElement(T,{dimColor:!0},"└ No active version locks"):P.locks.map(tOz)),q[65]=P,q[66]=f6;else f6=q[66];let M6;if(q[67]!==J)M6=J?.failedFiles&&J.failedFiles.length>0&&K7.default.createElement(m,{flexDirection:"column"},K7.default.createElement(T,{bold:!0,color:"error"},"Agent Parse Errors"),K7.default.createElement(T,{color:"error"},"└ Failed to parse ",J.failedFiles.length," agent file(s):"),J.failedFiles.map(sOz)),q[67]=J,q[68]=M6;else M6=q[68];let V6;if(q[69]!==_)V6=_.length>0&&K7.default.createElement(m,{flexDirection:"column"},K7.default.createElement(T,{bold:!0,color:"error"},"Plugin Errors"),K7.default.createElement(T,{color:"error"},"└ ",_.length," plugin error(s) detected:"),_.map(aOz)),q[69]=_,q[70]=V6;else V6=q[70];let p6;if(q[71]!==D)p6=D?.unreachableRulesWarning&&K7.default.createElement(m,{flexDirection:"column"},K7.default.createElement(T,{bold:!0,color:"warning"},"Unreachable Permission Rules"),K7.default.createElement(T,null,"└"," ",K7.default.createElement(T,{color:"warning"},q1.warning," ",D.unreachableRulesWarning.message)),D.unreachableRulesWarning.details.map(oOz)),q[71]=D,q[72]=p6;else p6=q[72];let b6;if(q[73]!==D)b6=D&&(D.claudeMdWarning||D.agentWarning||D.mcpWarning)&&K7.default.createElement(m,{flexDirection:"column"},K7.default.createElement(T,{bold:!0},"Context Usage Warnings"),D.claudeMdWarning&&K7.default.createElement(K7.default.Fragment,null,K7.default.createElement(T,null,"└"," ",K7.default.createElement(T,{color:"warning"},q1.warning," ",D.claudeMdWarning.message)),K7.default.createElement(T,null," ","└ Files:"),D.claudeMdWarning.details.map(rOz)),D.agentWarning&&K7.default.createElement(K7.default.Fragment,null,K7.default.createElement(T,null,"└"," ",K7.default.createElement(T,{color:"warning"},q1.warning," ",D.agentWarning.message)),K7.default.createElement(T,null," ","└ Top contributors:"),D.agentWarning.details.map(nOz)),D.mcpWarning&&K7.default.createElement(K7.default.Fragment,null,K7.default.createElement(T,null,"└"," ",K7.default.createElement(T,{color:"warning"},q1.warning," ",D.mcpWarning.message)),K7.default.createElement(T,null," ","└ MCP servers:"),D.mcpWarning.details.map(iOz))),q[73]=D,q[74]=b6;else b6=q[74];let R6;if(q[75]===Symbol.for("react.memo_cache_sentinel"))R6=K7.default.createElement(m,null,K7.default.createElement(RC1,null)),q[75]=R6;else R6=q[75];let x6;if(q[76]!==P6||q[77]!==O6||q[78]!==f6||q[79]!==M6||q[80]!==V6||q[81]!==p6||q[82]!==b6)x6=K7.default.createElement(m9,null,P6,O6,D6,y6,C6,h6,f6,M6,V6,p6,b6,R6),q[76]=P6,q[77]=O6,q[78]=f6,q[79]=M6,q[80]=V6,q[81]=p6,q[82]=b6,q[83]=x6;else x6=q[83];return x6}function iOz(A,q){return K7.default.createElement(T,{key:q,dimColor:!0}," ","└ ",A)}function nOz(A,q){return K7.default.createElement(T,{key:q,dimColor:!0}," ","└ ",A)}function rOz(A,q){return K7.default.createElement(T,{key:q,dimColor:!0}," ","└ ",A)}function oOz(A,q){return K7.default.createElement(T,{key:q,dimColor:!0}," ","└ ",A)}function aOz(A,q){return K7.default.createElement(T,{key:q,dimColor:!0}," ","└ ",A.source||"unknown","plugin"in A&&A.plugin?` [${A.plugin}]`:"",":"," ",ST(A))}function sOz(A,q){return K7.default.createElement(T,{key:q,dimColor:!0}," ","└ ",A.path,": ",A.error)}function tOz(A,q){return K7.default.createElement(T,{key:q},"└ ",A.version,": PID ",A.pid," ",A.isProcessRunning?K7.default.createElement(T,null,"(running)"):K7.default.createElement(T,{color:"warning"},"(stale)"))}function eOz(A,q){return K7.default.createElement(T,{key:q},"└ ",A.name,":"," ",K7.default.createElement(T,{color:A.status==="capped"?"warning":"error"},A.message))}function AHz(A,q){return K7.default.createElement(m,{key:q,flexDirection:"column"},K7.default.createElement(T,{color:"warning"},"Warning: ",A.issue),K7.default.createElement(T,null,"Fix: ",A.fix))}function qHz(A,q){return K7.default.createElement(T,{key:q},"└ ",A.type," at ",A.path)}function KHz(A){return{agentType:A.agentType,source:A.source}}function YHz(A){return A.status!=="valid"}function zHz(A){let q=process.env[A.name],K=Hs(A.name,q,A.default,A.upperLimit);return{name:A.name,...K}}function wHz(A){return A.mcpErrorMetadata===void 0}function _Hz(A){return(A.installationType==="native"?W8q:P8q)().catch($Hz)}function $Hz(){return{latest:null,stable:null}}function OHz(A){return A.plugins.errors}function HHz(A){return A.toolPermissionContext}function jHz(A){return A.mcp.tools}function JHz(A){return A.agentDefinitions}var K7,L_6;var Gn8=k(()=>{K1();n6();H7();KO();t7();cQ();En();GA();jn8();Jn8();Mn8();Dn8();LXq();p7();Q1();Z8();hI6();q51();Uc8();SXq();VF8();$F8();pA();hXq();$P();PM();K7=e(W6(),1),L_6=e(W6(),1)});var xXq={};m1(xXq,{call:()=>MHz});var bXq,MHz=(A,q,K)=>{return Promise.resolve(bXq.default.createElement(Zn8,{onDone:A}))};var uXq=k(()=>{Gn8();bXq=e(W6(),1)});var DHz,BXq;var mXq=k(()=>{DHz={name:"doctor",description:"Diagnose and verify your Claude Code installation and settings",isEnabled:()=>!process.env.DISABLE_DOCTOR_COMMAND,isHidden:!1,userFacingName(){return"doctor"},type:"local-jsx",load:()=>Promise.resolve().then(() => (uXq(),xXq))},BXq=DHz});function XHz(A){return!!Hq1(A)}var oC;var y_6=k(()=>{Eq();tB();oC=T8(()=>{if(process.env.VISUAL?.trim())return process.env.VISUAL.trim();if(process.env.EDITOR?.trim())return process.env.EDITOR.trim();if(process.platform==="win32")return"start /wait notepad";return["code","vi","nano"].find((q)=>XHz(q))})});import{join as PHz}from"path";import{tmpdir as WHz}from"os";import{randomUUID as ZHz}from"crypto";function BC1(A="claude-prompt",q=".md"){let K=ZHz();return PHz(WHz(),`${A}-${K}${q}`)}var fn8=()=>{};function THz(A){let q=A.split(" ")[0]??"";return fHz.some((K)=>q.includes(K))}function dL(A){let q=P1(),K=wP.get(process.stdout);if(!K)throw Error("Ink instance not found - cannot pause rendering");let Y=oC();if(!Y)return{content:null};try{q.statSync(A)}catch{return{content:null}}let z=!THz(Y);if(z)K.enterAlternateScreen();else K.pause(),K.suspendStdin();try{let w=GHz[Y]??Y;return xa(`${w} "${A}"`,{stdio:"inherit"}),{content:q.readFileSync(A,{encoding:"utf-8"})}}catch(w){if(typeof w==="object"&&w!==null&&"status"in w&&typeof w.status==="number"){let _=w.status;if(_!==0)return{content:null,error:`${sO(Y)} exited with code ${_}`}}return{content:null}}finally{if(z)K.exitAlternateScreen();else K.resumeStdin(),K.resume()}}function VHz(A,q){let K=HG6(A),Y=A;for(let z=K.length-1;z>=0;z--){let w=K[z],_=q[w.id];if(_&&_.type==="text"){let $=Y.lastIndexOf(w.match);if($!==-1)Y=Y.slice(0,$)+_.content+Y.slice($+w.match.length)}}return Y}function NHz(A,q,K){let Y=A;for(let[z,w]of Object.entries(K))if(w.type==="text"){let _=parseInt(z),$=w.content,O=Y.indexOf($);if(O!==-1){let H=OG6($),j=E01(_,H);Y=Y.slice(0,O)+j+Y.slice(O+$.length)}}return Y}function Iv(A,q){let K=P1(),Y=BC1();try{let z=q?VHz(A,q):A;pz(Y,z,{encoding:"utf-8",flush:!0});let w=dL(Y);if(w.content===null)return w;let _=w.content;if(_.endsWith(` `)&&!_.endsWith(` `))_=_.slice(0,-1);if(q)_=NHz(_,A,q);return{content:_}}finally{try{K.unlinkSync(Y)}catch{}}}var GHz,fHz;var cL=k(()=>{Oq1();y_6();a1();Y7();fn8();Vg();M$();zx();GHz={code:"code -w",subl:"subl --wait"},fHz=["code","subl","atom","gedit","notepad++","notepad"]});function gXq(A){return Fw(A)!==null}var FXq=k(()=>{U3()});import{mkdir as kHz}from"fs/promises";import{join as QXq}from"path";function pXq(A){let q=Y6(32),{onSelect:K,onCancel:Y}=A,z=lH(),w=QXq(OA(),"CLAUDE.md"),_=QXq(DA(),"CLAUDE.md"),$=z.some((H6)=>H6.path===w),O=z.some((H6)=>H6.path===_),H=[...z.filter(SHz).map(RHz),...$?[]:[{path:w,type:"User",content:"",exists:!1}],...O?[]:[{path:_,type:"Project",content:"",exists:!1}]],j=new Map,J=H.map((H6)=>{let Z6=T3(H6.path),G6=H6.exists?"":" (new)",q6=H6.parent?(j.get(H6.parent)??0)+1:0;j.set(H6.path,q6);let w6=q6>0?" ".repeat(q6-1):"",j6;if(H6.type==="User"&&!H6.isNested&&H6.path===w)j6="User memory";else if(H6.type==="Project"&&!H6.isNested&&H6.path===_)j6="Project memory";else if(q6>0)j6=`${w6}L ${Z6}${G6}`;else j6=`${Z6}`;let _6,k6=gXq(DA());if(H6.type==="User"&&!H6.isNested)_6="Saved in ~/.claude/CLAUDE.md";else if(H6.type==="Project"&&!H6.isNested&&H6.path===_)_6=`${k6?"Checked in at":"Saved in"} ./CLAUDE.md`;else if(H6.type,H6.parent)_6="@-imported";else if(H6.isNested)_6="dynamically loaded";else _6="";return{label:j6,value:H6.path,description:_6}}),M=[],D=V1(yHz);if(G9()){let H6;if(q[0]===Symbol.for("react.memo_cache_sentinel"))H6={label:"Open auto-memory folder",value:`${sa6}${mD()}`,description:""},q[0]=H6;else H6=q[0];if(M.push(H6),UXq.isTeamMemoryEnabled()){let Z6;if(q[1]===Symbol.for("react.memo_cache_sentinel"))Z6={label:"Open team memory folder",value:`${sa6}${UXq.getTeamMemPath()}`,description:""},q[1]=Z6;else Z6=q[1];M.push(Z6)}for(let Z6 of D.activeAgents)if(Z6.memory){let G6=Kf6(Z6.agentType,Z6.memory);M.push({label:`Open ${M1.bold(Z6.agentType)} agent memory`,value:`${sa6}${G6}`,description:`${Z6.memory} scope`})}}J.push(...M);let X;if(q[2]!==J)X=mC1&&J.some(LHz)?mC1:J[0]?.value||"",q[2]=J,q[3]=X;else X=q[3];let P=X,[W,Z]=Tn8.useState(G9),[G,f]=Tn8.useState(null),V=G!==null,N;if(q[4]!==W)N=function(){let Z6=!W;xA("userSettings",{autoMemoryEnabled:Z6}),Z(Z6),c("tengu_auto_memory_toggled",{enabled:Z6})},q[4]=W,q[5]=N;else N=q[5];let v=N;z3();let y;if(q[6]===Symbol.for("react.memo_cache_sentinel"))y={context:"Confirmation"},q[6]=y;else y=q[6];V8("confirm:no",Y,y);let R;if(q[7]!==G||q[8]!==v)R=()=>{if(G===0)v()},q[7]=G,q[8]=v,q[9]=R;else R=q[9];let h;if(q[10]!==V)h={context:"Confirmation",isActive:V},q[10]=V,q[11]=h;else h=q[11];V8("confirm:yes",R,h);let B;if(q[12]===Symbol.for("react.memo_cache_sentinel"))B=()=>{f(null)},q[12]=B;else B=q[12];let x;if(q[13]!==V)x={context:"Select",isActive:V},q[13]=V,q[14]=x;else x=q[14];V8("select:next",B,x);let F=G===0,g=W?"on":"off",b;if(q[15]!==g)b=Fu.createElement(T,null,"Auto-memory: ",g),q[15]=g,q[16]=b;else b=q[16];let U;if(q[17]!==b||q[18]!==F)U=Fu.createElement(m,{flexDirection:"column",marginBottom:1},Fu.createElement(fQ,{isFocused:F},b)),q[17]=b,q[18]=F,q[19]=U;else U=q[19];let d;if(q[20]!==K)d=(H6)=>{if(H6.startsWith(sa6)){let Z6=H6.slice(sa6.length);kHz(Z6,{recursive:!0}).catch(EHz).then(()=>kC4(Z6));return}mC1=H6,K(H6)},q[20]=K,q[21]=d;else d=q[21];let l;if(q[22]===Symbol.for("react.memo_cache_sentinel"))l=()=>f(0),q[22]=l;else l=q[22];let t;if(q[23]!==P||q[24]!==J||q[25]!==Y||q[26]!==d||q[27]!==V)t=Fu.createElement(E8,{defaultFocusValue:P,options:J,isDisabled:V,onChange:d,onCancel:Y,onUpFromFirstItem:l}),q[23]=P,q[24]=J,q[25]=Y,q[26]=d,q[27]=V,q[28]=t;else t=q[28];let s;if(q[29]!==U||q[30]!==t)s=Fu.createElement(m,{flexDirection:"column",width:"100%"},U,t),q[29]=U,q[30]=t,q[31]=s;else s=q[31];return s}function EHz(){}function LHz(A){return A.value===mC1}function yHz(A){return A.agentDefinitions}function RHz(A){return{...A,exists:!0}}function SHz(A){return A.type!=="AutoMem"&&A.type!=="TeamMem"}var Fu,Tn8,UXq,mC1,sa6="__open_folder__";var dXq=k(()=>{K1();n6();HY();KO();H7();sD();GJ();RP();Zx();pA();p7();FXq();Q1();Z8();Vi6();GA();B1();iK();Fu=e(W6(),1),Tn8=e(W6(),1),UXq=(RS(),W3(W66))});import{homedir as CHz}from"os";import{relative as hHz}from"path";function cXq(A){let q=CHz(),K=I1(),Y=A.startsWith(q)?"~"+A.slice(q.length):null,z=A.startsWith(K)?"./"+hHz(K,A):null;if(Y&&z)return Y.length<=z.length?Y:z;return Y||z||A}var IHz;var lXq=k(()=>{K1();n6();W7();IHz=e(W6(),1)});var iXq={};m1(iXq,{call:()=>BHz});import{mkdir as bHz,writeFile as xHz}from"fs/promises";function uHz({onDone:A}){aW.useState(()=>{lH.cache.clear?.()});let q=async(Y)=>{try{if(Y.includes(OA()))await bHz(OA(),{recursive:!0});try{await xHz(Y,"",{encoding:"utf8",flag:"wx"})}catch(O){if(O.code!=="EEXIST")throw O}await dL(Y);let z="default",w="";if(process.env.VISUAL)z="$VISUAL",w=process.env.VISUAL;else if(process.env.EDITOR)z="$EDITOR",w=process.env.EDITOR;let _=z!=="default"?`Using ${z}="${w}".`:"",$=_?`> ${_} To change editor, set $EDITOR or $VISUAL environment variable.`:"> To use a different editor, set the $EDITOR or $VISUAL environment variable.";A(`Opened memory file at ${cXq(Y)} ${$}`,{display:"system"})}catch(z){$6(z),A(`Error opening memory file: ${z}`)}},K=()=>{A("Cancelled memory editing",{display:"system"})};return aW.createElement(l8,{title:"Memory",onCancel:K,color:"remember"},aW.createElement(m,{flexDirection:"column"},aW.createElement(pXq,{onSelect:q,onCancel:K}),aW.createElement(m,{marginTop:1},aW.createElement(T,{dimColor:!0},"Learn more: ",aW.createElement(d7,{url:"https://code.claude.com/docs/en/memory"})))))}var aW,BHz=async(A)=>{return aW.createElement(uHz,{onDone:A})};var nXq=k(()=>{Z8();x1();cL();dXq();lXq();n6();n6();sD();zq();aW=e(W6(),1)});var mHz,rXq;var oXq=k(()=>{mHz={type:"local-jsx",name:"memory",description:"Edit Claude memory files",isEnabled:()=>!0,isHidden:!1,load:()=>Promise.resolve().then(() => (nXq(),iXq)),userFacingName(){return this.name}},rXq=mHz});var gHz,FHz,R_6;var gC1=k(()=>{K9();gHz={ghostty:"Ghostty",kitty:"Kitty","iTerm.app":"iTerm2",WezTerm:"WezTerm"},FHz={type:"local-jsx",name:"terminal-setup",userFacingName(){return"terminal-setup"},description:YA.terminal==="Apple_Terminal"?"Enable Option+Enter key binding for newlines and visual bell":"Install Shift+Enter key binding for newlines",isEnabled:()=>!0,isHidden:YA.terminal!==null&&YA.terminal in gHz,load:()=>Promise.resolve().then(() => (LY6(),Sq4))},R_6=FHz});function bA6(){return T1().editorMode==="vim"}function aXq(){if(YA.terminal==="Apple_Terminal"&&process.platform==="darwin")return"shift + ⏎ for newline";if(R_6.isEnabled()&&nN8())return"shift + ⏎ for newline";return rN8()?"\\⏎ for newline":"backslash (\\) + return (⏎) for newline"}var Uk6=k(()=>{gC1();LY6();Q8();K9()});function fU(A){return A.replace(/\+/g," + ")}function FC1(A){let q=Y6(98),{dimColor:K,fixedWidth:Y,gap:z,paddingX:w}=A,_=zK("app:toggleTranscript","Global","ctrl+o"),$;if(q[0]!==_)$=fU(_),q[0]=_,q[1]=$;else $=q[1];let O=$,H=zK("app:toggleTodos","Global","ctrl+t"),j;if(q[2]!==H)j=fU(H),q[2]=H,q[3]=j;else j=q[3];let J=j,M=zK("chat:undo","Chat","ctrl+_"),D;if(q[4]!==M)D=fU(M),q[4]=M,q[5]=D;else D=q[5];let X=D,P=zK("chat:stash","Chat","ctrl+s"),W;if(q[6]!==P)W=fU(P),q[6]=P,q[7]=W;else W=q[7];let Z=W,G=zK("chat:cycleMode","Chat","shift+tab"),f;if(q[8]!==G)f=fU(G),q[8]=G,q[9]=f;else f=q[9];let V=f,N=zK("chat:modelPicker","Chat","alt+p"),v;if(q[10]!==N)v=fU(N),q[10]=N,q[11]=v;else v=q[11];let y=v,R=zK("chat:fastMode","Chat","alt+o"),h;if(q[12]!==R)h=fU(R),q[12]=R,q[13]=h;else h=q[13];let B=h,x=zK("chat:externalEditor","Chat","ctrl+g"),F;if(q[14]!==x)F=fU(x),q[14]=x,q[15]=F;else F=q[15];let g=F,b=zK("app:toggleTerminal","Global","meta+j"),U;if(q[16]!==b)U=fU(b),q[16]=b,q[17]=U;else U=q[17];let d=U,l=zK("chat:imagePaste","Chat","ctrl+v"),t;if(q[18]!==l)t=fU(l),q[18]=l,q[19]=t;else t=q[19];let s=t,H6;if(q[20]!==K||q[21]!==d)H6=null,q[20]=K,q[21]=d,q[22]=H6;else H6=q[22];let Z6=H6,G6=Y?24:void 0,q6;if(q[23]!==K)q6=o7.createElement(m,null,o7.createElement(T,{dimColor:K},"! for bash mode")),q[23]=K,q[24]=q6;else q6=q[24];let w6;if(q[25]!==K)w6=o7.createElement(m,null,o7.createElement(T,{dimColor:K},"/ for commands")),q[25]=K,q[26]=w6;else w6=q[26];let j6;if(q[27]!==K)j6=o7.createElement(m,null,o7.createElement(T,{dimColor:K},"@ for file paths")),q[27]=K,q[28]=j6;else j6=q[28];let _6,k6;if(q[29]!==K)_6=o7.createElement(m,null,o7.createElement(T,{dimColor:K},"& for background")),k6=Nw6()&&o7.createElement(m,null,o7.createElement(T,{dimColor:K},"/btw for side question")),q[29]=K,q[30]=_6,q[31]=k6;else _6=q[30],k6=q[31];let P6;if(q[32]!==G6||q[33]!==q6||q[34]!==w6||q[35]!==j6||q[36]!==_6||q[37]!==k6)P6=o7.createElement(m,{flexDirection:"column",width:G6},q6,w6,j6,_6,k6),q[32]=G6,q[33]=q6,q[34]=w6,q[35]=j6,q[36]=_6,q[37]=k6,q[38]=P6;else P6=q[38];let A6=Y?35:void 0,K6;if(q[39]!==K)K6=o7.createElement(m,null,o7.createElement(T,{dimColor:K},"double tap esc to clear input")),q[39]=K,q[40]=K6;else K6=q[40];let z6;if(q[41]!==V||q[42]!==K)z6=o7.createElement(m,null,o7.createElement(T,{dimColor:K},V," to auto-accept edits")),q[41]=V,q[42]=K,q[43]=z6;else z6=q[43];let a;if(q[44]!==K||q[45]!==O)a=o7.createElement(m,null,o7.createElement(T,{dimColor:K},O," for verbose output")),q[44]=K,q[45]=O,q[46]=a;else a=q[46];let r;if(q[47]!==K||q[48]!==J)r=o7.createElement(m,null,o7.createElement(T,{dimColor:K},J," to toggle tasks")),q[47]=K,q[48]=J,q[49]=r;else r=q[49];let X6;if(q[50]===Symbol.for("react.memo_cache_sentinel"))X6=aXq(),q[50]=X6;else X6=q[50];let O6;if(q[51]!==K)O6=o7.createElement(m,null,o7.createElement(T,{dimColor:K},X6)),q[51]=K,q[52]=O6;else O6=q[52];let D6;if(q[53]!==A6||q[54]!==K6||q[55]!==z6||q[56]!==a||q[57]!==r||q[58]!==O6||q[59]!==Z6)D6=o7.createElement(m,{flexDirection:"column",width:A6},K6,z6,a,r,Z6,O6),q[53]=A6,q[54]=K6,q[55]=z6,q[56]=a,q[57]=r,q[58]=O6,q[59]=Z6,q[60]=D6;else D6=q[60];let y6;if(q[61]!==K||q[62]!==X)y6=o7.createElement(m,null,o7.createElement(T,{dimColor:K},X," to undo")),q[61]=K,q[62]=X,q[63]=y6;else y6=q[63];let C6;if(q[64]!==K)C6=c8()!=="windows"&&o7.createElement(m,null,o7.createElement(T,{dimColor:K},"ctrl + z to suspend")),q[64]=K,q[65]=C6;else C6=q[65];let h6;if(q[66]!==K||q[67]!==s)h6=o7.createElement(m,null,o7.createElement(T,{dimColor:K},s," to paste images")),q[66]=K,q[67]=s,q[68]=h6;else h6=q[68];let f6;if(q[69]!==K||q[70]!==y)f6=o7.createElement(m,null,o7.createElement(T,{dimColor:K},y," to switch model")),q[69]=K,q[70]=y,q[71]=f6;else f6=q[71];let M6;if(q[72]!==K||q[73]!==B)M6=gq()&&kJ()&&o7.createElement(m,null,o7.createElement(T,{dimColor:K},B," to toggle fast mode")),q[72]=K,q[73]=B,q[74]=M6;else M6=q[74];let V6;if(q[75]!==K||q[76]!==Z)V6=o7.createElement(m,null,o7.createElement(T,{dimColor:K},Z," to stash prompt")),q[75]=K,q[76]=Z,q[77]=V6;else V6=q[77];let p6;if(q[78]!==K||q[79]!==g)p6=o7.createElement(m,null,o7.createElement(T,{dimColor:K},g," to edit in $EDITOR")),q[78]=K,q[79]=g,q[80]=p6;else p6=q[80];let b6;if(q[81]!==K)b6=eE()&&o7.createElement(m,null,o7.createElement(T,{dimColor:K},"/keybindings to customize")),q[81]=K,q[82]=b6;else b6=q[82];let R6;if(q[83]!==y6||q[84]!==C6||q[85]!==h6||q[86]!==f6||q[87]!==M6||q[88]!==V6||q[89]!==p6||q[90]!==b6)R6=o7.createElement(m,{flexDirection:"column"},y6,C6,h6,f6,M6,V6,p6,b6),q[83]=y6,q[84]=C6,q[85]=h6,q[86]=f6,q[87]=M6,q[88]=V6,q[89]=p6,q[90]=b6,q[91]=R6;else R6=q[91];let x6;if(q[92]!==z||q[93]!==w||q[94]!==P6||q[95]!==D6||q[96]!==R6)x6=o7.createElement(m,{paddingX:w,flexDirection:"row",gap:z},P6,D6,R6),q[92]=z,q[93]=w,q[94]=P6,q[95]=D6,q[96]=R6,q[97]=x6;else x6=q[97];return x6}var o7;var Vn8=k(()=>{K1();n6();uK();Uk6();LJ();wi();rA();aZ();vV6();o7=e(W6(),1)});function sXq(){let A=Y6(2),q;if(A[0]===Symbol.for("react.memo_cache_sentinel"))q=aT.createElement(m,null,aT.createElement(T,null,"Claude understands your codebase, makes edits with your permission, and executes commands — right from your terminal.")),A[0]=q;else q=A[0];let K;if(A[1]===Symbol.for("react.memo_cache_sentinel"))K=aT.createElement(m,{flexDirection:"column",paddingY:1,gap:1},q,aT.createElement(m,{flexDirection:"column"},aT.createElement(m,null,aT.createElement(T,{bold:!0},"Shortcuts")),aT.createElement(FC1,{gap:2,fixedWidth:!0}))),A[1]=K;else K=A[1];return K}var aT;var tXq=k(()=>{K1();n6();Vn8();aT=e(W6(),1)});function Nn8(A){let q=Y6(12),{commands:K,maxHeight:Y,columns:z,title:w,onCancel:_,emptyMessage:$}=A,O=Math.max(1,z-10),H=Math.max(1,Math.floor((Y-10)/2)),j;if(q[0]!==K||q[1]!==O){let D=new Set,X;if(q[3]!==O)X=(P)=>({label:`/${P.name}`,value:P.name,description:Z9(pk6(P),O,!0)}),q[3]=O,q[4]=X;else X=q[4];j=K.filter((P)=>{if(D.has(P.name))return!1;return D.add(P.name),!0}).sort(QHz).map(X),q[0]=K,q[1]=O,q[2]=j}else j=q[2];let J=j,M;if(q[5]!==K.length||q[6]!==$||q[7]!==_||q[8]!==J||q[9]!==w||q[10]!==H)M=rG.createElement(m,{flexDirection:"column",paddingY:1},K.length===0&&$?rG.createElement(T,{dimColor:!0},$):rG.createElement(rG.Fragment,null,rG.createElement(T,null,w),rG.createElement(m,{marginTop:1},rG.createElement(E8,{options:J,visibleOptionCount:H,onCancel:_,disableSelection:!0,hideIndexes:!0,layout:"compact-vertical"})))),q[5]=K.length,q[6]=$,q[7]=_,q[8]=J,q[9]=w,q[10]=H,q[11]=M;else M=q[11];return M}function QHz(A,q){return A.name.localeCompare(q.name)}var rG;var eXq=k(()=>{K1();n6();OH();_5();Oq();rG=e(W6(),1)});function APq(A){let q=Y6(44),{onClose:K,commands:Y}=A,{rows:z,columns:w}=PA(),_=Math.floor(z/2),$;if(q[0]!==K)$=()=>K("Help dialog dismissed",{display:"system"}),q[0]=K,q[1]=$;else $=q[1];let O=$,H;if(q[2]===Symbol.for("react.memo_cache_sentinel"))H={context:"Help"},q[2]=H;else H=q[2];V8("help:dismiss",O,H);let j=z3(O),J=zK("help:dismiss","Help","esc"),M,D,X;if(q[3]!==Y){let y=aQ();D=Y.filter((h)=>y.has(h.name)&&!h.isHidden);let R;if(q[7]===Symbol.for("react.memo_cache_sentinel"))R=[],q[7]=R;else R=q[7];M=R,X=Y.filter((h)=>!y.has(h.name)&&!h.isHidden),q[3]=Y,q[4]=M,q[5]=D,q[6]=X}else M=q[4],D=q[5],X=q[6];let P=X,W;if(q[8]===Symbol.for("react.memo_cache_sentinel"))W=SY.createElement(U_,{key:"general",title:"general"},SY.createElement(sXq,null)),q[8]=W;else W=q[8];let Z;if(q[9]!==M||q[10]!==D||q[11]!==O||q[12]!==w||q[13]!==P||q[14]!==_){Z=[W];let y;if(q[16]!==D||q[17]!==O||q[18]!==w||q[19]!==_)y=SY.createElement(U_,{key:"commands",title:"commands"},SY.createElement(Nn8,{commands:D,maxHeight:_,columns:w,title:"Browse default commands:",onCancel:O})),q[16]=D,q[17]=O,q[18]=w,q[19]=_,q[20]=y;else y=q[20];Z.push(y);let R;if(q[21]!==O||q[22]!==w||q[23]!==P||q[24]!==_)R=SY.createElement(U_,{key:"custom",title:"custom-commands"},SY.createElement(Nn8,{commands:P,maxHeight:_,columns:w,title:"Browse custom commands:",emptyMessage:"No custom commands found",onCancel:O})),q[21]=O,q[22]=w,q[23]=P,q[24]=_,q[25]=R;else R=q[25];Z.push(R),q[9]=M,q[10]=D,q[11]=O,q[12]=w,q[13]=P,q[14]=_,q[15]=Z}else Z=q[15];let G;if(q[31]!==Z)G=SY.createElement(rC,{title:`Claude Code v${{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.71",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-06T22:45:36Z"}.VERSION}`,color:"professionalBlue",defaultTab:"general"},Z),q[31]=Z,q[32]=G;else G=q[32];let f;if(q[33]===Symbol.for("react.memo_cache_sentinel"))f=SY.createElement(m,{marginTop:1},SY.createElement(T,null,"For more help:"," ",SY.createElement(d7,{url:"https://code.claude.com/docs/en/overview"}))),q[33]=f;else f=q[33];let V;if(q[34]!==J||q[35]!==j.keyName||q[36]!==j.pending)V=SY.createElement(m,{marginTop:1},SY.createElement(T,{dimColor:!0},j.pending?SY.createElement(SY.Fragment,null,"Press ",j.keyName," again to exit"):SY.createElement(T,{italic:!0},J," to cancel"))),q[34]=J,q[35]=j.keyName,q[36]=j.pending,q[37]=V;else V=q[37];let N;if(q[38]!==G||q[39]!==V)N=SY.createElement(m9,{color:"professionalBlue"},G,f,V),q[38]=G,q[39]=V,q[40]=N;else N=q[40];let v;if(q[41]!==_||q[42]!==N)v=SY.createElement(m,{flexDirection:"column",height:_},N),q[41]=_,q[42]=N,q[43]=v;else v=q[43];return v}var SY;var qPq=k(()=>{K1();n6();$P();N_6();tXq();eXq();OH();xq();KO();H7();LJ();n6();SY=e(W6(),1)});var KPq={};m1(KPq,{call:()=>UHz});var vn8,UHz=async(A,{options:{commands:q}})=>{return vn8.createElement(APq,{commands:q,onClose:A})};var YPq=k(()=>{qPq();vn8=e(W6(),1)});var pHz,kn8;var zPq=k(()=>{pHz={type:"local-jsx",name:"help",description:"Show help and available commands",isEnabled:()=>!0,isHidden:!1,load:()=>Promise.resolve().then(() => (YPq(),KPq)),userFacingName(){return"help"}},kn8=pHz});function wPq(A){let q=Y6(9),{onComplete:K}=A,Y;if(q[0]!==K)Y=async(j)=>{let J=j==="yes";_8((M)=>({...M,autoConnectIde:J,hasIdeAutoConnectDialogBeenShown:!0})),K()},q[0]=K,q[1]=Y;else Y=q[1];let z=Y,w;if(q[2]===Symbol.for("react.memo_cache_sentinel"))w=[{label:"Yes",value:"yes"},{label:"No",value:"no"}],q[2]=w;else w=q[2];let _=w,$;if(q[3]!==z)$=dk6.default.createElement(E8,{options:_,onChange:z,defaultValue:"yes"}),q[3]=z,q[4]=$;else $=q[4];let O;if(q[5]===Symbol.for("react.memo_cache_sentinel"))O=dk6.default.createElement(T,{dimColor:!0},"You can also configure this in /config or with the --ide flag"),q[5]=O;else O=q[5];let H;if(q[6]!==K||q[7]!==$)H=dk6.default.createElement(l8,{title:"Do you wish to enable auto-connect to IDE?",color:"ide",onCancel:K},$,O),q[6]=K,q[7]=$,q[8]=H;else H=q[8];return H}function _Pq(){let A=T1();return!gM()&&A.autoConnectIde!==!0&&A.hasIdeAutoConnectDialogBeenShown!==!0}function $Pq(A){let q=Y6(10),{onComplete:K}=A,Y;if(q[0]!==K)Y=(J)=>{let M=J==="yes";if(M)_8(dHz);K(M)},q[0]=K,q[1]=Y;else Y=q[1];let z=Y,w;if(q[2]!==K)w=()=>{K(!1)},q[2]=K,q[3]=w;else w=q[3];let _=w,$;if(q[4]===Symbol.for("react.memo_cache_sentinel"))$=[{label:"No",value:"no"},{label:"Yes",value:"yes"}],q[4]=$;else $=q[4];let O=$,H;if(q[5]!==z)H=dk6.default.createElement(E8,{options:O,onChange:z,defaultValue:"no"}),q[5]=z,q[6]=H;else H=q[6];let j;if(q[7]!==_||q[8]!==H)j=dk6.default.createElement(l8,{title:"Do you wish to disable auto-connect to IDE?",subtitle:"You can also configure this in /config",onCancel:_,color:"ide"},H),q[7]=_,q[8]=H,q[9]=j;else j=q[9];return j}function dHz(A){return{...A,autoConnectIde:!1}}function OPq(){let A=T1();return!gM()&&A.autoConnectIde===!0}var dk6;var HPq=k(()=>{K1();n6();Q8();HY();M$();zq();dk6=e(W6(),1)});var JPq={};m1(JPq,{formatWorkspaceFolders:()=>En8,call:()=>eHz});import*as jPq from"path";function cHz(A){let q=Y6(39),{availableIDEs:K,unavailableIDEs:Y,selectedIDE:z,onClose:w,onSelect:_}=A,$;if(q[0]!==z?.port)$=z?.port?.toString()??"None",q[0]=z?.port,q[1]=$;else $=q[1];let[O,H]=sT.useState($),[j,J]=sT.useState(!1),[M,D]=sT.useState(!1),X;if(q[2]!==K||q[3]!==_)X=(x)=>{if(x!=="None"&&_Pq())J(!0);else if(x==="None"&&OPq())D(!0);else _(K.find((F)=>F.port===parseInt(x)))},q[2]=K,q[3]=_,q[4]=X;else X=q[4];let P=X,W;if(q[5]!==K)W=K.reduce(nHz,{}),q[5]=K,q[6]=W;else W=q[6];let Z=W,G;if(q[7]!==K||q[8]!==Z){let x;if(q[10]!==Z)x=(F)=>{let b=(Z[F.name]||0)>1&&F.workspaceFolders.length>0;return{label:F.name,value:F.port.toString(),description:b?En8(F.workspaceFolders):void 0}},q[10]=Z,q[11]=x;else x=q[11];G=K.map(x).concat([{label:"None",value:"None",description:void 0}]),q[7]=K,q[8]=Z,q[9]=G}else G=q[9];let f=G;if(j){let x;if(q[12]!==P||q[13]!==O)x=C$.default.createElement(wPq,{onComplete:()=>P(O)}),q[12]=P,q[13]=O,q[14]=x;else x=q[14];return x}if(M){let x;if(q[15]!==_)x=C$.default.createElement($Pq,{onComplete:()=>{_(void 0)}}),q[15]=_,q[16]=x;else x=q[16];return x}let V;if(q[17]!==K.length)V=K.length===0&&C$.default.createElement(T,{dimColor:!0},JW6()?`No available IDEs detected. Please install the plugin and restart your IDE: https://docs.claude.com/s/claude-code-jetbrains`:"No available IDEs detected. Make sure your IDE has the Claude Code extension or plugin installed and is running."),q[17]=K.length,q[18]=V;else V=q[18];let N;if(q[19]!==K.length||q[20]!==P||q[21]!==f||q[22]!==O)N=K.length!==0&&C$.default.createElement(E8,{defaultValue:O,defaultFocusValue:O,options:f,onChange:(x)=>{H(x),P(x)}}),q[19]=K.length,q[20]=P,q[21]=f,q[22]=O,q[23]=N;else N=q[23];let v;if(q[24]!==K)v=K.length!==0&&K.some(iHz)&&C$.default.createElement(m,{marginTop:1},C$.default.createElement(T,{color:"warning"},"Note: Only one Claude Code instance can be connected to VS Code at a time.")),q[24]=K,q[25]=v;else v=q[25];let y;if(q[26]!==K.length)y=K.length!==0&&!gM()&&C$.default.createElement(m,{marginTop:1},C$.default.createElement(T,{dimColor:!0},"Tip: You can enable auto-connect to IDE in /config or with the --ide flag")),q[26]=K.length,q[27]=y;else y=q[27];let R;if(q[28]!==Y)R=Y.length>0&&C$.default.createElement(m,{marginTop:1,flexDirection:"column"},C$.default.createElement(T,{dimColor:!0},"Found ",Y.length," other running IDE(s). However, their workspace/project directories do not match the current cwd."),C$.default.createElement(m,{marginTop:1,flexDirection:"column"},Y.map(lHz))),q[28]=Y,q[29]=R;else R=q[29];let h;if(q[30]!==V||q[31]!==N||q[32]!==v||q[33]!==y||q[34]!==R)h=C$.default.createElement(m,{flexDirection:"column"},V,N,v,y,R),q[30]=V,q[31]=N,q[32]=v,q[33]=y,q[34]=R,q[35]=h;else h=q[35];let B;if(q[36]!==w||q[37]!==h)B=C$.default.createElement(l8,{title:"Select IDE",subtitle:"Connect to an IDE for integrated development features.",onCancel:w,color:"ide"},h),q[36]=w,q[37]=h,q[38]=B;else B=q[38];return B}function lHz(A,q){return C$.default.createElement(m,{key:q,paddingLeft:3},C$.default.createElement(T,{dimColor:!0},"• ",A.name,": ",En8(A.workspaceFolders)))}function iHz(A){return A.name==="VS Code"||A.name==="Visual Studio Code"}function nHz(A,q){return A[q.name]=(A[q.name]||0)+1,A}async function rHz(A,q){let K=q?.ide;if(!K||K.type!=="sse-ide"&&K.type!=="ws-ide")return null;for(let Y of A)if(Y.url===K.url)return Y;return null}function oHz(A){let q=Y6(18),{availableIDEs:K,onSelectIDE:Y,onDone:z}=A,w;if(q[0]!==K[0]?.port)w=K[0]?.port?.toString()??"",q[0]=K[0]?.port,q[1]=w;else w=q[1];let[_,$]=sT.useState(w),O;if(q[2]!==K||q[3]!==Y)O=(Z)=>{let G=K.find((f)=>f.port===parseInt(Z));Y(G)},q[2]=K,q[3]=Y,q[4]=O;else O=q[4];let H=O,j;if(q[5]!==K)j=K.map(aHz),q[5]=K,q[6]=j;else j=q[6];let J=j,M;if(q[7]!==z)M=function(){z("IDE selection cancelled",{display:"system"})},q[7]=z,q[8]=M;else M=q[8];let D=M,X;if(q[9]!==H)X=(Z)=>{$(Z),H(Z)},q[9]=H,q[10]=X;else X=q[10];let P;if(q[11]!==J||q[12]!==_||q[13]!==X)P=C$.default.createElement(E8,{defaultValue:_,defaultFocusValue:_,options:J,onChange:X}),q[11]=J,q[12]=_,q[13]=X,q[14]=P;else P=q[14];let W;if(q[15]!==D||q[16]!==P)W=C$.default.createElement(l8,{title:"Select an IDE to open the project",onCancel:D,color:"ide"},P),q[15]=D,q[16]=P,q[17]=W;else W=q[17];return W}function aHz(A){return{label:A.name,value:A.port.toString()}}function sHz(A){let q=Y6(15),{runningIDEs:K,onSelectIDE:Y,onDone:z}=A,[w,_]=sT.useState(K[0]??""),$;if(q[0]!==Y)$=(W)=>{Y(W)},q[0]=Y,q[1]=$;else $=q[1];let O=$,H;if(q[2]!==K)H=K.map(tHz),q[2]=K,q[3]=H;else H=q[3];let j=H,J;if(q[4]!==z)J=function(){z("IDE selection cancelled",{display:"system"})},q[4]=z,q[5]=J;else J=q[5];let M=J,D;if(q[6]!==O)D=(W)=>{_(W),O(W)},q[6]=O,q[7]=D;else D=q[7];let X;if(q[8]!==j||q[9]!==w||q[10]!==D)X=C$.default.createElement(E8,{defaultFocusValue:w,options:j,onChange:D}),q[8]=j,q[9]=w,q[10]=D,q[11]=X;else X=q[11];let P;if(q[12]!==M||q[13]!==X)P=C$.default.createElement(l8,{title:"Select IDE to install extension",onCancel:M,color:"ide"},X),q[12]=M,q[13]=X,q[14]=P;else P=q[14];return P}function tHz(A){return{label:sO(A),value:A}}async function eHz(A,q,K){c("tengu_ext_ide_command",{});let{options:{dynamicMcpConfig:Y},onChangeDynamicMcpConfig:z}=q;if(K?.trim()==="open"){let H=hL(),j=H?H.worktreePath:I1(),M=(await MW6(!0)).filter((D)=>D.isValid);if(M.length===0)return A("No IDEs with Claude Code extension detected."),null;return C$.default.createElement(oHz,{availableIDEs:M,onSelectIDE:async(D)=>{if(!D){A("No IDE selected.");return}if(D.name.toLowerCase().includes("vscode")||D.name.toLowerCase().includes("cursor")||D.name.toLowerCase().includes("windsurf")){let{code:X}=await W8("code",[j]);if(X===0)A(`Opened ${H?"worktree":"project"} in ${M1.bold(D.name)}`);else A(`Failed to open in ${D.name}. Try opening manually: ${j}`)}else if(JW6())A(`Please open the ${H?"worktree":"project"} manually in ${M1.bold(D.name)}: ${j}`);else A(`Please open the ${H?"worktree":"project"} manually in ${M1.bold(D.name)}: ${j}`)},onDone:()=>{A("Exited without opening IDE",{display:"system"})}})}let w=await MW6(!0);if(w.length===0&&q.onInstallIDEExtension&&!gM()){let H=await TD8(),j=(J)=>{if(q.onInstallIDEExtension)if(q.onInstallIDEExtension(J),Lb(J))A(`Installed plugin to ${M1.bold(sO(J))} Please ${M1.bold("restart your IDE")} completely for it to take effect`);else A(`Installed extension to ${M1.bold(sO(J))}`)};if(H.length>1)return C$.default.createElement(sHz,{runningIDEs:H,onSelectIDE:j,onDone:()=>{A("No IDE selected.",{display:"system"})}});else if(H.length===1){let J=H[0];return C$.default.createElement(()=>{let D=Y6(1),X;if(D[0]===Symbol.for("react.memo_cache_sentinel"))X=[],D[0]=X;else X=D[0];return sT.useEffect(Kjz,X),null},null)}}let _=w.filter((H)=>H.isValid),$=w.filter((H)=>!H.isValid),O=await rHz(_,Y);return C$.default.createElement(qjz,{availableIDEs:_,unavailableIDEs:$,currentIDE:O,dynamicMcpConfig:Y,onChangeDynamicMcpConfig:z,onDone:A})}function qjz({availableIDEs:A,unavailableIDEs:q,currentIDE:K,dynamicMcpConfig:Y,onChangeDynamicMcpConfig:z,onDone:w}){let[_,$]=sT.useState(null),O=V1((M)=>M.mcp.clients.find((D)=>D.name==="ide")),H=q7(),j=sT.useRef(!0);sT.useEffect(()=>{if(!_)return;if(j.current){j.current=!1;return}if(!O||O.type==="pending")return;if(O.type==="connected")w(`Connected to ${_.name}.`);else if(O.type==="failed")w(`Failed to connect to ${_.name}.`)},[O,_,w]),sT.useEffect(()=>{if(!_)return;let M=setTimeout(()=>{w(`Connection to ${_.name} timed out.`)},Ajz);return()=>clearTimeout(M)},[_,w]);let J=sT.useCallback((M)=>{if(!z){w("Error connecting to IDE.");return}let D={...Y||{}};if(K)delete D.ide;if(!M){if(O&&O.type==="connected"&&K)O.client.onclose=()=>{},bv("ide",O.config),H((P)=>({...P,mcp:{...P.mcp,clients:P.mcp.clients.filter((W)=>W.name!=="ide"),tools:P.mcp.tools.filter((W)=>!W.name?.startsWith("mcp__ide__")),commands:P.mcp.commands.filter((W)=>!W.name?.startsWith("mcp__ide__"))}}));z(D),w(K?`Disconnected from ${K.name}.`:"No IDE selected.");return}let X=M.url;D.ide={type:X.startsWith("ws:")?"ws-ide":"sse-ide",url:X,ideName:M.name,authToken:M.authToken,ideRunningInWindows:M.ideRunningInWindows,scope:"dynamic"},j.current=!0,$(M),z(D)},[Y,K,O,H,z,w]);if(_)return C$.default.createElement(T,{dimColor:!0},"Connecting to ",_.name,"…");return C$.default.createElement(cHz,{availableIDEs:A,unavailableIDEs:q,selectedIDE:K,onClose:()=>w("IDE selection cancelled",{display:"system"}),onSelect:J})}function En8(A,q=100){if(A.length===0)return"";let K=I1(),Y=A.slice(0,2),z=A.length>2,w=z?3:0,_=(Y.length-1)*2,$=q-_-w,O=Math.floor($/Y.length),H=K.normalize("NFC"),J=Y.map((M)=>{let D=M.normalize("NFC");if(D.startsWith(H+jPq.sep))M=D.slice(H.length+1);if(M.length<=O)return M;return"…"+M.slice(-(O-1))}).join(", ");if(z)J+=", …";return J}function Kjz(){onInstall(ideToInstall)}var C$,sT,Ajz=35000;var MPq=k(()=>{K1();n6();HY();HPq();M$();d0();pA();B1();zq();QC();W7();aq();iK();C$=e(W6(),1),sT=e(W6(),1)});var Yjz,DPq;var XPq=k(()=>{Yjz={type:"local-jsx",name:"ide",description:"Manage IDE integrations and show status",isEnabled:()=>!0,isHidden:!1,argumentHint:"[open]",load:()=>Promise.resolve().then(() => (MPq(),JPq)),userFacingName(){return"ide"}},DPq=Yjz});var zjz,PPq;var WPq=k(()=>{Vp6();zjz={type:"prompt",name:"init",description:"Initialize a new CLAUDE.md file with codebase documentation",contentLength:0,isEnabled:()=>!0,isHidden:!1,progressMessage:"analyzing your codebase",userFacingName(){return"init"},source:"builtin",async getPromptForCommand(){return zG6(),[{type:"text",text:`Please analyze this codebase and create a CLAUDE.md file, which will be given to future instances of Claude Code to operate in this repository. What to add: 1. Commands that will be commonly used, such as how to build, lint, and run tests. Include the necessary commands to develop in this codebase, such as how to run a single test. 2. High-level code architecture and structure so that future instances can be productive more quickly. Focus on the "big picture" architecture that requires reading multiple files to understand. Usage notes: - If there's already a CLAUDE.md, suggest improvements to it. - When you make the initial CLAUDE.md, do not repeat yourself and do not include obvious instructions like "Provide helpful error messages to users", "Write unit tests for all new utilities", "Never include sensitive information (API keys, tokens) in code or commits". - Avoid listing every component or file structure that can be easily discovered. - Don't include generic development practices. - If there are Cursor rules (in .cursor/rules/ or .cursorrules) or Copilot rules (in .github/copilot-instructions.md), make sure to include the important parts. - If there is a README.md, make sure to include the important parts. - Do not make up information such as "Common Development Tasks", "Tips for Development", "Support and Documentation" unless this is expressly included in other files that you read. - Be sure to prefix the file with the following text: \`\`\` # CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. \`\`\``}]}},PPq=zjz});var wjz,ZPq;var GPq=k(()=>{wjz={type:"prompt",name:"init-verifiers",description:"Create verifier skill(s) for automated verification of code changes",contentLength:0,isEnabled:()=>!0,isHidden:!1,progressMessage:"analyzing your project and creating verifier skills",userFacingName(){return"init-verifiers"},source:"builtin",async getPromptForCommand(){return[{type:"text",text:`Use the TodoWrite tool to track your progress through this multi-step task. ## Goal Create one or more verifier skills that can be used by the Verify agent to automatically verify code changes in this project or folder. You may create multiple verifiers if the project has different verification needs (e.g., both web UI and API endpoints). **Do NOT create verifiers for unit tests or typechecking.** Those are already handled by the standard build/test workflow and don't need dedicated verifier skills. Focus on functional verification: web UI (Playwright), CLI (Tmux), and API (HTTP) verifiers. ## Phase 1: Auto-Detection Analyze the project to detect what's in different subdirectories. The project may contain multiple sub-projects or areas that need different verification approaches (e.g., a web frontend, an API backend, and shared libraries all in one repo). 1. **Scan top-level directories** to identify distinct project areas: - Look for separate package.json, Cargo.toml, pyproject.toml, go.mod in subdirectories - Identify distinct application types in different folders 2. **For each area, detect:** a. **Project type and stack** - Primary language(s) and frameworks - Package managers (npm, yarn, pnpm, pip, cargo, etc.) b. **Application type** - Web app (React, Next.js, Vue, etc.) → suggest Playwright-based verifier - CLI tool → suggest Tmux-based verifier - API service (Express, FastAPI, etc.) → suggest HTTP-based verifier c. **Existing verification tools** - Test frameworks (Jest, Vitest, pytest, etc.) - E2E tools (Playwright, Cypress, etc.) - Dev server scripts in package.json d. **Dev server configuration** - How to start the dev server - What URL it runs on - What text indicates it's ready 3. **Installed verification packages** (for web apps) - Check if Playwright is installed (look in package.json dependencies/devDependencies) - Check MCP configuration (.mcp.json) for browser automation tools: - Playwright MCP server - Chrome DevTools MCP server - Claude Chrome Extension MCP (browser-use via Claude's Chrome extension) - For Python projects, check for playwright, pytest-playwright ## Phase 2: Verification Tool Setup Based on what was detected in Phase 1, help the user set up appropriate verification tools. ### For Web Applications 1. **If browser automation tools are already installed/configured**, ask the user which one they want to use: - Use AskUserQuestion to present the detected options - Example: "I found Playwright and Chrome DevTools MCP configured. Which would you like to use for verification?" 2. **If NO browser automation tools are detected**, ask if they want to install/configure one: - Use AskUserQuestion: "No browser automation tools detected. Would you like to set one up for UI verification?" - Options to offer: - **Playwright** (Recommended) - Full browser automation library, works headless, great for CI - **Chrome DevTools MCP** - Uses Chrome DevTools Protocol via MCP - **Claude Chrome Extension** - Uses the Claude Chrome extension for browser interaction (requires the extension installed in Chrome) - **None** - Skip browser automation (will use basic HTTP checks only) 3. **If user chooses to install Playwright**, run the appropriate command based on package manager: - For npm: \`npm install -D @playwright/test && npx playwright install\` - For yarn: \`yarn add -D @playwright/test && yarn playwright install\` - For pnpm: \`pnpm add -D @playwright/test && pnpm exec playwright install\` - For bun: \`bun add -D @playwright/test && bun playwright install\` 4. **If user chooses Chrome DevTools MCP or Claude Chrome Extension**: - These require MCP server configuration rather than package installation - Ask if they want you to add the MCP server configuration to .mcp.json - For Claude Chrome Extension, inform them they need the extension installed from the Chrome Web Store 5. **MCP Server Setup** (if applicable): - If user selected an MCP-based option, configure the appropriate entry in .mcp.json - Update the verifier skill's allowed-tools to use the appropriate mcp__* tools ### For CLI Tools 1. Check if asciinema is available (run \`which asciinema\`) 2. If not available, inform the user that asciinema can help record verification sessions but is optional 3. Tmux is typically system-installed, just verify it's available ### For API Services 1. Check if HTTP testing tools are available: - curl (usually system-installed) - httpie (\`http\` command) 2. No installation typically needed ## Phase 3: Interactive Q&A Based on the areas detected in Phase 1, you may need to create multiple verifiers. For each distinct area, use the AskUserQuestion tool to confirm: 1. **Verifier name** - Based on detection, suggest a name but let user choose: If there is only ONE project area, use the simple format: - "verifier-playwright" for web UI testing - "verifier-cli" for CLI/terminal testing - "verifier-api" for HTTP API testing If there are MULTIPLE project areas, use the format \`verifier--\`: - "verifier-frontend-playwright" for the frontend web UI - "verifier-backend-api" for the backend API - "verifier-admin-playwright" for an admin dashboard The \`\` portion should be a short identifier for the subdirectory or project area (e.g., the folder name or package name). Custom names are allowed but MUST include "verifier" in the name — the Verify agent discovers skills by looking for "verifier" in the folder name. 2. **Project-specific questions** based on type: For web apps (playwright): - Dev server command (e.g., "npm run dev") - Dev server URL (e.g., "http://localhost:3000") - Ready signal (text that appears when server is ready) For CLI tools: - Entry point command (e.g., "node ./cli.js" or "./target/debug/myapp") - Whether to record with asciinema For APIs: - API server command - Base URL 3. **Authentication & Login** (for web apps and APIs): Use AskUserQuestion to ask: "Does your app require authentication/login to access the pages or endpoints being verified?" - **No authentication needed** - App is publicly accessible, no login required - **Yes, login required** - App requires authentication before verification can proceed - **Some pages require auth** - Mix of public and authenticated routes If the user selects login required (or partial), ask follow-up questions: - **Login method**: How does a user log in? - Form-based login (username/password on a login page) - API token/key (passed as header or query param) - OAuth/SSO (redirect-based flow) - Other (let user describe) - **Test credentials**: What credentials should the verifier use? - Ask for the login URL (e.g., "/login", "http://localhost:3000/auth") - Ask for test username/email and password, or API key - Note: Suggest the user use environment variables for secrets (e.g., \`TEST_USER\`, \`TEST_PASSWORD\`) rather than hardcoding - **Post-login indicator**: How to confirm login succeeded? - URL redirect (e.g., redirects to "/dashboard") - Element appears (e.g., "Welcome" text, user avatar) - Cookie/token is set ## Phase 4: Generate Verifier Skill **All verifier skills are created in the project root's \`.claude/skills/\` directory.** This ensures they are automatically loaded when Claude runs in the project. Write the skill file to \`.claude/skills//SKILL.md\`. ### Skill Template Structure \`\`\`markdown --- name: description: allowed-tools: # Tools appropriate for the verifier type --- # You are a verification executor. You receive a verification plan and execute it EXACTLY as written. ## Project Context ## Setup Instructions ## Authentication ## Reporting Report PASS or FAIL for each step using the format specified in the verification plan. ## Cleanup After verification: 1. Stop any dev servers started 2. Close any browser sessions 3. Report final summary ## Self-Update If verification fails because this skill's instructions are outdated (dev server command/port/ready-signal changed, etc.) — not because the feature under test is broken — or if the user corrects you mid-run, use AskUserQuestion to confirm and then Edit this SKILL.md with a minimal targeted fix. \`\`\` ### Allowed Tools by Type **verifier-playwright**: \`\`\`yaml allowed-tools: - Bash(npm:*) - Bash(yarn:*) - Bash(pnpm:*) - Bash(bun:*) - mcp__playwright__* - Read - Glob - Grep \`\`\` **verifier-cli**: \`\`\`yaml allowed-tools: - Tmux - Bash(asciinema:*) - Read - Glob - Grep \`\`\` **verifier-api**: \`\`\`yaml allowed-tools: - Bash(curl:*) - Bash(http:*) - Bash(npm:*) - Bash(yarn:*) - Read - Glob - Grep \`\`\` ## Phase 5: Confirm Creation After writing the skill file(s), inform the user: 1. Where each skill was created (always in \`.claude/skills/\`) 2. How the Verify agent will discover them — the folder name must contain "verifier" (case-insensitive) for automatic discovery 3. That they can edit the skills to customize them 4. That they can run /init-verifiers again to add more verifiers for other areas 5. That the verifier will offer to self-update if it detects its own instructions are outdated (wrong dev server command, changed ready signal, etc.) `}]}},ZPq=wjz});function _jz(A){let q=new Set(op6.map((K)=>pY6(K.key)));return A.map((K)=>{let Y={};for(let[z,w]of Object.entries(K.bindings))if(!q.has(pY6(z)))Y[z]=w;return{context:K.context,bindings:Y}}).filter((K)=>Object.keys(K.bindings).length>0)}function fPq(){let q={$schema:"https://www.schemastore.org/claude-code-keybindings.json",$docs:"https://code.claude.com/docs/en/keybindings",bindings:_jz(QG6)};return U6(q,null,2)+` `}var TPq=k(()=>{bW1();xW1();a1()});var VPq={};m1(VPq,{call:()=>Jjz});import{stat as $jz,writeFile as Ojz,mkdir as Hjz}from"fs/promises";import{dirname as jjz}from"path";async function Jjz(){if(!eE())return{type:"text",value:"Keybinding customization is not enabled. This feature is currently in preview."};let A=cY6(),q=!1;try{await $jz(A),q=!0}catch{}if(!q){let Y=fPq(),z=jjz(A);await Hjz(z,{recursive:!0}),await Ojz(A,Y,"utf-8")}let K=await dL(A);if(K.error)return{type:"text",value:`${q?"Opened":"Created"} ${A}. Could not open in editor: ${K.error}`};return{type:"text",value:q?`Opened ${A} in your editor.`:`Created ${A} with template. Opened in your editor.`}}var NPq=k(()=>{wi();TPq();cL()});var Mjz,Ln8;var vPq=k(()=>{wi();Mjz={name:"keybindings",description:"Open or create your keybindings configuration file",isEnabled:()=>eE(),isHidden:!1,supportsNonInteractive:!1,type:"local",load:()=>Promise.resolve().then(() => (NPq(),VPq)),userFacingName:()=>"keybindings"},Ln8=Mjz});var kPq=()=>({type:"local-jsx",name:"login",description:yn8()?"Switch Anthropic accounts":"Sign in with your Anthropic account",isEnabled:()=>!process.env.DISABLE_LOGIN_COMMAND,isHidden:!1,load:()=>Promise.resolve().then(() => (qL1(),a8q)),userFacingName(){return"login"}});var EPq=k(()=>{bA()});var LPq;var yPq=k(()=>{LPq={type:"local-jsx",name:"logout",description:"Sign out from your Anthropic account",isEnabled:()=>!process.env.DISABLE_LOGOUT_COMMAND,isHidden:!1,load:()=>Promise.resolve().then(() => (wF8(),K8q)),userFacingName(){return"logout"}}});function SPq(){let A=Y6(1),q;if(A[0]===Symbol.for("react.memo_cache_sentinel"))q=RPq.default.createElement(T,null,"Checking GitHub CLI installation…"),A[0]=q;else q=A[0];return q}var RPq;var CPq=k(()=>{K1();n6();RPq=e(W6(),1)});function hPq(A){let q=Y6(49),{currentRepo:K,useCurrentRepo:Y,repoUrl:z,onRepoUrlChange:w,onSubmit:_,onToggleUseCurrentRepo:$}=A,[O,H]=PD.useState(0),[j,J]=PD.useState(!1),D=PA().columns,X;if(q[0]!==K||q[1]!==_||q[2]!==z||q[3]!==Y)X=()=>{if(!(Y?K:z)?.trim()){J(!0);return}_()},q[0]=K,q[1]=_,q[2]=z,q[3]=Y,q[4]=X;else X=q[4];let P=X,W=!Y||!K,Z;if(q[5]!==$)Z=()=>{$(!0),J(!1)},q[5]=$,q[6]=Z;else Z=q[6];let G=Z,f;if(q[7]!==$)f=()=>{$(!1),J(!1)},q[7]=$,q[8]=f;else f=q[8];let V=f,N;if(q[9]!==V||q[10]!==G||q[11]!==P)N={"confirm:previous":G,"confirm:next":V,"confirm:yes":P},q[9]=V,q[10]=G,q[11]=P,q[12]=N;else N=q[12];let v=!W,y;if(q[13]!==v)y={context:"Confirmation",isActive:v},q[13]=v,q[14]=y;else y=q[14];f7(N,y);let R;if(q[15]!==V||q[16]!==G)R={"confirm:previous":G,"confirm:next":V},q[15]=V,q[16]=G,q[17]=R;else R=q[17];let h;if(q[18]!==W)h={context:"Confirmation",isActive:W},q[18]=W,q[19]=h;else h=q[19];f7(R,h);let B;if(q[20]===Symbol.for("react.memo_cache_sentinel"))B=PD.default.createElement(m,{flexDirection:"column",marginBottom:1},PD.default.createElement(T,{bold:!0},"Install GitHub App"),PD.default.createElement(T,{dimColor:!0},"Select GitHub repository")),q[20]=B;else B=q[20];let x;if(q[21]!==K||q[22]!==Y)x=K&&PD.default.createElement(m,{marginBottom:1},PD.default.createElement(T,{bold:Y,color:Y?"permission":void 0},Y?"> ":" ","Use current repository: ",K)),q[21]=K,q[22]=Y,q[23]=x;else x=q[23];let F=!Y||!K,g=!Y||!K?"permission":void 0,b=!Y||!K?"> ":" ",U=K?"Enter a different repository":"Enter repository",d;if(q[24]!==F||q[25]!==g||q[26]!==b||q[27]!==U)d=PD.default.createElement(m,{marginBottom:1},PD.default.createElement(T,{bold:F,color:g},b,U)),q[24]=F,q[25]=g,q[26]=b,q[27]=U,q[28]=d;else d=q[28];let l;if(q[29]!==K||q[30]!==O||q[31]!==P||q[32]!==w||q[33]!==z||q[34]!==D||q[35]!==Y)l=(!Y||!K)&&PD.default.createElement(m,{marginLeft:2,marginBottom:1},PD.default.createElement(sK,{value:z,onChange:(q6)=>{w(q6),J(!1)},onSubmit:P,focus:!0,placeholder:"Enter a repo as owner/repo or https://github.com/owner/repo…",columns:D,cursorOffset:O,onChangeCursorOffset:H,showCursor:!0})),q[29]=K,q[30]=O,q[31]=P,q[32]=w,q[33]=z,q[34]=D,q[35]=Y,q[36]=l;else l=q[36];let t;if(q[37]!==x||q[38]!==d||q[39]!==l)t=PD.default.createElement(m,{flexDirection:"column",borderStyle:"round",paddingX:1},B,x,d,l),q[37]=x,q[38]=d,q[39]=l,q[40]=t;else t=q[40];let s;if(q[41]!==j)s=j&&PD.default.createElement(m,{marginLeft:3,marginBottom:1},PD.default.createElement(T,{color:"error"},"Please enter a repository name to continue")),q[41]=j,q[42]=s;else s=q[42];let H6=K?"↑/↓ to select · ":"",Z6;if(q[43]!==H6)Z6=PD.default.createElement(m,{marginLeft:3},PD.default.createElement(T,{dimColor:!0},H6,"Enter to continue")),q[43]=H6,q[44]=Z6;else Z6=q[44];let G6;if(q[45]!==t||q[46]!==s||q[47]!==Z6)G6=PD.default.createElement(PD.default.Fragment,null,t,s,Z6),q[45]=t,q[46]=s,q[47]=Z6,q[48]=G6;else G6=q[48];return G6}var PD;var IPq=k(()=>{K1();n6();H7();WO();xq();PD=e(W6(),1)});var bPq="Add Claude Code GitHub Workflow",TU="https://github.com/anthropics/claude-code-action/blob/main/docs/setup.md",xPq=`name: Claude Code on: issue_comment: types: [created] pull_request_review_comment: types: [created] issues: types: [opened, assigned] pull_request_review: types: [submitted] jobs: claude: if: | (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) || (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) || (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) || (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude'))) runs-on: ubuntu-latest permissions: contents: read pull-requests: read issues: read id-token: write actions: read # Required for Claude to read CI results on PRs steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 1 - name: Run Claude Code id: claude uses: anthropics/claude-code-action@v1 with: anthropic_api_key: \${{ secrets.ANTHROPIC_API_KEY }} # This is an optional setting that allows Claude to read CI results on PRs additional_permissions: | actions: read # Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it. # prompt: 'Update the pull request description to include a summary of changes.' # Optional: Add claude_args to customize behavior and configuration # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md # or https://code.claude.com/docs/en/cli-reference for available options # claude_args: '--allowed-tools Bash(gh pr:*)' `,uPq=`## \uD83E\uDD16 Installing Claude Code GitHub App This PR adds a GitHub Actions workflow that enables Claude Code integration in our repository. ### What is Claude Code? [Claude Code](https://claude.com/claude-code) is an AI coding agent that can help with: - Bug fixes and improvements - Documentation updates - Implementing new features - Code reviews and suggestions - Writing tests - And more! ### How it works Once this PR is merged, we'll be able to interact with Claude by mentioning @claude in a pull request or issue comment. Once the workflow is triggered, Claude will analyze the comment and surrounding context, and execute on the request in a GitHub action. ### Important Notes - **This workflow won't take effect until this PR is merged** - **@claude mentions won't work until after the merge is complete** - The workflow runs automatically whenever Claude is mentioned in PR or issue comments - Claude gets access to the entire PR or issue context including files, diffs, and previous comments ### Security - Our Anthropic API key is securely stored as a GitHub Actions secret - Only users with write access to the repository can trigger the workflow - All Claude runs are stored in the GitHub Actions run history - Claude's default tools are limited to reading/writing files and interacting with our repo by creating comments, branches, and commits. - We can add more allowed tools by adding them to the workflow file like: \`\`\` allowed_tools: Bash(npm install),Bash(npm run build),Bash(npm run lint),Bash(npm run test) \`\`\` There's more information in the [Claude Code action repo](https://github.com/anthropics/claude-code-action). After merging this PR, let's try mentioning @claude in a comment on any PR to get started!`,BPq=`name: Claude Code Review on: pull_request: types: [opened, synchronize, ready_for_review, reopened] # Optional: Only run on specific file changes # paths: # - "src/**/*.ts" # - "src/**/*.tsx" # - "src/**/*.js" # - "src/**/*.jsx" jobs: claude-review: # Optional: Filter by PR author # if: | # github.event.pull_request.user.login == 'external-contributor' || # github.event.pull_request.user.login == 'new-developer' || # github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' runs-on: ubuntu-latest permissions: contents: read pull-requests: read issues: read id-token: write steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 1 - name: Run Claude Code Review id: claude-review uses: anthropics/claude-code-action@v1 with: anthropic_api_key: \${{ secrets.ANTHROPIC_API_KEY }} plugin_marketplaces: 'https://github.com/anthropics/claude-code.git' plugins: 'code-review@claude-code-plugins' prompt: '/code-review:code-review \${{ github.repository }}/pull/\${{ github.event.pull_request.number }}' # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md # or https://code.claude.com/docs/en/cli-reference for available options `;function mPq(A){let q=Y6(12),{repoUrl:K,onSubmit:Y}=A,z;if(q[0]===Symbol.for("react.memo_cache_sentinel"))z={context:"Confirmation"},q[0]=z;else z=q[0];V8("confirm:yes",Y,z);let w;if(q[1]===Symbol.for("react.memo_cache_sentinel"))w=WD.default.createElement(m,{flexDirection:"column",marginBottom:1},WD.default.createElement(T,{bold:!0},"Install the Claude GitHub App")),q[1]=w;else w=q[1];let _;if(q[2]===Symbol.for("react.memo_cache_sentinel"))_=WD.default.createElement(m,{marginBottom:1},WD.default.createElement(T,null,"Opening browser to install the Claude GitHub App…")),q[2]=_;else _=q[2];let $;if(q[3]===Symbol.for("react.memo_cache_sentinel"))$=WD.default.createElement(m,{marginBottom:1},WD.default.createElement(T,null,"If your browser doesn't open automatically, visit:")),q[3]=$;else $=q[3];let O;if(q[4]===Symbol.for("react.memo_cache_sentinel"))O=WD.default.createElement(m,{marginBottom:1},WD.default.createElement(T,{underline:!0},"https://github.com/apps/claude")),q[4]=O;else O=q[4];let H;if(q[5]!==K)H=WD.default.createElement(m,{marginBottom:1},WD.default.createElement(T,null,"Please install the app for repository: ",WD.default.createElement(T,{bold:!0},K))),q[5]=K,q[6]=H;else H=q[6];let j;if(q[7]===Symbol.for("react.memo_cache_sentinel"))j=WD.default.createElement(m,{marginBottom:1},WD.default.createElement(T,{dimColor:!0},"Important: Make sure to grant access to this specific repository")),q[7]=j;else j=q[7];let J;if(q[8]===Symbol.for("react.memo_cache_sentinel"))J=WD.default.createElement(m,null,WD.default.createElement(T,{bold:!0,color:"permission"},"Press Enter once you've installed the app",q1.ellipsis)),q[8]=J;else J=q[8];let M;if(q[9]===Symbol.for("react.memo_cache_sentinel"))M=WD.default.createElement(m,{marginTop:1},WD.default.createElement(T,{dimColor:!0},"Having trouble? See manual setup instructions at:"," ",WD.default.createElement(T,{color:"claude"},TU))),q[9]=M;else M=q[9];let D;if(q[10]!==H)D=WD.default.createElement(m,{flexDirection:"column",borderStyle:"round",borderDimColor:!0,paddingX:1},w,_,$,O,H,j,J,M),q[10]=H,q[11]=D;else D=q[11];return D}var WD;var gPq=k(()=>{K1();n6();H7();t7();WD=e(W6(),1)});function FPq(A){let q=Y6(42),{useExistingSecret:K,secretName:Y,onToggleUseExistingSecret:z,onSecretNameChange:w,onSubmit:_}=A,[$,O]=XH.useState(0),H=PA(),[j]=G7(),J;if(q[0]!==z)J=()=>z(!0),q[0]=z,q[1]=J;else J=q[1];let M=J,D;if(q[2]!==z)D=()=>z(!1),q[2]=z,q[3]=D;else D=q[3];let X=D,P;if(q[4]!==X||q[5]!==M||q[6]!==_)P={"confirm:previous":M,"confirm:next":X,"confirm:yes":_},q[4]=X,q[5]=M,q[6]=_,q[7]=P;else P=q[7];let W;if(q[8]!==K)W={context:"Confirmation",isActive:K},q[8]=K,q[9]=W;else W=q[9];f7(P,W);let Z;if(q[10]!==X||q[11]!==M)Z={"confirm:previous":M,"confirm:next":X},q[10]=X,q[11]=M,q[12]=Z;else Z=q[12];let G=!K,f;if(q[13]!==G)f={context:"Confirmation",isActive:G},q[13]=G,q[14]=f;else f=q[14];f7(Z,f);let V;if(q[15]===Symbol.for("react.memo_cache_sentinel"))V=XH.default.createElement(m,{flexDirection:"column",marginBottom:1},XH.default.createElement(T,{bold:!0},"Install GitHub App"),XH.default.createElement(T,{dimColor:!0},"Setup API key secret")),q[15]=V;else V=q[15];let N;if(q[16]===Symbol.for("react.memo_cache_sentinel"))N=XH.default.createElement(m,{marginBottom:1},XH.default.createElement(T,{color:"warning"},"ANTHROPIC_API_KEY already exists in repository secrets!")),q[16]=N;else N=q[16];let v;if(q[17]===Symbol.for("react.memo_cache_sentinel"))v=XH.default.createElement(m,{marginBottom:1},XH.default.createElement(T,null,"Would you like to:")),q[17]=v;else v=q[17];let y;if(q[18]!==j||q[19]!==K)y=K?uA("success",j)("> "):" ",q[18]=j,q[19]=K,q[20]=y;else y=q[20];let R;if(q[21]!==y)R=XH.default.createElement(m,{marginBottom:1},XH.default.createElement(T,null,y,"Use the existing API key")),q[21]=y,q[22]=R;else R=q[22];let h;if(q[23]!==j||q[24]!==K)h=!K?uA("success",j)("> "):" ",q[23]=j,q[24]=K,q[25]=h;else h=q[25];let B;if(q[26]!==h)B=XH.default.createElement(m,{marginBottom:1},XH.default.createElement(T,null,h,"Create a new secret with a different name")),q[26]=h,q[27]=B;else B=q[27];let x;if(q[28]!==$||q[29]!==w||q[30]!==_||q[31]!==Y||q[32]!==H||q[33]!==K)x=!K&&XH.default.createElement(XH.default.Fragment,null,XH.default.createElement(m,{marginBottom:1},XH.default.createElement(T,null,"Enter new secret name (alphanumeric with underscores):")),XH.default.createElement(sK,{value:Y,onChange:w,onSubmit:_,focus:!0,placeholder:"e.g., CLAUDE_API_KEY",columns:H.columns,cursorOffset:$,onChangeCursorOffset:O,showCursor:!0})),q[28]=$,q[29]=w,q[30]=_,q[31]=Y,q[32]=H,q[33]=K,q[34]=x;else x=q[34];let F;if(q[35]!==R||q[36]!==B||q[37]!==x)F=XH.default.createElement(m,{flexDirection:"column",borderStyle:"round",paddingX:1},V,N,v,R,B,x),q[35]=R,q[36]=B,q[37]=x,q[38]=F;else F=q[38];let g;if(q[39]===Symbol.for("react.memo_cache_sentinel"))g=XH.default.createElement(m,{marginLeft:3},XH.default.createElement(T,{dimColor:!0},"↑/↓ to select · Enter to continue")),q[39]=g;else g=q[39];let b;if(q[40]!==F)b=XH.default.createElement(XH.default.Fragment,null,F,g),q[40]=F,q[41]=b;else b=q[41];return b}var XH;var QPq=k(()=>{K1();n6();H7();WO();xq();XH=e(W6(),1)});function UPq(A){let q=Y6(55),{existingApiKey:K,apiKeyOrOAuthToken:Y,onApiKeyChange:z,onSubmit:w,onToggleUseExistingKey:_,onCreateOAuthToken:$,selectedOption:O,onSelectOption:H}=A,j=O===void 0?K?"existing":$?"oauth":"new":O,[J,M]=iP.useState(0),D=PA(),[X]=G7(),P;if(q[0]!==K||q[1]!==$||q[2]!==H||q[3]!==_||q[4]!==j)P=()=>{if(j==="new"&&$)H?.("oauth");else if(j==="oauth"&&K)H?.("existing"),_(!0)},q[0]=K,q[1]=$,q[2]=H,q[3]=_,q[4]=j,q[5]=P;else P=q[5];let W=P,Z;if(q[6]!==$||q[7]!==H||q[8]!==_||q[9]!==j)Z=()=>{if(j==="existing")H?.($?"oauth":"new"),_(!1);else if(j==="oauth")H?.("new")},q[6]=$,q[7]=H,q[8]=_,q[9]=j,q[10]=Z;else Z=q[10];let G=Z,f;if(q[11]!==$||q[12]!==w||q[13]!==j)f=()=>{if(j==="oauth"&&$)$();else w()},q[11]=$,q[12]=w,q[13]=j,q[14]=f;else f=q[14];let V=f,N=j==="new",v;if(q[15]!==V||q[16]!==G||q[17]!==W)v={"confirm:previous":W,"confirm:next":G,"confirm:yes":V},q[15]=V,q[16]=G,q[17]=W,q[18]=v;else v=q[18];let y=!N,R;if(q[19]!==y)R={context:"Confirmation",isActive:y},q[19]=y,q[20]=R;else R=q[20];f7(v,R);let h;if(q[21]!==G||q[22]!==W)h={"confirm:previous":W,"confirm:next":G},q[21]=G,q[22]=W,q[23]=h;else h=q[23];let B;if(q[24]!==N)B={context:"Confirmation",isActive:N},q[24]=N,q[25]=B;else B=q[25];f7(h,B);let x;if(q[26]===Symbol.for("react.memo_cache_sentinel"))x=iP.default.createElement(m,{flexDirection:"column",marginBottom:1},iP.default.createElement(T,{bold:!0},"Install GitHub App"),iP.default.createElement(T,{dimColor:!0},"Choose API key")),q[26]=x;else x=q[26];let F;if(q[27]!==K||q[28]!==j||q[29]!==X)F=K&&iP.default.createElement(m,{marginBottom:1},iP.default.createElement(T,null,j==="existing"?uA("success",X)("> "):" ","Use your existing Claude Code API key")),q[27]=K,q[28]=j,q[29]=X,q[30]=F;else F=q[30];let g;if(q[31]!==$||q[32]!==j||q[33]!==X)g=$&&iP.default.createElement(m,{marginBottom:1},iP.default.createElement(T,null,j==="oauth"?uA("success",X)("> "):" ","Create a long-lived token with your Claude subscription")),q[31]=$,q[32]=j,q[33]=X,q[34]=g;else g=q[34];let b;if(q[35]!==j||q[36]!==X)b=j==="new"?uA("success",X)("> "):" ",q[35]=j,q[36]=X,q[37]=b;else b=q[37];let U;if(q[38]!==b)U=iP.default.createElement(m,{marginBottom:1},iP.default.createElement(T,null,b,"Enter a new API key")),q[38]=b,q[39]=U;else U=q[39];let d;if(q[40]!==Y||q[41]!==J||q[42]!==z||q[43]!==w||q[44]!==j||q[45]!==D)d=j==="new"&&iP.default.createElement(sK,{value:Y,onChange:z,onSubmit:w,onPaste:z,focus:!0,placeholder:"sk-ant… (Create a new key at https://platform.claude.com/settings/keys)",mask:"*",columns:D.columns,cursorOffset:J,onChangeCursorOffset:M,showCursor:!0}),q[40]=Y,q[41]=J,q[42]=z,q[43]=w,q[44]=j,q[45]=D,q[46]=d;else d=q[46];let l;if(q[47]!==F||q[48]!==g||q[49]!==U||q[50]!==d)l=iP.default.createElement(m,{flexDirection:"column",borderStyle:"round",paddingX:1},x,F,g,U,d),q[47]=F,q[48]=g,q[49]=U,q[50]=d,q[51]=l;else l=q[51];let t;if(q[52]===Symbol.for("react.memo_cache_sentinel"))t=iP.default.createElement(m,{marginLeft:3},iP.default.createElement(T,{dimColor:!0},"↑/↓ to select · Enter to continue")),q[52]=t;else t=q[52];let s;if(q[53]!==l)s=iP.default.createElement(iP.default.Fragment,null,l,t),q[53]=l,q[54]=s;else s=q[54];return s}var iP;var pPq=k(()=>{K1();n6();H7();WO();xq();iP=e(W6(),1)});function dPq(A){let q=Y6(10),{currentWorkflowInstallStep:K,secretExists:Y,useExistingSecret:z,secretName:w,skipWorkflow:_,selectedWorkflows:$}=A,O=_===void 0?!1:_,H;if(q[0]!==Y||q[1]!==w||q[2]!==$||q[3]!==O||q[4]!==z)H=O?["Getting repository information",Y&&z?"Using existing API key secret":`Setting up ${w} secret`]:["Getting repository information","Creating branch",$.length>1?"Creating workflow files":"Creating workflow file",Y&&z?"Using existing API key secret":`Setting up ${w} secret`,"Opening pull request page"],q[0]=Y,q[1]=w,q[2]=$,q[3]=O,q[4]=z,q[5]=H;else H=q[5];let j=H,J;if(q[6]===Symbol.for("react.memo_cache_sentinel"))J=Or.default.createElement(m,{flexDirection:"column",marginBottom:1},Or.default.createElement(T,{bold:!0},"Install GitHub App"),Or.default.createElement(T,{dimColor:!0},"Create GitHub Actions workflow")),q[6]=J;else J=q[6];let M;if(q[7]!==K||q[8]!==j)M=Or.default.createElement(Or.default.Fragment,null,Or.default.createElement(m,{flexDirection:"column",borderStyle:"round",paddingX:1},J,j.map((D,X)=>{let P="pending";if(X{K1();n6();Or=e(W6(),1)});function lPq(A){let q=Y6(21),{secretExists:K,useExistingSecret:Y,secretName:z,skipWorkflow:w}=A,_=w===void 0?!1:w,$;if(q[0]===Symbol.for("react.memo_cache_sentinel"))$=h$.default.createElement(m,{flexDirection:"column",marginBottom:1},h$.default.createElement(T,{bold:!0},"Install GitHub App"),h$.default.createElement(T,{dimColor:!0},"Success")),q[0]=$;else $=q[0];let O;if(q[1]!==_)O=!_&&h$.default.createElement(T,{color:"success"},"✓ GitHub Actions workflow created!"),q[1]=_,q[2]=O;else O=q[2];let H;if(q[3]!==K||q[4]!==Y)H=K&&Y&&h$.default.createElement(m,{marginTop:1},h$.default.createElement(T,{color:"success"},"✓ Using existing ANTHROPIC_API_KEY secret")),q[3]=K,q[4]=Y,q[5]=H;else H=q[5];let j;if(q[6]!==K||q[7]!==z||q[8]!==Y)j=(!K||!Y)&&h$.default.createElement(m,{marginTop:1},h$.default.createElement(T,{color:"success"},"✓ API key saved as ",z," secret")),q[6]=K,q[7]=z,q[8]=Y,q[9]=j;else j=q[9];let J;if(q[10]===Symbol.for("react.memo_cache_sentinel"))J=h$.default.createElement(m,{marginTop:1},h$.default.createElement(T,null,"Next steps:")),q[10]=J;else J=q[10];let M;if(q[11]!==_)M=_?h$.default.createElement(h$.default.Fragment,null,h$.default.createElement(T,null,"1. Install the Claude GitHub App if you haven't already"),h$.default.createElement(T,null,"2. Your workflow file was kept unchanged"),h$.default.createElement(T,null,"3. API key is configured and ready to use")):h$.default.createElement(h$.default.Fragment,null,h$.default.createElement(T,null,"1. A pre-filled PR page has been created"),h$.default.createElement(T,null,"2. Install the Claude GitHub App if you haven't already"),h$.default.createElement(T,null,"3. Merge the PR to enable Claude PR assistance")),q[11]=_,q[12]=M;else M=q[12];let D;if(q[13]!==O||q[14]!==H||q[15]!==j||q[16]!==M)D=h$.default.createElement(m,{flexDirection:"column",borderStyle:"round",paddingX:1},$,O,H,j,J,M),q[13]=O,q[14]=H,q[15]=j,q[16]=M,q[17]=D;else D=q[17];let X;if(q[18]===Symbol.for("react.memo_cache_sentinel"))X=h$.default.createElement(m,{marginLeft:3},h$.default.createElement(T,{dimColor:!0},"Press any key to exit")),q[18]=X;else X=q[18];let P;if(q[19]!==D)P=h$.default.createElement(h$.default.Fragment,null,D,X),q[19]=D,q[20]=P;else P=q[20];return P}var h$;var iPq=k(()=>{K1();n6();h$=e(W6(),1)});function nPq(A){let q=Y6(15),{error:K,errorReason:Y,errorInstructions:z}=A,w;if(q[0]===Symbol.for("react.memo_cache_sentinel"))w=XX.default.createElement(m,{flexDirection:"column",marginBottom:1},XX.default.createElement(T,{bold:!0},"Install GitHub App")),q[0]=w;else w=q[0];let _;if(q[1]!==K)_=XX.default.createElement(T,{color:"error"},"Error: ",K),q[1]=K,q[2]=_;else _=q[2];let $;if(q[3]!==Y)$=Y&&XX.default.createElement(m,{marginTop:1},XX.default.createElement(T,{dimColor:!0},"Reason: ",Y)),q[3]=Y,q[4]=$;else $=q[4];let O;if(q[5]!==z)O=z&&z.length>0&&XX.default.createElement(m,{flexDirection:"column",marginTop:1},XX.default.createElement(T,{dimColor:!0},"How to fix:"),z.map(Djz)),q[5]=z,q[6]=O;else O=q[6];let H;if(q[7]===Symbol.for("react.memo_cache_sentinel"))H=XX.default.createElement(m,{marginTop:1},XX.default.createElement(T,{dimColor:!0},"For manual setup instructions, see:"," ",XX.default.createElement(T,{color:"claude"},TU))),q[7]=H;else H=q[7];let j;if(q[8]!==_||q[9]!==$||q[10]!==O)j=XX.default.createElement(m,{flexDirection:"column",borderStyle:"round",paddingX:1},w,_,$,O,H),q[8]=_,q[9]=$,q[10]=O,q[11]=j;else j=q[11];let J;if(q[12]===Symbol.for("react.memo_cache_sentinel"))J=XX.default.createElement(m,{marginLeft:3},XX.default.createElement(T,{dimColor:!0},"Press any key to exit")),q[12]=J;else J=q[12];let M;if(q[13]!==j)M=XX.default.createElement(XX.default.Fragment,null,j,J),q[13]=j,q[14]=M;else M=q[14];return M}function Djz(A,q){return XX.default.createElement(m,{key:q,marginLeft:2},XX.default.createElement(T,{dimColor:!0},"• "),XX.default.createElement(T,null,A))}var XX;var rPq=k(()=>{K1();n6();XX=e(W6(),1)});function oPq(A){let q=Y6(16),{repoName:K,onSelectAction:Y}=A,z;if(q[0]===Symbol.for("react.memo_cache_sentinel"))z=[{label:"Update workflow file with latest version",value:"update"},{label:"Skip workflow update (configure secrets only)",value:"skip"},{label:"Exit without making changes",value:"exit"}],q[0]=z;else z=q[0];let w=z,_;if(q[1]!==Y)_=(W)=>{Y(W)},q[1]=Y,q[2]=_;else _=q[2];let $=_,O;if(q[3]!==Y)O=()=>{Y("exit")},q[3]=Y,q[4]=O;else O=q[4];let H=O,j;if(q[5]===Symbol.for("react.memo_cache_sentinel"))j=xv.default.createElement(T,{bold:!0},"Existing Workflow Found"),q[5]=j;else j=q[5];let J;if(q[6]!==K)J=xv.default.createElement(m,{flexDirection:"column",marginBottom:1},j,xv.default.createElement(T,{dimColor:!0},"Repository: ",K)),q[6]=K,q[7]=J;else J=q[7];let M;if(q[8]===Symbol.for("react.memo_cache_sentinel"))M=xv.default.createElement(m,{flexDirection:"column",marginBottom:1},xv.default.createElement(T,null,"A Claude workflow file already exists at"," ",xv.default.createElement(T,{color:"claude"},".github/workflows/claude.yml")),xv.default.createElement(T,{dimColor:!0},"What would you like to do?")),q[8]=M;else M=q[8];let D;if(q[9]!==H||q[10]!==$)D=xv.default.createElement(m,{flexDirection:"column"},xv.default.createElement(E8,{options:w,onChange:$,onCancel:H})),q[9]=H,q[10]=$,q[11]=D;else D=q[11];let X;if(q[12]===Symbol.for("react.memo_cache_sentinel"))X=xv.default.createElement(m,{marginTop:1},xv.default.createElement(T,{dimColor:!0},"View the latest workflow template at:"," ",xv.default.createElement(T,{color:"claude"},"https://github.com/anthropics/claude-code-action/blob/main/examples/claude.yml"))),q[12]=X;else X=q[12];let P;if(q[13]!==J||q[14]!==D)P=xv.default.createElement(m,{flexDirection:"column",borderStyle:"round",borderDimColor:!0,paddingX:1},J,M,D,X),q[13]=J,q[14]=D,q[15]=P;else P=q[15];return P}var xv;var aPq=k(()=>{K1();n6();HY();xv=e(W6(),1)});function sPq(A){let q=Y6(8),{warnings:K,onContinue:Y}=A,z;if(q[0]===Symbol.for("react.memo_cache_sentinel"))z={context:"Confirmation"},q[0]=z;else z=q[0];V8("confirm:yes",Y,z);let w;if(q[1]===Symbol.for("react.memo_cache_sentinel"))w=sW.default.createElement(m,{flexDirection:"column",marginBottom:1},sW.default.createElement(T,{bold:!0},q1.warning," Setup Warnings"),sW.default.createElement(T,{dimColor:!0},"We found some potential issues, but you can continue anyway")),q[1]=w;else w=q[1];let _;if(q[2]!==K)_=K.map(Xjz),q[2]=K,q[3]=_;else _=q[3];let $;if(q[4]===Symbol.for("react.memo_cache_sentinel"))$=sW.default.createElement(m,{marginTop:1},sW.default.createElement(T,{bold:!0,color:"permission"},"Press Enter to continue anyway, or Ctrl+C to exit and fix issues")),q[4]=$;else $=q[4];let O;if(q[5]===Symbol.for("react.memo_cache_sentinel"))O=sW.default.createElement(m,{marginTop:1},sW.default.createElement(T,{dimColor:!0},"You can also try the manual setup steps if needed:"," ",sW.default.createElement(T,{color:"claude"},TU))),q[5]=O;else O=q[5];let H;if(q[6]!==_)H=sW.default.createElement(sW.default.Fragment,null,sW.default.createElement(m,{flexDirection:"column",borderStyle:"round",paddingX:1},w,_,$,O)),q[6]=_,q[7]=H;else H=q[7];return H}function Xjz(A,q){return sW.default.createElement(m,{key:q,flexDirection:"column",marginBottom:1},sW.default.createElement(T,{color:"warning",bold:!0},A.title),sW.default.createElement(T,null,A.message),A.instructions.length>0&&sW.default.createElement(m,{flexDirection:"column",marginLeft:2,marginTop:1},A.instructions.map(Pjz)))}function Pjz(A,q){return sW.default.createElement(T,{key:q,dimColor:!0},"• ",A)}var sW;var tPq=k(()=>{K1();n6();H7();t7();sW=e(W6(),1)});function A0q(A){let q=Y6(4),{isFocused:K,isSelected:Y,children:z}=A,w;if(q[0]!==z||q[1]!==K||q[2]!==Y)w=ePq.default.createElement(fQ,{isFocused:K,isSelected:Y},z),q[0]=z,q[1]=K,q[2]=Y,q[3]=w;else w=q[3];return w}var ePq;var q0q=k(()=>{K1();Vi6();ePq=e(W6(),1)});var QC1;var K0q=k(()=>{QC1=class QC1 extends Map{first;last;constructor(A){let q=[],K,Y,z,w=0;for(let _ of A){let $={..._,previous:z,next:void 0,index:w};if(z)z.next=$;K||=$,Y=$,q.push([_.value,$]),w++,z=$}super(q);this.first=K,this.last=Y}}});import{isDeepStrictEqual as Y0q}from"node:util";var lL,Wjz=(A,q)=>{switch(q.type){case"focus-next-option":{if(!A.focusedValue)return A;let K=A.optionMap.get(A.focusedValue);if(!K)return A;let Y=K.next||A.optionMap.first;if(!Y)return A;if(!K.next&&Y===A.optionMap.first)return{...A,focusedValue:Y.value,visibleFromIndex:0,visibleToIndex:A.visibleOptionCount};if(!(Y.index>=A.visibleToIndex))return{...A,focusedValue:Y.value};let w=Math.min(A.optionMap.size,A.visibleToIndex+1),_=w-A.visibleOptionCount;return{...A,focusedValue:Y.value,visibleFromIndex:_,visibleToIndex:w}}case"focus-previous-option":{if(!A.focusedValue)return A;let K=A.optionMap.get(A.focusedValue);if(!K)return A;let Y=K.previous||A.optionMap.last;if(!Y)return A;if(!K.previous&&Y===A.optionMap.last){let $=A.optionMap.size,O=Math.max(0,$-A.visibleOptionCount);return{...A,focusedValue:Y.value,visibleFromIndex:O,visibleToIndex:$}}if(!(Y.index<=A.visibleFromIndex))return{...A,focusedValue:Y.value};let w=Math.max(0,A.visibleFromIndex-1),_=w+A.visibleOptionCount;return{...A,focusedValue:Y.value,visibleFromIndex:w,visibleToIndex:_}}case"toggle-focused-option":{if(!A.focusedValue)return A;if(A.value.includes(A.focusedValue)){let K=new Set(A.value);return K.delete(A.focusedValue),{...A,previousValue:A.value,value:[...K]}}return{...A,previousValue:A.value,value:[...A.value,A.focusedValue]}}case"reset":return q.state}},z0q=({visibleOptionCount:A,defaultValue:q,options:K})=>{let Y=typeof A==="number"?Math.min(A,K.length):K.length,z=new QC1(K),w=q??[];return{optionMap:z,visibleOptionCount:Y,focusedValue:z.first?.value,visibleFromIndex:0,visibleToIndex:Y,previousValue:w,value:w}},w0q=({visibleOptionCount:A=5,options:q,defaultValue:K,onChange:Y,onSubmit:z})=>{let[w,_]=lL.useReducer(Wjz,{visibleOptionCount:A,defaultValue:K,options:q},z0q),[$,O]=lL.useState(q);if(q!==$&&!Y0q(q,$))_({type:"reset",state:z0q({visibleOptionCount:A,defaultValue:K,options:q})}),O(q);let H=lL.useCallback(()=>{_({type:"focus-next-option"})},[]),j=lL.useCallback(()=>{_({type:"focus-previous-option"})},[]),J=lL.useCallback(()=>{_({type:"toggle-focused-option"})},[]),M=lL.useCallback(()=>{z?.(w.value)},[w.value,z]),D=lL.useMemo(()=>{return q.map((X,P)=>({...X,index:P})).slice(w.visibleFromIndex,w.visibleToIndex)},[q,w.visibleFromIndex,w.visibleToIndex]);return lL.useEffect(()=>{if(!Y0q(w.previousValue,w.value))Y?.(w.value)},[w.previousValue,w.value,q,Y]),{focusedValue:w.focusedValue,visibleFromIndex:w.visibleFromIndex,visibleToIndex:w.visibleToIndex,value:w.value,visibleOptions:D,focusNextOption:H,focusPreviousOption:j,toggleFocusedOption:J,submit:M}};var _0q=k(()=>{K0q();lL=e(W6(),1)});var $0q=({isDisabled:A=!1,state:q})=>{kA((K,Y)=>{if(Y.downArrow||Y.ctrl&&K==="n"||!Y.ctrl&&!Y.shift&&K==="j")q.focusNextOption();if(Y.upArrow||Y.ctrl&&K==="p"||!Y.ctrl&&!Y.shift&&K==="k")q.focusPreviousOption();if(K===" ")q.toggleFocusedOption();if(Y.return)q.submit()},{isActive:!A})};var O0q=k(()=>{n6()});function lk6(A){let q=Y6(22),{isDisabled:K,visibleOptionCount:Y,highlightText:z,options:w,defaultValue:_,onChange:$,onSubmit:O}=A,H=K===void 0?!1:K,j=Y===void 0?5:Y,J;if(q[0]!==_||q[1]!==$||q[2]!==O||q[3]!==w||q[4]!==j)J={visibleOptionCount:j,options:w,defaultValue:_,onChange:$,onSubmit:O},q[0]=_,q[1]=$,q[2]=O,q[3]=w,q[4]=j,q[5]=J;else J=q[5];let M=w0q(J),D;if(q[6]!==H||q[7]!==M)D={isDisabled:H,state:M},q[6]=H,q[7]=M,q[8]=D;else D=q[8];$0q(D);let X;if(q[9]!==z||q[10]!==H||q[11]!==M.focusedValue||q[12]!==M.value||q[13]!==M.visibleOptions){let W;if(q[15]!==z||q[16]!==H||q[17]!==M.focusedValue||q[18]!==M.value)W=(Z)=>{let G=Z.label;if(z&&Z.label.includes(z)){let f=Z.label.indexOf(z);G=ck6.default.createElement(ck6.default.Fragment,null,Z.label.slice(0,f),ck6.default.createElement(T,{bold:!0},z),Z.label.slice(f+z.length))}return ck6.default.createElement(A0q,{key:Z.value,isFocused:!H&&M.focusedValue===Z.value,isSelected:M.value.includes(Z.value)},G)},q[15]=z,q[16]=H,q[17]=M.focusedValue,q[18]=M.value,q[19]=W;else W=q[19];X=M.visibleOptions.map(W),q[9]=z,q[10]=H,q[11]=M.focusedValue,q[12]=M.value,q[13]=M.visibleOptions,q[14]=X}else X=q[14];let P;if(q[20]!==X)P=ck6.default.createElement(m,{flexDirection:"column"},X),q[20]=X,q[21]=P;else P=q[21];return P}var ck6;var UC1=k(()=>{K1();n6();q0q();_0q();O0q();ck6=e(W6(),1)});function Gjz(A){if(A.pending)return uv.default.createElement(T,null,"Press ",A.keyName," again to exit");return uv.default.createElement(e8,null,uv.default.createElement(J8,{shortcut:"↑↓",action:"navigate"}),uv.default.createElement(J8,{shortcut:"Space",action:"toggle"}),uv.default.createElement(J8,{shortcut:"Enter",action:"confirm"}),uv.default.createElement(G8,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"cancel"}))}function j0q(A){let q=Y6(14),{onSubmit:K,defaultSelections:Y}=A,[z,w]=H0q.useState(!1),_;if(q[0]!==K)_=(Z)=>{if(Z.length===0){w(!0);return}w(!1),K(Z)},q[0]=K,q[1]=_;else _=q[1];let $=_,O;if(q[2]===Symbol.for("react.memo_cache_sentinel"))O=()=>{w(!1)},q[2]=O;else O=q[2];let H=O,j;if(q[3]===Symbol.for("react.memo_cache_sentinel"))j=()=>{w(!0)},q[3]=j;else j=q[3];let J=j,M;if(q[4]===Symbol.for("react.memo_cache_sentinel"))M=uv.default.createElement(m,null,uv.default.createElement(T,{dimColor:!0},"More workflow examples (issue triage, CI fixes, etc.) at:"," ",uv.default.createElement(d7,{url:"https://github.com/anthropics/claude-code-action/blob/main/examples/"},"https://github.com/anthropics/claude-code-action/blob/main/examples/"))),q[4]=M;else M=q[4];let D;if(q[5]===Symbol.for("react.memo_cache_sentinel"))D=Zjz.map(fjz),q[5]=D;else D=q[5];let X;if(q[6]!==Y||q[7]!==$)X=uv.default.createElement(lk6,{options:D,defaultValue:Y,onSubmit:$,onChange:H}),q[6]=Y,q[7]=$,q[8]=X;else X=q[8];let P;if(q[9]!==z)P=z&&uv.default.createElement(m,null,uv.default.createElement(T,{color:"error"},"You must select at least one workflow to continue")),q[9]=z,q[10]=P;else P=q[10];let W;if(q[11]!==X||q[12]!==P)W=uv.default.createElement(l8,{title:"Select GitHub workflows to install",subtitle:"We'll create a workflow file in your repository for each one you select.",onCancel:J,inputGuide:Gjz},M,X,P),q[11]=X,q[12]=P,q[13]=W;else W=q[13];return W}function fjz(A){return{label:A.label,value:A.value}}var uv,H0q,Zjz;var J0q=k(()=>{K1();n6();zq();UC1();JK();hK();eq();uv=e(W6(),1),H0q=e(W6(),1),Zjz=[{value:"claude",label:"@Claude Code - Tag @claude in issues and PR comments"},{value:"claude-review",label:"Claude Code Review - Automated code review on new PRs"}]});async function Tjz(A,q,K,Y,z,w,_){let $=await W8("gh",["api",`repos/${A}/contents/${K}`,"--jq",".sha"]),O=null;if($.code===0)O=$.stdout.trim();let H=Y;if(z==="CLAUDE_CODE_OAUTH_TOKEN")H=Y.replace(/anthropic_api_key: \$\{\{ secrets\.ANTHROPIC_API_KEY \}\}/g,"claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}");else if(z!=="ANTHROPIC_API_KEY")H=Y.replace(/anthropic_api_key: \$\{\{ secrets\.ANTHROPIC_API_KEY \}\}/g,`anthropic_api_key: \${{ secrets.${z} }}`);let j=Buffer.from(H).toString("base64"),J=["api","--method","PUT",`repos/${A}/contents/${K}`,"-f",`message=${O?`"Update ${w}"`:`"${w}"`}`,"-f",`content=${j}`,"-f",`branch=${q}`];if(O)J.push("-f",`sha=${O}`);let M=await W8("gh",J);if(M.code!==0){if(M.stderr.includes("422")&&M.stderr.includes("sha"))throw c("tengu_setup_github_actions_failed",{reason:"failed_to_create_workflow_file",exit_code:M.code,..._}),Error(`Failed to create workflow file ${K}: A Claude workflow file already exists in this repository. Please remove it first or update it manually.`);c("tengu_setup_github_actions_failed",{reason:"failed_to_create_workflow_file",exit_code:M.code,..._});let D=` Need help? Common issues: `+`• Permission denied → Run: gh auth refresh -h github.com -s repo,workflow `+`• Not authorized → Ensure you have admin access to the repository `+"• For manual setup → Visit: https://github.com/anthropics/claude-code-action";throw Error(`Failed to create workflow file ${K}: ${M.stderr}${D}`)}}async function M0q(A,q,K,Y,z=!1,w,_,$){try{c("tengu_setup_github_actions_started",{skip_workflow:z,has_api_key:!!q,using_default_secret_name:K==="ANTHROPIC_API_KEY",selected_claude_workflow:w.includes("claude"),selected_claude_review_workflow:w.includes("claude-review"),...$});let O=await W8("gh",["api",`repos/${A}`,"--jq",".id"]);if(O.code!==0)throw c("tengu_setup_github_actions_failed",{reason:"repo_not_found",exit_code:O.code,...$}),Error(`Failed to access repository ${A}`);let H=await W8("gh",["api",`repos/${A}`,"--jq",".default_branch"]);if(H.code!==0)throw c("tengu_setup_github_actions_failed",{reason:"failed_to_get_default_branch",exit_code:H.code,...$}),Error(`Failed to get default branch: ${H.stderr}`);let j=H.stdout.trim(),J=await W8("gh",["api",`repos/${A}/git/ref/heads/${j}`,"--jq",".object.sha"]);if(J.code!==0)throw c("tengu_setup_github_actions_failed",{reason:"failed_to_get_branch_sha",exit_code:J.code,...$}),Error(`Failed to get branch SHA: ${J.stderr}`);let M=J.stdout.trim(),D=null;if(!z){Y(),D=`add-claude-github-actions-${Date.now()}`;let X=await W8("gh",["api","--method","POST",`repos/${A}/git/refs`,"-f",`ref=refs/heads/${D}`,"-f",`sha=${M}`]);if(X.code!==0)throw c("tengu_setup_github_actions_failed",{reason:"failed_to_create_branch",exit_code:X.code,...$}),Error(`Failed to create branch: ${X.stderr}`);Y();let P=[];if(w.includes("claude"))P.push({path:".github/workflows/claude.yml",content:xPq,message:"Claude PR Assistant workflow"});if(w.includes("claude-review"))P.push({path:".github/workflows/claude-code-review.yml",content:BPq,message:"Claude Code Review workflow"});for(let W of P)await Tjz(A,D,W.path,W.content,K,W.message,$)}if(Y(),q){let X=await W8("gh",["secret","set",K,"--body",q,"--repo",A]);if(X.code!==0){c("tengu_setup_github_actions_failed",{reason:"failed_to_set_api_key_secret",exit_code:X.code,...$});let P=` Need help? Common issues: `+`• Permission denied → Run: gh auth refresh -h github.com -s repo `+`• Not authorized → Ensure you have admin access to the repository `+"• For manual setup → Visit: https://github.com/anthropics/claude-code-action";throw Error(`Failed to set API key secret: ${X.stderr||"Unknown error"}${P}`)}}if(!z&&D){Y();let X=`https://github.com/${A}/compare/${j}...${D}?quick_pull=1&title=${encodeURIComponent(bPq)}&body=${encodeURIComponent(uPq)}`;await $Y(X)}c("tengu_setup_github_actions_completed",{skip_workflow:z,has_api_key:!!q,auth_type:_,using_default_secret_name:K==="ANTHROPIC_API_KEY",selected_claude_workflow:w.includes("claude"),selected_claude_review_workflow:w.includes("claude-review"),...$}),_8((X)=>({...X,githubActionSetupCount:(X.githubActionSetupCount??0)+1}))}catch(O){if(!O||!(O instanceof Error)||!O.message.includes("Failed to"))c("tengu_setup_github_actions_failed",{reason:"unexpected_error",...$});if(O instanceof Error)$6(O);throw O}}var D0q=k(()=>{aq();RP();B1();x1();Q8()});function P0q({onSuccess:A,onCancel:q}){let[K,Y]=oG.useState({state:"starting"}),[z]=oG.useState(()=>new fw6),[w,_]=oG.useState(""),[$,O]=oG.useState(0),[H,j]=oG.useState(!1),[J,M]=oG.useState(!1),D=oG.useRef(new Set),X=PA(),P=Math.max(50,X.columns-X0q.length-4);kA((f,V)=>{if(K.state==="error")if(V.return&&K.toRetry)_(""),O(0),Y({state:"about_to_retry",nextState:K.toRetry});else q()});async function W(f,V){try{let[N,v]=f.split("#");if(!N||!v){Y({state:"error",message:"Invalid code. Please make sure the full code was copied",toRetry:{state:"waiting_for_login",url:V}});return}c("tengu_oauth_manual_entry",{}),z.handleManualAuthCodeInput({authorizationCode:N,state:v})}catch(N){$6(N),Y({state:"error",message:N.message,toRetry:{state:"waiting_for_login",url:V}})}}let Z=oG.useCallback(async()=>{D.current.forEach((f)=>clearTimeout(f)),D.current.clear();try{let f=await z.startOAuthFlow(async(N)=>{Y({state:"waiting_for_login",url:N});let v=setTimeout(()=>j(!0),3000);D.current.add(v)},{loginWithClaudeAi:!0,inferenceOnly:!0,expiresIn:31536000});Y({state:"processing"}),nN6(f);let V=setTimeout(()=>{Y({state:"success",token:f.accessToken});let N=setTimeout(()=>{A(f.accessToken)},1000);D.current.add(N)},100);D.current.add(V)}catch(f){let V=f.message;Y({state:"error",message:V,toRetry:{state:"starting"}}),$6(f),c("tengu_oauth_error",{error:V})}},[z,A]);oG.useEffect(()=>{if(K.state==="starting")Z()},[K.state,Z]),oG.useEffect(()=>{if(K.state==="about_to_retry"){let f=setTimeout(()=>{if(K.nextState.state==="waiting_for_login")j(!0);else j(!1);Y(K.nextState)},500);D.current.add(f)}},[K]),oG.useEffect(()=>{if(w==="c"&&K.state==="waiting_for_login"&&H&&!J)yG(K.url).then((f)=>{if(f)M(!0),setTimeout(()=>M(!1),2000)}),_("")},[w,K,H,J]),oG.useEffect(()=>{let f=D.current;return()=>{z.cleanup(),f.forEach((V)=>clearTimeout(V)),f.clear()}},[z]);function G(){switch(K.state){case"starting":return y9.default.createElement(m,null,y9.default.createElement(Sq,null),y9.default.createElement(T,null,"Starting authentication…"));case"waiting_for_login":return y9.default.createElement(m,{flexDirection:"column",gap:1},!H&&y9.default.createElement(m,null,y9.default.createElement(Sq,null),y9.default.createElement(T,null,"Opening browser to sign in with your Claude account…")),H&&y9.default.createElement(m,null,y9.default.createElement(T,null,X0q),y9.default.createElement(sK,{value:w,onChange:_,onSubmit:(f)=>W(f,K.url),cursorOffset:$,onChangeCursorOffset:O,columns:P})));case"processing":return y9.default.createElement(m,null,y9.default.createElement(Sq,null),y9.default.createElement(T,null,"Processing authentication…"));case"success":return y9.default.createElement(m,{flexDirection:"column",gap:1},y9.default.createElement(T,{color:"success"},"✓ Authentication token created successfully!"),y9.default.createElement(T,{dimColor:!0},"Using token for GitHub Actions setup…"));case"error":return y9.default.createElement(m,{flexDirection:"column",gap:1},y9.default.createElement(T,{color:"error"},"OAuth error: ",K.message),K.toRetry?y9.default.createElement(T,{dimColor:!0},"Press Enter to try again, or any other key to cancel"):y9.default.createElement(T,{dimColor:!0},"Press any key to return to API key selection"));case"about_to_retry":return y9.default.createElement(m,{flexDirection:"column",gap:1},y9.default.createElement(T,{color:"permission"},"Retrying…"));default:return null}}return y9.default.createElement(m,{flexDirection:"column",gap:1},K.state==="starting"&&y9.default.createElement(m,{flexDirection:"column",gap:1,paddingBottom:1},y9.default.createElement(T,{bold:!0},"Create Authentication Token"),y9.default.createElement(T,{dimColor:!0},"Creating a long-lived token for GitHub Actions")),K.state!=="success"&&K.state!=="starting"&&K.state!=="processing"&&y9.default.createElement(m,{key:"header",flexDirection:"column",gap:1,paddingBottom:1},y9.default.createElement(T,{bold:!0},"Create Authentication Token"),y9.default.createElement(T,{dimColor:!0},"Creating a long-lived token for GitHub Actions")),K.state==="waiting_for_login"&&H&&y9.default.createElement(m,{flexDirection:"column",key:"urlToCopy",gap:1,paddingBottom:1},y9.default.createElement(m,{paddingX:1},y9.default.createElement(T,{dimColor:!0},"Browser didn't open? Use the url below to sign in"," "),J?y9.default.createElement(T,{color:"success"},"(Copied!)"):y9.default.createElement(T,{dimColor:!0},y9.default.createElement(J8,{shortcut:"c",action:"copy",parens:!0}))),y9.default.createElement(d7,{url:K.url},y9.default.createElement(T,{dimColor:!0},K.url))),y9.default.createElement(m,{paddingLeft:1,flexDirection:"column",gap:1},G()))}var y9,oG,X0q="Paste code here if prompted > ";var W0q=k(()=>{n6();ai();JK();WO();FV1();bA();B1();E$();x1();xq();y9=e(W6(),1),oG=e(W6(),1)});var Z0q={};m1(Z0q,{call:()=>vjz});function Njz(A){let[q]=NO.useState(()=>nk()),[K,Y]=NO.useState({...Vjz,useExistingKey:!!q,selectedApiKeyOption:q?"existing":nH()?"oauth":"new"});z3(),NO.default.useEffect(()=>{c("tengu_install_github_app_started",{})},[]);let z=NO.useCallback(async()=>{let v=[];if((await GY("gh --version",{shell:!0,reject:!1})).exitCode!==0)v.push({title:"GitHub CLI not found",message:"GitHub CLI (gh) does not appear to be installed or accessible.",instructions:["Install GitHub CLI from https://cli.github.com/","macOS: brew install gh","Windows: winget install --id GitHub.cli","Linux: See installation instructions at https://github.com/cli/cli#installation"]});let R=await GY("gh auth status -a",{shell:!0,reject:!1});if(R.exitCode!==0)v.push({title:"GitHub CLI not authenticated",message:"GitHub CLI does not appear to be authenticated.",instructions:["Run: gh auth login","Follow the prompts to authenticate with GitHub","Or set up authentication using environment variables or other methods"]});else{let B=R.stdout.match(/Token scopes:.*$/m);if(B){let x=B[0],F=[];if(!x.includes("repo"))F.push("repo");if(!x.includes("workflow"))F.push("workflow");if(F.length>0){Y((g)=>({...g,step:"error",error:`GitHub CLI is missing required permissions: ${F.join(", ")}.`,errorReason:"Missing required scopes",errorInstructions:[`Your GitHub CLI authentication is missing the "${F.join('" and "')}" scope${F.length>1?"s":""} needed to manage GitHub Actions and secrets.`,"","To fix this, run:"," gh auth refresh -h github.com -s repo,workflow","","This will add the necessary permissions to manage workflows and secrets."]}));return}}}let h=await FM6()??"";c("tengu_install_github_app_step_completed",{step:"check-gh"}),Y((B)=>({...B,warnings:v,currentRepo:h,selectedRepoName:h,useCurrentRepo:!!h,step:v.length>0?"warnings":"choose-repo"}))},[]);NO.default.useEffect(()=>{if(K.step==="check-gh")z()},[K.step,z]);let w=NO.useCallback(async(v,y)=>{Y((R)=>({...R,step:"creating",currentWorkflowInstallStep:0}));try{await M0q(K.selectedRepoName,v,y,()=>{Y((R)=>({...R,currentWorkflowInstallStep:R.currentWorkflowInstallStep+1}))},K.workflowAction==="skip",K.selectedWorkflows,K.authType,{useCurrentRepo:K.useCurrentRepo,workflowExists:K.workflowExists,secretExists:K.secretExists}),c("tengu_install_github_app_step_completed",{step:"creating"}),Y((R)=>({...R,step:"success"}))}catch(R){let h=R instanceof Error?R.message:"Failed to set up GitHub Actions";if(h.includes("workflow file already exists"))c("tengu_install_github_app_error",{reason:"workflow_file_exists"}),Y((B)=>({...B,step:"error",error:"A Claude workflow file already exists in this repository.",errorReason:"Workflow file conflict",errorInstructions:["The file .github/workflows/claude.yml already exists","You can either:"," 1. Delete the existing file and run this command again"," 2. Update the existing file manually using the template from:",` ${TU}`]}));else c("tengu_install_github_app_error",{reason:"setup_github_actions_failed"}),Y((B)=>({...B,step:"error",error:h,errorReason:"GitHub Actions setup failed",errorInstructions:[]}))}},[K.selectedRepoName,K.workflowAction,K.selectedWorkflows,K.useCurrentRepo,K.workflowExists,K.secretExists,K.authType]);async function _(){await $Y("https://github.com/apps/claude")}async function $(v){try{let y=await W8("gh",["api",`repos/${v}`,"--jq",".permissions.admin"]);if(y.code===0)return{hasAccess:y.stdout.trim()==="true"};if(y.stderr.includes("404")||y.stderr.includes("Not Found"))return{hasAccess:!1,error:"repository_not_found"};return{hasAccess:!1}}catch{return{hasAccess:!1}}}async function O(v){return(await W8("gh",["api",`repos/${v}/contents/.github/workflows/claude.yml`,"--jq",".sha"])).code===0}async function H(){let v=await W8("gh",["secret","list","--app","actions","--repo",K.selectedRepoName]);if(v.code===0)if(v.stdout.split(` `).some((h)=>{return/^ANTHROPIC_API_KEY\s+/.test(h)}))Y((h)=>({...h,secretExists:!0,step:"check-existing-secret"}));else if(q)Y((h)=>({...h,apiKeyOrOAuthToken:q,useExistingKey:!0})),await w(q,K.secretName);else Y((h)=>({...h,step:"api-key"}));else if(q)Y((y)=>({...y,apiKeyOrOAuthToken:q,useExistingKey:!0})),await w(q,K.secretName);else Y((y)=>({...y,step:"api-key"}))}let j=async()=>{if(K.step==="warnings")c("tengu_install_github_app_step_completed",{step:"warnings"}),Y((v)=>({...v,step:"install-app"})),setTimeout(()=>{_()},0);else if(K.step==="choose-repo"){let v=K.useCurrentRepo?K.currentRepo:K.selectedRepoName;if(!v.trim())return;let y=[];if(v.includes("github.com")){let B=v.match(/github\.com[:/]([^/]+\/[^/]+)(\.git)?$/);if(!B)y.push({title:"Invalid GitHub URL format",message:"The repository URL format appears to be invalid.",instructions:["Use format: owner/repo or https://github.com/owner/repo","Example: anthropics/claude-cli"]});else v=B[1]?.replace(/\.git$/,"")||""}if(!v.includes("/"))y.push({title:"Repository format warning",message:'Repository should be in format "owner/repo"',instructions:["Use format: owner/repo","Example: anthropics/claude-cli"]});let R=await $(v);if(R.error==="repository_not_found")y.push({title:"Repository not found",message:`Repository ${v} was not found or you don't have access.`,instructions:[`Check that the repository name is correct: ${v}`,"Ensure you have access to this repository",'For private repositories, make sure your GitHub token has the "repo" scope',"You can add the repo scope with: gh auth refresh -h github.com -s repo,workflow"]});else if(!R.hasAccess)y.push({title:"Admin permissions required",message:`You might need admin permissions on ${v} to set up GitHub Actions.`,instructions:["Repository admins can install GitHub Apps and set secrets","Ask a repository admin to run this command if setup fails","Alternatively, you can use the manual setup instructions"]});let h=await O(v);if(y.length>0){let B=[...K.warnings,...y];Y((x)=>({...x,selectedRepoName:v,workflowExists:h,warnings:B,step:"warnings"}))}else c("tengu_install_github_app_step_completed",{step:"choose-repo"}),Y((B)=>({...B,selectedRepoName:v,workflowExists:h,step:"install-app"})),setTimeout(()=>{_()},0)}else if(K.step==="install-app")if(c("tengu_install_github_app_step_completed",{step:"install-app"}),K.workflowExists)Y((v)=>({...v,step:"check-existing-workflow"}));else Y((v)=>({...v,step:"select-workflows"}));else if(K.step==="check-existing-workflow")return;else if(K.step==="select-workflows")return;else if(K.step==="check-existing-secret")if(c("tengu_install_github_app_step_completed",{step:"check-existing-secret"}),K.useExistingSecret)await w(null,K.secretName);else await w(K.apiKeyOrOAuthToken,K.secretName);else if(K.step==="api-key"){if(K.selectedApiKeyOption==="oauth")return;let v=K.selectedApiKeyOption==="existing"?q:K.apiKeyOrOAuthToken;if(!v){c("tengu_install_github_app_error",{reason:"api_key_missing"}),Y((R)=>({...R,step:"error",error:"API key is required"}));return}Y((R)=>({...R,apiKeyOrOAuthToken:v,useExistingKey:K.selectedApiKeyOption==="existing"}));let y=await W8("gh",["secret","list","--app","actions","--repo",K.selectedRepoName]);if(y.code===0)if(y.stdout.split(` `).some((B)=>{return/^ANTHROPIC_API_KEY\s+/.test(B)}))c("tengu_install_github_app_step_completed",{step:"api-key"}),Y((B)=>({...B,secretExists:!0,step:"check-existing-secret"}));else c("tengu_install_github_app_step_completed",{step:"api-key"}),await w(v,K.secretName);else c("tengu_install_github_app_step_completed",{step:"api-key"}),await w(v,K.secretName)}},J=(v)=>{Y((y)=>({...y,selectedRepoName:v}))},M=(v)=>{Y((y)=>({...y,apiKeyOrOAuthToken:v}))},D=(v)=>{Y((y)=>({...y,selectedApiKeyOption:v}))},X=NO.useCallback(()=>{c("tengu_install_github_app_step_completed",{step:"api-key"}),Y((v)=>({...v,step:"oauth-flow"}))},[]),P=NO.useCallback((v)=>{c("tengu_install_github_app_step_completed",{step:"oauth-flow"}),Y((y)=>({...y,apiKeyOrOAuthToken:v,useExistingKey:!1,secretName:"CLAUDE_CODE_OAUTH_TOKEN",authType:"oauth_token"})),w(v,"CLAUDE_CODE_OAUTH_TOKEN")},[w]),W=NO.useCallback(()=>{Y((v)=>({...v,step:"api-key"}))},[]),Z=(v)=>{if(v&&!/^[a-zA-Z0-9_]+$/.test(v))return;Y((y)=>({...y,secretName:v}))},G=(v)=>{Y((y)=>({...y,useCurrentRepo:v,selectedRepoName:v?y.currentRepo:""}))},f=(v)=>{Y((y)=>({...y,useExistingKey:v}))},V=(v)=>{Y((y)=>({...y,useExistingSecret:v,secretName:v?"ANTHROPIC_API_KEY":""}))},N=async(v)=>{if(v==="exit"){A.onDone("Installation cancelled by user");return}if(c("tengu_install_github_app_step_completed",{step:"check-existing-workflow"}),Y((y)=>({...y,workflowAction:v})),v==="skip"||v==="update")if(q)await H();else Y((y)=>({...y,step:"api-key"}))};switch(kA(()=>{if(K.step==="success"||K.step==="error"){if(K.step==="success")c("tengu_install_github_app_completed",{});A.onDone(K.step==="success"?"GitHub Actions setup complete!":K.error?`Couldn't install GitHub App: ${K.error} For manual setup instructions, see: ${TU}`:`GitHub App installation failed For manual setup instructions, see: ${TU}`)}}),K.step){case"check-gh":return NO.default.createElement(SPq,null);case"warnings":return NO.default.createElement(sPq,{warnings:K.warnings,onContinue:j});case"choose-repo":return NO.default.createElement(hPq,{currentRepo:K.currentRepo,useCurrentRepo:K.useCurrentRepo,repoUrl:K.selectedRepoName,onRepoUrlChange:J,onToggleUseCurrentRepo:G,onSubmit:j});case"install-app":return NO.default.createElement(mPq,{repoUrl:K.selectedRepoName,onSubmit:j});case"check-existing-workflow":return NO.default.createElement(oPq,{repoName:K.selectedRepoName,onSelectAction:N});case"check-existing-secret":return NO.default.createElement(FPq,{useExistingSecret:K.useExistingSecret,secretName:K.secretName,onToggleUseExistingSecret:V,onSecretNameChange:Z,onSubmit:j});case"api-key":return NO.default.createElement(UPq,{existingApiKey:q,useExistingKey:K.useExistingKey,apiKeyOrOAuthToken:K.apiKeyOrOAuthToken,onApiKeyChange:M,onToggleUseExistingKey:f,onSubmit:j,onCreateOAuthToken:nH()?X:void 0,selectedOption:K.selectedApiKeyOption,onSelectOption:D});case"creating":return NO.default.createElement(dPq,{currentWorkflowInstallStep:K.currentWorkflowInstallStep,secretExists:K.secretExists,useExistingSecret:K.useExistingSecret,secretName:K.secretName,skipWorkflow:K.workflowAction==="skip",selectedWorkflows:K.selectedWorkflows});case"success":return NO.default.createElement(lPq,{secretExists:K.secretExists,useExistingSecret:K.useExistingSecret,secretName:K.secretName,skipWorkflow:K.workflowAction==="skip"});case"error":return NO.default.createElement(nPq,{error:K.error,errorReason:K.errorReason,errorInstructions:K.errorInstructions});case"select-workflows":return NO.default.createElement(j0q,{defaultSelections:K.selectedWorkflows,onSubmit:(v)=>{if(c("tengu_install_github_app_step_completed",{step:"select-workflows"}),Y((y)=>({...y,selectedWorkflows:v})),q)H();else Y((y)=>({...y,step:"api-key"}))}});case"oauth-flow":return NO.default.createElement(P0q,{onSuccess:P,onCancel:W})}}async function vjz(A){return NO.default.createElement(Njz,{onDone:A})}var NO,Vjz;var G0q=k(()=>{n6();bA();KO();aq();Ef();U3();RP();CPq();IPq();gPq();QPq();pPq();cPq();iPq();rPq();aPq();tPq();J0q();D0q();W0q();B1();NO=e(W6(),1),Vjz={step:"check-gh",selectedRepoName:"",currentRepo:"",useCurrentRepo:!1,apiKeyOrOAuthToken:"",useExistingKey:!0,currentWorkflowInstallStep:0,warnings:[],secretExists:!1,secretName:"ANTHROPIC_API_KEY",useExistingSecret:!0,workflowExists:!1,selectedWorkflows:["claude","claude-review"],selectedApiKeyOption:"new",authType:"api_key"}});var kjz,f0q;var T0q=k(()=>{bA();kjz={type:"local-jsx",name:"install-github-app",description:"Set up Claude GitHub Actions for a repository",isEnabled:()=>!process.env.DISABLE_INSTALL_GITHUB_APP_COMMAND&&!hx(),isHidden:!1,load:()=>Promise.resolve().then(() => (G0q(),Z0q)),userFacingName(){return"install-github-app"}},f0q=kjz});var N0q={};m1(N0q,{call:()=>Ejz});async function Ejz(){if(c("tengu_install_slack_app_clicked",{}),_8((q)=>({...q,slackAppInstallCount:(q.slackAppInstallCount??0)+1})),await $Y(V0q))return{type:"text",value:"Opening Slack app installation page in browser…"};else return{type:"text",value:`Couldn't open browser. Visit: ${V0q}`}}var V0q="https://slack.com/marketplace/A08SF47R6P4-claude";var v0q=k(()=>{RP();Q8();B1()});var Ljz,k0q;var E0q=k(()=>{Ljz={type:"local",name:"install-slack-app",description:"Install the Claude Slack app",isEnabled:()=>!0,isHidden:!1,supportsNonInteractive:!1,load:()=>Promise.resolve().then(() => (v0q(),N0q)),userFacingName(){return"install-slack-app"}},k0q=Ljz});var L0q;var y0q=k(()=>{L0q={isEnabled:()=>!1,isHidden:!0,name:"stub"}});var Rn8=C((hjz)=>{function R0q(){var A={};return A["align-content"]=!1,A["align-items"]=!1,A["align-self"]=!1,A["alignment-adjust"]=!1,A["alignment-baseline"]=!1,A.all=!1,A["anchor-point"]=!1,A.animation=!1,A["animation-delay"]=!1,A["animation-direction"]=!1,A["animation-duration"]=!1,A["animation-fill-mode"]=!1,A["animation-iteration-count"]=!1,A["animation-name"]=!1,A["animation-play-state"]=!1,A["animation-timing-function"]=!1,A.azimuth=!1,A["backface-visibility"]=!1,A.background=!0,A["background-attachment"]=!0,A["background-clip"]=!0,A["background-color"]=!0,A["background-image"]=!0,A["background-origin"]=!0,A["background-position"]=!0,A["background-repeat"]=!0,A["background-size"]=!0,A["baseline-shift"]=!1,A.binding=!1,A.bleed=!1,A["bookmark-label"]=!1,A["bookmark-level"]=!1,A["bookmark-state"]=!1,A.border=!0,A["border-bottom"]=!0,A["border-bottom-color"]=!0,A["border-bottom-left-radius"]=!0,A["border-bottom-right-radius"]=!0,A["border-bottom-style"]=!0,A["border-bottom-width"]=!0,A["border-collapse"]=!0,A["border-color"]=!0,A["border-image"]=!0,A["border-image-outset"]=!0,A["border-image-repeat"]=!0,A["border-image-slice"]=!0,A["border-image-source"]=!0,A["border-image-width"]=!0,A["border-left"]=!0,A["border-left-color"]=!0,A["border-left-style"]=!0,A["border-left-width"]=!0,A["border-radius"]=!0,A["border-right"]=!0,A["border-right-color"]=!0,A["border-right-style"]=!0,A["border-right-width"]=!0,A["border-spacing"]=!0,A["border-style"]=!0,A["border-top"]=!0,A["border-top-color"]=!0,A["border-top-left-radius"]=!0,A["border-top-right-radius"]=!0,A["border-top-style"]=!0,A["border-top-width"]=!0,A["border-width"]=!0,A.bottom=!1,A["box-decoration-break"]=!0,A["box-shadow"]=!0,A["box-sizing"]=!0,A["box-snap"]=!0,A["box-suppress"]=!0,A["break-after"]=!0,A["break-before"]=!0,A["break-inside"]=!0,A["caption-side"]=!1,A.chains=!1,A.clear=!0,A.clip=!1,A["clip-path"]=!1,A["clip-rule"]=!1,A.color=!0,A["color-interpolation-filters"]=!0,A["column-count"]=!1,A["column-fill"]=!1,A["column-gap"]=!1,A["column-rule"]=!1,A["column-rule-color"]=!1,A["column-rule-style"]=!1,A["column-rule-width"]=!1,A["column-span"]=!1,A["column-width"]=!1,A.columns=!1,A.contain=!1,A.content=!1,A["counter-increment"]=!1,A["counter-reset"]=!1,A["counter-set"]=!1,A.crop=!1,A.cue=!1,A["cue-after"]=!1,A["cue-before"]=!1,A.cursor=!1,A.direction=!1,A.display=!0,A["display-inside"]=!0,A["display-list"]=!0,A["display-outside"]=!0,A["dominant-baseline"]=!1,A.elevation=!1,A["empty-cells"]=!1,A.filter=!1,A.flex=!1,A["flex-basis"]=!1,A["flex-direction"]=!1,A["flex-flow"]=!1,A["flex-grow"]=!1,A["flex-shrink"]=!1,A["flex-wrap"]=!1,A.float=!1,A["float-offset"]=!1,A["flood-color"]=!1,A["flood-opacity"]=!1,A["flow-from"]=!1,A["flow-into"]=!1,A.font=!0,A["font-family"]=!0,A["font-feature-settings"]=!0,A["font-kerning"]=!0,A["font-language-override"]=!0,A["font-size"]=!0,A["font-size-adjust"]=!0,A["font-stretch"]=!0,A["font-style"]=!0,A["font-synthesis"]=!0,A["font-variant"]=!0,A["font-variant-alternates"]=!0,A["font-variant-caps"]=!0,A["font-variant-east-asian"]=!0,A["font-variant-ligatures"]=!0,A["font-variant-numeric"]=!0,A["font-variant-position"]=!0,A["font-weight"]=!0,A.grid=!1,A["grid-area"]=!1,A["grid-auto-columns"]=!1,A["grid-auto-flow"]=!1,A["grid-auto-rows"]=!1,A["grid-column"]=!1,A["grid-column-end"]=!1,A["grid-column-start"]=!1,A["grid-row"]=!1,A["grid-row-end"]=!1,A["grid-row-start"]=!1,A["grid-template"]=!1,A["grid-template-areas"]=!1,A["grid-template-columns"]=!1,A["grid-template-rows"]=!1,A["hanging-punctuation"]=!1,A.height=!0,A.hyphens=!1,A.icon=!1,A["image-orientation"]=!1,A["image-resolution"]=!1,A["ime-mode"]=!1,A["initial-letters"]=!1,A["inline-box-align"]=!1,A["justify-content"]=!1,A["justify-items"]=!1,A["justify-self"]=!1,A.left=!1,A["letter-spacing"]=!0,A["lighting-color"]=!0,A["line-box-contain"]=!1,A["line-break"]=!1,A["line-grid"]=!1,A["line-height"]=!1,A["line-snap"]=!1,A["line-stacking"]=!1,A["line-stacking-ruby"]=!1,A["line-stacking-shift"]=!1,A["line-stacking-strategy"]=!1,A["list-style"]=!0,A["list-style-image"]=!0,A["list-style-position"]=!0,A["list-style-type"]=!0,A.margin=!0,A["margin-bottom"]=!0,A["margin-left"]=!0,A["margin-right"]=!0,A["margin-top"]=!0,A["marker-offset"]=!1,A["marker-side"]=!1,A.marks=!1,A.mask=!1,A["mask-box"]=!1,A["mask-box-outset"]=!1,A["mask-box-repeat"]=!1,A["mask-box-slice"]=!1,A["mask-box-source"]=!1,A["mask-box-width"]=!1,A["mask-clip"]=!1,A["mask-image"]=!1,A["mask-origin"]=!1,A["mask-position"]=!1,A["mask-repeat"]=!1,A["mask-size"]=!1,A["mask-source-type"]=!1,A["mask-type"]=!1,A["max-height"]=!0,A["max-lines"]=!1,A["max-width"]=!0,A["min-height"]=!0,A["min-width"]=!0,A["move-to"]=!1,A["nav-down"]=!1,A["nav-index"]=!1,A["nav-left"]=!1,A["nav-right"]=!1,A["nav-up"]=!1,A["object-fit"]=!1,A["object-position"]=!1,A.opacity=!1,A.order=!1,A.orphans=!1,A.outline=!1,A["outline-color"]=!1,A["outline-offset"]=!1,A["outline-style"]=!1,A["outline-width"]=!1,A.overflow=!1,A["overflow-wrap"]=!1,A["overflow-x"]=!1,A["overflow-y"]=!1,A.padding=!0,A["padding-bottom"]=!0,A["padding-left"]=!0,A["padding-right"]=!0,A["padding-top"]=!0,A.page=!1,A["page-break-after"]=!1,A["page-break-before"]=!1,A["page-break-inside"]=!1,A["page-policy"]=!1,A.pause=!1,A["pause-after"]=!1,A["pause-before"]=!1,A.perspective=!1,A["perspective-origin"]=!1,A.pitch=!1,A["pitch-range"]=!1,A["play-during"]=!1,A.position=!1,A["presentation-level"]=!1,A.quotes=!1,A["region-fragment"]=!1,A.resize=!1,A.rest=!1,A["rest-after"]=!1,A["rest-before"]=!1,A.richness=!1,A.right=!1,A.rotation=!1,A["rotation-point"]=!1,A["ruby-align"]=!1,A["ruby-merge"]=!1,A["ruby-position"]=!1,A["shape-image-threshold"]=!1,A["shape-outside"]=!1,A["shape-margin"]=!1,A.size=!1,A.speak=!1,A["speak-as"]=!1,A["speak-header"]=!1,A["speak-numeral"]=!1,A["speak-punctuation"]=!1,A["speech-rate"]=!1,A.stress=!1,A["string-set"]=!1,A["tab-size"]=!1,A["table-layout"]=!1,A["text-align"]=!0,A["text-align-last"]=!0,A["text-combine-upright"]=!0,A["text-decoration"]=!0,A["text-decoration-color"]=!0,A["text-decoration-line"]=!0,A["text-decoration-skip"]=!0,A["text-decoration-style"]=!0,A["text-emphasis"]=!0,A["text-emphasis-color"]=!0,A["text-emphasis-position"]=!0,A["text-emphasis-style"]=!0,A["text-height"]=!0,A["text-indent"]=!0,A["text-justify"]=!0,A["text-orientation"]=!0,A["text-overflow"]=!0,A["text-shadow"]=!0,A["text-space-collapse"]=!0,A["text-transform"]=!0,A["text-underline-position"]=!0,A["text-wrap"]=!0,A.top=!1,A.transform=!1,A["transform-origin"]=!1,A["transform-style"]=!1,A.transition=!1,A["transition-delay"]=!1,A["transition-duration"]=!1,A["transition-property"]=!1,A["transition-timing-function"]=!1,A["unicode-bidi"]=!1,A["vertical-align"]=!1,A.visibility=!1,A["voice-balance"]=!1,A["voice-duration"]=!1,A["voice-family"]=!1,A["voice-pitch"]=!1,A["voice-range"]=!1,A["voice-rate"]=!1,A["voice-stress"]=!1,A["voice-volume"]=!1,A.volume=!1,A["white-space"]=!1,A.widows=!1,A.width=!0,A["will-change"]=!1,A["word-break"]=!0,A["word-spacing"]=!0,A["word-wrap"]=!0,A["wrap-flow"]=!1,A["wrap-through"]=!1,A["writing-mode"]=!1,A["z-index"]=!1,A}function yjz(A,q,K){}function Rjz(A,q,K){}var Sjz=/javascript\s*\:/img;function Cjz(A,q){if(Sjz.test(q))return"";return q}hjz.whiteList=R0q();hjz.getDefaultWhiteList=R0q;hjz.onAttr=yjz;hjz.onIgnoreAttr=Rjz;hjz.safeAttrValue=Cjz});var Sn8=C((ht$,S0q)=>{S0q.exports={indexOf:function(A,q){var K,Y;if(Array.prototype.indexOf)return A.indexOf(q);for(K=0,Y=A.length;K{var ta6=Sn8();function mjz(A,q){if(A=ta6.trimRight(A),A[A.length-1]!==";")A+=";";var K=A.length,Y=!1,z=0,w=0,_="";function $(){if(!Y){var j=ta6.trim(A.slice(z,w)),J=j.indexOf(":");if(J!==-1){var M=ta6.trim(j.slice(0,J)),D=ta6.trim(j.slice(J+1));if(M){var X=q(z,_.length,M,D,j);if(X)_+=X+"; "}}}z=w+1}for(;w{var pC1=Rn8(),gjz=h0q(),bt$=Sn8();function I0q(A){return A===void 0||A===null}function Fjz(A){var q={};for(var K in A)q[K]=A[K];return q}function b0q(A){A=Fjz(A||{}),A.whiteList=A.whiteList||pC1.whiteList,A.onAttr=A.onAttr||pC1.onAttr,A.onIgnoreAttr=A.onIgnoreAttr||pC1.onIgnoreAttr,A.safeAttrValue=A.safeAttrValue||pC1.safeAttrValue,this.options=A}b0q.prototype.process=function(A){if(A=A||"",A=A.toString(),!A)return"";var q=this,K=q.options,Y=K.whiteList,z=K.onAttr,w=K.onIgnoreAttr,_=K.safeAttrValue,$=gjz(A,function(O,H,j,J,M){var D=Y[j],X=!1;if(D===!0)X=D;else if(typeof D==="function")X=D(J);else if(D instanceof RegExp)X=D.test(J);if(X!==!0)X=!1;if(J=_(j,J),!J)return;var P={position:H,sourcePosition:O,source:M,isWhite:X};if(X){var W=z(j,J,P);if(I0q(W))return j+":"+J;else return W}else{var W=w(j,J,P);if(!I0q(W))return W}});return $};x0q.exports=b0q});var lC1=C((cC1,Cn8)=>{var B0q=Rn8(),m0q=u0q();function Qjz(A,q){var K=new m0q(q);return K.process(A)}cC1=Cn8.exports=Qjz;cC1.FilterCSS=m0q;for(dC1 in B0q)cC1[dC1]=B0q[dC1];var dC1;if(typeof window<"u")window.filterCSS=Cn8.exports});var iC1=C((ut$,g0q)=>{g0q.exports={indexOf:function(A,q){var K,Y;if(Array.prototype.indexOf)return A.indexOf(q);for(K=0,Y=A.length;K{var Ujz=lC1().FilterCSS,pjz=lC1().getDefaultWhiteList,rC1=iC1();function U0q(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]}}var p0q=new Ujz;function djz(A,q,K){}function cjz(A,q,K){}function ljz(A,q,K){}function ijz(A,q,K){}function d0q(A){return A.replace(rjz,"<").replace(ojz,">")}function njz(A,q,K,Y){if(K=o0q(K),q==="href"||q==="src"){if(K=rC1.trim(K),K==="#")return"#";if(!(K.substr(0,7)==="http://"||K.substr(0,8)==="https://"||K.substr(0,7)==="mailto:"||K.substr(0,4)==="tel:"||K.substr(0,11)==="data:image/"||K.substr(0,6)==="ftp://"||K.substr(0,2)==="./"||K.substr(0,3)==="../"||K[0]==="#"||K[0]==="/"))return""}else if(q==="background"){if(nC1.lastIndex=0,nC1.test(K))return""}else if(q==="style"){if(F0q.lastIndex=0,F0q.test(K))return"";if(Q0q.lastIndex=0,Q0q.test(K)){if(nC1.lastIndex=0,nC1.test(K))return""}if(Y!==!1)Y=Y||p0q,K=Y.process(K)}return K=a0q(K),K}var rjz=//g,ajz=/"/g,sjz=/"/g,tjz=/&#([a-zA-Z0-9]*);?/gim,ejz=/:?/gim,AJz=/&newline;?/gim,nC1=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,F0q=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,Q0q=/u\s*r\s*l\s*\(.*/gi;function c0q(A){return A.replace(ajz,""")}function l0q(A){return A.replace(sjz,'"')}function i0q(A){return A.replace(tjz,function(K,Y){return Y[0]==="x"||Y[0]==="X"?String.fromCharCode(parseInt(Y.substr(1),16)):String.fromCharCode(parseInt(Y,10))})}function n0q(A){return A.replace(ejz,":").replace(AJz," ")}function r0q(A){var q="";for(var K=0,Y=A.length;K",Y);if(z===-1)break;K=z+3}return q}function zJz(A){var q=A.split("");return q=q.filter(function(K){var Y=K.charCodeAt(0);if(Y===127)return!1;if(Y<=31){if(Y===10||Y===13)return!0;return!1}return!0}),q.join("")}wJz.whiteList=U0q();wJz.getDefaultWhiteList=U0q;wJz.onTag=djz;wJz.onIgnoreTag=cjz;wJz.onTagAttr=ljz;wJz.onIgnoreTagAttr=ijz;wJz.safeAttrValue=njz;wJz.escapeHtml=d0q;wJz.escapeQuote=c0q;wJz.unescapeQuote=l0q;wJz.escapeHtmlEntities=i0q;wJz.escapeDangerHtml5Entities=n0q;wJz.clearNonPrintableCharacter=r0q;wJz.friendlyAttrValue=o0q;wJz.escapeAttrValue=a0q;wJz.onIgnoreTagStripAll=qJz;wJz.StripTagBody=KJz;wJz.stripCommentTag=YJz;wJz.stripBlankChar=zJz;wJz.attributeWrapSign='"';wJz.cssFilter=p0q;wJz.getDefaultCSSWhiteList=pjz});var In8=C((mJz)=>{var xA6=iC1();function RJz(A){var q=xA6.spaceIndex(A),K;if(q===-1)K=A.slice(1,-1);else K=A.slice(1,q+1);if(K=xA6.trim(K).toLowerCase(),K.slice(0,1)==="/")K=K.slice(1);if(K.slice(-1)==="/")K=K.slice(0,-1);return K}function SJz(A){return A.slice(0,2)===""||$===O-1){Y+=K(A.slice(z,w)),j=A.slice(w,$+1),H=RJz(j),Y+=q(w,Y.length,H,j,SJz(j)),z=$+1,w=!1;continue}if(J==='"'||J==="'"){var M=1,D=A.charAt($-M);while(D.trim()===""||D==="="){if(D==="="){_=J;continue A}D=A.charAt($-++M)}}}else if(J===_){_=!1;continue}}if(z0;q--){var K=A[q];if(K===" ")continue;if(K==="=")return q;return-1}}function BJz(A){if(A[0]==='"'&&A[A.length-1]==='"'||A[0]==="'"&&A[A.length-1]==="'")return!0;else return!1}function s0q(A){if(BJz(A))return A.substr(1,A.length-2);else return A}mJz.parseTag=CJz;mJz.parseAttr=IJz});var qWq=C((gt$,AWq)=>{var QJz=lC1().FilterCSS,aC=hn8(),t0q=In8(),UJz=t0q.parseTag,pJz=t0q.parseAttr,aC1=iC1();function oC1(A){return A===void 0||A===null}function dJz(A){var q=aC1.spaceIndex(A);if(q===-1)return{html:"",closing:A[A.length-2]==="/"};A=aC1.trim(A.slice(q+1,-1));var K=A[A.length-1]==="/";if(K)A=aC1.trim(A.slice(0,-1));return{html:A,closing:K}}function cJz(A){var q={};for(var K in A)q[K]=A[K];return q}function lJz(A){var q={};for(var K in A)if(Array.isArray(A[K]))q[K.toLowerCase()]=A[K].map(function(Y){return Y.toLowerCase()});else q[K.toLowerCase()]=A[K];return q}function e0q(A){if(A=cJz(A||{}),A.stripIgnoreTag){if(A.onIgnoreTag)console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time');A.onIgnoreTag=aC.onIgnoreTagStripAll}if(A.whiteList||A.allowList)A.whiteList=lJz(A.whiteList||A.allowList);else A.whiteList=aC.whiteList;if(this.attributeWrapSign=A.singleQuotedAttributeValue===!0?"'":aC.attributeWrapSign,A.onTag=A.onTag||aC.onTag,A.onTagAttr=A.onTagAttr||aC.onTagAttr,A.onIgnoreTag=A.onIgnoreTag||aC.onIgnoreTag,A.onIgnoreTagAttr=A.onIgnoreTagAttr||aC.onIgnoreTagAttr,A.safeAttrValue=A.safeAttrValue||aC.safeAttrValue,A.escapeHtml=A.escapeHtml||aC.escapeHtml,this.options=A,A.css===!1)this.cssFilter=!1;else A.css=A.css||{},this.cssFilter=new QJz(A.css)}e0q.prototype.process=function(A){if(A=A||"",A=A.toString(),!A)return"";var q=this,K=q.options,Y=K.whiteList,z=K.onTag,w=K.onIgnoreTag,_=K.onTagAttr,$=K.onIgnoreTagAttr,O=K.safeAttrValue,H=K.escapeHtml,j=q.attributeWrapSign,J=q.cssFilter;if(K.stripBlankChar)A=aC.stripBlankChar(A);if(!K.allowCommentTag)A=aC.stripCommentTag(A);var M=!1;if(K.stripIgnoreTagBody)M=aC.StripTagBody(K.stripIgnoreTagBody,w),w=M.onIgnoreTag;var D=UJz(A,function(X,P,W,Z,G){var f={sourcePosition:X,position:P,isClosing:G,isWhite:Object.prototype.hasOwnProperty.call(Y,W)},V=z(W,Z,f);if(!oC1(V))return V;if(f.isWhite){if(f.isClosing)return"";var N=dJz(Z),v=Y[W],y=pJz(N.html,function(R,h){var B=aC1.indexOf(v,R)!==-1,x=_(W,R,h,B);if(!oC1(x))return x;if(B)if(h=O(W,R,h,J),h)return R+"="+j+h+j;else return R;else{if(x=$(W,R,h,B),!oC1(x))return x;return}});if(Z="<"+W,y)Z+=" "+y;if(N.closing)Z+=" /";return Z+=">",Z}else{if(V=w(W,Z,f),!oC1(V))return V;return H(Z)}},H);if(M)D=M.remove(D);return D};AWq.exports=e0q});var _Wq=C((ik6,sC1)=>{var KWq=hn8(),YWq=In8(),zWq=qWq();function wWq(A,q){var K=new zWq(q);return K.process(A)}ik6=sC1.exports=wWq;ik6.filterXSS=wWq;ik6.FilterXSS=zWq;(function(){for(var A in KWq)ik6[A]=KWq[A];for(var q in YWq)ik6[q]=YWq[q]})();if(typeof window<"u")window.filterXSS=sC1.exports;function iJz(){return typeof self<"u"&&typeof DedicatedWorkerGlobalScope<"u"&&self instanceof DedicatedWorkerGlobalScope}if(iJz())self.filterXSS=sC1.exports});import{createServer as xn8}from"http";import{parse as nJz}from"url";import{createHash as rJz,randomBytes as oJz}from"crypto";import{mkdir as aJz}from"fs/promises";import{join as sJz}from"path";function $Wq(A){try{let q=new URL(A);for(let K of eJz)if(q.searchParams.has(K))q.searchParams.set(K,"[REDACTED]");return q.toString()}catch{return A}}function jWq(){return async(A,q)=>{let K=AbortSignal.timeout(tJz);if(!q?.signal)return fetch(A,{...q,signal:K});let Y=new AbortController,z=()=>Y.abort();q.signal.addEventListener("abort",z),K.addEventListener("abort",z);let w=()=>{q.signal?.removeEventListener("abort",z),K.removeEventListener("abort",z)};if(q.signal.aborted)Y.abort();try{let _=await fetch(A,{...q,signal:Y.signal});return w(),_}catch(_){throw w(),_}}}async function tC1(A,q,K){if(q){if(!q.startsWith("https://"))throw Error(`authServerMetadataUrl must use https:// (got: ${q})`);let z=await(K??jWq())(q,{headers:{Accept:"application/json"}});if(z.ok)return Qm6.parse(await z.json());throw Error(`HTTP ${z.status} fetching configured auth server metadata from ${q}`)}return Um6(new URL(A),{...K&&{fetchFn:K}})}function JWq(A=Bn8){return`http://localhost:${A}/callback`}function qMz(){let A=parseInt(process.env.MCP_OAUTH_CALLBACK_PORT||"",10);return A>0?A:void 0}async function KMz(){let A=qMz();if(A)return A;let{min:q,max:K}=AMz,Y=K-q+1,z=Math.min(Y,100);for(let w=0;w{let H=xn8();H.once("error",O),H.listen(_,()=>{H.close(()=>$())})}),_}catch{continue}}try{return await new Promise((w,_)=>{let $=xn8();$.once("error",_),$.listen(Bn8,()=>{$.close(()=>w())})}),Bn8}catch{throw Error("No available ports for OAuth redirect")}}function tW(A,q){let K=U6({type:q.type,url:q.url,headers:q.headers||{}}),Y=rJz("sha256").update(K).digest("hex").substring(0,16);return`${A}|${Y}`}async function OWq({serverName:A,endpoint:q,token:K,tokenTypeHint:Y,clientId:z,accessToken:w}){let _=new URLSearchParams;if(_.set("token",K),_.set("token_type_hint",Y),z)_.set("client_id",z);else w8(A,`No client_id available for ${Y} revocation - server may reject`);let $={"Content-Type":"application/x-www-form-urlencoded"};try{await I8.post(q,_,{headers:$}),w8(A,`Successfully revoked ${Y}`)}catch(O){if(I8.isAxiosError(O)&&O.response?.status===401&&w)w8(A,`Got 401, retrying ${Y} revocation with Bearer auth`),await I8.post(q,_,{headers:{...$,Authorization:`Bearer ${w}`}}),w8(A,`Successfully revoked ${Y} with Bearer auth`);else throw O}}async function ea6(A,q,{preserveStepUpState:K=!1}={}){let Y=jH(),z=Y.read();if(!z?.mcpOAuth)return;let w=tW(A,q),_=z.mcpOAuth[w];if(_?.accessToken||_?.refreshToken)try{let $=await tC1(q.url,q.oauth?.authServerMetadataUrl);if(!$)w8(A,"No OAuth metadata found");else{let O="revocation_endpoint"in $?$.revocation_endpoint:null;if(!O)w8(A,"Server does not support token revocation");else{let H=String(O);if(w8(A,`Revoking tokens via ${H}`),_.refreshToken)try{await OWq({serverName:A,endpoint:H,token:_.refreshToken,tokenTypeHint:"refresh_token",clientId:_.clientId,accessToken:_.accessToken})}catch(j){w8(A,`Failed to revoke refresh token: ${D1(j)}`)}if(_.accessToken)try{await OWq({serverName:A,endpoint:H,token:_.accessToken,tokenTypeHint:"access_token",clientId:_.clientId,accessToken:_.accessToken})}catch(j){w8(A,`Failed to revoke access token: ${D1(j)}`)}}}}catch($){w8(A,`Failed to revoke tokens: ${D1($)}`)}else w8(A,"No tokens to revoke");if(eC1(A,q),K&&_&&(_.stepUpScope||_.discoveryState)){let $=Y.read()||{},O={...$,mcpOAuth:{...$.mcpOAuth,[w]:{...$.mcpOAuth?.[w],serverName:A,serverUrl:q.url,accessToken:$.mcpOAuth?.[w]?.accessToken??"",expiresAt:$.mcpOAuth?.[w]?.expiresAt??0,..._.stepUpScope?{stepUpScope:_.stepUpScope}:{},..._.discoveryState?{discoveryState:{authorizationServerUrl:_.discoveryState.authorizationServerUrl,resourceMetadataUrl:_.discoveryState.resourceMetadataUrl}}:{}}}};Y.update(O),w8(A,"Preserved step-up auth state across revocation")}}function eC1(A,q){let K=jH(),Y=K.read();if(!Y?.mcpOAuth)return;let z=tW(A,q);if(Y.mcpOAuth[z])delete Y.mcpOAuth[z],K.update(Y),w8(A,"Cleared stored tokens")}async function rk6(A,q,K,Y,z){let w=jH(),_=tW(A,q),$=w.read()?.mcpOAuth?.[_],O=$?.stepUpScope,H=$?.discoveryState?.resourceMetadataUrl;eC1(A,q);let j;if(H)try{j=new URL(H)}catch{w8(A,`Invalid cached resourceMetadataUrl: ${H}`)}let J={scope:O,resourceMetadataUrl:j};c("tengu_mcp_oauth_flow_start",{isOAuthFlow:!0,transportType:q.type,...QJ(q)?{mcpServerBaseUrl:QJ(q)}:{}});let M=q.oauth?.callbackPort,D=M??await KMz(),X=JWq(D);w8(A,`Using redirect port: ${D}${M?" (from config)":""}`);let P=new S_6(A,q,X,!0,K,z?.skipBrowserOpen);try{let v=await tC1(q.url,q.oauth?.authServerMetadataUrl);if(v)P.setMetadata(v),w8(A,`Fetched OAuth metadata with scope: ${mn8(v)||"NONE"}`)}catch(v){w8(A,`Failed to fetch OAuth metadata: ${D1(v)}`)}let W=await P.state(),Z=null,G=null,f=null,V=()=>{if(Z)Z.close(),Z=null;if(G)clearTimeout(G),G=null;if(Y&&f)Y.removeEventListener("abort",f),f=null;w8(A,"MCP OAuth server cleaned up")},N=await new Promise((v,y)=>{let R=!1,h=(x)=>{if(R)return;R=!0,v(x)},B=(x)=>{if(R)return;R=!0,y(x)};if(Y){if(f=()=>{V(),B(new nk6)},Y.aborted){f();return}Y.addEventListener("abort",f)}if(z?.onWaitingForCallback)z.onWaitingForCallback((x)=>{try{let F=new URL(x),g=F.searchParams.get("code"),b=F.searchParams.get("state"),U=F.searchParams.get("error");if(U){let d=F.searchParams.get("error_description")||"";V(),B(Error(`OAuth error: ${U} - ${d}`));return}if(!g)return;if(b!==W){V(),B(Error("OAuth state mismatch - possible CSRF attack"));return}w8(A,"Received auth code via manual callback URL"),V(),h(g)}catch{}});Z=xn8((x,F)=>{let g=nJz(x.url||"",!0);if(g.pathname==="/callback"){let b=g.query.code,U=g.query.state,d=g.query.error,l=g.query.error_description,t=g.query.error_uri;if(!d&&U!==W){F.writeHead(400,{"Content-Type":"text/html"}),F.end("

Authentication Error

Invalid state parameter. Please try again.

You can close this window.

"),V(),B(Error("OAuth state mismatch - possible CSRF attack"));return}if(d){F.writeHead(200,{"Content-Type":"text/html"});let s=un8.default(String(d)),H6=l?un8.default(String(l)):"";F.end(`

Authentication Error

${s}: ${H6}

You can close this window.

`),V();let Z6=`OAuth error: ${d}`;if(l)Z6+=` - ${l}`;if(t)Z6+=` (See: ${t})`;B(Error(Z6));return}if(b)F.writeHead(200,{"Content-Type":"text/html"}),F.end("

Authentication Successful

You can close this window. Return to Claude Code.

"),V(),h(b)}}),Z.listen(D,async()=>{try{w8(A,"Starting SDK auth"),w8(A,`Server URL: ${q.url}`);let x=await tR(P,{serverUrl:q.url,scope:J.scope,resourceMetadataUrl:J.resourceMetadataUrl});if(w8(A,`Initial auth result: ${x}`),x!=="REDIRECT")w8(A,`Unexpected auth result, expected REDIRECT: ${x}`)}catch(x){w8(A,`SDK auth error: ${x}`),V(),B(x instanceof Error?x:Error(String(x)))}}),G=setTimeout(()=>{V(),B(Error("Authentication timeout"))},300000)});try{w8(A,"Completing auth flow with authorization code");let v=await tR(P,{serverUrl:q.url,authorizationCode:N,resourceMetadataUrl:J.resourceMetadataUrl});if(w8(A,`Auth result: ${v}`),v==="AUTHORIZED"){let y=await P.tokens();if(w8(A,`Tokens after auth: ${y?"Present":"Missing"}`),y)w8(A,`Token access_token length: ${y.access_token?.length}`),w8(A,`Token expires_in: ${y.expires_in}`);c("tengu_mcp_oauth_flow_success",{transportType:q.type,...QJ(q)?{mcpServerBaseUrl:QJ(q)}:{}})}else throw Error("Unexpected auth result: "+v)}catch(v){if(w8(A,`Error during auth completion: ${v}`),I8.isAxiosError(v))try{let y=BO1.parse(v.response?.data);if(y.error==="invalid_client"&&y.error_description?.includes("Client not found")){let R=jH(),h=R.read()||{},B=tW(A,q);if(h.mcpOAuth?.[B])delete h.mcpOAuth[B].clientId,delete h.mcpOAuth[B].clientSecret,R.update(h)}}catch{}throw c("tengu_mcp_oauth_flow_error",{transportType:q.type,...QJ(q)?{mcpServerBaseUrl:QJ(q)}:{}}),v}}class S_6{serverName;serverConfig;redirectUri;handleRedirection;_codeVerifier;_authorizationUrl;_state;_scopes;_metadata;_refreshInProgress;onAuthorizationUrlCallback;skipBrowserOpen;constructor(A,q,K=JWq(),Y=!1,z,w){this.serverName=A,this.serverConfig=q,this.redirectUri=K,this.handleRedirection=Y,this.onAuthorizationUrlCallback=z,this.skipBrowserOpen=w??!1}get redirectUrl(){return this.redirectUri}get authorizationUrl(){return this._authorizationUrl}get clientMetadata(){let A={client_name:`Claude Code (${this.serverName})`,redirect_uris:[this.redirectUri],grant_types:["authorization_code","refresh_token"],response_types:["code"],token_endpoint_auth_method:"none"},q=mn8(this._metadata);if(q)A.scope=q,w8(this.serverName,`Using scope from metadata: ${A.scope}`);return A}setMetadata(A){this._metadata=A}async state(){if(!this._state)this._state=oJz(32).toString("base64url"),w8(this.serverName,"Generated new OAuth state");return this._state}async clientInformation(){let q=jH().read(),K=tW(this.serverName,this.serverConfig),Y=q?.mcpOAuth?.[K];if(Y?.clientId)return w8(this.serverName,"Found client info"),{client_id:Y.clientId,client_secret:Y.clientSecret};let z=this.serverConfig.oauth?.clientId;if(z){let w=q?.mcpOAuthClientConfig?.[K];return w8(this.serverName,"Using pre-configured client ID"),{client_id:z,client_secret:w?.clientSecret}}w8(this.serverName,"No client info found");return}async saveClientInformation(A){let q=jH(),K=q.read()||{},Y=tW(this.serverName,this.serverConfig),z={...K,mcpOAuth:{...K.mcpOAuth,[Y]:{...K.mcpOAuth?.[Y],serverName:this.serverName,serverUrl:this.serverConfig.url,clientId:A.client_id,clientSecret:A.client_secret,accessToken:K.mcpOAuth?.[Y]?.accessToken||"",expiresAt:K.mcpOAuth?.[Y]?.expiresAt||0}}};q.update(z)}async tokens(){let q=await jH().readAsync(),K=tW(this.serverName,this.serverConfig),Y=q?.mcpOAuth?.[K];if(!Y){w8(this.serverName,"No token data found");return}let z=(Y.expiresAt-Date.now())/1000;if(z<=0&&!Y.refreshToken){w8(this.serverName,"Token expired without refresh token");return}if(z<=300&&Y.refreshToken){if(!this._refreshInProgress)w8(this.serverName,`Token expires in ${Math.floor(z)}s, attempting proactive refresh`),this._refreshInProgress=this.refreshAuthorization(Y.refreshToken).finally(()=>{this._refreshInProgress=void 0});else w8(this.serverName,"Token refresh already in progress, reusing existing promise");try{let _=await this._refreshInProgress;if(_)return w8(this.serverName,"Token refreshed successfully"),_;w8(this.serverName,"Token refresh failed, returning current tokens")}catch(_){w8(this.serverName,`Token refresh error: ${D1(_)}`)}}let w={access_token:Y.accessToken,refresh_token:Y.refreshToken,expires_in:z,scope:Y.scope,token_type:"Bearer"};return w8(this.serverName,"Returning tokens"),w8(this.serverName,`Token length: ${w.access_token?.length}`),w8(this.serverName,`Has refresh token: ${!!w.refresh_token}`),w8(this.serverName,`Expires in: ${Math.floor(z)}s`),w}async saveTokens(A){let q=jH(),K=q.read()||{},Y=tW(this.serverName,this.serverConfig);w8(this.serverName,"Saving tokens"),w8(this.serverName,`Token expires in: ${A.expires_in}`),w8(this.serverName,`Has refresh token: ${!!A.refresh_token}`);let z={...K,mcpOAuth:{...K.mcpOAuth,[Y]:{...K.mcpOAuth?.[Y],serverName:this.serverName,serverUrl:this.serverConfig.url,accessToken:A.access_token,refreshToken:A.refresh_token,expiresAt:Date.now()+(A.expires_in||3600)*1000,scope:A.scope}}};q.update(z)}async redirectToAuthorization(A){this._authorizationUrl=A.toString();let q=A.searchParams.get("scope");if(w8(this.serverName,`Authorization URL: ${$Wq(A.toString())}`),w8(this.serverName,`Scopes in URL: ${q||"NOT FOUND"}`),q)this._scopes=q,w8(this.serverName,`Captured scopes from authorization URL: ${q}`);else{let z=mn8(this._metadata);if(z)this._scopes=z,w8(this.serverName,`Using scopes from metadata: ${z}`);else w8(this.serverName,"No scopes available from URL or metadata")}if(this._scopes&&!this.handleRedirection){let z=jH(),w=z.read()||{},_=tW(this.serverName,this.serverConfig),$=w.mcpOAuth?.[_];if($)$.stepUpScope=this._scopes,z.update(w),w8(this.serverName,`Persisted step-up scope: ${this._scopes}`)}if(!this.handleRedirection){w8(this.serverName,"Redirection handling is disabled, skipping redirect");return}let K=A.toString();if(!K.startsWith("http://")&&!K.startsWith("https://"))throw Error("Invalid authorization URL: must use http:// or https:// scheme");w8(this.serverName,"Redirecting to authorization URL");let Y=$Wq(K);if(w8(this.serverName,`Authorization URL: ${Y}`),this.onAuthorizationUrlCallback)this.onAuthorizationUrlCallback(K);if(!this.skipBrowserOpen){if(w8(this.serverName,`Opening authorization URL: ${Y}`),!await $Y(K))w8(this.serverName,"Browser didn't open automatically. URL is shown in UI.")}else w8(this.serverName,`Skipping browser open (skipBrowserOpen=true). URL: ${Y}`)}async saveCodeVerifier(A){w8(this.serverName,"Saving code verifier"),this._codeVerifier=A}async codeVerifier(){if(!this._codeVerifier)throw w8(this.serverName,"No code verifier saved"),Error("No code verifier saved");return w8(this.serverName,"Returning code verifier"),this._codeVerifier}async invalidateCredentials(A){let q=jH(),K=q.read();if(!K?.mcpOAuth)return;let Y=tW(this.serverName,this.serverConfig),z=K.mcpOAuth[Y];if(!z)return;switch(A){case"all":delete K.mcpOAuth[Y];break;case"client":z.clientId=void 0,z.clientSecret=void 0;break;case"tokens":z.accessToken="",z.refreshToken=void 0,z.expiresAt=0;break;case"verifier":this._codeVerifier=void 0;return;case"discovery":z.discoveryState=void 0,z.stepUpScope=void 0;break}q.update(K),w8(this.serverName,`Invalidated credentials (scope: ${A})`)}async saveDiscoveryState(A){let q=jH(),K=q.read()||{},Y=tW(this.serverName,this.serverConfig);w8(this.serverName,`Saving discovery state (authServer: ${A.authorizationServerUrl})`);let z={...K,mcpOAuth:{...K.mcpOAuth,[Y]:{...K.mcpOAuth?.[Y],serverName:this.serverName,serverUrl:this.serverConfig.url,accessToken:K.mcpOAuth?.[Y]?.accessToken||"",expiresAt:K.mcpOAuth?.[Y]?.expiresAt||0,discoveryState:{authorizationServerUrl:A.authorizationServerUrl,resourceMetadataUrl:A.resourceMetadataUrl}}}};q.update(z)}async discoveryState(){let q=jH().read(),K=tW(this.serverName,this.serverConfig),Y=q?.mcpOAuth?.[K]?.discoveryState;if(Y?.authorizationServerUrl)return w8(this.serverName,`Returning cached discovery state (authServer: ${Y.authorizationServerUrl})`),{authorizationServerUrl:Y.authorizationServerUrl,resourceMetadataUrl:Y.resourceMetadataUrl,resourceMetadata:Y.resourceMetadata,authorizationServerMetadata:Y.authorizationServerMetadata};let z=this.serverConfig.oauth?.authServerMetadataUrl;if(z){w8(this.serverName,`Fetching metadata from configured URL: ${z}`);try{let w=await tC1(this.serverConfig.url,z);if(w)return{authorizationServerUrl:w.issuer,authorizationServerMetadata:w}}catch(w){w8(this.serverName,`Failed to fetch from configured metadata URL: ${D1(w)}`)}}return}async refreshAuthorization(A){let q=tW(this.serverName,this.serverConfig),K=OA();await aJz(K,{recursive:!0});let Y=q.replace(/[^a-zA-Z0-9]/g,"_"),z=sJz(K,`mcp-refresh-${Y}.lock`),w;for(let _=0;_{w8(this.serverName,"Refresh lock was compromised")}}),w8(this.serverName,"Acquired refresh lock");break}catch($){let O=$.code;if(O==="ELOCKED"){w8(this.serverName,`Refresh lock held by another process, waiting (attempt ${_+1}/${bn8})`),await new Promise((H)=>setTimeout(H,1000+Math.random()*1000));continue}w8(this.serverName,`Failed to acquire refresh lock: ${O}, proceeding without lock`);break}if(!w)w8(this.serverName,`Could not acquire refresh lock after ${bn8} retries, proceeding without lock`);try{ML();let O=jH().read()?.mcpOAuth?.[q];if(O){let H=(O.expiresAt-Date.now())/1000;if(H>300)return w8(this.serverName,`Another process already refreshed tokens (expires in ${Math.floor(H)}s)`),{access_token:O.accessToken,refresh_token:O.refreshToken,expires_in:H,scope:O.scope,token_type:"Bearer"};if(O.refreshToken)A=O.refreshToken}return await this._doRefresh(A)}finally{if(w)try{await w(),w8(this.serverName,"Released refresh lock")}catch{w8(this.serverName,"Failed to release refresh lock")}}}async _doRefresh(A){let K=QJ(this.serverConfig),Y=(z,w)=>{c(z==="success"?"tengu_mcp_oauth_refresh_success":"tengu_mcp_oauth_refresh_failure",{transportType:this.serverConfig.type,...K?{mcpServerBaseUrl:K}:{},...w?{reason:w}:{}})};for(let z=1;z<=3;z++)try{w8(this.serverName,"Starting token refresh");let w=jWq(),_=this._metadata;if(!_){let H=await this.discoveryState();if(H?.authorizationServerMetadata)w8(this.serverName,"Using persisted auth server metadata for refresh"),_=H.authorizationServerMetadata;else if(H?.authorizationServerUrl)w8(this.serverName,`Re-discovering metadata from persisted auth server URL: ${H.authorizationServerUrl}`),_=await Um6(H.authorizationServerUrl,{fetchFn:w})}if(!_)_=await tC1(this.serverConfig.url,this.serverConfig.oauth?.authServerMetadataUrl,w);if(!_){w8(this.serverName,"Failed to discover OAuth metadata"),Y("failure","metadata_discovery_failed");return}this._metadata=_;let $=await this.clientInformation();if(!$){w8(this.serverName,"No client information available"),Y("failure","no_client_info");return}let O=await yj8(new URL(this.serverConfig.url),{metadata:_,clientInformation:$,refreshToken:A,resource:new URL(this.serverConfig.url),fetchFn:w});if(O)return w8(this.serverName,"Token refresh successful"),await this.saveTokens(O),Y("success"),O;w8(this.serverName,"Token refresh returned no tokens"),Y("failure","no_tokens_returned");return}catch(w){if(w instanceof tt){w8(this.serverName,`Token refresh failed with invalid_grant: ${w.message}`),ML();let J=jH().read(),M=tW(this.serverName,this.serverConfig),D=J?.mcpOAuth?.[M];if(D){let X=(D.expiresAt-Date.now())/1000;if(X>300)return w8(this.serverName,"Another process refreshed tokens, using those"),{access_token:D.accessToken,refresh_token:D.refreshToken,expires_in:X,scope:D.scope,token_type:"Bearer"}}w8(this.serverName,"No valid tokens in storage, clearing stored tokens"),await this.invalidateCredentials("tokens"),Y("failure","invalid_grant");return}let _=w instanceof Error&&/timeout|timed out|etimedout|econnreset/i.test(w.message),$=w instanceof Dg||w instanceof X06||w instanceof P06,O=_||$;if(!O||z>=3){w8(this.serverName,`Token refresh failed: ${D1(w)}`),Y("failure",O?"transient_retries_exhausted":"request_failed");return}let H=1000*Math.pow(2,z-1);w8(this.serverName,`Token refresh failed, retrying in ${H}ms (attempt ${z}/3)`),await new Promise((j)=>setTimeout(j,H))}return}}async function As6(){let A=process.env.MCP_CLIENT_SECRET;if(A)return A;if(!process.stdin.isTTY)throw Error("No TTY available to prompt for client secret. Set MCP_CLIENT_SECRET env var instead.");return new Promise((q,K)=>{process.stderr.write("Enter OAuth client secret: "),process.stdin.setRawMode?.(!0);let Y="",z=(w)=>{let _=w.toString();if(_===` `||_==="\r")process.stdin.setRawMode?.(!1),process.stdin.removeListener("data",z),process.stderr.write(` `),q(Y);else if(_==="\x03")process.stdin.setRawMode?.(!1),process.stdin.removeListener("data",z),K(Error("Cancelled"));else if(_==="