(q)
| 8008 | Recent conversation context: |
| 8009 | ${O}`:""} |
| 8010 | |
| 8011 | Explain this command in context.`,j=D5(),H=await CN({model:j,system:KmY,messages:[{role:"user",content:w}],tools:[_mY],tool_choice:{type:"tool",name:"explain_command"},signal:Y,querySource:"permission_explainer"}),J=Date.now()-$;N(`Permission explainer: API returned in ${J}ms, stop_reason=${H.stop_reason}`);let M=H.content.find((X)=>X.type==="tool_use");if(M&&M.type==="tool_use"){N(`Permission explainer: tool input: ${g6(M.input).slice(0,500)}`);let X=zmY().safeParse(M.input);if(X.success){let P={riskLevel:X.data.riskLevel,explanation:X.data.explanation,reasoning:X.data.reasoning,risk:X.data.risk};return d("tengu_permission_explainer_generated",{tool_name:wK(q),risk_level:suY[P.riskLevel],latency_ms:J}),N(`Permission explainer: ${P.riskLevel} risk for ${q} (${J}ms)`),P}}return d("tengu_permission_explainer_error",{tool_name:wK(q),error_type:tuY,latency_ms:J}),N("Permission explainer: no parsed output in response"),null}catch(A){let O=Date.now()-$;if(Y.aborted)return N(`Permission explainer: request aborted for ${q}`),null;return N(`Permission explainer error: ${d6(A)}`),H6(A),d("tengu_permission_explainer_error",{tool_name:wK(q),error_type:A instanceof Error&&A.name==="AbortError"?euY:qmY,latency_ms:O}),null}}var suY,tuY=1,euY=2,qmY=3,KmY="Analyze shell commands and explain what they do, why you're running them, and potential risks.",_mY,zmY;var kdK=y(()=>{x7();k8();kj();V1();_8();y8();E8();aq();nq6();l8();suY={LOW:1,MEDIUM:2,HIGH:3},_mY={name:"explain_command",description:"Provide an explanation of a shell command",input_schema:{type:"object",properties:{explanation:{type:"string",description:"What this command does (1-2 sentences)"},reasoning:{type:"string",description:'Why YOU are running this command. Start with "I" - e.g. "I need to check the file contents"'},risk:{type:"string",description:"What could go wrong, under 15 words"},riskLevel:{type:"string",enum:["LOW","MEDIUM","HIGH"],description:"LOW (safe dev workflows), MEDIUM (recoverable changes), HIGH (dangerous/irreversible)"}},required:["explanation","reasoning","risk","riskLevel"]}},zmY=B6(()=>L.object({riskLevel:L.enum(["LOW","MEDIUM","HIGH"]),explanation:L.string(),reasoning:L.string(),risk:L.string()}))});function AmY(){let q=z6(7),[K,_]=LC8("responding",VdK,!1),z;if(q[0]!==_)z=VdK.split("").map((A,O)=>t2.default.createElement(AE6,{key:O,char:A,index:O,glimmerIndex:_,messageColor:"inactive",shimmerColor:"text"})),q[0]=_,q[1]=z;else z=q[1];let Y;if(q[2]!==z)Y=t2.default.createElement(k,null,z),q[2]=z,q[3]=Y;else Y=q[3];let $;if(q[4]!==K||q[5]!==Y)$=t2.default.createElement(u,{ref:K},Y),q[4]=K,q[5]=Y,q[6]=$;else $=q[6];return $}function OmY(q){switch(q){case"LOW":return"success";case"MEDIUM":return"warning";case"HIGH":return"error"}}function wmY(q){switch(q){case"LOW":return"Low risk";case"MEDIUM":return"Med risk";case"HIGH":return"High risk"}}function jmY(q){return vdK({toolName:q.toolName,toolInput:q.toolInput,toolDescription:q.toolDescription,messages:q.messages,signal:new AbortController().signal}).catch(()=>null)}function Zd8(q){let K=z6(9),_;if(K[0]===Symbol.for("react.memo_cache_sentinel"))_=Fz7(),K[0]=_;else _=K[0];let z=_,[Y,$]=t2.useState(!1),[A,O]=t2.useState(null),w;if(K[1]!==A||K[2]!==q||K[3]!==Y)w=()=>{if(!Y){if(d("tengu_permission_explainer_shortcut_used",{}),!A)O(jmY(q))}$(HmY)},K[1]=A,K[2]=q,K[3]=Y,K[4]=w;else w=K[4];let j;if(K[5]===Symbol.for("react.memo_cache_sentinel"))j={context:"Confirmation",isActive:z},K[5]=j;else j=K[5];P1("confirm:toggleExplanation",w,j);let H;if(K[6]!==A||K[7]!==Y)H={visible:Y,enabled:z,promise:A},K[6]=A,K[7]=Y,K[8]=H;else H=K[8];return H}function HmY(q){return!q}function JmY(q){let K=z6(21),{promise:_}=q,z=t2.use(_);if(!z){let M;if(K[0]===Symbol.for("react.memo_cache_sentinel"))M=t2.default.createElement(u,{marginTop:1},t2.default.createElement(k,{dimColor:!0},"Explanation unavailable")),K[0]=M;else M=K[0];return M}let Y;if(K[1]!==z.explanation)Y=t2.default.createElement(k,null,z.explanation),K[1]=z.explanation,K[2]=Y;else Y=K[2];let $;if(K[3]!==z.reasoning)$=t2.default.createElement(u,{marginTop:1},t2.default.createElement(k,null,z.reasoning)),K[3]=z.reasoning,K[4]=$;else $=K[4];let A;if(K[5]!==z.riskLevel)A=OmY(z.riskLevel),K[5]=z.riskLevel,K[6]=A;else A=K[6];let O;if(K[7]!==z.riskLevel)O=wmY(z.riskLevel),K[7]=z.riskLevel,K[8]=O;else O=K[8];let w;if(K[9]!==A||K[10]!==O)w=t2.default.createElement(k,{color:A},O,":"),K[9]=A,K[10]=O,K[11]=w;else w=K[11];let j;if(K[12]!==z.risk)j=t2.default.createElement(k,null," ",z.risk),K[12]=z.risk,K[13]=j;else j=K[13];let H;if(K[14]!==w||K[15]!==j)H=t2.default.createElement(u,{marginTop:1},t2.default.createElement(k,null,w,j)),K[14]=w,K[15]=j,K[16]=H;else H=K[16];let J;if(K[17]!==Y||K[18]!==$||K[19]!==H)J=t2.default.createElement(u,{flexDirection:"column",marginTop:1},Y,$,H),K[17]=Y,K[18]=$,K[19]=H,K[20]=J;else J=K[20];return J}function Gd8(q){let K=z6(3),{visible:_,promise:z}=q;if(!_||!z)return null;let Y;if(K[0]===Symbol.for("react.memo_cache_sentinel"))Y=t2.default.createElement(u,{marginTop:1},t2.default.createElement(AmY,null)),K[0]=Y;else Y=K[0];let $;if(K[1]!==z)$=t2.default.createElement(t2.Suspense,{fallback:Y},t2.default.createElement(JmY,{promise:z})),K[1]=z,K[2]=$;else $=K[2];return $}var t2,VdK="Loading explanation…";var Uz7=y(()=>{q8();s6();Oq();k8();kdK();$e6();RC8();t2=O6(D6(),1)});function Td8(q){let K=z6(7),_;if(K[0]!==q.edits||K[1]!==q.file_path)_=()=>XmY(q.file_path,q.edits),K[0]=q.edits,K[1]=q.file_path,K[2]=_;else _=K[2];let[z]=MC6.useState(_),Y;if(K[3]===Symbol.for("react.memo_cache_sentinel"))Y=XZ.createElement(ydK,{placeholder:!0}),K[3]=Y;else Y=K[3];let $;if(K[4]!==z||K[5]!==q.file_path)$=XZ.createElement(MC6.Suspense,{fallback:Y},XZ.createElement(MmY,{promise:z,file_path:q.file_path})),K[4]=z,K[5]=q.file_path,K[6]=$;else $=K[6];return $}function MmY(q){let K=z6(6),{promise:_,file_path:z}=q,{patch:Y,firstLine:$,fileContent:A}=MC6.use(_),{columns:O}=t1(),w;if(K[0]!==O||K[1]!==A||K[2]!==z||K[3]!==$||K[4]!==Y)w=XZ.createElement(ydK,null,XZ.createElement(lL6,{hunks:Y,dim:!1,width:O,filePath:z,firstLine:$,fileContent:A})),K[0]=O,K[1]=A,K[2]=z,K[3]=$,K[4]=Y,K[5]=w;else w=K[5];return w}function ydK(q){let K=z6(5),{children:_,placeholder:z}=q,Y;if(K[0]!==_||K[1]!==z)Y=z?XZ.createElement(k,{dimColor:!0},"…"):_,K[0]=_,K[1]=z,K[2]=Y;else Y=K[2];let $;if(K[3]!==Y)$=XZ.createElement(u,{flexDirection:"column"},XZ.createElement(u,{borderColor:"subtle",borderStyle:"dashed",flexDirection:"column",borderLeft:!1,borderRight:!1},Y)),K[3]=Y,K[4]=$;else $=K[4];return $}async function XmY(q,K){let _=K.filter((Y)=>Y.old_string!=null&&Y.new_string!=null),z=_.length===1?_[0]:void 0;if(z&&z.old_string.length>=EK6)return M48(q,[z]);try{let Y=await q88(q);if(Y===null)return M48(q,_);try{if(!z||z.old_string===""){let w=await fu8(Y);if(w===null)return M48(q,_);let j=_.map((H)=>NdK(w,H));return{patch:_y({filePath:q,fileContents:w,edits:j}),firstLine:ce(w),fileContent:w}}let $=await ks1(Y,z.old_string,dL6);if($.truncated||$.content==="")return M48(q,[z]);let A=NdK($.content,z),O=_y({filePath:q,fileContents:$.content,edits:[A]});return{patch:Ku8(O,$.lineOffset-1),firstLine:$.lineOffset===1?ce($.content):null,fileContent:$.content}}finally{await Y.close()}}catch(Y){return H6(Y),M48(q,_)}}function M48(q,K){return{patch:K.flatMap((_)=>_y({filePath:q,fileContents:_.old_string,edits:[_]})),firstLine:null,fileContent:void 0}}function NdK(q,K){let _=Fj6(q,K.old_string)||K.old_string,z=nL6(K.old_string,_,K.new_string);return{...K,old_string:_,new_string:z}}var XZ,MC6;var Qz7=y(()=>{q8();t4();s6();Uj6();BQ();E8();Zu8();Xu8();XZ=O6(D6(),1),MC6=O6(D6(),1)});import{randomUUID as PmY}from"crypto";import{basename as WmY}from"path";function EdK({onChange:q,toolUseContext:K,filePath:_,edits:z,editMode:Y}){let $=xs.useRef(!1),[A,O]=xs.useState(!1),w=xs.useMemo(()=>PmY().slice(0,6),[]),j=xs.useMemo(()=>`✻ [Claude Code] ${WmY(_)} (${w}) ⧉`,[_,w]),H=EE8(K.options.mcpClients)&&j8().diffTool==="auto"&&!_.endsWith(".ipynb"),J=LE8(K.options.mcpClients)??"IDE";async function M(){if(!H)return;try{d("tengu_ext_will_show_diff",{});let{oldContent:X,newContent:P}=await fmY(_,z,K,j);if($.current)return;d("tengu_ext_diff_accepted",{});let W=DmY(_,X,P,Y);if(W.length===0){d("tengu_ext_diff_rejected",{});let D=SN(K.options.mcpClients);if(D)await dz7(j,D);q({type:"reject"},{file_path:_,edits:z});return}q({type:"accept-once"},{file_path:_,edits:W})}catch(X){H6(X),O(!0)}}return xs.useEffect(()=>{return M(),()=>{$.current=!0}},[]),{closeTabInIDE(){let X=SN(K.options.mcpClients);if(!X)return Promise.resolve();return dz7(j,X)},showingDiffInIDE:H&&!A,ideName:J,hasError:A}}function DmY(q,K,_,z){let Y=z==="single",$=_u8({filePath:q,oldContent:K,newContent:_,singleHunk:Y});if($.length===0)return[];if(Y&&$.length>1)H6(Error(`Unexpected number of hunks: ${$.length}. Expected 1 hunk.`));return B$K($)}async function fmY(q,K,_,z){let Y=!1,$=lq(q),A="";try{A=xZ($)}catch(j){if(!_7(j))throw j}async function O(){if(Y)return;Y=!0;try{await dz7(z,w)}catch(j){H6(j)}process.off("beforeExit",O),_.abortController.signal.removeEventListener("abort",O)}_.abortController.signal.addEventListener("abort",O),process.on("beforeExit",O);let w=SN(_.options.mcpClients);try{let{updatedFile:j}=K88({filePath:$,fileContents:A,edits:K});if(!w||w.type!=="connected")throw Error("IDE client not available");let H=$,J=w.config.ideRunningInWindows===!0;if(Z1()==="wsl"&&J&&process.env.WSL_DISTRO_NAME)H=new GN6(process.env.WSL_DISTRO_NAME).toIDEPath($);let M=await zm("openDiff",{old_file_path:H,new_file_path:H,new_file_contents:j,tab_name:z},w),X=Array.isArray(M)?M:[M];if(TmY(X))return O(),{oldContent:A,newContent:X[1].text};else if(ZmY(X))return O(),{oldContent:A,newContent:j};else if(GmY(X))return O(),{oldContent:A,newContent:A};throw Error("Not accepted")}catch(j){throw H6(j),O(),j}}async function dz7(q,K){try{if(!K||K.type!=="connected")throw Error("IDE client not available");await zm("close_tab",{tab_name:q},K)}catch(_){H6(_)}}function ZmY(q){return Array.isArray(q)&&typeof q[0]==="object"&&q[0]!==null&&"type"in q[0]&&q[0].type==="text"&&"text"in q[0]&&q[0].text==="TAB_CLOSED"}function GmY(q){return Array.isArray(q)&&typeof q[0]==="object"&&q[0]!==null&&"type"in q[0]&&q[0].type==="text"&&"text"in q[0]&&q[0].text==="DIFF_REJECTED"}function TmY(q){return Array.isArray(q)&&q[0]?.type==="text"&&q[0].text==="FILE_SAVED"&&typeof q[1].text==="string"}var xs;var LdK=y(()=>{k8();ZE();dz();Uj6();V1();BQ();y8();U2();aB1();E8();vK();xs=O6(D6(),1)});import{basename as vmY,relative as kmY}from"path";function RdK(q){let K=z6(36),{onChange:_,options:z,input:Y,filePath:$,ideName:A,symlinkTarget:O,rejectFeedback:w,acceptFeedback:j,setFocusedOption:H,onInputModeToggle:J,focusedOption:M,yesInputMode:X,noInputMode:P}=q,W;if(K[0]!==A)W=eb.default.createElement(k,{bold:!0,color:"permission"},"Opened changes in ",A," ⧉"),K[0]=A,K[1]=W;else W=K[1];let D;if(K[2]!==O)D=O&&eb.default.createElement(k,{color:"warning"},kmY(Z8(),O).startsWith("..")?`This will modify ${O} (outside working directory) via a symlink`:`Symlink target: ${O}`),K[2]=O,K[3]=D;else D=K[3];let f;if(K[4]===Symbol.for("react.memo_cache_sentinel"))f=Ta6()&&eb.default.createElement(k,{dimColor:!0},"Save file to continue…"),K[4]=f;else f=K[4];let G;if(K[5]!==$)G=vmY($),K[5]=$,K[6]=G;else G=K[6];let Z;if(K[7]!==G)Z=eb.default.createElement(k,null,"Do you want to make this edit to"," ",eb.default.createElement(k,{bold:!0},G),"?"),K[7]=G,K[8]=Z;else Z=K[8];let T;if(K[9]!==j||K[10]!==Y||K[11]!==_||K[12]!==z||K[13]!==w)T=(B)=>{let p=z.find((C)=>C.value===B);if(p){if(p.option.type==="reject"){let C=w.trim();_(p.option,Y,C||void 0);return}if(p.option.type==="accept-once"){let C=j.trim();_(p.option,Y,C||void 0);return}_(p.option,Y)}},K[9]=j,K[10]=Y,K[11]=_,K[12]=z,K[13]=w,K[14]=T;else T=K[14];let v;if(K[15]!==Y||K[16]!==_)v=()=>_({type:"reject"},Y),K[15]=Y,K[16]=_,K[17]=v;else v=K[17];let V;if(K[18]!==H)V=(B)=>H(B),K[18]=H,K[19]=V;else V=K[19];let E;if(K[20]!==J||K[21]!==z||K[22]!==T||K[23]!==v||K[24]!==V)E=eb.default.createElement(H1,{options:z,inlineDescriptions:!0,onChange:T,onCancel:v,onFocus:V,onInputModeToggle:J}),K[20]=J,K[21]=z,K[22]=T,K[23]=v,K[24]=V,K[25]=E;else E=K[25];let S;if(K[26]!==Z||K[27]!==E)S=eb.default.createElement(u,{flexDirection:"column"},Z,E),K[26]=Z,K[27]=E,K[28]=S;else S=K[28];let R=(M==="yes"&&!X||M==="no"&&!P)&&" · Tab to amend",x;if(K[29]!==R)x=eb.default.createElement(u,{marginTop:1},eb.default.createElement(k,{dimColor:!0},"Esc to cancel",R)),K[29]=R,K[30]=x;else x=K[30];let I;if(K[31]!==W||K[32]!==S||K[33]!==x||K[34]!==D)I=eb.default.createElement(Q_,{color:"permission"},eb.default.createElement(u,{flexDirection:"column",gap:1},W,D,f,S,x)),K[31]=W,K[32]=S,K[33]=x,K[34]=D,K[35]=I;else I=K[35];return I}var eb;var hdK=y(()=>{q8();s6();I7();U2();d_();pP();eb=O6(D6(),1)});import{homedir as VmY}from"os";import{basename as NmY,join as ymY,sep as SdK}from"path";function EmY(q){let K=lq(q),_=lq(`${r1()}/.claude`),z=oD(K),Y=oD(_);return z.startsWith(Y+SdK.toLowerCase())||z.startsWith(Y+"/")}function LmY(q){let K=lq(q),_=ymY(VmY(),".claude"),z=oD(K),Y=oD(_);return z.startsWith(Y+SdK.toLowerCase())||z.startsWith(Y+"/")}function CdK({filePath:q,toolPermissionContext:K,operationType:_="write",onRejectFeedbackChange:z,onAcceptFeedbackChange:Y,yesInputMode:$=!1,noInputMode:A=!1}){let O=[],w=RH("chat:cycleMode","Chat","shift+tab");if($&&Y)O.push({type:"input",label:"Yes",value:"yes",placeholder:"and tell Claude what to do next",onChange:Y,allowEmptySubmitToCancel:!0,option:{type:"accept-once"}});else O.push({label:"Yes",value:"yes",option:{type:"accept-once"}});let j=XL(q,K),H=EmY(q),J=LmY(q);if((H||J)&&_!=="read")O.push({label:"Yes, and allow Claude to edit its own settings for this session",value:"yes-claude-folder",option:{type:"accept-session",scope:J?"global-claude-folder":"claude-folder"}});else{let M;if(j)if(_==="read")M="Yes, during this session";else M=o56.default.createElement(k,null,"Yes, allow all edits during this session"," ",o56.default.createElement(k,{bold:!0},"(",w,")"));else{let X=IZ(q),P=NmY(X)||"this directory";if(_==="read")M=o56.default.createElement(k,null,"Yes, allow reading from ",o56.default.createElement(k,{bold:!0},P,"/")," during this session");else M=o56.default.createElement(k,null,"Yes, allow all edits in ",o56.default.createElement(k,{bold:!0},P,"/")," during this session ",o56.default.createElement(k,{bold:!0},"(",w,")"))}O.push({label:M,value:"yes-session",option:{type:"accept-session"}})}if(A&&z)O.push({type:"input",label:"No",value:"no",placeholder:"and tell Claude what to do differently",onChange:z,allowEmptySubmitToCancel:!0,option:{type:"reject"}});else O.push({label:"No",value:"no",option:{type:"reject"}});return O}var o56;var bdK=y(()=>{v8();s6();tu();dz();Tz();o56=O6(D6(),1)});function cz7(q,K,_,z,Y){MZ({completion_type:K,event:q,metadata:{language_name:_,message_id:z,platform:a1.platform,hasFeedback:Y??!1}})}function RmY(q,K){let{messageId:_,toolUseConfirm:z,onDone:Y,completionType:$,languageName:A}=q;cz7("accept",$,A,_),d("tengu_accept_submitted",{toolName:wK(z.tool.name),isMcp:z.tool.isMcp??!1,has_instructions:!!K?.feedback,instructions_length:K?.feedback?.length??0,entered_feedback_mode:K?.enteredFeedbackMode??!1}),Y(),z.onAllow(z.input,[],K?.feedback)}function hmY(q,K){let{messageId:_,path:z,toolUseConfirm:Y,toolPermissionContext:$,onDone:A,completionType:O,languageName:w,operationType:j}=q;if(cz7("accept",O,w,_),K?.scope==="claude-folder"||K?.scope==="global-claude-folder"){let J=K.scope==="global-claude-folder"?Qf8:Uf8,M=[{type:"addRules",rules:[{toolName:X4,ruleContent:J}],behavior:"allow",destination:"session"}];A(),Y.onAllow(Y.input,M);return}let H=z?Fq8(z,j,$):[];A(),Y.onAllow(Y.input,H)}function SmY(q,K){let{messageId:_,toolUseConfirm:z,onDone:Y,onReject:$,completionType:A,languageName:O}=q;cz7("reject",A,O,_,K?.hasFeedback),d("tengu_reject_submitted",{toolName:wK(z.tool.name),isMcp:z.tool.isMcp??!1,has_instructions:!!K?.feedback,instructions_length:K?.feedback?.length??0,entered_feedback_mode:K?.enteredFeedbackMode??!1}),Y(),$(),z.onReject(K?.feedback)}var xdK;var IdK=y(()=>{k8();kj();y_();Tz();JC6();xdK={"accept-once":RmY,"accept-session":hmY,reject:SmY}});function udK({filePath:q,completionType:K,languageName:_,toolUseConfirm:z,onDone:Y,onReject:$,parseInput:A,operationType:O="write"}){let w=P8((B)=>B.toolPermissionContext),[j,H]=fk.useState(""),[J,M]=fk.useState(""),[X,P]=fk.useState("yes"),[W,D]=fk.useState(!1),[f,G]=fk.useState(!1),[Z,T]=fk.useState(!1),[v,V]=fk.useState(!1),E=fk.useMemo(()=>CdK({filePath:q,toolPermissionContext:w,operationType:O,onRejectFeedbackChange:M,onAcceptFeedbackChange:H,yesInputMode:W,noInputMode:f}),[q,w,O,W,f]),S=fk.useCallback((B,p,C)=>{let g={messageId:z.assistantMessage.message.id,path:q,toolUseConfirm:z,toolPermissionContext:w,onDone:Y,onReject:$,completionType:K,languageName:_,operationType:O},F=z.onAllow;z.onAllow=(c,K6,t)=>{F(p,K6,t)};let U=xdK[B.type];U(g,{feedback:C,hasFeedback:!!C,enteredFeedbackMode:B.type==="accept-once"?Z:v,scope:B.type==="accept-session"?B.scope:void 0})},[q,K,_,z,w,Y,$,O,Z,v]),R=fk.useCallback(()=>{let B=E.find((p)=>p.option.type==="accept-session");if(B){let p=A(z.input);S(B.option,p)}},[E,A,z.input,S]);o7({"confirm:cycleMode":R},{context:"Confirmation"});let x=fk.useCallback((B)=>{if(B!=="yes"&&W&&!j.trim())D(!1);if(B!=="no"&&f&&!J.trim())G(!1);P(B)},[W,f,j,J]),I=fk.useCallback((B)=>{let p={toolName:wK(z.tool.name),isMcp:z.tool.isMcp??!1};if(B==="yes")if(W)D(!1),d("tengu_accept_feedback_mode_collapsed",p);else D(!0),T(!0),d("tengu_accept_feedback_mode_entered",p);else if(B==="no")if(f)G(!1),d("tengu_reject_feedback_mode_collapsed",p);else G(!0),V(!0),d("tengu_reject_feedback_mode_entered",p)},[W,f,z]);return{options:E,onChange:S,acceptFeedback:j,rejectFeedback:J,focusedOption:X,setFocusedOption:x,handleInputModeToggle:I,yesInputMode:W,noInputMode:f}}var fk;var mdK=y(()=>{C7();Oq();k8();kj();bdK();IdK();fk=O6(D6(),1)});import{relative as CmY}from"path";function ud({toolUseConfirm:q,toolUseContext:K,onDone:_,onReject:z,title:Y,subtitle:$,question:A="Do you want to proceed?",content:O,completionType:w="tool_use_single",path:j,parseInput:H,operationType:J="write",ideDiffSupport:M,workerBadge:X,languageName:P}){let W=PZ.useMemo(()=>P??(j?sV8(j):"none"),[P,j]),D=PZ.useMemo(()=>({completion_type:w,language_name:W}),[w,W]);tb(q,D);let f=PZ.useMemo(()=>{if(!j||J==="read")return null;let t=lq(j),q6=X8(),{resolvedPath:e,isSymlink:i}=F$(q6,t);if(i)return e;return null},[j,J]),G=udK({filePath:j||"",completionType:w,languageName:W,toolUseConfirm:q,onDone:_,onReject:z,parseInput:H,operationType:J}),{options:Z,acceptFeedback:T,rejectFeedback:v,setFocusedOption:V,handleInputModeToggle:E,focusedOption:S,yesInputMode:R,noInputMode:x}=G,I=H(q.input),B=PZ.useMemo(()=>M?M.getConfig(H(q.input)):null,[M,q.input]),p=B?{onChange:(t,q6)=>{let e=M.applyChanges(I,q6.edits);G.onChange(t,e)},toolUseContext:K,filePath:B.filePath,edits:(B.edits||[]).map((t)=>({old_string:t.old_string,new_string:t.new_string,replace_all:t.replace_all||!1})),editMode:B.editMode||"single"}:{onChange:()=>{},toolUseContext:K,filePath:"",edits:[],editMode:"single"},{closeTabInIDE:C,showingDiffInIDE:g,ideName:F}=EdK(p),U=(t,q6)=>{C?.(),G.onChange(t,I,q6?.trim())};if(g&&B&&j)return PZ.default.createElement(RdK,{onChange:(t,q6,e)=>U(t,e),options:Z,filePath:j,input:I,ideName:F,symlinkTarget:f,rejectFeedback:v,acceptFeedback:T,setFocusedOption:V,onInputModeToggle:E,focusedOption:S,yesInputMode:R,noInputMode:x});let c=f!=null&&CmY(Z8(),f).startsWith(".."),K6=f?PZ.default.createElement(u,{paddingX:1,marginBottom:1},PZ.default.createElement(k,{color:"warning"},c?`This will modify ${f} (outside working directory) via a symlink`:`Symlink target: ${f}`)):null;return PZ.default.createElement(PZ.default.Fragment,null,PZ.default.createElement(HY,{title:Y,subtitle:$,innerPaddingX:0,workerBadge:X},K6,O,PZ.default.createElement(u,{flexDirection:"column",paddingX:1},typeof A==="string"?PZ.default.createElement(k,null,A):A,PZ.default.createElement(H1,{options:Z,inlineDescriptions:!0,onChange:(t)=>{let q6=Z.find((e)=>e.value===t);if(q6){if(q6.option.type==="reject"){let e=v.trim();U(q6.option,e||void 0);return}if(q6.option.type==="accept-once"){let e=T.trim();U(q6.option,e||void 0);return}U(q6.option)}},onCancel:()=>U({type:"reject"}),onFocus:(t)=>V(t),onInputModeToggle:E}))),PZ.default.createElement(u,{paddingX:1,marginTop:1},PZ.default.createElement(k,{dimColor:!0},"Esc to cancel",(S==="yes"&&!R||S==="no"&&!x)&&" · Tab to amend")))}var PZ;var XC6=y(()=>{LdK();s6();sO6();I7();e7();dz();d_();hdK();uJ6();GD();mdK();PZ=O6(D6(),1)});import{basename as bmY,relative as xmY}from"path";function pdK(q){let K=z6(9),_,z;if(K[0]!==q)({sedInfo:z,..._}=q),K[0]=q,K[1]=_,K[2]=z;else _=K[1],z=K[2];let{filePath:Y}=z,$;if(K[3]!==Y)$=(async()=>{let w=am6(Y);return{oldContent:(await X8().readFile(Y,{encoding:w})).replaceAll(`\r |
| 8012 | `,` |
| 8013 | `),fileExists:!0}})().catch(ImY),K[3]=Y,K[4]=$;else $=K[4];let A=$,O;if(K[5]!==A||K[6]!==_||K[7]!==z)O=qx.default.createElement(qx.Suspense,{fallback:null},qx.default.createElement(umY,{sedInfo:z,contentPromise:A,..._})),K[5]=A,K[6]=_,K[7]=z,K[8]=O;else O=K[8];return O}function ImY(q){if(!_7(q))throw q;return{oldContent:"",fileExists:!1}}function umY(q){let K=z6(35),_,z,Y;if(K[0]!==q)({sedInfo:Y,contentPromise:_,...z}=q),K[0]=q,K[1]=_,K[2]=z,K[3]=Y;else _=K[1],z=K[2],Y=K[3];let{filePath:$}=Y,{oldContent:A,fileExists:O}=qx.use(_),w;if(K[4]!==A||K[5]!==Y)w=yzK(A,Y),K[4]=A,K[5]=Y,K[6]=w;else w=K[6];let j=w,H;q:{if(A===j){let x;if(K[7]===Symbol.for("react.memo_cache_sentinel"))x=[],K[7]=x;else x=K[7];H=x;break q}let R;if(K[8]!==j||K[9]!==A)R=[{old_string:A,new_string:j,replace_all:!1}],K[8]=j,K[9]=A,K[10]=R;else R=K[10];H=R}let J=H,M;q:{if(!O){M="File does not exist";break q}M="Pattern did not match any content"}let X=M,P;if(K[11]!==$||K[12]!==j)P=(R)=>{return{...R4.inputSchema.parse(R),_simulatedSedEdit:{filePath:$,newContent:j}}},K[11]=$,K[12]=j,K[13]=P;else P=K[13];let W=P,D=z.toolUseConfirm,f=z.toolUseContext,G=z.onDone,Z=z.onReject,T;if(K[14]!==$)T=xmY(Z8(),$),K[14]=$,K[15]=T;else T=K[15];let v;if(K[16]!==$)v=bmY($),K[16]=$,K[17]=v;else v=K[17];let V;if(K[18]!==v)V=qx.default.createElement(k,null,"Do you want to make this edit to"," ",qx.default.createElement(k,{bold:!0},v),"?"),K[18]=v,K[19]=V;else V=K[19];let E;if(K[20]!==J||K[21]!==$||K[22]!==X)E=J.length>0?qx.default.createElement(Td8,{file_path:$,edits:J}):qx.default.createElement(k,{dimColor:!0},X),K[20]=J,K[21]=$,K[22]=X,K[23]=E;else E=K[23];let S;if(K[24]!==$||K[25]!==W||K[26]!==z.onDone||K[27]!==z.onReject||K[28]!==z.toolUseConfirm||K[29]!==z.toolUseContext||K[30]!==z.workerBadge||K[31]!==V||K[32]!==E||K[33]!==T)S=qx.default.createElement(ud,{toolUseConfirm:D,toolUseContext:f,onDone:G,onReject:Z,title:"Edit file",subtitle:T,question:V,content:E,path:$,completionType:"str_replace_single",parseInput:W,workerBadge:z.workerBadge}),K[24]=$,K[25]=W,K[26]=z.onDone,K[27]=z.onReject,K[28]=z.toolUseConfirm,K[29]=z.toolUseContext,K[30]=z.workerBadge,K[31]=V,K[32]=E,K[33]=T,K[34]=S;else S=K[34];return S}var qx;var BdK=y(()=>{q8();Qz7();I7();y8();ZE();e7();s6();p0();g68();XC6();qx=O6(D6(),1)});function Ny(q,{assistantMessage:{message:{id:K}}},_,z){MZ({completion_type:q,event:_,metadata:{language_name:"none",message_id:K,platform:KD6(),hasFeedback:z??!1}})}var X48=y(()=>{y_();JC6()});function vd8({toolUseConfirm:q,onDone:K,onReject:_,explainerVisible:z}){let Y=s7(),[$,A]=a56.useState(""),[O,w]=a56.useState(""),[j,H]=a56.useState(!1),[J,M]=a56.useState(!1),[X,P]=a56.useState("yes"),[W,D]=a56.useState(!1),[f,G]=a56.useState(!1);function Z(V){q.onUserInteraction();let E={toolName:wK(q.tool.name),isMcp:q.tool.isMcp??!1};if(V==="yes")if(j)H(!1),d("tengu_accept_feedback_mode_collapsed",E);else H(!0),D(!0),d("tengu_accept_feedback_mode_entered",E);else if(V==="no")if(J)M(!1),d("tengu_reject_feedback_mode_collapsed",E);else M(!0),G(!0),d("tengu_reject_feedback_mode_entered",E)}function T(V){let E=V?.trim(),S=!!E;if(!S)d("tengu_permission_request_escape",{explainer_visible:z}),Y((R)=>({...R,attribution:{...R.attribution,escapeCount:R.attribution.escapeCount+1}}));if(Ny("tool_use_single",q,"reject",S),E)q.onReject(E);else q.onReject();_(),K()}function v(V){if(V!==X)q.onUserInteraction();if(V!=="yes"&&j&&!O.trim())H(!1);if(V!=="no"&&J&&!$.trim())M(!1);P(V)}return{yesInputMode:j,noInputMode:J,yesFeedbackModeEntered:W,noFeedbackModeEntered:f,acceptFeedback:O,rejectFeedback:$,setAcceptFeedback:w,setRejectFeedback:A,focusedOption:X,handleInputModeToggle:Z,handleReject:T,handleFocus:v}}var a56;var lz7=y(()=>{k8();kj();C7();X48();a56=O6(D6(),1)});import{basename as iz7,sep as mJ6}from"path";function mmY(q){switch(q.length){case 0:return"";case 1:return Rw.default.createElement(k,{bold:!0},q[0]);case 2:return Rw.default.createElement(k,null,Rw.default.createElement(k,{bold:!0},q[0])," and ",Rw.default.createElement(k,{bold:!0},q[1]));default:return Rw.default.createElement(k,null,Rw.default.createElement(k,{bold:!0},q.slice(0,-1).join(", ")),", and"," ",Rw.default.createElement(k,{bold:!0},q.slice(-1)[0]))}}function nz7(q){if(q.join(", ").length>50)return"similar";return mmY(q)}function P48(q){if(q.length===0)return"";let K=q.map((_)=>iz7(_)||_);if(K.length===1)return Rw.default.createElement(k,null,Rw.default.createElement(k,{bold:!0},K[0]),mJ6);if(K.length===2)return Rw.default.createElement(k,null,Rw.default.createElement(k,{bold:!0},K[0]),mJ6," and ",Rw.default.createElement(k,{bold:!0},K[1]),mJ6);return Rw.default.createElement(k,null,Rw.default.createElement(k,{bold:!0},K[0]),mJ6,", ",Rw.default.createElement(k,{bold:!0},K[1]),mJ6," and ",q.length-2," more")}function kd8(q,K,_){let z=q.filter((M)=>M.type==="addRules").flatMap((M)=>M.rules||[]),Y=z.filter((M)=>M.toolName==="Read"),$=z.filter((M)=>M.toolName===K),A=q.filter((M)=>M.type==="addDirectories").flatMap((M)=>M.directories||[]),O=Y.map((M)=>M.ruleContent?.replace("/**","")||"").filter((M)=>M),w=[...new Set($.flatMap((M)=>{if(!M.ruleContent)return[];let X=Ho6(M.ruleContent)??M.ruleContent;return _?_(X):X}))],j=A.length>0,H=O.length>0,J=w.length>0;if(H&&!j&&!J){if(O.length===1){let M=O[0],X=iz7(M)||M;return Rw.default.createElement(k,null,"Yes, allow reading from ",Rw.default.createElement(k,{bold:!0},X),mJ6," from this project")}return Rw.default.createElement(k,null,"Yes, allow reading from ",P48(O)," from this project")}if(j&&!H&&!J){if(A.length===1){let M=A[0],X=iz7(M)||M;return Rw.default.createElement(k,null,"Yes, and always allow access to ",Rw.default.createElement(k,{bold:!0},X),mJ6," from this project")}return Rw.default.createElement(k,null,"Yes, and always allow access to ",P48(A)," from this project")}if(J&&!j&&!H)return Rw.default.createElement(k,null,"Yes, and don't ask again for ",nz7(w)," commands in"," ",Rw.default.createElement(k,{bold:!0},r1()));if((j||H)&&!J){let M=[...A,...O];if(j&&H)return Rw.default.createElement(k,null,"Yes, and always allow access to ",P48(M)," from this project")}if((j||H)&&J){let M=[...A,...O];if(M.length===1&&w.length===1)return Rw.default.createElement(k,null,"Yes, and allow access to ",P48(M)," and"," ",nz7(w)," commands");return Rw.default.createElement(k,null,"Yes, and allow ",P48(M)," access and"," ",nz7(w)," commands")}return null}var Rw;var rz7=y(()=>{v8();s6();br();Rw=O6(D6(),1)});function pmY(q){let{commandWithoutRedirections:K,redirections:_}=SL(q);return _.length>0?K:q}function gdK({suggestions:q=[],decisionReason:K,onRejectFeedbackChange:_,onAcceptFeedbackChange:z,onClassifierDescriptionChange:Y,classifierDescription:$,initialClassifierDescriptionEmpty:A=!1,existingAllowDescriptions:O=[],yesInputMode:w=!1,noInputMode:j=!1,editablePrefix:H,onEditablePrefixChange:J}){let M=[];if(w)M.push({type:"input",label:"Yes",value:"yes",placeholder:"and tell Claude what to do next",onChange:z,allowEmptySubmitToCancel:!0});else M.push({label:"Yes",value:"yes"});if(WU()){let X=q.some((W)=>W.type==="addDirectories"||W.type==="addRules"&&W.rules?.some((D)=>D.toolName!==_q));if(H!==void 0&&J&&!X&&q.length>0)M.push({type:"input",label:"Yes, and don’t ask again for",value:"yes-prefix-edited",placeholder:"command prefix (e.g., npm run:*)",initialValue:H,onChange:J,allowEmptySubmitToCancel:!0,showLabelWithValue:!0,labelValueSeparator:": ",resetCursorOnUpdate:!0});else if(q.length>0){let W=kd8(q,_q,pmY);if(W)M.push({label:W,value:"yes-apply-suggestions"})}let P=M.some((W)=>W.value==="yes-prefix-edited")}if(j)M.push({type:"input",label:"No",value:"no",placeholder:"and tell Claude what to do differently",onChange:_,allowEmptySubmitToCancel:!0});else M.push({label:"No",value:"no"});return M}var FdK=y(()=>{SG();iu();rz7()});function UdK(q){let K=z6(21),{toolUseConfirm:_,toolUseContext:z,onDone:Y,onReject:$,verbose:A,workerBadge:O}=q,w,j,H;if(K[0]!==_.input)({command:w,description:j}=R4.inputSchema.parse(_.input)),H=VL6(w),K[0]=_.input,K[1]=w,K[2]=j,K[3]=H;else w=K[1],j=K[2],H=K[3];let J=H;if(J){let X;if(K[4]!==Y||K[5]!==$||K[6]!==J||K[7]!==_||K[8]!==z||K[9]!==A||K[10]!==O)X=y9.default.createElement(pdK,{toolUseConfirm:_,toolUseContext:z,onDone:Y,onReject:$,verbose:A,workerBadge:O,sedInfo:J}),K[4]=Y,K[5]=$,K[6]=J,K[7]=_,K[8]=z,K[9]=A,K[10]=O,K[11]=X;else X=K[11];return X}let M;if(K[12]!==w||K[13]!==j||K[14]!==Y||K[15]!==$||K[16]!==_||K[17]!==z||K[18]!==A||K[19]!==O)M=y9.default.createElement(BmY,{toolUseConfirm:_,toolUseContext:z,onDone:Y,onReject:$,verbose:A,workerBadge:O,command:w,description:j}),K[12]=w,K[13]=j,K[14]=Y,K[15]=$,K[16]=_,K[17]=z,K[18]=A,K[19]=O,K[20]=M;else M=K[20];return M}function BmY({toolUseConfirm:q,toolUseContext:K,onDone:_,onReject:z,verbose:Y,workerBadge:$,command:A,description:O}){let[w]=Aq(),j=P8((o)=>o.toolPermissionContext),H=Zd8({toolName:q.tool.name,toolInput:q.input,toolDescription:q.description,messages:K.messages}),{yesInputMode:J,noInputMode:M,yesFeedbackModeEntered:X,noFeedbackModeEntered:P,acceptFeedback:W,rejectFeedback:D,setAcceptFeedback:f,setRejectFeedback:G,focusedOption:Z,handleInputModeToggle:T,handleReject:v,handleFocus:V}=vd8({toolUseConfirm:q,onDone:_,onReject:z,explainerVisible:H.visible}),[E,S]=y9.useState(!1),[R,x]=y9.useState(O||""),[I,B]=y9.useState(!O?.trim());y9.useEffect(()=>{if(!Jq6())return;let o=new AbortController;return jN4(A,O,o.signal).then((s)=>{if(s&&!o.signal.aborted)x(s),B(!1)}).catch(()=>{}),()=>o.abort()},[A,O]);let p=q.permissionResult.decisionReason?.type==="subcommandResults",[C,g]=y9.useState(()=>{if(p){let a=DU("suggestions"in q.permissionResult?q.permissionResult.suggestions:void 0).filter((n)=>n.toolName===R4.name&&n.ruleContent);return a.length===1?a[0].ruleContent:void 0}let o=Kp8(A);if(o)return`${o}:*`;let s=CPK(A);if(s)return`${s}:*`;return A}),F=y9.useRef(!1),U=y9.useCallback((o)=>{F.current=!0,g(o)},[]);y9.useEffect(()=>{if(p)return;let o=!1;return ZdK(A,(s)=>R4.isReadOnly({command:s})).then((s)=>{if(o||F.current)return;if(s.length>0)g(`${s[0]}:*`)}).catch(()=>{}),()=>{o=!0}},[A,p]);let[c]=y9.useState(!1),{destructiveWarning:K6,sandboxingEnabled:t,isSandboxed:q6}=y9.useMemo(()=>{let o=g8("tengu_destructive_command_warning",!1)?tQK(A):null,s=M7.isSandboxingEnabled(),a=s&&Gb(q.input);return{destructiveWarning:o,sandboxingEnabled:s,isSandboxed:a}},[A,q.input]),e=y9.useMemo(()=>({completion_type:"tool_use_single",language_name:"none"}),[]);tb(q,e);let i=y9.useMemo(()=>MN8(j),[j]),$6=y9.useMemo(()=>gdK({suggestions:q.permissionResult.behavior==="ask"?q.permissionResult.suggestions:void 0,decisionReason:q.permissionResult.decisionReason,onRejectFeedbackChange:G,onAcceptFeedbackChange:f,onClassifierDescriptionChange:x,classifierDescription:R,initialClassifierDescriptionEmpty:I,existingAllowDescriptions:i,yesInputMode:J,noInputMode:M,editablePrefix:C,onEditablePrefixChange:U}),[q,R,I,i,J,M,C,U]),M6=y9.useCallback(()=>{S((o)=>!o)},[]);P1("permission:toggleDebug",M6,{context:"Confirmation"});let j6=y9.useCallback(()=>{q.onDismissCheckmark?.()},[q]);P1("confirm:no",j6,{context:"Confirmation",isActive:!1});function G6(o){d("tengu_permission_request_option_selected",{option_index:{yes:1,"yes-apply-suggestions":2,"yes-prefix-edited":2,no:3}[o],explainer_visible:H.visible});let a=wK(q.tool.name);if(o==="yes-prefix-edited"){let n=(C??"").trim();if(Ny("tool_use_single",q,"accept"),!n)q.onAllow(q.input,[]);else{let l=[{type:"addRules",rules:[{toolName:R4.name,ruleContent:n}],behavior:"allow",destination:"localSettings"}];q.onAllow(q.input,l)}_();return}switch(o){case"yes":{let n=W.trim();Ny("tool_use_single",q,"accept"),d("tengu_accept_submitted",{toolName:a,isMcp:q.tool.isMcp??!1,has_instructions:!!n,instructions_length:n.length,entered_feedback_mode:X}),q.onAllow(q.input,[],n||void 0),_();break}case"yes-apply-suggestions":{Ny("tool_use_single",q,"accept");let n="suggestions"in q.permissionResult?q.permissionResult.suggestions||[]:[];q.onAllow(q.input,n),_();break}case"no":{let n=D.trim();d("tengu_reject_submitted",{toolName:a,isMcp:q.tool.isMcp??!1,has_instructions:!!n,instructions_length:n.length,entered_feedback_mode:P}),v(n||void 0);break}}}return y9.default.createElement(HY,{workerBadge:$,title:t&&!q6?"Bash command (unsandboxed)":"Bash command",subtitle:void 0},y9.default.createElement(u,{flexDirection:"column",paddingX:2,paddingY:1},y9.default.createElement(k,{dimColor:H.visible},R4.renderToolUseMessage({command:A,description:O},{theme:w,verbose:!0})),!H.visible&&y9.default.createElement(k,{dimColor:!0},q.description),y9.default.createElement(Gd8,{visible:H.visible,promise:H.promise})),E?y9.default.createElement(y9.default.Fragment,null,y9.default.createElement(fd8,{permissionResult:q.permissionResult,toolName:"Bash"}),K.options.debug&&y9.default.createElement(u,{justifyContent:"flex-end",marginTop:1},y9.default.createElement(k,{dimColor:!0},"Ctrl-D to hide debug info"))):y9.default.createElement(y9.default.Fragment,null,y9.default.createElement(u,{flexDirection:"column"},y9.default.createElement(Vy,{permissionResult:q.permissionResult,toolType:"command"}),K6&&y9.default.createElement(u,{marginBottom:1},y9.default.createElement(k,{color:"warning",dimColor:!1},K6)),y9.default.createElement(k,{dimColor:!1},"Do you want to proceed?"),y9.default.createElement(H1,{options:$6,isDisabled:!1,inlineDescriptions:!0,onChange:G6,onCancel:()=>v(),onFocus:V,onInputModeToggle:T})),y9.default.createElement(u,{justifyContent:"space-between",marginTop:1},y9.default.createElement(k,{dimColor:!0},"Esc to cancel",(Z==="yes"&&!J||Z==="no"&&!M)&&" · Tab to amend",H.enabled&&` · ctrl+e to ${H.visible?"hide":"explain"}`),K.options.debug&&y9.default.createElement(k,{dimColor:!0},"Ctrl+d to show debug info"))))}var y9;var QdK=y(()=>{q8();s6();Oq();o1();k8();kj();C7();p0();DN();eQK();g68();IL6();GdK();LH();K$();p3();$e6();RC8();uJ6();gz7();GD();Uz7();i56();BdK();lz7();X48();FdK();y9=O6(D6(),1)});function ddK(q){let K=z6(18),{toolUseConfirm:_,onDone:z,onReject:Y,workerBadge:$}=q,A=P8(gmY),O;if(K[0]!==z||K[1]!==Y||K[2]!==A||K[3]!==_)O=function(G){if(G==="yes")d("tengu_plan_enter",{interviewPhaseEnabled:l2(),entryMethod:"tool"}),Tc(A,"plan"),z(),_.onAllow({},[{type:"setMode",mode:"plan",destination:"session"}]);else z(),Y(),_.onReject()},K[0]=z,K[1]=Y,K[2]=A,K[3]=_,K[4]=O;else O=K[4];let w=O,j;if(K[5]===Symbol.for("react.memo_cache_sentinel"))j=yy.default.createElement(k,null,"Claude wants to enter plan mode to explore and design an implementation approach."),K[5]=j;else j=K[5];let H;if(K[6]===Symbol.for("react.memo_cache_sentinel"))H=yy.default.createElement(u,{marginTop:1,flexDirection:"column"},yy.default.createElement(k,{dimColor:!0},"In plan mode, Claude will:"),yy.default.createElement(k,{dimColor:!0}," · Explore the codebase thoroughly"),yy.default.createElement(k,{dimColor:!0}," · Identify existing patterns"),yy.default.createElement(k,{dimColor:!0}," · Design an implementation strategy"),yy.default.createElement(k,{dimColor:!0}," · Present a plan for your approval")),K[6]=H;else H=K[6];let J;if(K[7]===Symbol.for("react.memo_cache_sentinel"))J=yy.default.createElement(u,{marginTop:1},yy.default.createElement(k,{dimColor:!0},"No code changes will be made until you approve the plan.")),K[7]=J;else J=K[7];let M;if(K[8]===Symbol.for("react.memo_cache_sentinel"))M={label:"Yes, enter plan mode",value:"yes"},K[8]=M;else M=K[8];let X;if(K[9]===Symbol.for("react.memo_cache_sentinel"))X=[M,{label:"No, start implementing now",value:"no"}],K[9]=X;else X=K[9];let P;if(K[10]!==w)P=()=>w("no"),K[10]=w,K[11]=P;else P=K[11];let W;if(K[12]!==w||K[13]!==P)W=yy.default.createElement(u,{flexDirection:"column",marginTop:1,paddingX:1},j,H,J,yy.default.createElement(u,{marginTop:1},yy.default.createElement(H1,{options:X,onChange:w,onCancel:P}))),K[12]=w,K[13]=P,K[14]=W;else W=K[14];let D;if(K[15]!==W||K[16]!==$)D=yy.default.createElement(HY,{color:"planMode",title:"Enter plan mode?",workerBadge:$},W),K[15]=W,K[16]=$,K[17]=D;else D=K[17];return D}function gmY(q){return q.toolPermissionContext.mode}var yy;var cdK=y(()=>{q8();v8();s6();k8();C7();pK6();d_();GD();yy=O6(D6(),1)});function Vd8(q,K){let _=[{type:"setMode",mode:KI(q),destination:"session"}];if(Jq6()&&K&&K.length>0)_.push({type:"addRules",rules:K.map((z)=>({toolName:z.tool,ruleContent:AN4(z.prompt)})),behavior:"allow",destination:"session"});return _}function FmY(q,K,_){if(ey()||Z7()?.cleanupPeriodDays===0)return;if(!_&&k0(N8()))return;xF8([U8({content:q.slice(0,1000)})],new AbortController().signal).then(async(z)=>{if(!z||k0(N8()))return;let Y=N8(),$=Y$();await $s(Y,z,$,"auto"),await o78(Y,z,$,"auto"),K((A)=>{if(A.standaloneAgentContext?.name===z)return A;return{...A,standaloneAgentContext:{...A.standaloneAgentContext,name:z}}})}).catch(H6)}function ldK({toolUseConfirm:q,onDone:K,onReject:_,workerBadge:z,setStickyFooter:Y}){let $=P8((a)=>a.toolPermissionContext),A=s7(),O=jz(),{addNotification:w}=PK(),[j,H]=DK.useState(""),[J,M]=DK.useState({}),X=DK.useRef(0),P=P8((a)=>a.settings.showClearContextOnPlanAccept)??!1,W=P8((a)=>a.ultraplanSessionUrl),D=P8((a)=>a.ultraplanLaunching),f=!1,G=q.assistantMessage.message.usage,{mode:Z,isAutoModeAvailable:T,isBypassPermissionsModeAvailable:v}=$,V=DK.useMemo(()=>UmY({showClearContext:P,showUltraplan:!1,usedPercent:P?QmY(G,Z):null,isAutoModeAvailable:T,isBypassPermissionsModeAvailable:v,onFeedbackChange:H}),[P,!1,G,Z,T,v]);function E(a,n,l,A6,J6){let X6=X.current++,f6={id:X6,type:"image",content:a,mediaType:n||"image/png",filename:l||"Pasted image",dimensions:A6};SN6(f6),pw6(f6),M((N6)=>({...N6,[X6]:f6}))}let S=DK.useCallback((a)=>{M((n)=>{let l={...n};return delete l[a],l})},[]),R=Object.values(J).filter((a)=>a.type==="image"),x=R.length>0,I=q.tool.name===kX,B=I?void 0:q.input.plan,p=I?nP():void 0,C=q.input.allowedPrompts,g=B??mX(),F=!g||g.trim()==="",[U]=DK.useState(()=>ym8()??void 0),[c,K6]=DK.useState(()=>{if(B)return B;return mX()??"No plan found. Please write your plan to the plan file first."}),[t,q6]=DK.useState(!1),[e,i]=DK.useState(!1);DK.useEffect(()=>{if(t){let a=setTimeout(q6,5000,!1);return()=>clearTimeout(a)}},[t]);let $6=(a)=>{if(a.ctrl&&a.key==="g"){a.preventDefault(),d("tengu_plan_external_editor_used",{}),(async()=>{if(I&&p){let n=await WR(p);if(n.error)w({key:"external-editor-error",text:n.error,color:"warning",priority:"high"});if(n.content!==null){if(n.content!==c)i(!0);K6(n.content),q6(!0)}}else{let n=await Wy(c);if(n.error)w({key:"external-editor-error",text:n.error,color:"warning",priority:"high"});if(n.content!==null&&n.content!==c)K6(n.content),q6(!0)}})();return}if(a.shift&&a.key==="tab"){a.preventDefault(),M6(P?"yes-accept-edits":"yes-accept-edits-keep-context");return}};async function M6(a){let n=j.trim(),l=n||void 0;if(a==="ultraplan"){d("tengu_plan_exit",{planLengthChars:c.length,outcome:"ultraplan",interviewPhaseEnabled:l2(),planStructureVariant:U}),K(),_(),q.onReject("Plan being refined via Ultraplan — please wait for the result."),c57({blurb:"",seedPlan:c,getAppState:O.getState,setAppState:O.setState,signal:new AbortController().signal}).then((y6)=>IO({value:y6,mode:"task-notification"})).catch(H6);return}let A6=I&&!e?{}:{plan:c};{let y6=(a==="yes-resume-auto-mode"||a==="yes-auto-clear-context")&&Xy(),T6=PC6?.isAutoModeActive()??!1;if(a!=="no"&&!y6&&T6)PC6?.setAutoModeActive(!1),VZ(!0),A((n6)=>({...n6,toolPermissionContext:{...da(n6.toolPermissionContext),prePlanMode:void 0}}))}let X6=a==="yes-accept-edits-keep-context"||a==="yes-default-keep-context"||a==="yes-resume-auto-mode";if(a!=="no")FmY(c,A,!X6);if(a!=="no"&&!X6){let y6="default";if(a==="yes-bypass-permissions")y6="bypassPermissions";else if(a==="yes-accept-edits")y6="acceptEdits";else if(a==="yes-auto-clear-context"&&Xy())y6="auto",PC6?.setAutoModeActive(!0);d("tengu_plan_exit",{planLengthChars:c.length,outcome:a,clearContext:!0,interviewPhaseEnabled:l2(),planStructureVariant:U,hasFeedback:!!l});let T6="",o6=` |
no test coverage detected