MCPcopy Index your code
hub / github.com/ChinaSiro/claude-code-sourcemap / Ur1

Function Ur1

package/cli.js:2423–2423  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

2421When in doubt, use this tool. Being proactive with task management demonstrates attentiveness and ensures you complete all requirements successfully.
2422`});var lUz,nUz,im;var q68=y(()=>{x7();v8();o1();Bq();gj();Fr1();Z$();$5K();lUz=B6(()=>L.strictObject({todos:rE6().describe("The updated todo list")})),nUz=B6(()=>L.object({oldTodos:rE6().describe("The todo list before the update"),newTodos:rE6().describe("The todo list after the update"),verificationNudgeNeeded:L.boolean().optional()})),im=sq({name:BC,searchHint:"manage the session task checklist",maxResultSizeChars:1e5,strict:!0,async description(){return Y5K},async prompt(){return z5K},get inputSchema(){return lUz()},get outputSchema(){return nUz()},userFacingName(){return""},shouldDefer:!0,isEnabled(){return!IH()},toAutoClassifierInput(q){return`${q.todos.length} items`},async checkPermissions(q){return{behavior:"allow",updatedInput:q}},renderToolUseMessage(){return null},async call({todos:q},K){let _=K.getAppState(),z=K.agentId??N8(),Y=_.todos[z]??[],A=q.every((w)=>w.status==="completed")?[]:q,O=!1;return K.setAppState((w)=>({...w,todos:{...w.todos,[z]:A}})),{data:{oldTodos:Y,newTodos:q,verificationNudgeNeeded:O}}},mapToolResultToToolResultBlockParam({verificationNudgeNeeded:q},K){let z=q?`
2423
2424NOTE: You just closed out 3+ tasks and none of them was a verification step. Before writing your final summary, spawn the verification agent (subagent_type="${vA8}"). You cannot self-assign PARTIAL by listing caveats in your summary — only the verifier issues a verdict.`:"";return{tool_use_id:K,type:"tool_result",content:"Todos have been modified successfully. Ensure that you continue to use the todo list to track your progress. Please proceed with the current tasks if applicable"+z}}})});async function rm(){let q=Kq()?.accessToken;if(!q)throw Error("Claude Code web sessions require authentication with a Claude.ai account. API key authentication is not sufficient. Please run /login to authenticate, or check your authentication status with /status.");let K=await mW();if(!K)throw Error("Unable to get organization UUID");let _=`${u7().BASE_API_URL}/v1/environment_providers`;try{let z={...UY(q),"x-organization-uuid":K},Y=await $1.get(_,{headers:z,timeout:15000});if(Y.status!==200)throw Error(`Failed to fetch environments: ${Y.status} ${Y.statusText}`);return Y.data.environments}catch(z){let Y=x1(z);throw H6(Y),Error(`Failed to fetch environments: ${Y.message}`)}}async function A5K(q){let K=Kq()?.accessToken;if(!K)throw Error("No access token available");let _=await mW();if(!_)throw Error("Unable to get organization UUID");let z=`${u7().BASE_API_URL}/v1/environment_providers/cloud/create`;return(await $1.post(z,{name:q,kind:"anthropic_cloud",description:"",config:{environment_type:"anthropic",cwd:"/home/user",init_script:null,environment:{},languages:[{name:"python",version:"3.11"},{name:"node",version:"20"}],network_config:{allowed_hosts:[],allow_default_hosts:!0}}},{headers:{...UY(K),"anthropic-beta":"ccr-byoc-2025-07-29","x-organization-uuid":_},timeout:15000})).data}var oE6=y(()=>{CK();H3();pW();G7();y8();E8();VM()});async function zx8(){if(!d7())return!1;return k$()}async function O5K(){return await rW6({ignoreUntracked:!0})}async function w5K(){try{return(await rm()).length>0}catch(q){return N(`checkHasRemoteEnvironment failed: ${d6(q)}`),!1}}function j5K(){return hY(Z8())!==null}async function K68(q,K,_){try{let z=Kq()?.accessToken;if(!z)return N("checkGithubAppInstalled: No access token found, assuming app not installed"),!1;let Y=await mW();if(!Y)return N("checkGithubAppInstalled: No org UUID found, assuming app not installed"),!1;let $=`${u7().BASE_API_URL}/api/oauth/organizations/${Y}/code/repos/${q}/${K}`,A={...UY(z),"x-organization-uuid":Y};N(`Checking GitHub app installation for ${q}/${K}`);let O=await $1.get($,{headers:A,timeout:15000,signal:_});if(O.status===200){if(O.data.status){let w=O.data.status.app_installed;return N(`GitHub app ${w?"is":"is not"} installed on ${q}/${K}`),w}return N(`GitHub app is not installed on ${q}/${K} (status is null)`),!1}return N(`checkGithubAppInstalled: Unexpected response status ${O.status}`),!1}catch(z){if($1.isAxiosError(z)){let Y=z.response?.status;if(Y&&Y>=400&&Y<500)return N(`checkGithubAppInstalled: Got ${Y} error, app likely not installed on ${q}/${K}`),!1}return N(`checkGithubAppInstalled error: ${d6(z)}`),!1}}async function iUz(){try{let q=Kq()?.accessToken;if(!q)return N("checkGithubTokenSynced: No access token found"),!1;let K=await mW();if(!K)return N("checkGithubTokenSynced: No org UUID found"),!1;let _=`${u7().BASE_API_URL}/api/oauth/organizations/${K}/sync/github/auth`,z={...UY(q),"x-organization-uuid":K};N("Checking if GitHub token is synced via web-setup");let Y=await $1.get(_,{headers:z,timeout:15000}),$=Y.status===200&&Y.data?.is_authenticated===!0;return N(`GitHub token synced: ${$} (status=${Y.status}, data=${JSON.stringify(Y.data)})`),$}catch(q){if($1.isAxiosError(q)){let K=q.response?.status;if(K&&K>=400&&K<500)return N(`checkGithubTokenSynced: Got ${K}, token not synced`),!1}return N(`checkGithubTokenSynced error: ${d6(q)}`),!1}}async function H5K(q,K){if(await K68(q,K))return{hasAccess:!0,method:"github-app"};if(g8("tengu_cobalt_lantern",!1)&&await iUz())return{hasAccess:!0,method:"token-sync"};return{hasAccess:!1,method:"none"}}var _68=y(()=>{CK();H3();pW();o1();G7();I7();_8();mZ();y8();E5();VM();oE6()});async function J5K({skipBundle:q=!1}={}){let K=[];if(!OO("allow_remote_sessions"))return K.push({type:"policy_blocked"}),K;let[_,z,Y]=await Promise.all([zx8(),w5K(),Dh()]);if(_)K.push({type:"not_logged_in"});if(!z)K.push({type:"no_remote_environment"});let $=!q&&(i6(process.env.CCR_FORCE_BUNDLE)||i6(process.env.CCR_ENABLE_BUNDLE)||await FV("tengu_ccr_bundle_seed_enabled"));if(!j5K())K.push({type:"not_in_git_repo"});else if($);else if(Y===null)K.push({type:"no_git_remote"});else if(Y.host==="github.com"){if(!await K68(Y.owner,Y.name))K.push({type:"github_app_not_installed"})}return K}var M5K=y(()=>{o1();ZD();mZ();m8();_68()});function X5K({onStashAndContinue:q,onCancel:K}){let[_,z]=HO.useState(null),Y=_!==null?[..._.tracked,..._.untracked]:[],[$,A]=HO.useState(!0),[O,w]=HO.useState(!1),[j,H]=HO.useState(null);HO.useEffect(()=>{(async()=>{try{let W=await e$8();z(W)}catch(W){let D=W instanceof Error?W.message:String(W);N(`Error getting changed files: ${D}`,{level:"error"}),H("Failed to get changed files")}finally{A(!1)}})()},[]);let J=async()=>{w(!0);try{if(N("Stashing changes before teleport..."),await I41("Teleport auto-stash"))N("Successfully stashed changes"),q();else H("Failed to stash changes")}catch(P){let W=P instanceof Error?P.message:String(P);N(`Error stashing changes: ${W}`,{level:"error"}),H("Failed to stash changes")}finally{w(!1)}},M=(P)=>{if(P==="stash")J();else K()};if($)return HO.default.createElement(u,{flexDirection:"column",padding:1},HO.default.createElement(u,{marginBottom:1},HO.default.createElement(IK,null),HO.default.createElement(k,null," Checking git status",t6.ellipsis)));if(j)return HO.default.createElement(u,{flexDirection:"column",padding:1},HO.default.createElement(k,{bold:!0,color:"error"},"Error: ",j),HO.default.createElement(u,{marginTop:1},HO.default.createElement(k,{dimColor:!0},"Press "),HO.default.createElement(k,{bold:!0},"Escape"),HO.default.createElement(k,{dimColor:!0}," to cancel")));let X=Y.length>8;return HO.default.createElement(R1,{title:"Working Directory Has Changes",onCancel:K},HO.default.createElement(k,null,"Teleport will switch git branches. The following changes were found:"),HO.default.createElement(u,{flexDirection:"column",paddingLeft:2},Y.length>0?X?HO.default.createElement(k,null,Y.length," files changed"):Y.map((P,W)=>HO.default.createElement(k,{key:W},P)):HO.default.createElement(k,{dimColor:!0},"No changes detected")),HO.default.createElement(k,null,"Would you like to stash these changes and continue with teleport?"),O?HO.default.createElement(u,null,HO.default.createElement(IK,null),HO.default.createElement(k,null," Stashing changes...")):HO.default.createElement(H1,{options:[{label:"Stash changes and continue",value:"stash"},{label:"Exit",value:"exit"}],onChange:M}))}var HO;var P5K=y(()=>{bq();s6();_8();E5();d_();e4();Q2();HO=O6(D6(),1)});function Yx8(q){let K=z6(18),{onComplete:_,errorsToIgnore:z}=q,Y=z===void 0?rUz:z,[$,A]=eL.useState(null),[O,w]=eL.useState(!1),j;if(K[0]!==Y||K[1]!==_)j=async()=>{let V=await Ur1(),E=new Set(Array.from(V).filter((S)=>!Y.has(S)));if(E.size===0){_();return}if(E.has("needsLogin"))A("needsLogin");else if(E.has("needsGitStash"))A("needsGitStash")},K[0]=Y,K[1]=_,K[2]=j;else j=K[2];let H=j,J,M;if(K[3]!==H)J=()=>{H()},M=[H],K[3]=H,K[4]=J,K[5]=M;else J=K[4],M=K[5];eL.useEffect(J,M);let X=oUz,P;if(K[6]!==H)P=()=>{w(!1),H()},K[6]=H,K[7]=P;else P=K[7];let W=P,D;if(K[8]===Symbol.for("react.memo_cache_sentinel"))D=()=>{w(!0)},K[8]=D;else D=K[8];let f=D,G;if(K[9]===Symbol.for("react.memo_cache_sentinel"))G=(V)=>{if(V==="login")f();else X()},K[9]=G;else G=K[9];let Z=G,T;if(K[10]!==H)T=()=>{H()},K[10]=H,K[11]=T;else T=K[11];let v=T;if(!$)return null;switch($){case"needsGitStash":{let V;if(K[12]!==v)V=eL.default.createElement(X5K,{onStashAndContinue:v,onCancel:X}),K[12]=v,K[13]=V;else V=K[13];return V}case"needsLogin":{if(O){let S;if(K[14]!==W)S=eL.default.createElement(_j6,{onDone:W,mode:"login",forceLoginMethod:"claudeai"}),K[14]=W,K[15]=S;else S=K[15];return S}let V;if(K[16]===Symbol.for("react.memo_cache_sentinel"))V=eL.default.createElement(u,{flexDirection:"column"},eL.default.createElement(k,{dimColor:!0},"Teleport requires a Claude.ai account."),eL.default.createElement(k,{dimColor:!0},"Your Claude Pro/Max subscription will be used by Claude Code.")),K[16]=V;else V=K[16];let E;if(K[17]===Symbol.for("react.memo_cache_sentinel"))E=eL.default.createElement(R1,{title:"Log in to Claude",onCancel:X},V,eL.default.createElement(H1,{options:[{label:"Login with Claude account",value:"login"},{label:"Exit",value:"exit"}],onChange:Z})),K[17]=E;else E=K[17];return E}}}function oUz(){eK(0)}async function Ur1(){let q=new Set,[K,_]=await Promise.all([zx8(),O5K()]);if(K)q.add("needsLogin");if(!_)q.add("needsGitStash");return q}var eL,rUz;var Qr1=y(()=>{q8();_68();RA();s6();Ie6();d_();e4();P5K();eL=O6(D6(),1),rUz=new Set});function sUz(q){let K=dr1.get(q);if(!K)K=TB(async(_,z,Y)=>await tUz(q,_,z,Y)),dr1.set(q,K);return K}async function tUz(q,K,_,z){for(let Y=1;Y<=$x8;Y++){try{let A=vj6.get(q),O={...z};if(A)O["Last-Uuid"]=A;let w=await $1.put(_,K,{headers:O,validateStatus:(j)=>j<500});if(w.status===200||w.status===201)return vj6.set(q,K.uuid),N(`Successfully persisted session log entry for session ${q}`),!0;if(w.status===409){let j=w.headers["x-last-uuid"];if(j===K.uuid)return vj6.set(q,K.uuid),N(`Session entry ${K.uuid} already present on server, recovering from stale state`),c8("info","session_persist_recovered_from_409"),!0;if(j)vj6.set(q,j),N(`Session 409: adopting server lastUuid=${j} from header, retrying entry ${K.uuid}`);else{let H=await cr1(q,_,z),J=eUz(H);if(J)vj6.set(q,J),N(`Session 409: re-fetched ${H.length} entries, adopting lastUuid=${J}, retrying entry ${K.uuid}`);else{let X=w.data.error?.message||"Concurrent modification detected";return H6(Error(`Session persistence conflict: UUID mismatch for session ${q}, entry ${K.uuid}. ${X}`)),c8("error","session_persist_fail_concurrent_modification"),!1}}c8("info","session_persist_409_adopt_server_uuid");continue}if(w.status===401)return N("Session token expired or invalid"),c8("error","session_persist_fail_bad_token"),!1;N(`Failed to persist session log: ${w.status} ${w.statusText}`),c8("error","session_persist_fail_status",{status:w.status,attempt:Y})}catch(A){let O=A;H6(Error(`Error persisting session log: ${O.message}`)),c8("error","session_persist_fail_status",{status:O.status,attempt:Y})}if(Y===$x8)return N(`Remote persistence failed after ${$x8} attempts`),c8("error","session_persist_error_retries_exhausted",{attempt:Y}),!1;let $=Math.min(aUz*Math.pow(2,Y-1),8000);N(`Remote persistence attempt ${Y}/${$x8} failed, retrying in ${$}ms…`),await R7($)}return!1}async function W5K(q,K,_){let z=WD();if(!z)return N("No session token available for session persistence"),c8("error","session_persist_fail_jwt_no_token"),!1;let Y={Authorization:`Bearer ${z}`,"Content-Type":"application/json"};return sUz(q)(K,_,Y)}async function D5K(q,K){let _=WD();if(!_)return N("No session token available for fetching session logs"),c8("error","session_get_fail_no_token"),null;let z={Authorization:`Bearer ${_}`},Y=await cr1(q,K,z);if(Y&&Y.length>0){let $=Y.at(-1);if($&&"uuid"in $&&$.uuid)vj6.set(q,$.uuid)}return Y}async function f5K(q,K,_){let z=`${u7().BASE_API_URL}/v1/session_ingress/session/${q}`;N(`[session-ingress] Fetching session logs from: ${z}`);let Y={...UY(K),"x-organization-uuid":_};return await cr1(q,z,Y)}async function Z5K(q,K,_){let z=`${u7().BASE_API_URL}/v1/code/sessions/${q}/teleport-events`,Y={...UY(K),"x-organization-uuid":_};N(`[teleport] Fetching events from: ${z}`);let $=[],A,O=0,w=100;while(O<w){let j={limit:1000};if(A!==void 0)j.cursor=A;let H;try{H=await $1.get(z,{headers:Y,params:j,timeout:20000,validateStatus:(X)=>X<500})}catch(X){return H6(Error(`Teleport events fetch failed: ${X.message}`)),c8("error","teleport_events_fetch_fail"),null}if(H.status===404)return N(`[teleport] Session ${q} not found (page ${O})`),c8("warn","teleport_events_not_found"),O===0?null:$;if(H.status===401)throw c8("error","teleport_events_bad_token"),Error("Your session has expired. Please run /login to sign in again.");if(H.status!==200)return H6(Error(`Teleport events returned ${H.status}: ${g6(H.data)}`)),c8("error","teleport_events_bad_status"),null;let{data:J,next_cursor:M}=H.data;if(!Array.isArray(J))return H6(Error(`Teleport events invalid response shape: ${g6(H.data)}`)),c8("error","teleport_events_invalid_shape"),null;for(let X of J)if(X.payload!==null)$.push(X.payload);if(O++,M==null)break;A=M}if(O>=w)H6(Error(`Teleport events hit page cap (${w}) for ${q}`)),c8("warn","teleport_events_page_cap");return N(`[teleport] Fetched ${$.length} events over ${O} page(s) for ${q}`),$}async function cr1(q,K,_){try{let z=await $1.get(K,{headers:_,timeout:20000,validateStatus:(Y)=>Y<500,params:i6(process.env.CLAUDE_AFTER_LAST_COMPACT)?{after_last_compact:!0}:void 0});if(z.status===200){let Y=z.data;if(!Y||typeof Y!=="object"||!Array.isArray(Y.loglines))return H6(Error(`Invalid session logs response format: ${g6(Y)}`)),c8("error","session_get_fail_invalid_response"),null;let $=Y.loglines;return N(`Fetched ${$.length} session logs for session ${q}`),$}if(z.status===404)return N(`No existing logs for session ${q}`),c8("warn","session_get_no_logs_for_session"),[];if(z.status===401)throw N("Auth token expired or invalid"),c8("error","session_get_fail_bad_token"),Error("Your session has expired. Please run /login to sign in again.");return N(`Failed to fetch session logs: ${z.status} ${z.statusText}`),c8("error","session_get_fail_status",{status:z.status}),null}catch(z){let Y=z;return H6(Error(`Error fetching session logs: ${Y.message}`)),c8("error","session_get_fail_status",{status:Y.status}),null}}function eUz(q){if(!q)return;let K=q.findLast((_)=>("uuid"in _)&&_.uuid);return K&&"uuid"in K?K.uuid:void 0}function G5K(){vj6.clear(),dr1.clear()}var vj6,$x8=10,aUz=500,dr1;var Ax8=y(()=>{CK();H3();_8();oY();m8();E8();nC();l8();VM();vj6=new Map,dr1=new Map});import{createHash as KQz}from"crypto";import{chmod as v5K,copyFile as z68,link as _Qz,mkdir as nr1,readFile as lr1,stat as Y68,unlink as zQz}from"fs/promises";import{dirname as k5K,isAbsolute as V5K,join as Ox8,relative as YQz}from"path";import{inspect as $Qz}from"util";function e$(){if(i7())return AQz();return j8().fileCheckpointingEnabled!==!1&&!i6(process.env.CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING)}function AQz(){return i6(process.env.CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING)&&!i6(process.env.CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING)}async function OK6(q,K,_){if(!e$())return;let z=E5K(K),Y;if(q((w)=>{return Y=w,w}),!Y)return;let $=Y.snapshots.at(-1);if(!$){H6(Error("FileHistory: Missing most recent snapshot")),d("tengu_file_history_track_edit_failed",{});return}if($.trackedFileBackups[z])return;let A;try{A=await y5K(K,1)}catch(w){H6(w),d("tengu_file_history_track_edit_failed",{});return}let O=A.backupFileName===null;q((w)=>{try{let j=w.snapshots.at(-1);if(!j||j.trackedFileBackups[z])return w;let H=w.trackedFiles.has(z)?w.trackedFiles:new Set(w.trackedFiles).add(z),J={...j,trackedFileBackups:{...j.trackedFileBackups,[z]:A}},M={...w,snapshots:(()=>{let X=w.snapshots.slice();return X[X.length-1]=J,X})(),trackedFiles:H};return L5K(M),O68(_,J,!0).catch((X)=>{H6(Error(`FileHistory: Failed to record snapshot: ${X}`))}),d("tengu_file_history_track_edit_success",{isNewFile:O,version:A.version}),N(`FileHistory: Tracked file modification for ${K}`),M}catch(j){return H6(j),d("tengu_file_history_track_edit_failed",{}),w}})}async function aE6(q,K){if(!e$())return;let _;if(q(($)=>{return _=$,$}),!_)return;let z={},Y=_.snapshots.at(-1);if(Y)N(`FileHistory: Making snapshot for message ${K}`),await Promise.all(Array.from(_.trackedFiles,async($)=>{try{let A=A68($),O=Y.trackedFileBackups[$],w=O?O.version+1:1,j;try{j=await Y68(A)}catch(H){if(!_7(H))throw H}if(!j){z[$]={backupFileName:null,version:w,backupTime:new Date},d("tengu_file_history_backup_deleted_file",{version:w}),N(`FileHistory: Missing tracked file: ${$}`);return}if(O&&O.backupFileName!==null&&!await ir1(A,O.backupFileName,j)){z[$]=O;return}z[$]=await y5K(A,w)}catch(A){H6(A),d("tengu_file_history_backup_file_failed",{})}}));q(($)=>{try{let A=$.snapshots.at(-1);if(A)for(let J of $.trackedFiles){if(J in z)continue;let M=A.trackedFileBackups[J];if(M)z[J]=M}let w={messageId:K,trackedFileBackups:z,timestamp:new Date},j=[...$.snapshots,w],H={...$,snapshots:j.length>T5K?j.slice(-T5K):j,snapshotSequence:($.snapshotSequence??0)+1};return L5K(H),MQz($,H).catch(H6),O68(K,w,!1).catch((J)=>{H6(Error(`FileHistory: Failed to record snapshot: ${J}`))}),N(`FileHistory: Added snapshot for ${K}, tracking ${$.trackedFiles.size} files`),d("tengu_file_history_snapshot_success",{trackedFilesCount:$.trackedFiles.size,snapshotCount:H.snapshots.length}),H}catch(A){return H6(A),d("tengu_file_history_snapshot_failed",{}),$}})}async function jx8(q,K){if(!e$())return;let _;if(q((Y)=>{return _=Y,Y}),!_)return;let z=_.snapshots.findLast((Y)=>Y.messageId===K);if(!z)throw H6(Error(`FileHistory: Snapshot for ${K} not found`)),d("tengu_file_history_rewind_failed",{trackedFilesCount:_.trackedFiles.size,snapshotFound:!1}),Error("The selected snapshot was not found");try{N(`FileHistory: [Rewind] Rewinding to snapshot for ${K}`);let Y=await OQz(_,z);N(`FileHistory: [Rewind] Finished rewinding to ${K}`),d("tengu_file_history_rewind_success",{trackedFilesCount:_.trackedFiles.size,filesChangedCount:Y.length})}catch(Y){throw H6(Y),d("tengu_file_history_rewind_failed",{trackedFilesCount:_.trackedFiles.size,snapshotFound:!0}),Y}}function Hx8(q,K){if(!e$())return!1;return q.snapshots.some((_)=>_.messageId===K)}async function $68(q,K){if(!e$())return;let _=q.snapshots.findLast((O)=>O.messageId===K);if(!_)return;let z=await Promise.all(Array.from(q.trackedFiles,async(O)=>{try{let w=A68(O),j=_.trackedFileBackups[O],H=j?j.backupFileName:rr1(O,q);if(H===void 0)return H6(Error("FileHistory: Error finding the backup file to apply")),d("tengu_file_history_rewind_restore_file_failed",{dryRun:!0}),null;let J=await jQz(w,H===null?void 0:H);if(J?.insertions||J?.deletions)return{filePath:w,stats:J};if(H===null&&await u5(w))return{filePath:w,stats:J};return null}catch(w){return H6(w),d("tengu_file_history_rewind_restore_file_failed",{dryRun:!0}),null}})),Y=[],$=0,A=0;for(let O of z){if(!O)continue;Y.push(O.filePath),$+=O.stats?.insertions||0,A+=O.stats?.deletions||0}return{filesChanged:Y,insertions:$,deletions:A}}async function N5K(q,K){if(!e$())return!1;let _=q.snapshots.findLast((z)=>z.messageId===K);if(!_)return!1;for(let z of q.trackedFiles)try{let Y=A68(z),$=_.trackedFileBackups[z],A=$?$.backupFileName:rr1(z,q);if(A===void 0)continue;if(A===null){if(await u5(Y))return!0;continue}if(await ir1(Y,A))return!0}catch(Y){H6(Y)}return!1}async function OQz(q,K){let _=[];for(let z of q.trackedFiles)try{let Y=A68(z),$=K.trackedFileBackups[z],A=$?$.backupFileName:rr1(z,q);if(A===void 0){H6(Error("FileHistory: Error finding the backup file to apply")),d("tengu_file_history_rewind_restore_file_failed",{dryRun:!1});continue}if(A===null){try{await zQz(Y),N(`FileHistory: [Rewind] Deleted ${Y}`),_.push(Y)}catch(O){if(!_7(O))throw O}continue}if(await ir1(Y,A))await JQz(Y,A),N(`FileHistory: [Rewind] Restored ${Y} from ${A}`),_.push(Y)}catch(Y){H6(Y),d("tengu_file_history_rewind_restore_file_failed",{dryRun:!1})}return _}async function ir1(q,K,_){let z=kj6(K),Y=_??null;if(!Y)try{Y=await Y68(q)}catch(A){if(!_7(A))return!0}let $=null;try{$=await Y68(z)}catch(A){if(!_7(A))return!0}return wQz(Y,$,async()=>{try{let[A,O]=await Promise.all([lr1(q,"utf-8"),lr1(z,"utf-8")]);return A!==O}catch{return!0}})}function wQz(q,K,_){if(q===null!==(K===null))return!0;if(q===null||K===null)return!1;if(q.mode!==K.mode||q.size!==K.size)return!0;if(q.mtimeMs<K.mtimeMs)return!1;return _()}async function jQz(q,K){let _=[],z=0,Y=0;try{let $=K?kj6(K):void 0,[A,O]=await Promise.all([wx8(q),$?wx8($):null]);if(A===null&&O===null)return{filesChanged:_,insertions:z,deletions:Y};_.push(q),U76(A??"",O??"").forEach((j)=>{if(j.added)z+=j.count||0;if(j.removed)Y+=j.count||0})}catch($){H6(Error(`FileHistory: Error generating diffStats: ${$}`))}return{filesChanged:_,insertions:z,deletions:Y}}function HQz(q,K){return`${KQz("sha256").update(q).digest("hex").slice(0,16)}@v${K}`}function kj6(q,K){let _=c1();return Ox8(_,"file-history",K||N8(),q)}async function y5K(q,K){if(q===null)return{backupFileName:null,version:K,backupTime:new Date};let _=HQz(q,K),z=kj6(_),Y;try{Y=await Y68(q)}catch($){if(_7($))return{backupFileName:null,version:K,backupTime:new Date};throw $}try{await z68(q,z)}catch($){if(!_7($))throw $;await nr1(k5K(z),{recursive:!0}),await z68(q,z)}return await v5K(z,Y.mode),d("tengu_file_history_backup_file_created",{version:K,fileSize:Y.size}),{backupFileName:_,version:K,backupTime:new Date}}async function JQz(q,K){let _=kj6(K),z;try{z=await Y68(_)}catch(Y){if(_7(Y)){d("tengu_file_history_rewind_restore_file_failed",{}),H6(Error(`FileHistory: [Rewind] Backup file not found: ${_}`));return}throw Y}try{await z68(_,q)}catch(Y){if(!_7(Y))throw Y;await nr1(k5K(q),{recursive:!0}),await z68(_,q)}await v5K(q,z.mode)}function rr1(q,K){for(let _ of K.snapshots){let z=_.trackedFileBackups[q];if(z!==void 0&&z.version===1)return z.backupFileName}return}function E5K(q){if(!V5K(q))return q;let K=r1();if(q.startsWith(K))return YQz(K,q);return q}function A68(q){if(V5K(q))return q;return Ox8(r1(),q)}function Jx8(q,K){if(!e$())return;let _=[],z=new Set;for(let Y of q){let $={};for(let[A,O]of Object.entries(Y.trackedFileBackups)){let w=E5K(A);z.add(w),$[w]=O}_.push({...Y,trackedFileBackups:$})}K({snapshots:_,trackedFiles:z,snapshotSequence:_.length})}async function Mx8(q){if(!e$())return;let K=q.fileHistorySnapshots;if(!K||q.messages.length===0)return;let z=q.messages[q.messages.length-1]?.sessionId;if(!z){H6(Error("FileHistory: Failed to copy backups on restore (no previous session id)"));return}let Y=N8();if(z===Y){N(`FileHistory: No need to copy file history for resuming with same session id: ${Y}`);return}try{let $=Ox8(c1(),"file-history",Y);await nr1($,{recursive:!0});let A=0;if(await Promise.allSettled(K.map(async(O)=>{let w=Object.values(O.trackedFileBackups).filter((J)=>J.backupFileName!==null);if(!(await Promise.allSettled(w.map(async({backupFileName:J})=>{let M=kj6(J,z),X=Ox8($,J);try{await _Qz(M,X)}catch(P){let W=s1(P);if(W==="EEXIST")return;if(W==="ENOENT")throw H6(Error(`FileHistory: Failed to copy backup ${J} on restore (backup file does not exist in ${z})`)),P;H6(Error("FileHistory: Error hard linking backup file from previous session"));try{await z68(M,X)}catch(D){throw H6(Error("FileHistory: Error copying over backup from previous session")),D}}N(`FileHistory: Copied backup ${J} from session ${z} to ${Y}`)}))).some((J)=>J.status==="rejected"))O68(O.messageId,O,!1).catch((J)=>{H6(Error("FileHistory: Failed to record copy backup snapshot"))});else A++})),A>0)d("tengu_file_history_resume_copy_failed",{numSnapshots:K.length,failedSnapshots:A})}catch($){H6($)}}async function MQz(q,K){let _=q.snapshots.at(-1),z=K.snapshots.at(-1);if(!z)return;for(let Y of K.trackedFiles){let $=A68(Y),A=_?.trackedFileBackups[Y],O=z.trackedFileBackups[Y];if(A?.backupFileName===O?.backupFileName&&A?.version===O?.version)continue;let w=null;if(A?.backupFileName){let H=kj6(A.backupFileName);w=await wx8(H)}let j=null;if(O?.backupFileName){let H=kj6(O.backupFileName);j=await wx8(H)}if(w!==j)Mq6($,w,j)}}async function wx8(q){try{return await lr1(q,"utf-8")}catch{return null}}function L5K(q){if(XQz)console.error($Qz(q,!1,5))}var T5K=100,XQz=!1;var oN=y(()=>{RO6();v8();k8();VV6();V1();_8();m8();y8();bK();E8();_K()});function Xx8(){let q=process.env.CLAUDE_CODE_ENVIRONMENT_KIND;if(q==="byoc"||q==="anthropic_cloud")return q;return null}var or1=y(()=>{_8()});import{randomBytes as PQz}from"crypto";function DQz(q){return PQz(4).readUInt32BE(0)%q}function w68(q){return q[DQz(q.length)]}function Px8(){let q=w68(R5K),K=w68(WQz),_=w68(h5K);return`${q}-${K}-${_}`}function S5K(){let q=w68(R5K),K=w68(h5K);return`${q}-${K}`}var R5K,h5K,WQz;var Wx8=y(()=>{R5K=["abundant","ancient","bright","calm","cheerful","clever","cozy","curious","dapper","dazzling","deep","delightful","eager","elegant","enchanted","fancy","fluffy","gentle","gleaming","golden","graceful","happy","hidden","humble","jolly","joyful","keen","kind","lively","lovely","lucky","luminous","magical","majestic","mellow","merry","mighty","misty","noble","peaceful","playful","polished","precious","proud","quiet","quirky","radiant","rosy","serene","shiny","silly","sleepy","smooth","snazzy","snug","snuggly","soft","sparkling","spicy","splendid","sprightly","starry","steady","sunny","swift","tender","tidy","toasty","tranquil","twinkly","valiant","vast","velvet","vivid","warm","whimsical","wild","wise","witty","wondrous","zany","zesty","zippy","breezy","bubbly","buzzing","cheeky","cosmic","cozy","crispy","crystalline","cuddly","drifting","dreamy","effervescent","ethereal","fizzy","flickering","floating","floofy","fluttering","foamy","frolicking","fuzzy","giggly","glimmering","glistening","glittery","glowing","goofy","groovy","harmonic","hazy","humming","iridescent","jaunty","jazzy","jiggly","melodic","moonlit","mossy","nifty","peppy","prancy","purrfect","purring","quizzical","rippling","rustling","shimmering","shimmying","snappy","snoopy","squishy","swirling","ticklish","tingly","twinkling","velvety","wiggly","wobbly","woolly","zazzy","abstract","adaptive","agile","async","atomic","binary","cached","compiled","composed","compressed","concurrent","cryptic","curried","declarative","delegated","distributed","dynamic","eager","elegant","encapsulated","enumerated","eventual","expressive","federated","functional","generic","greedy","hashed","idempotent","immutable","imperative","indexed","inherited","iterative","lazy","lexical","linear","linked","logical","memoized","modular","mutable","nested","optimized","parallel","parsed","partitioned","piped","polymorphic","pure","reactive","recursive","refactored","reflective","replicated","resilient","robust","scalable","sequential","serialized","sharded","sorted","staged","stateful","stateless","streamed","structured","synchronous","synthetic","temporal","transient","typed","unified","validated","vectorized","virtual"],h5K=["aurora","avalanche","blossom","breeze","brook","bubble","canyon","cascade","cloud","clover","comet","coral","cosmos","creek","crescent","crystal","dawn","dewdrop","dusk","eclipse","ember","feather","fern","firefly","flame","flurry","fog","forest","frost","galaxy","garden","glacier","glade","grove","harbor","horizon","island","lagoon","lake","leaf","lightning","meadow","meteor","mist","moon","moonbeam","mountain","nebula","nova","ocean","orbit","pebble","petal","pine","planet","pond","puddle","quasar","rain","rainbow","reef","ripple","river","shore","sky","snowflake","spark","spring","star","stardust","starlight","storm","stream","summit","sun","sunbeam","sunrise","sunset","thunder","tide","twilight","valley","volcano","waterfall","wave","willow","wind","alpaca","axolotl","badger","bear","beaver","bee","bird","bumblebee","bunny","cat","chipmunk","crab","crane","deer","dolphin","dove","dragon","dragonfly","duckling","eagle","elephant","falcon","finch","flamingo","fox","frog","giraffe","goose","hamster","hare","hedgehog","hippo","hummingbird","jellyfish","kitten","koala","ladybug","lark","lemur","llama","lobster","lynx","manatee","meerkat","moth","narwhal","newt","octopus","otter","owl","panda","parrot","peacock","pelican","penguin","phoenix","piglet","platypus","pony","porcupine","puffin","puppy","quail","quokka","rabbit","raccoon","raven","robin","salamander","seahorse","seal","sloth","snail","sparrow","sphinx","squid","squirrel","starfish","swan","tiger","toucan","turtle","unicorn","walrus","whale","wolf","wombat","wren","yeti","zebra","acorn","anchor","balloon","beacon","biscuit","blanket","bonbon","book","boot","cake","candle","candy","castle","charm","clock","cocoa","cookie","crayon","crown","cupcake","donut","dream","fairy","fiddle","flask","flute","fountain","gadget","gem","gizmo","globe","goblet","hammock","harp","haven","hearth","honey","journal","kazoo","kettle","key","kite","lantern","lemon","lighthouse","locket","lollipop","mango","map","marble","marshmallow","melody","mitten","mochi","muffin","music","nest","noodle","oasis","origami","pancake","parasol","peach","pearl","pebble","pie","pillow","pinwheel","pixel","pizza","plum","popcorn","pretzel","prism","pudding","pumpkin","puzzle","quiche","quill","quilt","riddle","rocket","rose","scone","scroll","shell","sketch","snowglobe","sonnet","sparkle","spindle","sprout","sundae","swing","taco","teacup","teapot","thimble","toast","token","tome","tower","treasure","treehouse","trinket","truffle","tulip","umbrella","waffle","wand","whisper","whistle","widget","wreath","zephyr","abelson","adleman","aho","allen","babbage","bachman","backus","barto","bengio","bentley","blum","boole","brooks","catmull","cerf","cherny","church","clarke","cocke","codd","conway","cook","corbato","cray","curry","dahl","diffie","dijkstra","dongarra","eich","emerson","engelbart","feigenbaum","floyd","gosling","graham","gray","hamming","hanrahan","hartmanis","hejlsberg","hellman","hennessy","hickey","hinton","hoare","hollerith","hopcroft","hopper","iverson","kahan","kahn","karp","kay","kernighan","knuth","kurzweil","lamport","lampson","lecun","lerdorf","liskov","lovelace","matsumoto","mccarthy","metcalfe","micali","milner","minsky","moler","moore","naur","neumann","newell","nygaard","papert","parnas","pascal","patterson","pearl","perlis","pike","pnueli","rabin","reddy","ritchie","rivest","rossum","russell","scott","sedgewick","shamir","shannon","sifakis","simon","stallman","stearns","steele","stonebraker","stroustrup","sutherland","sutton","tarjan","thacker","thompson","torvalds","turing","ullman","valiant","wadler","wall","wigderson","wilkes","wilkinson","wirth","wozniak","yao"],WQz=["baking","beaming","booping","bouncing","brewing","bubbling","chasing","churning","coalescing","conjuring","cooking","crafting","crunching","cuddling","dancing","dazzling","discovering","doodling","dreaming","drifting","enchanting","exploring","finding","floating","fluttering","foraging","forging","frolicking","gathering","giggling","gliding","greeting","growing","hatching","herding","honking","hopping","hugging","humming","imagining","inventing","jingling","juggling","jumping","kindling","knitting","launching","leaping","mapping","marinating","meandering","mixing","moseying","munching","napping","nibbling","noodling","orbiting","painting","percolating","petting","plotting","pondering","popping","prancing","purring","puzzling","questing","riding","roaming","rolling","sauteeing","scribbling","seeking","shimmying","singing","skipping","sleeping","snacking","sniffing","snuggling","soaring","sparking","spinning","splashing","sprouting","squishing","stargazing","stirring","strolling","swimming","swinging","tickling","tinkering","toasting","tumbling","twirling","waddling","wandering","watching","weaving","whistling","wibbling","wiggling","wishing","wobbling","wondering","yawning","zooming"]});import{randomUUID as fQz}from"crypto";import{copyFile as ZQz,writeFile as GQz}from"fs/promises";import{join as wK6,resolve as TQz,sep as vQz}from"path";function CQ(q){let K=q??N8(),_=t36(),z=_.get(K);if(!z){let Y=hA();for(let $=0;$<kQz;$++){z=Px8();let A=wK6(Y,`${z}.md`);if(!X8().existsSync(A))break}_.set(K,z)}return z}function ar1(q,K){t36().set(q,K)}function C5K(){t36().clear()}function nP(q){let K=CQ(N8());if(!q)return wK6(hA(),`${K}.md`);return wK6(hA(),`${K}-agent-${q}.md`)}function mX(q){let K=nP(q);try{return X8().readFileSync(K,{encoding:"utf-8"})}catch(_){if(_7(_))return null;return H6(_),null}}function b5K(q){return q.messages.find((K)=>K.slug)?.slug}async function Dx8(q,K){let _=b5K(q);if(!_)return!1;let z=K??N8();ar1(z,_);let Y=wK6(hA(),`${_}.md`);try{return await X8().readFile(Y,{encoding:"utf-8"}),!0}catch($){if(!_7($))return H6($),!1;if(Xx8()===null)return!1;N(`Plan file missing during resume: ${Y}. Attempting recovery.`);let A=NQz(q.messages,"plan"),O=null;if(A&&A.content.length>0)O=A.content,N(`Plan recovered from file snapshot, ${O.length} chars`,{level:"info"});else if(O=VQz(q),O)N(`Plan recovered from message history, ${O.length} chars`,{level:"info"});if(O)try{return await GQz(Y,O,{encoding:"utf-8"}),!0}catch(w){return H6(w),!1}return N("Plan file recovery failed: no file snapshot or plan content found in message history"),!1}}async function x5K(q,K){let _=b5K(q);if(!_)return!1;let z=hA(),Y=wK6(z,`${_}.md`),$=CQ(K),A=wK6(z,`${$}.md`);try{return await ZQz(Y,A),!0}catch(O){if(_7(O))return!1;return H6(O),!1}}function VQz(q){for(let K=q.messages.length-1;K>=0;K--){let _=q.messages[K];if(!_)continue;if(_.type==="assistant"){let{content:z}=_.message;if(Array.isArray(z)){for(let Y of z)if(Y.type==="tool_use"&&Y.name===kX){let A=Y.input?.plan;if(typeof A==="string"&&A.length>0)return A}}}if(_.type==="user"){let z=_;if(typeof z.planContent==="string"&&z.planContent.length>0)return z.planContent}if(_.type==="attachment"){let z=_;if(z.attachment?.type==="plan_file_reference"){let Y=z.attachment.planContent;if(typeof Y==="string"&&Y.length>0)return Y}}}return null}function NQz(q,K){for(let _=q.length-1;_>=0;_--){let z=q[_];if(z?.type==="system"&&"subtype"in z&&z.subtype==="file_snapshot"&&"snapshotFiles"in z)return z.snapshotFiles.find(($)=>$.key===K)}return}async function fx8(){if(Xx8()===null)return;try{let q=[],K=mX();if(K)q.push({key:"plan",path:nP(),content:K});if(q.length===0)return;let _={type:"system",subtype:"file_snapshot",content:"File snapshot",level:"info",isMeta:!0,timestamp:new Date().toISOString(),uuid:fQz(),snapshotFiles:q},{recordTranscript:z}=await Promise.resolve().then(() => (_K(),Zx8));await z([_])}catch(q){H6(q)}}var kQz=10,hA;var SJ=y(()=>{F4();v8();I7();_8();m8();y8();or1();e7();E8();U1();Wx8();hA=_1(function(){let _=N7().plansDirectory,z;if(_){let Y=Z8(),$=TQz(Y,_);if(!$.startsWith(Y+vQz)&&$!==Y)H6(Error(`plansDirectory must be within project root: ${_}`)),z=wK6(c1(),"plans");else z=$}else z=wK6(c1(),"plans");try{X8().mkdirSync(z)}catch(Y){H6(Y)}return z})});import{mkdir as yQz,readdir as m5K,readFile as I5K,writeFile as EQz}from"fs/promises";import{join as Tx8}from"path";async function sr1(){let q=Tx8(c1(),"session-env",N8());return await yQz(q,{recursive:!0}),q}async function p5K(q,K){let _=q.toLowerCase();return Tx8(await sr1(),`${_}-hook-${K}.sh`)}async function B5K(){try{let q=await sr1(),K=await m5K(q);await Promise.all(K.filter((_)=>(_.startsWith("filechanged-hook-")||_.startsWith("cwdchanged-hook-"))&&Gx8.test(_)).map((_)=>EQz(Tx8(q,_),"")))}catch(q){if(s1(q)!=="ENOENT")N(`Failed to clear cwd env files: ${d6(q)}`)}}function sE6(){N("Invalidating session environment cache"),jK6=void 0}async function g5K(){if(Z1()==="windows")return N("Session environment not yet supported on Windows"),null;if(jK6!==void 0)return jK6;let q=[],K=process.env.CLAUDE_ENV_FILE;if(K)try{let z=(await I5K(K,"utf8")).trim();if(z)q.push(z),N(`Session environment loaded from CLAUDE_ENV_FILE: ${K} (${z.length} chars)`)}catch(z){if(s1(z)!=="ENOENT")N(`Failed to read CLAUDE_ENV_FILE: ${d6(z)}`)}let _=await sr1();try{let Y=(await m5K(_)).filter(($)=>Gx8.test($)).sort(LQz);for(let $ of Y){let A=Tx8(_,$);try{let O=(await I5K(A,"utf8")).trim();if(O)q.push(O)}catch(O){if(s1(O)!=="ENOENT")N(`Failed to read hook file ${A}: ${d6(O)}`)}}if(Y.length>0)N(`Session environment loaded from ${Y.length} hook file(s)`)}catch(z){if(s1(z)!=="ENOENT")N(`Failed to load session environment from hooks: ${d6(z)}`)}if(q.length===0)return N("No session environment scripts found"),jK6=null,jK6;return jK6=q.join(`
2425`),N(`Session environment script ready (${jK6.length} chars total)`),jK6}function LQz(q,K){let _=q.match(Gx8),z=K.match(Gx8),Y=_?.[1]||"",$=z?.[1]||"";if(Y!==$)return(u5K[Y]??99)-(u5K[$]??99);let A=parseInt(_?.[2]||"0",10),O=parseInt(z?.[2]||"0",10);return A-O}var jK6=void 0,u5K,Gx8;var tE6=y(()=>{v8();_8();m8();y8();vK();u5K={setup:0,sessionstart:1,cwdchanged:2,filechanged:3},Gx8=/^(setup|sessionstart|cwdchanged|filechanged)-hook-(\d+)\.sh$/});function F5K(){let q=v1("policySettings");if(q?.disableAllHooks===!0)return{};if(q?.allowManagedHooksOnly===!0)return q.hooks??{};if(fG("hooks"))return q?.hooks??{};let K=Z7();if(K.disableAllHooks===!0)return q?.hooks??{};return K.hooks??{}}function fb(){let q=v1("policySettings");if(q?.allowManagedHooksOnly===!0)return!0;if(Z7().disableAllHooks===!0&&q?.disableAllHooks!==!0)return!0;return!1}function j68(){return v1("policySettings")?.disableAllHooks===!0}function tr1(){vx8=F5K()}function eE6(){DW(),vx8=F5K()}function bQ(){if(vx8===null)tr1();return vx8}var vx8=null;var Vj6=y(()=>{v8();IA6();U1();Zc()});import{isAbsolute as RQz,join as hQz}from"path";function _o1(q){HK6=q}function U5K(q){if(J68)return;J68=!0,Ko1=q;let K=bQ();if(qo1=(K?.CwdChanged?.length??0)>0||(K?.FileChanged?.length??0)>0,qo1)pq(async()=>SQz());let _=Q5K(K);if(_.length===0)return;d5K(_)}function Q5K(q){let K=(q??bQ())?.FileChanged??[],_=[];for(let z of K){if(!z.matcher)continue;for(let Y of z.matcher.split("|").map(($)=>$.trim())){if(!Y)continue;_.push(RQz(Y)?Y:hQz(Ko1,Y))}}return[...new Set([..._,...kx8])]}function d5K(q){N(`FileChanged: watching ${q.length} paths`),xQ=di.watch(q,{persistent:!0,ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:500,pollInterval:200},ignorePermissionErrors:!0}),xQ.on("change",(K)=>er1(K,"change")),xQ.on("add",(K)=>er1(K,"add")),xQ.on("unlink",(K)=>er1(K,"unlink"))}function er1(q,K){N(`FileChanged: ${K} ${q}`),$o1(q,K).then(({results:_,watchPaths:z,systemMessages:Y})=>{if(z.length>0)zo1(z);for(let $ of Y)HK6?.($,!1);for(let $ of _)if(!$.succeeded&&$.output)HK6?.($.output,!0)}).catch((_)=>{let z=d6(_);N(`FileChanged hook failed: ${z}`,{level:"error"}),HK6?.(z,!0)})}function zo1(q){if(!J68)return;let K=q.slice().sort();if(K.length===H68.length&&K.every((_,z)=>_===H68[z]))return;kx8=q,H68=K,c5K()}function c5K(){if(xQ)xQ.close(),xQ=null;let q=Q5K();if(q.length>0)d5K(q)}async function l5K(q,K){if(q===K)return;let _=bQ();if(!((_?.CwdChanged?.length??0)>0||(_?.FileChanged?.length??0)>0))return;Ko1=K,await B5K();let Y=await Yo1(q,K).catch(($)=>{let A=d6($);return N(`CwdChanged hook failed: ${A}`,{level:"error"}),HK6?.(A,!0),{results:[],watchPaths:[],systemMessages:[]}});kx8=Y.watchPaths,H68=Y.watchPaths.slice().sort();for(let $ of Y.systemMessages)HK6?.($,!1);for(let $ of Y.results)if(!$.succeeded&&$.output)HK6?.($.output,!0);if(J68)c5K()}function SQz(){if(xQ)xQ.close(),xQ=null;kx8=[],H68=[],J68=!1,qo1=!1,HK6=null}var xQ=null,Ko1,kx8,H68,J68=!1,qo1=!1,HK6=null;var M68=y(()=>{sT6();c9();_8();y8();y$();tE6();Vj6();kx8=[],H68=[]});var jo1={};T8(jo1,{setupPluginHookHotReload:()=>xQz,resetHotReloadState:()=>bQz,pruneRemovedPluginHooks:()=>wo1,loadPluginHooks:()=>IQ,getPluginAffectingSettingsSnapshot:()=>Oo1,clearPluginHookCache:()=>Nx8});function CQz(q){let K={PreToolUse:[],PostToolUse:[],PostToolUseFailure:[],PermissionDenied:[],Notification:[],UserPromptSubmit:[],SessionStart:[],SessionEnd:[],Stop:[],StopFailure:[],SubagentStart:[],SubagentStop:[],PreCompact:[],PostCompact:[],PermissionRequest:[],Setup:[],TeammateIdle:[],TaskCreated:[],TaskCompleted:[],Elicitation:[],ElicitationResult:[],ConfigChange:[],WorktreeCreate:[],WorktreeRemove:[],InstructionsLoaded:[],CwdChanged:[],FileChanged:[]};if(!q.hooksConfig)return K;for(let[_,z]of Object.entries(q.hooksConfig)){let Y=_;if(!K[Y])continue;for(let $ of z)if($.hooks.length>0)K[Y].push({matcher:$.matcher,hooks:$.hooks,pluginRoot:q.path,pluginName:q.name,pluginId:q.source})}return K}function Nx8(){IQ.cache?.clear?.()}async function wo1(){if(!sR())return;let{enabled:q}=await ZJ(),K=new Set(q.map((Y)=>Y.path)),_=sR();if(!_)return;let z={};for(let[Y,$]of Object.entries(_)){let A=$.filter((O)=>("pluginRoot"in O)&&K.has(O.pluginRoot));if(A.length>0)z[Y]=A}H38(),It(z)}function bQz(){Ao1=!1,Vx8=void 0}function Oo1(){let q=Z7(),K=v1("policySettings"),_=(z)=>z?Object.fromEntries(Object.entries(z).sort()):{};return g6({enabledPlugins:_(q.enabledPlugins),extraKnownMarketplaces:_(q.extraKnownMarketplaces),strictKnownMarketplaces:K?.strictKnownMarketplaces??[],blockedMarketplaces:K?.blockedMarketplaces??[]})}function xQz(){if(Ao1)return;Ao1=!0,Vx8=Oo1(),WX.subscribe((q)=>{if(q==="policySettings"){let K=Oo1();if(K===Vx8){N("Plugin hooks: skipping reload, plugin-affecting settings unchanged");return}Vx8=K,N("Plugin hooks: reloading due to plugin-affecting settings change"),Yk("loadPluginHooks: plugin-affecting settings changed"),Nx8(),IQ()}})}var Ao1=!1,Vx8,IQ;var Nj6=y(()=>{F4();v8();_8();NF();U1();l8();bj();IQ=_1(async()=>{let{enabled:q}=await ZJ(),K={PreToolUse:[],PostToolUse:[],PostToolUseFailure:[],PermissionDenied:[],Notification:[],UserPromptSubmit:[],SessionStart:[],SessionEnd:[],Stop:[],StopFailure:[],SubagentStart:[],SubagentStop:[],PreCompact:[],PostCompact:[],PermissionRequest:[],Setup:[],TeammateIdle:[],TaskCreated:[],TaskCompleted:[],Elicitation:[],ElicitationResult:[],ConfigChange:[],WorktreeCreate:[],WorktreeRemove:[],InstructionsLoaded:[],CwdChanged:[],FileChanged:[]};for(let z of q){if(!z.hooksConfig)continue;N(`Loading hooks from plugin: ${z.name}`);let Y=CQz(z);for(let $ of Object.keys(Y))K[$].push(...Y[$])}H38(),It(K);let _=Object.values(K).reduce((z,Y)=>z+Y.reduce(($,A)=>$+A.hooks.length,0),0);N(`Registered ${_} hooks from ${q.length} plugins`)})});function n5K(){let q=Ho1;return Ho1=void 0,q}async function xD(q,{sessionId:K,agentType:_,model:z,forceSyncExecution:Y}={}){if(f9())return[];let $=[],A=[],O=[];if(fb())N("Skipping plugin hooks - allowManagedHooksOnly is enabled");else try{await mW6("load_plugin_hooks",()=>IQ())}catch(j){let H=j instanceof Error?Error(`Failed to load plugin hooks during ${q}: ${j.message}`):Error(`Failed to load plugin hooks during ${q}: ${String(j)}`);if(j instanceof Error&&j.stack)H.stack=j.stack;H6(H);let J=j instanceof Error?j.message:String(j),M="";if(J.includes("Failed to clone")||J.includes("network")||J.includes("ETIMEDOUT")||J.includes("ENOTFOUND"))M="This appears to be a network issue. Check your internet connection and try again.";else if(J.includes("Permission denied")||J.includes("EACCES")||J.includes("EPERM"))M="This appears to be a permissions issue. Check file permissions on ~/.claude/plugins/";else if(J.includes("Invalid")||J.includes("parse")||J.includes("JSON")||J.includes("schema"))M="This appears to be a configuration issue. Check your plugin settings in .claude/settings.json";else M="Please fix the plugin configuration or remove problematic plugins from your settings.";N(`Warning: Failed to load plugin hooks. SessionStart hooks from plugins will not execute. Error: ${J}. ${M}`,{level:"warn"})}let w=_??qB();for await(let j of Jo1(q,K,w,z,void 0,void 0,Y)){if(j.message)$.push(j.message);if(j.additionalContexts&&j.additionalContexts.length>0)A.push(...j.additionalContexts);if(j.initialUserMessage)Ho1=j.initialUserMessage;if(j.watchPaths&&j.watchPaths.length>0)O.push(...j.watchPaths)}if(O.length>0)zo1(O);if(A.length>0){let j=V4({type:"hook_additional_context",content:A,hookName:"SessionStart",toolUseID:"SessionStart",hookEvent:"SessionStart"});$.push(j)}return $}async function yx8(q,{forceSyncExecution:K}={}){if(f9())return[];let _=[],z=[];if(fb())N("Skipping plugin hooks - allowManagedHooksOnly is enabled");else try{await IQ()}catch(Y){let $=Y instanceof Error?Y.message:String(Y);N(`Warning: Failed to load plugin hooks. Setup hooks from plugins will not execute. Error: ${$}`,{level:"warn"})}for await(let Y of Mo1(q,void 0,void 0,K)){if(Y.message)_.push(Y.message);if(Y.additionalContexts&&Y.additionalContexts.length>0)z.push(...Y.additionalContexts)}if(z.length>0){let Y=V4({type:"hook_additional_context",content:z,hookName:"Setup",toolUseID:"Setup",hookEvent:"Setup"});_.push(Y)}return _}var Ho1;var JK6=y(()=>{v8();lP();_8();oY();m8();M68();Vj6();y$();E8();Nj6()});import{relative as Xo1}from"path";function pQz(q){if(q.type!=="attachment")return q;let K=q.attachment;if(K.type==="new_file")return{...q,attachment:{...K,type:"file",displayPath:Xo1(Z8(),K.filename)}};if(K.type==="new_directory")return{...q,attachment:{...K,type:"directory",displayPath:Xo1(Z8(),K.path)}};if(!("displayPath"in K)){let _="filename"in K?K.filename:("path"in K)?K.path:("skillDir"in K)?K.skillDir:void 0;if(_)return{...q,attachment:{...K,displayPath:Xo1(Z8(),_)}}}return q}function Ex8(q){return i5K(q).messages}function i5K(q){try{let K=q.map(pQz),_=new Set(pZ);for(let j of K)if(j.type==="user"&&j.permissionMode!==void 0&&!_.has(j.permissionMode))j.permissionMode=void 0;let z=Lx8(K),Y=D68(z),$=W68(Y),A=BQz($),O;if(A.kind==="interrupted_turn"){let[j]=yX([U8({content:"Continue from where you left off.",isMeta:!0})]);$.push(j),O={kind:"interrupted_prompt",message:j}}else O=A;let w=$.findLastIndex((j)=>j.type!=="system"&&j.type!=="progress");if(w!==-1&&$[w].type==="user")$.splice(w+1,0,nG({content:$j6}));return{messages:$,turnInterruptionState:O}}catch(K){throw H6(K),K}}function BQz(q){if(q.length===0)return{kind:"none"};let K=q.findLastIndex((z)=>z.type!=="system"&&z.type!=="progress"&&!(z.type==="assistant"&&z.isApiErrorMessage)),_=K!==-1?q[K]:void 0;if(!_)return{kind:"none"};if(_.type==="assistant")return{kind:"none"};if(_.type==="user"){if(_.isMeta||_.isCompactSummary)return{kind:"none"};if(P68(_)){if(gQz(_,q,K))return{kind:"none"};return{kind:"interrupted_turn"}}return{kind:"interrupted_prompt",message:_}}if(_.type==="attachment")return{kind:"interrupted_turn"};return{kind:"none"}}function gQz(q,K,_){let z=q.message.content;if(!Array.isArray(z))return!1;let Y=z[0];if(Y?.type!=="tool_result")return!1;let $=Y.tool_use_id;for(let A=_-1;A>=0;A--){let O=K[A];if(O.type!=="assistant")continue;for(let w of O.message.content)if(w.type==="tool_use"&&w.id===$)return w.name===IQz||w.name===uQz||w.name===mQz}return!1}function FQz(q){for(let K of q){if(K.type!=="attachment")continue;if(K.attachment.type==="invoked_skills"){for(let _ of K.attachment.skills)if(_.name&&_.path&&_.content)pX6(_.name,_.path,_.content,null)}if(K.attachment.type==="skill_listing")r5K()}}async function UQz(q){let{messages:K,leafUuids:_}=await $a(q),z=null,Y=0;for(let A of K.values()){if(A.isSidechain||!_.has(A.uuid))continue;let O=new Date(A.timestamp).getTime();if(O>Y)Y=O,z=A}if(!z)return{messages:[],sessionId:void 0};let $=XK6(K,z);return{messages:KL6($),sessionId:z.sessionId}}async function MK6(q,K){try{let _=null,z=null,Y;if(q===void 0){let O=_L6(),w=new Set;_=(await O).find((H)=>{let J=SA(H);return!J||!w.has(J)})??null}else if(K){let O=await UQz(K);z=O.messages,Y=O.sessionId}else if(typeof q==="string")_=await f68(q),Y=q;else _=q;if(!_&&!z)return null;if(_){if(qR(_))_=await om(_);if(!Y)Y=SA(_);if(Y)await Dx8(_,EX(Y));Mx8(_),z=_.messages,Po1(z)}FQz(z);let $=i5K(z);z=$.messages;let A=await xD("resume",{sessionId:Y});return z.push(...A),{messages:z,turnInterruptionState:$.turnInterruptionState,fileHistorySnapshots:_?.fileHistorySnapshots,attributionSnapshots:_?.attributionSnapshots,contentReplacements:_?.contentReplacements,contextCollapseCommits:_?.contextCollapseCommits,contextCollapseSnapshot:_?.contextCollapseSnapshot,sessionId:Y,agentName:_?.agentName,agentColor:_?.agentColor,agentSetting:_?.agentSetting,customTitle:_?.customTitle,tag:_?.tag,mode:_?.mode,worktreeSession:_?.worktreeSession,prNumber:_?.prNumber,prUrl:_?.prUrl,prRepository:_?.prRepository,fullPath:_?.fullPath}}catch(_){throw H6(_),_}}var IQz,uQz,mQz=null;var qL6=y(()=>{I7();v8();M0();Wp6();lP();oN();E8();i1();SJ();JK6();_K();IQz=(YI(),Eq(Pl)).BRIEF_TOOL_NAME,uQz=(YI(),Eq(Pl)).LEGACY_BRIEF_TOOL_NAME});import{randomUUID as QQz}from"crypto";import*as zL6 from"fs/promises";import*as aN from"path";function t5K(){return process.env.ANTHROPIC_BASE_URL||process.env.CLAUDE_CODE_API_BASE_URL||"https://api.anthropic.com"}function Wo1(q){N(`[files-api] ${q}`,{level:"error"})}function Aa(q){N(`[files-api] ${q}`)}async function e5K(q,K){let _="";for(let z=1;z<=Rx8;z++){let Y=await K(z);if(Y.done)return Y.value;if(_=Y.error||`${q} failed`,Aa(`${q} attempt ${z}/${Rx8} failed: ${_}`),z<Rx8){let $=dQz*Math.pow(2,z-1);Aa(`Retrying ${q} in ${$}ms...`),await R7($)}}throw Error(`${_} after ${Rx8} attempts`)}async function cQz(q,K){let z=`${K.baseUrl||t5K()}/v1/files/${q}/content`,Y={Authorization:`Bearer ${K.oauthToken}`,"anthropic-version":s5K,"anthropic-beta":a5K};return Aa(`Downloading file ${q} from ${z}`),e5K(`Download file ${q}`,async()=>{try{let $=await $1.get(z,{headers:Y,responseType:"arraybuffer",timeout:60000,validateStatus:(A)=>A<500});if($.status===200)return Aa(`Downloaded file ${q} (${$.data.length} bytes)`),{done:!0,value:Buffer.from($.data)};if($.status===404)throw Error(`File not found: ${q}`);if($.status===401)throw Error("Authentication failed: invalid or missing API key");if($.status===403)throw Error(`Access denied to file: ${q}`);return{done:!1,error:`status ${$.status}`}}catch($){if(!$1.isAxiosError($))throw $;return{done:!1,error:$.message}}})}function lQz(q,K,_){let z=aN.normalize(_);if(z.startsWith(".."))return Wo1(`Invalid file path: ${_}. Path must not traverse above workspace`),null;let Y=aN.join(q,K,"uploads"),A=[aN.join(q,K,"uploads")+aN.sep,aN.sep+"uploads"+aN.sep].find((w)=>z.startsWith(w)),O=A?z.slice(A.length):z;return aN.join(Y,O)}async function nQz(q,K){let{fileId:_,relativePath:z}=q,Y=lQz(Z8(),K.sessionId,z);if(!Y)return{fileId:_,path:"",success:!1,error:`Invalid file path: ${z}`};try{let $=await cQz(_,K),A=aN.dirname(Y);return await zL6.mkdir(A,{recursive:!0}),await zL6.writeFile(Y,$),Aa(`Saved file ${_} to ${Y} (${$.length} bytes)`),{fileId:_,path:Y,success:!0,bytesWritten:$.length}}catch($){if(Wo1(`Failed to download file ${_}: ${d6($)}`),$ instanceof Error)H6($);return{fileId:_,path:Y,success:!1,error:d6($)}}}async function rQz(q,K,_){let z=Array(q.length),Y=0;async function $(){while(Y<q.length){let w=Y++,j=q[w];if(j!==void 0)z[w]=await K(j,w)}}let A=[],O=Math.min(_,q.length);for(let w=0;w<O;w++)A.push($());return await Promise.all(A),z}async function q3K(q,K,_=iQz){if(q.length===0)return[];Aa(`Downloading ${q.length} file(s) for session ${K.sessionId}`);let z=Date.now(),Y=await rQz(q,(O)=>nQz(O,K),_),$=Date.now()-z,A=$7(Y,(O)=>O.success);return Aa(`Downloaded ${A}/${q.length} file(s) in ${$}ms`),Y}async function K3K(q,K,_,z){let $=`${_.baseUrl||t5K()}/v1/files`,A={Authorization:`Bearer ${_.oauthToken}`,"anthropic-version":s5K,"anthropic-beta":a5K};Aa(`Uploading file ${q} as ${K}`);let O;try{O=await zL6.readFile(q)}catch(X){return d("tengu_file_upload_failed",{error_type:"file_read"}),{path:K,error:d6(X),success:!1}}let w=O.length;if(w>o5K)return d("tengu_file_upload_failed",{error_type:"file_too_large"}),{path:K,error:`File exceeds maximum size of ${o5K} bytes (actual: ${w})`,success:!1};let j=`----FormBoundary${QQz()}`,H=aN.basename(K),J=[];J.push(Buffer.from(`--${j}\r
2426Content-Disposition: form-data; name="file"; filename="${H}"\r

Callers 2

Yx8Function · 0.85
jdzFunction · 0.85

Calls 3

zx8Function · 0.85
O5KFunction · 0.85
addMethod · 0.45

Tested by

no test coverage detected