import{FD as S,GD as qf,Mj as X,Rj as Af,Xz as Z,Yz as $f,ai as a,bP as Bf,bm as c,cP as Hf,ci as If,cm as Yf,dj as m,iF as v,jF as zf,oj as R,qj as N,rj as M,xj as yf}from"./cli-0.5.3-jbzr8k4s.mjs";import{jQ as i,kQ as Kf}from"./cli-0.5.3-ytqxzjff.mjs";import{IW as T,KW as d,nX as _f,pV as Jf}from"./cli-0.5.3-842pf3t4.mjs";import{NY as Y,OY as D,PY as P}from"./cli-0.5.3-vqmxwet2.mjs";import{QY as Of}from"./cli-0.5.3-rch86nhn.mjs";import{P6 as b,R6 as ff}from"./cli-0.5.3-t65dek0m.mjs";import{Lea as L,Nea as Gf}from"./cli-0.5.3-9vh3vpap.mjs";import{Nfa as W,Qfa as e}from"./cli-0.5.3-n3cxyxpg.mjs";import{Tma as g,Uma as s,Xma as k}from"./cli-0.5.3-0df3r78b.mjs";function E(){(Hf(),s(Bf)).saveWorktreeState(null)}function l({onDone:K,onCancel:_}){let[$,y]=q.useState("loading"),[O,I]=q.useState([]),[G,z]=q.useState(0),[p,A]=q.useState(),f=m();if(q.useEffect(()=>{async function B(){let J=[],H=await b("git",["status","--porcelain"]);if(H.stdout)J=H.stdout.split(`
`).filter((V)=>V.trim()!==""),I(J);if(f){let{stdout:V}=await b("git",["rev-list","--count",`${f.originalHeadCommit}..HEAD`]),w=parseInt(V.trim())||0;if(z(w),J.length===0&&w===0){y("removing"),M().then(()=>{process.chdir(f.originalCwd),Z(f.originalCwd),E(),X.cache.clear?.(),A("Worktree removed (no changes)")}).catch((t)=>{W(`Failed to clean up worktree: ${t}`,{level:"error"}),A("Worktree cleanup failed, exiting anyway")}).then(()=>{y("done")});return}else y("asking")}}B()},[f]),q.useEffect(()=>{if($==="done")K(p)},[$,K,p]),!f)return K("No active worktree session found",{display:"system"}),null;if($==="loading"||$==="done")return null;async function j(B){if(!f)return;let J=Boolean(f.tmuxSessionName);if(B==="keep"||B==="keep-with-tmux"){if(y("keeping"),L("tengu_worktree_kept",{commits:G,changed_files:O.length}),await N(),process.chdir(f.originalCwd),Z(f.originalCwd),E(),X.cache.clear?.(),J)A(`Worktree kept. Your work is saved at ${f.worktreePath} on branch ${f.worktreeBranch}. Reattach to tmux session with: tmux attach -t ${f.tmuxSessionName}`);else A(`Worktree kept. Your work is saved at ${f.worktreePath} on branch ${f.worktreeBranch}`);y("done")}else if(B==="keep-kill-tmux"){if(y("keeping"),L("tengu_worktree_kept",{commits:G,changed_files:O.length}),f.tmuxSessionName)await R(f.tmuxSessionName);await N(),process.chdir(f.originalCwd),Z(f.originalCwd),E(),X.cache.clear?.(),A(`Worktree kept at ${f.worktreePath} on branch ${f.worktreeBranch}. Tmux session terminated.`),y("done")}else if(B==="remove"||B==="remove-with-tmux"){if(y("removing"),L("tengu_worktree_removed",{commits:G,changed_files:O.length}),f.tmuxSessionName)await R(f.tmuxSessionName);try{await M(),process.chdir(f.originalCwd),Z(f.originalCwd),E(),X.cache.clear?.()}catch(V){W(`Failed to clean up worktree: ${V}`,{level:"error"}),A("Worktree cleanup failed, exiting anyway"),y("done");return}let H=J?" Tmux session terminated.":"";if(G>0&&O.length>0)A(`Worktree removed. ${G} ${G===1?"commit":"commits"} and uncommitted changes were discarded.${H}`);else if(G>0)A(`Worktree removed. ${G} ${G===1?"commit":"commits"} on ${f.worktreeBranch} ${G===1?"was":"were"} discarded.${H}`);else if(O.length>0)A(`Worktree removed. Uncommitted changes were discarded.${H}`);else A(`Worktree removed.${H}`);y("done")}}if($==="keeping")return D(T,{flexDirection:"row",marginY:1,children:[Y(v,{}),Y(d,{children:"Keeping worktree…"})]});if($==="removing")return D(T,{flexDirection:"row",marginY:1,children:[Y(v,{}),Y(d,{children:"Removing worktree…"})]});let x=f.worktreeBranch,U=O.length>0,F=G>0,Q="";if(U&&F)Q=`You have ${O.length} uncommitted ${O.length===1?"file":"files"} and ${G} ${G===1?"commit":"commits"} on ${x}. All will be lost if you remove.`;else if(U)Q=`You have ${O.length} uncommitted ${O.length===1?"file":"files"}. These will be lost if you remove the worktree.`;else if(F)Q=`You have ${G} ${G===1?"commit":"commits"} on ${x}. The branch will be deleted if you remove the worktree.`;else Q="You are working in a worktree. Keep it to continue working there, or remove it to clean up.";function r(){if(_){_();return}j("keep")}let h=U||F?"All changes and commits will be lost.":"Clean up the worktree directory.",C=Boolean(f.tmuxSessionName),o=C?[{label:"Keep worktree and tmux session",value:"keep-with-tmux",description:`Stays at ${f.worktreePath}. Reattach with: tmux attach -t ${f.tmuxSessionName}`},{label:"Keep worktree, kill tmux session",value:"keep-kill-tmux",description:`Keeps worktree at ${f.worktreePath}, terminates tmux session.`},{label:"Remove worktree and tmux session",value:"remove-with-tmux",description:h}]:[{label:"Keep worktree",value:"keep",description:`Stays at ${f.worktreePath}`},{label:"Remove worktree",value:"remove",description:h}];return Y(c,{title:"Exiting worktree session",subtitle:Q,onCancel:r,children:Y(S,{defaultFocusValue:C?"keep-with-tmux":"keep",options:o,onChange:j})})}var q;var u=k(()=>{Gf();e();_f();ff();Af();$f();yf();qf();Yf();zf();P();q=g(Of(),1)});function Vf(){return i(Qf)??"Goodbye!"}function xf(K){let _=n.c(5),{showWorktree:$,onDone:y,onCancel:O}=K,I;if(_[0]!==y)I=async function(p){y(p??Vf()),await a(0,"prompt_input_exit")},_[0]=y,_[1]=I;else I=_[1];let G=I;if($){let z;if(_[2]!==O||_[3]!==G)z=Y(l,{onDone:G,onCancel:O}),_[2]=O,_[3]=G,_[4]=z;else z=_[4];return z}return null}var n,Qf;var Xf=k(()=>{Kf();If();u();P();n=g(Jf(),1),Qf=["Goodbye!","See ya!","Bye!","Catch you later!"]});
export{xf as Ab,Xf as Bb};
