import{a as e,n as t,o as n}from"./chunk-DR8-3Aex.js";import{Rn as r,b as i,f as a,t as o,x as s}from"./src-Di342QoJ.js";import{t as c}from"./jsx-runtime-D-D469L8.js";import{fl as l,pl as u}from"./paths-Ci1iwL5Y.js";import{l as d,p as f}from"./debug-otxXY3j-.js";import{n as p,r as m}from"./analytics-DqMQntaB.js";import{r as h,t as g}from"./execFileNoThrow-azCkYhmF.js";import{Ai as _,At as v,Fr as y,Jy as b,Ky as x,Ot as S,SE as C,Tt as w,aS as T,by as E,jt as D,mh as O,oS as k,ph as A,vt as j,wE as M,yy as N}from"./loadAgentsDir-C_wFhytF.js";function P(){(y(),e(_)).saveWorktreeState(null)}function F({onDone:e,onCancel:t}){let[n,r]=(0,I.useState)(`loading`),[o,c]=(0,I.useState)([]),[l,u]=(0,I.useState)(0),[d,p]=(0,I.useState)(),h=w();if((0,I.useEffect)(()=>{async function e(){let e=[],t=await g(`git`,[`status`,`--porcelain`]);if(t.stdout&&(e=t.stdout.split(`
`).filter(e=>e.trim()!==``),c(e)),h){let{stdout:t}=await g(`git`,[`rev-list`,`--count`,`${h.originalHeadCommit}..HEAD`]),n=parseInt(t.trim(),10)||0;if(u(n),e.length===0&&n===0){r(`removing`),j().then(()=>{process.chdir(h.originalCwd),O(h.originalCwd),P(),N.cache.clear?.(),p(`Worktree removed (no changes)`)}).catch(e=>{f(`Failed to clean up worktree: ${e}`,{level:`error`}),p(`Worktree cleanup failed, exiting anyway`)}).then(()=>{r(`done`)});return}else r(`asking`)}}e()},[h]),(0,I.useEffect)(()=>{n===`done`&&e(d)},[n,e,d]),!h)return e(`No active worktree session found`,{display:`system`}),null;if(n===`loading`||n===`done`)return null;async function _(e){if(!h)return;let t=!!h.tmuxSessionName;if(e===`keep`||e===`keep-with-tmux`)r(`keeping`),m(`tengu_worktree_kept`,{commits:l,changed_files:o.length}),await v(),process.chdir(h.originalCwd),O(h.originalCwd),P(),N.cache.clear?.(),p(t?`Worktree kept. Your work is saved at ${h.worktreePath} on branch ${h.worktreeBranch}. Reattach to tmux session with: tmux attach -t ${h.tmuxSessionName}`:`Worktree kept. Your work is saved at ${h.worktreePath} on branch ${h.worktreeBranch}`),r(`done`);else if(e===`keep-kill-tmux`)r(`keeping`),m(`tengu_worktree_kept`,{commits:l,changed_files:o.length}),h.tmuxSessionName&&await D(h.tmuxSessionName),await v(),process.chdir(h.originalCwd),O(h.originalCwd),P(),N.cache.clear?.(),p(`Worktree kept at ${h.worktreePath} on branch ${h.worktreeBranch}. Tmux session terminated.`),r(`done`);else if(e===`remove`||e===`remove-with-tmux`){r(`removing`),m(`tengu_worktree_removed`,{commits:l,changed_files:o.length}),h.tmuxSessionName&&await D(h.tmuxSessionName);try{await j(),process.chdir(h.originalCwd),O(h.originalCwd),P(),N.cache.clear?.()}catch(e){f(`Failed to clean up worktree: ${e}`,{level:`error`}),p(`Worktree cleanup failed, exiting anyway`),r(`done`);return}let e=t?` Tmux session terminated.`:``;l>0&&o.length>0?p(`Worktree removed. ${l} ${l===1?`commit`:`commits`} and uncommitted changes were discarded.${e}`):l>0?p(`Worktree removed. ${l} ${l===1?`commit`:`commits`} on ${h.worktreeBranch} ${l===1?`was`:`were`} discarded.${e}`):o.length>0?p(`Worktree removed. Uncommitted changes were discarded.${e}`):p(`Worktree removed.${e}`),r(`done`)}}if(n===`keeping`)return(0,L.jsxs)(s,{flexDirection:`row`,marginY:1,children:[(0,L.jsx)(x,{}),(0,L.jsx)(i,{children:`Keeping worktree…`})]});if(n===`removing`)return(0,L.jsxs)(s,{flexDirection:`row`,marginY:1,children:[(0,L.jsx)(x,{}),(0,L.jsx)(i,{children:`Removing worktree…`})]});let y=h.worktreeBranch,b=o.length>0,S=l>0,C=``;C=b&&S?`You have ${o.length} uncommitted ${o.length===1?`file`:`files`} and ${l} ${l===1?`commit`:`commits`} on ${y}. All will be lost if you remove.`:b?`You have ${o.length} uncommitted ${o.length===1?`file`:`files`}. These will be lost if you remove the worktree.`:S?`You have ${l} ${l===1?`commit`:`commits`} on ${y}. The branch will be deleted if you remove the worktree.`:`You are working in a worktree. Keep it to continue working there, or remove it to clean up.`;function E(){if(t){t();return}_(`keep`)}let k=b||S?`All changes and commits will be lost.`:`Clean up the worktree directory.`,A=!!h.tmuxSessionName,M=A?[{label:`Keep worktree and tmux session`,value:`keep-with-tmux`,description:`Stays at ${h.worktreePath}. Reattach with: tmux attach -t ${h.tmuxSessionName}`},{label:`Keep worktree, kill tmux session`,value:`keep-kill-tmux`,description:`Keeps worktree at ${h.worktreePath}, terminates tmux session.`},{label:`Remove worktree and tmux session`,value:`remove-with-tmux`,description:k}]:[{label:`Keep worktree`,value:`keep`,description:`Stays at ${h.worktreePath}`},{label:`Remove worktree`,value:`remove`,description:k}];return(0,L.jsx)(a,{title:`Exiting worktree session`,subtitle:C,onCancel:E,children:(0,L.jsx)(T,{defaultFocusValue:A?`keep-with-tmux`:`keep`,options:M,onChange:_})})}var I,L,R=t((()=>{I=n(r(),1),p(),d(),o(),h(),E(),A(),S(),k(),b(),L=c()}));function z(){return u(H)??`Goodbye!`}function B({showWorktree:e,onDone:t,onCancel:n}){async function r(e){t(e??z()),await C(0,`prompt_input_exit`)}return e?(0,V.jsx)(F,{onDone:r,onCancel:n}):null}var V,H,U=t((()=>{l(),r(),M(),R(),V=c(),H=[`Goodbye!`,`See ya!`,`Bye!`,`Catch you later!`]}));export{U as n,B as t};