| 3035 | `),K[10]=A,K[11]=Y,K[12]=X;else X=K[12];let P=$-12,W;if(K[13]!==_||K[14]!==X||K[15]!==P)W=H5.createElement(u,{flexDirection:"column"},H5.createElement(zy,{code:X,filePath:_,width:P})),K[13]=_,K[14]=X,K[15]=P,K[16]=W;else W=K[16];let D;if(K[17]!==O||K[18]!==w||K[19]!==Y)D=!Y&&w>0&&H5.createElement(k,{dimColor:!0},"… +",w," ",w===1?"line":"lines"," ",O>0&&H5.createElement(K2,null)),K[17]=O,K[18]=w,K[19]=Y,K[20]=D;else D=K[20];let f;if(K[21]!==M||K[22]!==W||K[23]!==D)f=H5.createElement(s8,null,H5.createElement(u,{flexDirection:"column"},M,W,D)),K[21]=M,K[22]=W,K[23]=D,K[24]=f;else f=K[24];return f}function r$K(q){if(q?.file_path?.startsWith(hA()))return"Updated plan";return"Write"}function o$K({type:q,content:K}){if(q!=="create")return!1;let _=0;for(let z=0;z<Cs1;z++){if(_=K.indexOf(bs1,_),_===-1)return!1;_++}return _<K.length}function xs1(q){if(!q?.file_path)return null;return _3(q.file_path)}function a$K(q,{verbose:K}){if(!q.file_path)return null;if(q.file_path.startsWith(hA()))return"";return H5.createElement(x0,{filePath:q.file_path},K?q.file_path:_3(q.file_path))}function s$K({file_path:q,content:K},{style:_,verbose:z}){return H5.createElement(iaz,{filePath:q,content:K,style:_,verbose:z})}function iaz(q){let K=z6(20),{filePath:_,content:z,style:Y,verbose:$}=q,A;if(K[0]!==z||K[1]!==_)A=()=>oaz(_,z),K[0]=z,K[1]=_,K[2]=A;else A=K[2];let[O]=rL6.useState(A),w;if(K[3]!==z)w=z.split(` |
| 3036 | `)[0]??null,K[3]=z,K[4]=w;else w=K[4];let j=w,H;if(K[5]!==z||K[6]!==_||K[7]!==j||K[8]!==$)H=H5.createElement(yK6,{file_path:_,operation:"write",content:z,firstLine:j,verbose:$}),K[5]=z,K[6]=_,K[7]=j,K[8]=$,K[9]=H;else H=K[9];let J=H,M;if(K[10]!==J||K[11]!==O||K[12]!==_||K[13]!==j||K[14]!==Y||K[15]!==$)M=H5.createElement(raz,{promise:O,filePath:_,firstLine:j,createFallback:J,style:Y,verbose:$}),K[10]=J,K[11]=O,K[12]=_,K[13]=j,K[14]=Y,K[15]=$,K[16]=M;else M=K[16];let X;if(K[17]!==J||K[18]!==M)X=H5.createElement(rL6.Suspense,{fallback:J},M),K[17]=J,K[18]=M,K[19]=X;else X=K[19];return X}function raz(q){let K=z6(8),{promise:_,filePath:z,firstLine:Y,createFallback:$,style:A,verbose:O}=q,w=rL6.use(_);if(w.type==="create")return $;if(w.type==="error"){let H;if(K[0]===Symbol.for("react.memo_cache_sentinel"))H=H5.createElement(s8,null,H5.createElement(k,null,"(No changes)")),K[0]=H;else H=K[0];return H}let j;if(K[1]!==w.oldContent||K[2]!==w.patch||K[3]!==z||K[4]!==Y||K[5]!==A||K[6]!==O)j=H5.createElement(yK6,{file_path:z,operation:"update",patch:w.patch,firstLine:Y,fileContent:w.oldContent,style:A,verbose:O}),K[1]=w.oldContent,K[2]=w.patch,K[3]=z,K[4]=Y,K[5]=A,K[6]=O,K[7]=j;else j=K[7];return j}async function oaz(q,K){try{let _=caz(q)?q:laz(Z8(),q),z=await q88(_);if(z===null)return{type:"create"};let Y;try{Y=await fu8(z)}finally{await z.close()}if(Y===null)return{type:"create"};return{type:"update",patch:_y({filePath:q,fileContents:Y,edits:[{old_string:Y,new_string:K,replace_all:!1}]}),oldContent:Y}}catch(_){return H6(_),{type:"error"}}}function t$K(q,{verbose:K}){if(!K&&typeof q==="string"&&o4(q,"tool_use_error"))return H5.createElement(s8,null,H5.createElement(k,{color:"error"},"Error writing file"));return H5.createElement(Y2,{result:q,verbose:K})}function e$K({filePath:q,content:K,structuredPatch:_,type:z,originalFile:Y},$,{style:A,verbose:O}){switch(z){case"create":{if(q.startsWith(hA())&&!O){if(A!=="condensed")return H5.createElement(s8,null,H5.createElement(k,{dimColor:!0},"/plan to preview"))}else if(A==="condensed"&&!O){let j=i$K(K);return H5.createElement(k,null,"Wrote ",H5.createElement(k,{bold:!0},j)," lines to"," ",H5.createElement(k,{bold:!0},n$K(Z8(),q)))}return H5.createElement(naz,{filePath:q,content:K,verbose:O})}case"update":{let w=q.startsWith(hA());return H5.createElement(Pu8,{filePath:q,structuredPatch:_,firstLine:K.split(` |
| 3038 | `;var qAK=y(()=>{q8();gK();i1();rv();bN();Ts1();Gs1();YK6();gj6();t4();s6();I7();BQ();bK();E8();SJ();Zu8();H5=O6(D6(),1),rL6=O6(D6(),1)});import{dirname as aaz,sep as saz}from"path";var taz,eaz,QX;var ka=y(()=>{k8();x7();o1();Pj6();OL6();uQ();VV6();Ga();Bq();I7();_8();BQ();m8();y8();bK();oN();zu8();ZE();e7();Au8();E8();dz();Tz();br();wu8();E2();qAK();taz=B6(()=>L.strictObject({file_path:L.string().describe("The absolute path to the file to write (must be absolute, not relative)"),content:L.string().describe("The content to write to the file")})),eaz=B6(()=>L.object({type:L.enum(["create","update"]).describe("Whether a new file was created or an existing file was updated"),filePath:L.string().describe("The path to the file that was written"),content:L.string().describe("The content that was written to the file"),structuredPatch:L.array(Js1()).describe("Diff patch showing the changes"),originalFile:L.string().nullable().describe("The original file content before the write (null for new files)"),gitDiff:Ms1().optional()})),QX=sq({name:tK,searchHint:"create or overwrite files",maxResultSizeChars:1e5,strict:!0,async description(){return"Write a file to the local filesystem."},userFacingName:r$K,getToolUseSummary:xs1,getActivityDescription(q){let K=xs1(q);return K?`Writing ${K}`:"Writing file"},async prompt(){return Voq()},renderToolUseMessage:a$K,isResultTruncated:o$K,get inputSchema(){return taz()},get outputSchema(){return eaz()},toAutoClassifierInput(q){return`${q.file_path}: ${q.content}`},getPath(q){return q.file_path},backfillObservableInput(q){if(typeof q.file_path==="string")q.file_path=lq(q.file_path)},async preparePermissionMatcher({file_path:q}){return(K)=>lv(K,q)},async checkPermissions(q,K){let _=K.getAppState();return Qj6(QX,q,_.toolPermissionContext)},renderToolUseRejectedMessage:s$K,renderToolUseErrorMessage:t$K,renderToolResultMessage:e$K,extractSearchText(){return""},async validateInput({file_path:q,content:K},_){let z=lq(q),Y=$I8(z,K);if(Y)return{result:!1,message:Y,errorCode:0};let $=_.getAppState();if(VH(z,$.toolPermissionContext,"edit","deny")!==null)return{result:!1,message:"File is in a directory that is denied by your permission settings.",errorCode:1};if(z.startsWith("\\\\")||z.startsWith("//"))return{result:!0};let O=X8(),w;try{w=(await O.stat(z)).mtimeMs}catch(J){if(_7(J))return{result:!0};throw J}let j=_.readFileState.get(z);if(!j||j.isPartialView)return{result:!1,message:"File has not been read yet. Read it first before writing to it.",errorCode:2};if(Math.floor(w)>j.timestamp)return{result:!1,message:"File has been modified since read, either by the user or by a linter. Read it again before attempting to write it.",errorCode:3};return{result:!0}},async call({file_path:q,content:K},{readFileState:_,updateFileHistoryState:z,dynamicSkillDirTriggers:Y},$,A){let O=lq(q),w=aaz(O),j=Z8(),H=await gL6([O],j);if(H.length>0){for(let f of H)Y?.add(f);FL6(H).catch(()=>{})}if(UL6([O],j),await Ka.beforeFileEdited(O),await X8().mkdir(w),e$())await OK6(z,O,A.uuid);let J;try{J=vB(O)}catch(f){if(_7(f))J=null;else throw f}if(J!==null){let f=ik(O),G=_.get(O);if(!G||f>G.timestamp){if(!(G&&G.offset===void 0&&G.limit===void 0)||J.content!==G.content)throw Error(df8)}}let M=J?.encoding??"utf8",X=J?.content??null;me(O,K,M,"LF");let P=Ma();if(P)Qx8(`file://${O}`),P.changeFile(O,K).catch((f)=>{N(`LSP: Failed to notify server of file change for ${O}: ${f.message}`),H6(f)}),P.saveFile(O).catch((f)=>{N(`LSP: Failed to notify server of file save for ${O}: ${f.message}`),H6(f)});if(Mq6(O,X,K),_.set(O,{content:K,timestamp:ik(O),offset:void 0,limit:void 0}),O.endsWith(`${saz}CLAUDE.md`))d("tengu_write_claudemd",{});let W;if(i6(process.env.CLAUDE_CODE_REMOTE)&&g8("tengu_quartz_lantern",!1)){let f=Date.now(),G=await $u8(O);if(G)W=G;d("tengu_tool_use_diff_computed",{isWriteTool:!0,durationMs:Date.now()-f,hasDiff:!!G})}if(X){let f=_y({filePath:q,fileContents:X,edits:[{old_string:X,new_string:K,replace_all:!1}]}),G={type:"update",filePath:q,content:K,structuredPatch:f,originalFile:X,...W&&{gitDiff:W}};return t68(f),em({operation:"write",tool:"FileWriteTool",filePath:O,type:"update"}),{data:G}}let D={type:"create",filePath:q,content:K,structuredPatch:[],originalFile:null,...W&&{gitDiff:W}};return t68([],K),em({operation:"write",tool:"FileWriteTool",filePath:O,type:"create"}),{data:D}},mapToolResultToToolResultBlockParam({filePath:q,type:K},_){switch(K){case"create":return{tool_use_id:_,type:"tool_result",content:`File created successfully at: ${q}`};case"update":return{tool_use_id:_,type:"tool_result",content:`The file ${q} has been updated successfully.`}}}})});import{dirname as qsz,isAbsolute as Ksz,join as _sz,normalize as _AK,relative as zsz,sep as vu8}from"path";async function cj6(q){let K=_AK(_sz(GX(),"cache"));if(q&&!$sz(q,K))return[];if(dj6!==null)return dj6;try{return dj6=(await LF(["--files","--hidden","--no-ignore","--max-depth","4","--glob",Ysz],K,new AbortController().signal)).map((z)=>{let Y=qsz(z);return`!**/${(Ksz(Y)?zsz(K,Y):Y).replace(/\\/g,"/")}/**`}),dj6}catch{return dj6=[],dj6}}function zAK(){dj6=null}function $sz(q,K){let _=KAK(q),z=KAK(K);return _===z||_===vu8||z===vu8||_.startsWith(z+vu8)||z.startsWith(_+vu8)}function KAK(q){let K=_AK(q);return process.platform==="win32"?K.toLowerCase():K}var Ysz=".orphaned_at",dj6=null;var z88=y(()=>{KC();aV()});import{basename as Asz,dirname as Osz,isAbsolute as YAK,join as wsz,sep as $AK}from"path";function jsz(q){let K=/[*?[{]/,_=q.match(K);if(!_||_.index===void 0){let O=Osz(q),w=Asz(q);return{baseDir:O,relativePattern:w}}let z=q.slice(0,_.index),Y=Math.max(z.lastIndexOf("/"),z.lastIndexOf($AK));if(Y===-1)return{baseDir:"",relativePattern:q};let $=z.slice(0,Y),A=q.slice(Y+1);if($===""&&Y===0)$="/";if(Z1()==="windows"&&/^[A-Za-z]:$/.test($))$=$+$AK;return{baseDir:$,relativePattern:A}}async function AAK(q,K,{limit:_,offset:z},Y,$){let A=K,O=q;if(YAK(q)){let{baseDir:D,relativePattern:f}=jsz(q);if(D)A=D,O=f}let w=oL6(aL6($),A),j=i6(process.env.CLAUDE_CODE_GLOB_NO_IGNORE||"true"),H=i6(process.env.CLAUDE_CODE_GLOB_HIDDEN||"true"),J=["--files","--glob",O,"--sort=modified",...j?["--no-ignore"]:[],...H?["--hidden"]:[]];for(let D of w)J.push("--glob",`!${D}`);for(let D of await cj6(A))J.push("--glob",D);let X=(await LF(J,A,Y)).map((D)=>YAK(D)?D:wsz(A,D)),P=X.length>z+_;return{files:X.slice(z,z+_),truncated:P}}var OAK=y(()=>{m8();Tz();vK();z88();KC()});function Is1(q){let K=z6(26),{count:_,countLabel:z,secondaryCount:Y,secondaryLabel:$,content:A,verbose:O}=q,w;if(K[0]!==_)w=CJ.default.createElement(k,{bold:!0},_," "),K[0]=_,K[1]=w;else w=K[1];let j;if(K[2]!==_||K[3]!==z)j=_===0||_>1?z:z.slice(0,-1),K[2]=_,K[3]=z,K[4]=j;else j=K[4];let H;if(K[5]!==w||K[6]!==j)H=CJ.default.createElement(k,null,"Found ",w,j),K[5]=w,K[6]=j,K[7]=H;else H=K[7];let J=H,M;if(K[8]!==Y||K[9]!==$)M=Y!==void 0&&$?CJ.default.createElement(k,null," ","across ",CJ.default.createElement(k,{bold:!0},Y," "),Y===0||Y>1?$:$.slice(0,-1)):null,K[8]=Y,K[9]=$,K[10]=M;else M=K[10];let X=M;if(O){let D;if(K[11]===Symbol.for("react.memo_cache_sentinel"))D=CJ.default.createElement(k,{dimColor:!0}," ⎿ "),K[11]=D;else D=K[11];let f;if(K[12]!==J||K[13]!==X)f=CJ.default.createElement(u,{flexDirection:"row"},CJ.default.createElement(k,null,D,J,X)),K[12]=J,K[13]=X,K[14]=f;else f=K[14];let G;if(K[15]!==A)G=CJ.default.createElement(u,{marginLeft:5},CJ.default.createElement(k,null,A)),K[15]=A,K[16]=G;else G=K[16];let Z;if(K[17]!==f||K[18]!==G)Z=CJ.default.createElement(u,{flexDirection:"column"},f,G),K[17]=f,K[18]=G,K[19]=Z;else Z=K[19];return Z}let P;if(K[20]!==_)P=_>0&&CJ.default.createElement(K2,null),K[20]=_,K[21]=P;else P=K[21];let W;if(K[22]!==J||K[23]!==X||K[24]!==P)W=CJ.default.createElement(s8,{height:1},CJ.default.createElement(k,null,J,X," ",P)),K[22]=J,K[23]=X,K[24]=P,K[25]=W;else W=K[25];return W}function wAK({pattern:q,path:K},{verbose:_}){if(!q)return null;let z=[`pattern: "${q}"`];if(K)z.push(`path: "${_?K:_3(K)}"`);return z.join(", ")}function jAK(q,{verbose:K}){if(!K&&typeof q==="string"&&o4(q,"tool_use_error")){if(o4(q,"tool_use_error")?.includes(uZ))return CJ.default.createElement(s8,null,CJ.default.createElement(k,{color:"error"},"File not found"));return CJ.default.createElement(s8,null,CJ.default.createElement(k,{color:"error"},"Error searching files"))}return CJ.default.createElement(Y2,{result:q,verbose:K})}function HAK({mode:q="files_with_matches",filenames:K,numFiles:_,content:z,numLines:Y,numMatches:$},A,{verbose:O}){if(q==="content")return CJ.default.createElement(Is1,{count:Y??0,countLabel:"lines",content:z,verbose:O});if(q==="count")return CJ.default.createElement(Is1,{count:$??0,countLabel:"matches",secondaryCount:_,secondaryLabel:"files",content:z,verbose:O});let w=K.map((j)=>j).join(` |
| 3039 | `);return CJ.default.createElement(Is1,{count:_,countLabel:"files",content:w,verbose:O})}function us1(q){if(!q?.pattern)return null;return d5(q.pattern,PN)}var CJ;var JAK=y(()=>{q8();rv();bN();gK();s6();bK();U7();i1();CJ=O6(D6(),1)});function ms1(q,K,_=0){if(K===0)return{items:q.slice(_),appliedLimit:void 0};let z=K??Msz,Y=q.slice(_,_+z),$=q.length-_>z;return{items:Y,appliedLimit:$?z:void 0}}function ps1(q,K){let _=[];if(q!==void 0)_.push(`limit: ${q}`);if(K)_.push(`offset: ${K}`);return _.join(", ")}var Hsz,Jsz,Msz=250,Xsz,$R;var lj6=y(()=>{x7();Bq();I7();y8();bK();e7();dz();Tz();br();z88();KC();TK6();B68();qM();JAK();Hsz=B6(()=>L.strictObject({pattern:L.string().describe("The regular expression pattern to search for in file contents"),path:L.string().optional().describe("File or directory to search in (rg PATH). Defaults to current working directory."),glob:L.string().optional().describe('Glob pattern to filter files (e.g. "*.js", "*.{ts,tsx}") - maps to rg --glob'),output_mode:L.enum(["content","files_with_matches","count"]).optional().describe('Output mode: "content" shows matching lines (supports -A/-B/-C context, -n line numbers, head_limit), "files_with_matches" shows file paths (supports head_limit), "count" shows match counts (supports head_limit). Defaults to "files_with_matches".'),"-B":eN(L.number().optional()).describe('Number of lines to show before each match (rg -B). Requires output_mode: "content", ignored otherwise.'),"-A":eN(L.number().optional()).describe('Number of lines to show after each match (rg -A). Requires output_mode: "content", ignored otherwise.'),"-C":eN(L.number().optional()).describe("Alias for context."),context:eN(L.number().optional()).describe('Number of lines to show before and after each match (rg -C). Requires output_mode: "content", ignored otherwise.'),"-n":BX(L.boolean().optional()).describe('Show line numbers in output (rg -n). Requires output_mode: "content", ignored otherwise. Defaults to true.'),"-i":BX(L.boolean().optional()).describe("Case insensitive search (rg -i)"),type:L.string().optional().describe("File type to search (rg --type). Common types: js, py, rust, go, java, etc. More efficient than include for standard file types."),head_limit:eN(L.number().optional()).describe('Limit output to first N lines/entries, equivalent to "| head -N". Works across all output modes: content (limits output lines), files_with_matches (limits file paths), count (limits count entries). Defaults to 250 when unspecified. Pass 0 for unlimited (use sparingly — large result sets waste context).'),offset:eN(L.number().optional()).describe('Skip first N lines/entries before applying head_limit, equivalent to "| tail -n +N | head -N". Works across all output modes. Defaults to 0.'),multiline:BX(L.boolean().optional()).describe("Enable multiline mode where . matches newlines and patterns can span lines (rg -U --multiline-dotall). Default: false.")})),Jsz=[".git",".svn",".hg",".bzr",".jj",".sl"];Xsz=B6(()=>L.object({mode:L.enum(["content","files_with_matches","count"]).optional(),numFiles:L.number(),filenames:L.array(L.string()),content:L.string().optional(),numLines:L.number().optional(),numMatches:L.number().optional(),appliedLimit:L.number().optional(),appliedOffset:L.number().optional()})),$R=sq({name:n3,searchHint:"search file contents with regex (ripgrep)",maxResultSizeChars:20000,strict:!0,async description(){return XN1()},userFacingName(){return"Search"},getToolUseSummary:us1,getActivityDescription(q){let K=us1(q);return K?`Searching for ${K}`:"Searching"},get inputSchema(){return Hsz()},get outputSchema(){return Xsz()},isConcurrencySafe(){return!0},isReadOnly(){return!0},toAutoClassifierInput(q){return q.path?`${q.pattern} in ${q.path}`:q.pattern},isSearchOrReadCommand(){return{isSearch:!0,isRead:!1}},getPath({path:q}){return q||Z8()},async preparePermissionMatcher({pattern:q}){return(K)=>lv(K,q)},async validateInput({path:q}){if(q){let K=X8(),_=lq(q);if(_.startsWith("\\\\")||_.startsWith("//"))return{result:!0};try{await K.stat(_)}catch(z){if(_7(z)){let Y=await pe(_),$=`Path does not exist: ${q}. ${uZ} ${Z8()}.`;if(Y)$+=` Did you mean ${Y}?`;return{result:!1,message:$,errorCode:1}}throw z}}return{result:!0}},async checkPermissions(q,K){let _=K.getAppState();return RK6($R,q,_.toolPermissionContext)},async prompt(){return XN1()},renderToolUseMessage:wAK,renderToolUseErrorMessage:jAK,renderToolResultMessage:HAK,extractSearchText({mode:q,content:K,filenames:_}){if(q==="content"&&K)return K;return _.join(` |