@sma1lboy/kobe 0.8.148 → 0.8.149
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +3 -3
- package/dist/cli/kobe-run.js +3 -3
- package/dist/cli/rove-run.js +3 -3
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -303,7 +303,7 @@ ${G}
|
|
|
303
303
|
`)}let z=tY0();for(let G of wT()){if(X&&G.vendor==="claude")continue;let W=G.globalSettingsPath();if(!W)continue;await G.installActivityHooks(W,{toolEvents:z}),await G.installWorktreeWatchHook(W)}await zh()}catch{}}function tY0(){try{for(let $ of o4().plugins){if(!$.enabled)continue;try{if(Q6($.root).manifest.events.some((Z)=>Z.on.startsWith("tool.")))return!0}catch{}}}catch{}return!1}async function zh(){let $=rY0();if($.length===0)return;let Z=x5(tm),J=new Set([Qh()]),X=sY0(Z);if(X)J.add(X);for(let z of $)for(let G of J)await z.removeWorktreeSyncHook(G);if(Z!=="off")X6(tm,"off")}async function eY0(){let $=wT().find((J)=>J.vendor==="claude"),Z=$?.globalSettingsPath();if(!$||!Z){process.stdout.write(`rove hook cleanup: no Claude hook adapter \u2014 nothing to do.
|
|
304
304
|
`);return}await $.removeActivityHooks(Z),await $.removeWorktreeWatchHook(Z),process.stdout.write([`rove hook cleanup: removed Rove's settings-managed hooks from ${Z}.`,"Only Rove's own entries were touched; your other hooks are intact.","The Claude Code plugin's hooks.json now carries these events (if the plugin","is not installed, the next Rove launch reinstalls the settings-managed set).",""].join(`
|
|
305
305
|
`))}async function $G0($){await zh(),process.stdout.write(["rove hook setup is deprecated and now a no-op (cleanup only).","","The old external-worktree sync used a global WorktreeCreate hook, which is","a VCS provider hook \u2014 its presence broke `claude --worktree` / EnterWorktree","in every repo. Any hook Rove previously installed has been removed.","","Sync is now automatic: a `claude --worktree` (or any session) started in a","worktree under a repo Rove already tracks is adopted as a task on launch.","To adopt existing worktrees on demand, use the New Task dialog or `rove adopt`.",""].join(`
|
|
306
|
-
`))}var lY0=500,pY0="worktree-created",tm="externalWorktreeSync";var fT=d(()=>{I2();mJ();NZ();ST();ET();C4();P7();u4()});var Pj;var Gh=d(()=>{Pj={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/rove",version:"0.8.
|
|
306
|
+
`))}var lY0=500,pY0="worktree-created",tm="externalWorktreeSync";var fT=d(()=>{I2();mJ();NZ();ST();ET();C4();P7();u4()});var Pj;var Gh=d(()=>{Pj={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/rove",version:"0.8.149",description:"Rove \u2014 the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/kobe.js",rove:"dist/cli/rove.js"},files:["dist/cli","dist/web-ui","dist/skills","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/rove.git"},homepage:"https://github.com/Sma1lboy/rove#readme",bugs:{url:"https://github.com/Sma1lboy/rove/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"ROVE_DEV=1 bun --conditions=browser ./src/cli/rove.ts","dev:kobe":"KOBE_DEV=1 bun --conditions=browser ./src/cli/kobe.ts","dev:mock":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:mock-react":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:mock-react-task-dialogs":"KOBE_DEV=1 bun ./src/tui-react/component/mock-dialogs-host.tsx","dev:mock-react-filetree":"KOBE_DEV=1 bun ./src/tui-react/panes/filetree/mock-host.tsx","dev:mock-react-sidebar":"KOBE_DEV=1 bun ./src/tui-react/panes/sidebar/mock-host.tsx","dev:mock-react-terminal":"KOBE_DEV=1 bun ./src/tui-react/panes/terminal/mock-host.tsx","dev:mock-react-dialogs":"KOBE_DEV=1 bun ./src/tui-react/mock/dialogs-host.tsx","dev:mock-react-workspace":"KOBE_DEV=1 bun ./src/tui-react/workspace/mock-host.tsx","dev:sandbox":"bun run scripts/dev-sandbox.ts run","dev:sandbox:reset":"bun run scripts/dev-sandbox.ts reset",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","perf:golden":"bun scripts/perf-golden.ts","pty:soak":"bun scripts/pty-soak.ts","test:fast":"vitest run --passWithNoTests --minWorkers=1 --maxWorkers=8","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:socket:coverage":"KOBE_INCLUDE_SOCKET=1 KOBE_COVERAGE_DAEMON=1 vitest run test/daemon --coverage --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --pool forks --minWorkers=1 --maxWorkers=1 --retry=2 --passWithNoTests","test:render":"bun test test/render --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage-render",coverage:"vitest run --coverage --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.4.3","@opentui/react":"0.4.3","@xterm/addon-serialize":"^0.14.0","@xterm/addon-unicode11":"^0.9.0","@xterm/headless":"^6.0.0","node-pty":"^1.1.0",react:"^19.2.8",ws:"^8.18.0"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.14","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2","@types/react":"^19.2.0","@vitest/coverage-v8":"2.1.9",knip:"^6.14.2","kobe-web":"workspace:*","react-devtools-core":"^7.0.1",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});var Hh={};A$(Hh,{repoSlug:()=>gY,releasePageUrl:()=>mT,recommendedGlobalInstallCommand:()=>bT,isNewerSemver:()=>yT,fetchReleaseSummaries:()=>WF,fetchReleaseNotesRange:()=>kT,fetchReleaseNotes:()=>vT,compareSemver:()=>V3,checkLatestVersion:()=>bY,breakingVersionsCrossed:()=>GF,UPDATE_SCRIPT_URL:()=>Rj,UPDATE_COMMAND:()=>VZ,PACKAGE_NAME:()=>gT,CURRENT_VERSION:()=>R$,BREAKING_VERSIONS:()=>lJ});function gY(){let $=Pj.repository?.url;if(!$)return null;let Z=$.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!Z||!Z[1]||!Z[2])return null;return`${Z[1]}/${Z[2]}`}function bT(){return`npm install -g ${gT}@latest`}function GF($,Z,J=lJ){let[X,z]=V3($,Z)<=0?[$,Z]:[Z,$];return J.filter((G)=>V3(G,X)>0&&V3(G,z)<=0)}async function JG0($){let Z=new AbortController,J=setTimeout(()=>Z.abort(),Tj);try{let X=$.replace("/","%2F"),z=await fetch(`https://registry.npmjs.org/${X}/latest`,{signal:Z.signal,headers:{accept:"application/json"}});if(!z.ok)return null;let G=await z.json();if(typeof G.version!=="string")return null;return G.version}catch{return null}finally{clearTimeout(J)}}function yT($,Z){return V3($,Z)>0}function V3($,Z){let J=(G)=>G.split("-")[0]??G,X=J($).split(".").map((G)=>Number.parseInt(G,10)),z=J(Z).split(".").map((G)=>Number.parseInt(G,10));for(let G=0;G<3;G++){let W=X[G]??0,H=z[G]??0;if(Number.isNaN(W)||Number.isNaN(H))return 0;if(W>H)return 1;if(W<H)return-1}return 0}async function bY($={}){let Z=process.env.KOBE_FAKE_UPDATE;if(Z)return{current:R$,latest:Z,hasUpdate:yT(Z,R$)};if(TH()&&!$.force)return null;let J=await JG0(gT);if(!J)return null;return{current:R$,latest:J,hasUpdate:yT(J,R$)}}function Wh($){if(typeof $!=="string")return null;return $.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function vT($){let Z=gY();if(!Z)return null;let J=`v${$}`,X=new AbortController,z=setTimeout(()=>X.abort(),Tj);try{let G=await fetch(`https://api.github.com/repos/${Z}/releases/tags/${J}`,{signal:X.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return null;let W=await G.json();if(typeof W.body!=="string"||typeof W.html_url!=="string")return null;return{body:W.body,url:W.html_url,version:$}}catch{return null}finally{clearTimeout(z)}}async function kT($){let Z=gY();if(!Z)return[];let J=$.limit??100,X=new AbortController,z=setTimeout(()=>X.abort(),Tj);try{let G=await fetch(`https://api.github.com/repos/${Z}/releases?per_page=${J}`,{signal:X.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return[];let W=await G.json();if(!Array.isArray(W))return[];return W.map((H)=>{let U=Wh(H.tag_name);if(!U||typeof H.html_url!=="string"||typeof H.body!=="string")return null;if(V3(U,$.current)<=0)return null;if(V3(U,$.latest)>0)return null;return{version:U,url:H.html_url,body:H.body}}).filter((H)=>H!==null)}catch{return[]}finally{clearTimeout(z)}}async function WF($=12){let Z=gY();if(!Z)return[];let J=new AbortController,X=setTimeout(()=>J.abort(),Tj);try{let z=await fetch(`https://api.github.com/repos/${Z}/releases?per_page=${$}`,{signal:J.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!z.ok)return[];let G=await z.json();if(!Array.isArray(G))return[];return G.map((W)=>{let H=Wh(W.tag_name);if(!H||typeof W.html_url!=="string")return null;return{version:H,url:W.html_url}}).filter((W)=>W!==null)}catch{return[]}finally{clearTimeout(X)}}function mT($){let Z=gY();if(!Z)return null;return`https://github.com/${Z}/releases/tag/v${$}`}var R$,gT,Rj="https://raw.githubusercontent.com/Sma1lboy/rove/main/scripts/update.sh",VZ,lJ,Tj=3000;var d8=d(()=>{Gh();V5();R$=Pj.version,gT=Pj.name;VZ=`curl -fsSL ${Rj} | sh`;lJ=[]});var Uh={};A$(Uh,{stampResetGate:()=>Sj,resetGateBlockers:()=>qh,enforceResetGate:()=>uT,LAST_RUN_VERSION_KEY:()=>hT});function qh($,Z=R$,J=lJ){if(typeof $!=="string"||$.length===0)return[];let[X,z]=V3($,Z)<=0?[$,Z]:[Z,$];return J.filter((G)=>V3(G,X)>0&&V3(G,z)<=0)}function uT(){let $=$$(),Z=L4()[hT],J=qh(Z);if(J.length>0){let X=typeof Z==="string"?Z:"unknown";console.error([`${$} ${R$}: cannot start \u2014 version ${J.join(", ")} introduced breaking changes`,`(last run: ${X}). Your daemon/session state may be incompatible.`,"","Run:",` ${$} reset # stop daemon + PTY host + sessions (tasks kept)`,` ${$} reset --hard # additionally wipe the task index + UI state`,"","Then relaunch Rove. Worktrees are never touched."].join(`
|
|
307
307
|
`)),process.exit(1)}if(Z!==R$)Sj()}function Sj(){try{E2({[hT]:R$})}catch{}}var hT="app.lastRunVersion";var Ij=d(()=>{w2();d8();u4()});import{existsSync as Kh,readFileSync as XG0}from"fs";import{homedir as QG0}from"os";import{join as Fh,resolve as Bh}from"path";import{fileURLToPath as zG0}from"url";function lT($=process.env){return`${$$($)} skill install`}function Ej(){let $=zG0(import.meta.url);return[Bh($,"../../../../../.agents/skills/kobe"),Bh($,"../../skills/rove")].find((J)=>Kh(Fh(J,"SKILL.md")))??null}function wj($={}){let Z=$.source!==void 0?$.source:Ej(),J=$.agent===void 0?[]:typeof $.agent==="string"?[$.agent]:$.agent;return["skills","add",Z??GG0,"--skill",e3,...$.global===!1?[]:["--global"],...J.flatMap((X)=>["--agent",X])]}function vY($={}){return`npx ${wj($).join(" ")}`}async function pT($,Z){return await Bun.spawn(["npx",...wj({...$===void 0?{}:{agent:$},global:Z})],{stdin:"inherit",stdout:"inherit",stderr:"inherit"}).exited}function xj($={}){let Z=$.home??QG0(),J=$.cwd??process.cwd();return[Z,J].flatMap((X)=>YG0.map((z)=>Fh(X,z)))}function WG0($){let Z=$.match(/(?:rove|kobe)-skill-version:\s*(\d+)/);return Z?Number.parseInt(Z[1],10):null}function HF($){let Z=xj($).find((z)=>Kh(z));if(!Z)return{installed:!1,installedVersion:null,currentVersion:cT,stale:!1};let J=null;try{J=WG0(XG0(Z,"utf8"))}catch{J=null}let X=J===null||J<cT;return{installed:!0,installedVersion:J,currentVersion:cT,stale:X}}function HG0(){return new Promise(($)=>{process.stdin.resume(),process.stdin.once("data",(Z)=>{process.stdin.pause(),$(String(Z))})})}async function Mh($={}){let{isRovePluginEnabled:Z}=await Promise.resolve().then(() => (Aj(),Dj));if(Z())return;let J=$$(),X=lT(),z=HF();if(!z.installed){if(x5(dT)==="1")return;X6(dT,"1"),process.stderr.write(`
|
|
308
308
|
${J}: the Rove agent skill isn't installed \u2014 install it so your coding agent can drive Rove via \`${J} api\`:
|
|
309
309
|
${X}
|
|
@@ -736,7 +736,7 @@ ${iB0(J??'"$ROVE_TASK_ID"',void 0,$.spawnerTaskId)}`};let X=Z.initPrompt?.trim()
|
|
|
736
736
|
${J}`}async function jr($){try{let Z=Bun.spawn($,{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),J=await new Response(Z.stdout).text();return await Z.exited===0?J:null}catch{return null}}async function h_(){if(process.platform==="darwin"){let $=await jr(["osascript","-e","get POSIX path of (the clipboard as \xABclass furl\xBB)"]),Z=$?Cr($):null;if(Z)return Z;let J=Vr();return await jr(["osascript","-e","set png_data to (the clipboard as \xABclass PNGf\xBB)","-e",`set fp to open for access POSIX file "${J}" with write permission`,"-e","write png_data to fp","-e","close access fp"])!==null&&Zw(J)?J:null}if(process.platform==="linux"){for(let $ of[["wl-paste","--type","image/png"],["xclip","-selection","clipboard","-t","image/png","-o"]])try{let Z=Bun.spawn($,{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),J=new Uint8Array(await new Response(Z.stdout).arrayBuffer());if(await Z.exited===0&&J.length>0){let X=Vr();return zF0(X,J),X}}catch{}return null}return null}function Vr(){let $=Og();QF0($,{recursive:!0});let Z=new Date().toISOString().slice(0,10).replaceAll("-","");return GF0($,`paste-${Z}-${_r(4).toString("hex")}.png`)}var WF0,HF0;var QU=d(()=>{V5();WF0=/\.(png|jpe?g|gif|webp|pdf)$/i,HF0=/\.pdf$/i});function Pr($,Z,J,X=$){return{repoLabel:U6($),engines:Z,defaultVendor:J,defaultBaseRef:Eq(X)??Eq($)??l8,engineLabel:y5}}function Jw($,Z){let J=BZ($);if(Z.length===0||Z.includes(J))return J;return Z[0]??J}async function BF0($,Z,J,X){return fJ(Z,X),SY(Z),$.createTask({repo:Z,baseRef:J,vendor:X})}async function KF0($,Z,J,X){try{let z=await BF0($,Z,J.baseRef,J.vendor);return X.selectTask(z.id),await X.enterTask(z.id),z.id}catch(z){console.error("[rove workspace] quick-fork task.create failed:",z),X.notifyError(`Couldn't fork task: ${M1(z)}`);return}}function Rr($,Z){let[J,X]=Ar.useState(null);async function z(W,H){let U=await KF0($,W,H,Z);if(U)X({taskId:U,prompt:Dr(H.prompt,H.attachments)})}function G(W){return W&&J?.taskId===W?J.prompt:void 0}return{onQuickFork:(W,H)=>void z(W,H),initialPromptFor:G}}var Ar;var u_=d(()=>{L7();C4();yJ();QU();sQ();i8();Ar=z1(q1(),1)});function FF0($){let Z=$.match(/^(?:images|pdf)\[\d+\]:/gm);return Z?Z.length:0}function Tr($,Z){let J=$.replace(/\s+$/,""),X=FF0($);for(let z of Z){let G=`${JM(z,X)}: ${z}`;J=J.length>0?`${J}
|
|
737
737
|
${G}`:G,X+=1}return J}function Xw($){return`#${$.id} ${$.title}`}function Sr($){let Z=[`Work on user story #${$.id}: ${$.title}`,""],J=$.body.trim();if(J)Z.push(J,"");return Z}function Ir($,Z="rove api"){return[...Sr($),"Treat this as the story's dedicated Rove task session: work only in this task worktree, and preserve any repo init instructions already delivered to the session.","Before finishing, verify the acceptance criteria implied by the story and summarize what changed plus any verification still needed.","Then merge the task branch back into the current project's main branch after the worktree is clean and checks pass.",`When the work lands, run: ${Z} issue-set-status --repo . --id ${$.id} --status done`].join(`
|
|
738
738
|
`)}function Er($,Z="rove api"){return[...Sr($),"You are working directly in the project checkout \u2014 no dedicated worktree or branch was created. Keep changes reviewable and do not switch branches unless asked.","Before finishing, verify the acceptance criteria implied by the story and summarize what changed plus any verification still needed.",`When the work lands, run: ${Z} issue-set-status --repo . --id ${$.id} --status done`].join(`
|
|
739
|
-
`)}var LG;var c_=d(()=>{QU();LG=["worktree","projectWorktree","project"]});function NG($,Z=Date.now()){let J=Math.max(0,Math.floor((Z-$)/1000));if(J<60)return`${J}s`;let X=Math.floor(J/60);if(X<60)return`${X}m`;let z=Math.floor(X/60);if(z<24)return`${z}h`;return`${Math.floor(z/24)}d`}var d_=()=>{};function XM($){return typeof $==="string"?$:""}function LF0($){let Z=$.detail;if(!Z)return"";let{tool:J,compact:X,subagent:z}=Z,G=XM(J?.name)||XM(X?.trigger)||XM(z?.type)||XM(Z.note);return CZ(G,MF0)}function wr($,Z,J=Qw){return $.slice(-J).reverse().map((X,z)=>{let G=[LF0(X),XM(X.vendor)].filter((W)=>W.length>0);return{key:`${X.at}:${z}`,age:NG(X.at,Z),kind:X.kind,tail:G.join(" \xB7 ")}})}var Qw=12,MF0=40;var xr=d(()=>{d_()});import{TextAttributes as zw}from"@opentui/core";function Yw($){let{theme:Z}=d0();return R.jsxDEV("box",{flexDirection:"row",gap:2,children:[R.jsxDEV("text",{fg:$.focused?Z.primary:Z.textMuted,attributes:$.focused?zw.BOLD|zw.UNDERLINE:zw.BOLD,wrapMode:"none",children:$.label},void 0,!1,void 0,this),$.hint?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:$.hint},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function fr($){let{theme:Z}=d0(),J=e0(),[X,z]=l_.useState(null);return l_.useEffect(()=>{let G=$.orchestrator;if(!G){z([]);return}let W=!0;return G.recentTaskEvents($.taskId).then((H)=>{if(W)z(wr(H.events,Date.now(),Qw))}).catch(()=>{if(W)z([])}),()=>{W=!1}},[$.orchestrator,$.taskId]),R.jsxDEV("box",{gap:0,children:[R.jsxDEV(Yw,{label:J("kanban.detail.eventsLabel"),focused:!1},void 0,!1,void 0,this),X===null?R.jsxDEV("text",{fg:Z.textMuted,children:J("kanban.detail.eventsLoading")},void 0,!1,void 0,this):X.length===0?R.jsxDEV("text",{fg:Z.textMuted,children:J("kanban.detail.eventsNone")},void 0,!1,void 0,this):X.map((G)=>R.jsxDEV("box",{flexDirection:"row",gap:1,children:[R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:G.age.padStart(NF0)},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.text,wrapMode:"none",children:G.kind},void 0,!1,void 0,this),G.tail?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:["\xB7 ",G.tail]},void 0,!0,void 0,this):null]},G.key,!0,void 0,this))]},void 0,!0,void 0,this)}var l_,NF0=4;var yr=d(async()=>{X$();xr();a0();await Z$();l_=z1(q1(),1)});import{TextAttributes as OG}from"@opentui/core";function jF0($){let Z=o$(),{theme:J}=d0(),X=e0(),z=M7(),G=$.issue,W=$.mode==="create",H=!W&&G.taskId&&G.taskId!==""?G.taskId:null,U=W||!H&&G.status!=="done",[B,M]=BX.useState($.defaultVendor),[O,L]=BX.useState(LG[0]??"worktree"),[j,A]=BX.useState(!1),[C,_]=BX.useState(G.title),[b,E]=BX.useState(G.body),[I,T]=BX.useState(W?"title":U?"workspace":H?"open":"title"),w=BX.useRef(null),y=U?["title","description","engine","workspace","jump"]:H?["title","description","open"]:["title","description"];function f(l){if(l.length===0)return;let n=Tr(w.current?.plainText??b,l);w.current?.setText(n),E(n)}hj((l)=>{let n=XU(new TextDecoder().decode(l.bytes));if(!n)return;l.preventDefault(),f(n)});function h(){h_().then((l)=>{if(l)f([l])})}function p(l){T((n)=>{let Y0=Math.max(0,y.indexOf(n));return y[(Y0+l+y.length)%y.length]??"title"})}function m(l){let n=$.engines;if(n.length===0)return;M((Y0)=>{let Z0=Math.max(0,n.indexOf(Y0));return n[(Z0+l+n.length)%n.length]??Y0})}function t(l){L((n)=>{let Y0=LG.indexOf(n);return LG[(Y0+l+LG.length)%LG.length]??n})}function s(){return{title:C.trim()||G.title,body:w.current?.plainText??b}}function G0(){if(C.trim().length>0)return!0;return T("title"),!1}function U0(){if(W){if(!G0())return;$.onSubmit({kind:"create",start:{vendor:B,placement:O,jump:j},...s()})}else if(U)$.onSubmit({kind:"start",vendor:B,placement:O,jump:j,...s()});else if(H)$.onSubmit({kind:"open",taskId:H,...s()});else return;Z.clear()}function F0(){if(!W||!G0())return;$.onSubmit({kind:"create",start:null,...s()}),Z.clear()}function B0(){if(W)$.onCancel();else $.onSubmit({kind:"close",...s()});Z.clear()}b1(()=>({bindings:[{key:"escape",cmd:()=>B0()},{key:"tab",cmd:()=>p(1)},{key:"shift+tab",cmd:()=>p(-1)},{key:"ctrl+return",cmd:()=>U0()},...W?[{key:"ctrl+s",cmd:()=>F0()}]:[],{key:"ctrl+v",cmd:()=>h()},...I==="engine"?[{key:"left",cmd:()=>m(-1)},{key:"right",cmd:()=>m(1)},{key:"return",cmd:()=>U0()}]:[],...I==="workspace"?[{key:"up",cmd:()=>t(-1)},{key:"down",cmd:()=>t(1)},{key:"return",cmd:()=>U0()}]:[],...I==="jump"?[{key:"left",cmd:()=>A((l)=>!l)},{key:"right",cmd:()=>A((l)=>!l)},{key:"return",cmd:()=>U0()}]:[],...I==="open"?[{key:"return",cmd:()=>U0()}]:[]]}));let W0=G.status==="done"?J.success:G.status==="hold"?J.warning:G.status==="doing"?J.accent:J.textMuted,k=(l,n,Y0)=>R.jsxDEV(Yw,{label:l,hint:Y0,focused:n!==null&&I===n},void 0,!1,void 0,this),i=(l)=>I===l?J.primary:J.borderSubtle;return R.jsxDEV("box",{paddingLeft:z,paddingRight:z,gap:1,children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:[W?R.jsxDEV("text",{fg:J.text,attributes:OG.BOLD,wrapMode:"none",children:X("kanban.detail.newStory")},void 0,!1,void 0,this):R.jsxDEV("box",{flexDirection:"row",gap:2,children:[R.jsxDEV("text",{fg:J.textMuted,attributes:OG.BOLD,wrapMode:"none",children:["#",G.id]},void 0,!0,void 0,this),R.jsxDEV("text",{fg:W0,attributes:OG.BOLD,wrapMode:"none",children:X(`kanban.detail.status.${G.status}`)},void 0,!1,void 0,this),R.jsxDEV("text",{fg:J.textMuted,wrapMode:"none",children:X("kanban.detail.created",{date:G.created})},void 0,!1,void 0,this),H?R.jsxDEV("text",{fg:J.accent,wrapMode:"none",children:X("kanban.detail.linked")},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),R.jsxDEV("text",{fg:J.textMuted,wrapMode:"none",onMouseUp:()=>B0(),children:"esc"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{gap:0,children:[k(X("kanban.detail.titleLabel"),"title"),R.jsxDEV("box",{border:!0,borderColor:i("title"),backgroundColor:J.backgroundElement,paddingLeft:1,paddingRight:1,children:R.jsxDEV("input",{value:C,focused:I==="title",onMouseUp:()=>T("title"),onInput:(l)=>_(r5(l)),onSubmit:()=>T("description")},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{gap:0,children:[k(X("kanban.detail.description"),"description",X("kanban.detail.attachHint")),R.jsxDEV("box",{border:!0,borderColor:i("description"),backgroundColor:J.backgroundElement,paddingLeft:1,paddingRight:1,children:R.jsxDEV("textarea",{ref:(l)=>{w.current=l},initialValue:G.body,placeholder:X("kanban.detail.noDescription"),focused:I==="description",height:OF0,wrapMode:"word",onMouseUp:()=>T("description"),onContentChange:()=>E(w.current?.plainText??"")},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),U?R.jsxDEV("box",{gap:0,children:[R.jsxDEV("box",{gap:0,children:[k(X("kanban.detail.engine"),"engine","\u2190/\u2192"),R.jsxDEV("box",{flexDirection:"row",gap:1,children:$.engines.map((l)=>{let n=l===B;return R.jsxDEV("box",{border:!0,borderColor:n?J.primary:J.borderSubtle,paddingLeft:2,paddingRight:2,paddingBottom:1,onMouseUp:()=>{T("engine"),M(l)},children:R.jsxDEV("text",{fg:n?J.primary:J.textMuted,attributes:n?OG.BOLD:void 0,wrapMode:"none",children:$.engineLabel(l)},void 0,!1,void 0,this)},l,!1,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{gap:0,paddingBottom:1,children:[k(X("kanban.detail.workspace"),"workspace","\u2191/\u2193"),R.jsxDEV("box",{border:!0,borderColor:i("workspace"),backgroundColor:J.backgroundElement,paddingLeft:1,paddingRight:1,children:LG.map((l)=>{let n=l===O;return R.jsxDEV("text",{fg:n?J.primary:J.textMuted,attributes:n?OG.BOLD:void 0,onMouseUp:()=>{T("workspace"),L(l)},children:[n?"\u25B8 ":" ",X(`kanban.detail.placement.${l}`)]},l,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{gap:0,paddingBottom:1,children:[k(X("kanban.detail.jumpLabel"),"jump","\u2190/\u2192"),R.jsxDEV("box",{flexDirection:"row",gap:1,children:[!1,!0].map((l)=>{let n=l===j;return R.jsxDEV("box",{border:!0,borderColor:n?J.primary:J.borderSubtle,paddingLeft:2,paddingRight:2,onMouseUp:()=>{T("jump"),A(l)},children:R.jsxDEV("text",{fg:n?J.primary:J.textMuted,attributes:n?OG.BOLD:void 0,wrapMode:"none",children:X(l?"kanban.detail.jump.follow":"kanban.detail.jump.stay")},void 0,!1,void 0,this)},String(l),!1,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{paddingBottom:1,children:R.jsxDEV("text",{fg:J.textMuted,children:W?X("kanban.detail.createLegend"):X("kanban.detail.startLegend")},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):H?R.jsxDEV("box",{gap:1,children:[R.jsxDEV("box",{gap:0,children:[k(X("kanban.detail.sessionLabel"),"open"),R.jsxDEV("box",{flexDirection:"row",children:R.jsxDEV("box",{border:!0,borderColor:I==="open"?J.primary:J.borderSubtle,paddingLeft:2,paddingRight:2,onMouseUp:()=>{T("open"),U0()},children:R.jsxDEV("text",{fg:I==="open"?J.primary:J.text,attributes:I==="open"?OG.BOLD:void 0,wrapMode:"none",children:X("kanban.detail.openAction")},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV(fr,{taskId:H,orchestrator:$.orchestrator??null},void 0,!1,void 0,this),R.jsxDEV("box",{paddingBottom:1,children:R.jsxDEV("text",{fg:J.textMuted,children:X("kanban.detail.openLegend")},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):R.jsxDEV("box",{paddingBottom:1,children:R.jsxDEV("text",{fg:J.textMuted,children:X("kanban.detail.doneNote")},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function VF0($,Z){return k2($,(J)=>R.jsxDEV(jF0,{...Z,onSubmit:(X)=>J(X),onCancel:()=>J(void 0)},void 0,!1,void 0,this),{size:"large"})}var BX,OF0=8,Gw;var gr=d(async()=>{c_();p8();QU();X$();a0();await J$([v4(),Z$(),D4(),C5(),yr()]);BX=z1(q1(),1);Gw={show:VF0}});import{TextAttributes as _F0}from"@opentui/core";function br($){let{theme:Z,transparentBackground:J}=d0(),X=e0(),{issue:z,column:G,selected:W}=$,H=J?Z.border:Z.borderSubtle,U=G==="done"?Z.textMuted:Z.text,B=z.body.trim(),M=$.activity?CF0[$.activity]:void 0,O=eE($.activity),L={accent:Z.accent,warning:Z.warning,error:Z.error,success:Z.success};return R.jsxDEV("box",{border:!0,borderColor:W?Z.primary:O?Z.warning:H,backgroundColor:Z.backgroundElement,paddingLeft:1,paddingRight:1,onMouseUp:()=>W?$.onOpen():$.onSelect(),children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:[R.jsxDEV("text",{fg:U,attributes:_F0.BOLD,wrapMode:"word",flexShrink:1,children:z.title},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:["#",z.id]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{height:2,overflow:"hidden",children:B?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"word",children:B},void 0,!1,void 0,this):null},void 0,!1,void 0,this),R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:[R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:z.created},void 0,!1,void 0,this),M?R.jsxDEV("text",{fg:L[M.tone],wrapMode:"none",children:X(M.labelKey)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var CF0;var vr=d(async()=>{$w();X$();a0();await Z$();CF0={running:{labelKey:"tasks.status.working",tone:"accent"},turn_complete:{labelKey:"kanban.turnComplete",tone:"success"},rate_limited:{labelKey:"tasks.activity.rateLimited",tone:"warning"},permission_needed:{labelKey:"tasks.activity.permissionNeeded",tone:"warning"},error:{labelKey:"tasks.activity.error",tone:"error"}}});import{TextAttributes as p_}from"@opentui/core";function kr($){let{theme:Z,transparentBackground:J}=d0(),X=J?Z.border:Z.borderSubtle,z=e0(),G=o$(),[W,H]=KX.useState(null),[U,B]=KX.useState([]);KX.useEffect(()=>{let k=!1;return jZ().then((i)=>{if(!k)B(i)}),()=>{k=!0}},[]);let[M,O]=KX.useState(0),[L,j]=KX.useState(null);KX.useEffect(()=>{let k=!1,i=$.orchestrator;if(!i){H([]);return}let l=[...new Set(i.listTasks().map((Y0)=>Y0.repo))];Promise.all(l.map((Y0)=>i.listIssues(Y0).catch(()=>null))).then((Y0)=>{if(k)return;let Z0=Y0.filter((D0)=>D0!==null);Z0.sort((D0,u0)=>D0.repoRoot.localeCompare(u0.repoRoot)),H(Z0);let a=(D0)=>D0.replace(/^\/private\//,"/").replace(/\/+$/,""),$0=i.activeTaskSignal().get(),O0=$.focusTask?.repo??i.listTasks().find((D0)=>D0.id===$0)?.repo,Q0=O0?Z0.find((D0)=>a(D0.repoRoot)===a(O0)):void 0;j((D0)=>D0??Q0?.repoRoot??null);let w0=$.focusTask?.id,b0=w0?Q0?.issues.find((D0)=>D0.taskId===w0):void 0;if(b0)w((D0)=>D0??b0.id)});let n=setInterval(()=>O((Y0)=>Y0+1),DF0);return()=>{k=!0,clearInterval(n)}},[$.orchestrator,M]);let A=W??[],C=Math.max(0,A.findIndex((k)=>k.repoRoot===L)),_=A[C],b=A.map((k)=>k.repoRoot),{columns:E,attentionCount:I}=Nr(_?Or(_.issues):[],(k)=>$.engineStates?.get(k)?.state),[T,w]=KX.useState(null);function y(k){if(A.length===0)return;let i=(C+k+A.length)%A.length;j(A[i]?.repoRoot??null),w(null)}function f(k){let i=Lr(E,T,k);if(i!=null)w(i)}function h(k){if(E.some((i)=>i.issues.length>0))f(k);else y(k==="left"?-1:1)}function p(k){let i=_;if(!i)return;w(k.id),Gw.show(G,{issue:k,engines:U,defaultVendor:Jw(i.repoRoot,U),engineLabel:y5,orchestrator:$.orchestrator}).then(async(l)=>{if(!l)return;let n={title:l.title,body:l.body};if(n.title!==k.title||n.body!==k.body)await $.orchestrator?.mutateIssue(i.repoRoot,{type:"update",id:k.id,...n}).catch((Y0)=>console.error("[rove kanban] issue update failed:",Y0)),O((Y0)=>Y0+1);if(l.kind==="open"){$.onOpenTask(l.taskId);return}if(l.kind!=="start")return;$.onStartChat({repoRoot:i.repoRoot,issue:{...k,...n},vendor:l.vendor,placement:l.placement,jump:l.jump})})}function m(){let k=_?.issues.find((i)=>i.id===T);if(k)p(k)}function t(){let k=_;if(!k)return;let i={id:k.nextId,title:"",status:"open",created:new Date().toISOString().slice(0,10),body:""};Gw.show(G,{issue:i,mode:"create",engines:U,defaultVendor:Jw(k.repoRoot,U),engineLabel:y5}).then(async(l)=>{if(!l||l.kind!=="create")return;let n=$.orchestrator;if(!n)return;try{let Y0=await n.mutateIssue(k.repoRoot,{type:"create",title:l.title,body:l.body});if(O((a)=>a+1),!l.start)return;let Z0=Y0.issues.find((a)=>a.id===k.nextId)??Y0.issues.reduce((a,$0)=>a&&a.id>$0.id?a:$0,null);if(!Z0)return;$.onStartChat({repoRoot:k.repoRoot,issue:Z0,vendor:l.start.vendor,placement:l.start.placement,jump:l.start.jump})}catch(Y0){console.error("[rove kanban] issue create failed:",Y0)}})}function s(){let k=_,i=k?.issues.find((l)=>l.id===T);if(!k||!i)return;O4.show(G,z("kanban.confirmDelete.title",{id:String(i.id)}),z("kanban.confirmDelete.body",{title:i.title})).then((l)=>{if(!l)return;$.orchestrator?.mutateIssue(k.repoRoot,{type:"delete",id:i.id}).then(()=>{w(null),O((n)=>n+1)}).catch((n)=>console.error("[rove kanban] issue delete failed:",n))})}b1(()=>({enabled:G.stack.length===0&&$.focused!==!1,bindings:[...s7($.onClose),{key:"r",cmd:()=>O((k)=>k+1)},{key:"tab",cmd:()=>y(1)},{key:"up",cmd:()=>f("up")},{key:"down",cmd:()=>f("down")},{key:"right",cmd:()=>h("right")},{key:"left",cmd:()=>h("left")},{key:"return",cmd:()=>m()},{key:"n",cmd:()=>t()},{key:"d",cmd:()=>s()}]}));let G0={backlog:Z.textMuted,in_progress:Z.accent,parked:Z.warning,done:Z.success};function U0(k,i){let n=(i==="in_progress"||i==="parked")&&k.taskId?$.engineStates?.get(k.taskId)?.state:void 0;return R.jsxDEV(br,{issue:k,column:i,selected:k.id===T,activity:n,onSelect:()=>w(k.id),onOpen:()=>p(k)},k.id,!1,void 0,this)}function F0(k){return R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",paddingTop:1,paddingLeft:3,paddingRight:3,children:[R.jsxDEV("box",{flexDirection:"row",onMouseUp:()=>y(1),children:[R.jsxDEV("text",{fg:Z.primary,attributes:p_.BOLD,wrapMode:"none",children:_9(k.repoRoot,b)},void 0,!1,void 0,this),A.length>1?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:[" ",C+1,"/",A.length]},void 0,!0,void 0,this):null,R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",flexShrink:1,children:[" ",k.repoRoot]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),k.issues.length===0?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:z("kanban.empty")},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function B0(){return R.jsxDEV("box",{flexDirection:"row",gap:1,flexGrow:1,paddingTop:1,paddingLeft:1,paddingRight:1,children:E.map((k)=>R.jsxDEV("box",{flexGrow:1,flexBasis:0,border:!0,borderColor:X,paddingLeft:1,paddingRight:1,children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:[R.jsxDEV("text",{fg:G0[k.key],attributes:p_.BOLD,wrapMode:"none",children:[z(AF0[k.key])," (",k.issues.length+k.hiddenCount,")"]},void 0,!0,void 0,this),k.key==="in_progress"&&I>0?R.jsxDEV("text",{fg:Z.warning,attributes:p_.BOLD,wrapMode:"none",children:z("kanban.attention",{count:String(I)})},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),R.jsxDEV("scrollbox",{flexGrow:1,gap:1,paddingTop:1,verticalScrollbarOptions:{trackOptions:{foregroundColor:"transparent"}},children:[k.issues.map((i)=>U0(i,k.key)),k.hiddenCount>0?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:z("kanban.more",{count:String(k.hiddenCount)})},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},k.key,!0,void 0,this))},void 0,!1,void 0,this)}let W0=W===null;return R.jsxDEV("box",{flexGrow:1,backgroundColor:Z.background,paddingTop:1,paddingBottom:1,children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",paddingLeft:3,paddingRight:3,children:[R.jsxDEV("text",{attributes:p_.BOLD,fg:Z.text,children:z("kanban.title")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,children:z("kanban.hint")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W0?R.jsxDEV("text",{fg:Z.textMuted,paddingLeft:3,children:z("kanban.loading")},void 0,!1,void 0,this):A.length===0||!_?R.jsxDEV("text",{fg:Z.textMuted,paddingLeft:3,children:z("kanban.noRepos")},void 0,!1,void 0,this):R.jsxDEV(R.Fragment,{children:[F0(_),B0()]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var KX,DF0=5000,AF0;var mr=d(async()=>{cJ();L7();$w();i8();X$();u_();a0();await J$([Z$(),D4(),C5(),TZ(),gr(),vr()]);KX=z1(q1(),1),AF0={backlog:"kanban.column.backlog",in_progress:"kanban.column.inProgress",parked:"kanban.column.parked",done:"kanban.column.done"}});import{spawnSync as PF0}from"child_process";function RF0(){if(!process.stdin.isTTY)return Promise.resolve();return new Promise(($)=>{let Z=process.stdin,J=()=>{Z.off("data",J),Z.setRawMode?.(!1),Z.pause(),$()};Z.setRawMode?.(!0),Z.resume(),Z.once("data",J)})}async function n_($){$.renderer?.destroy(),process.stdout.write(`
|
|
739
|
+
`)}var LG;var c_=d(()=>{QU();LG=["worktree","projectWorktree","project"]});function NG($,Z=Date.now()){let J=Math.max(0,Math.floor((Z-$)/1000));if(J<60)return`${J}s`;let X=Math.floor(J/60);if(X<60)return`${X}m`;let z=Math.floor(X/60);if(z<24)return`${z}h`;return`${Math.floor(z/24)}d`}var d_=()=>{};function XM($){return typeof $==="string"?$:""}function LF0($){let Z=$.detail;if(!Z)return"";let{tool:J,compact:X,subagent:z}=Z,G=XM(J?.name)||XM(X?.trigger)||XM(z?.type)||XM(Z.note);return CZ(G,MF0)}function wr($,Z,J=Qw){return $.slice(-J).reverse().map((X,z)=>{let G=[LF0(X),XM(X.vendor)].filter((W)=>W.length>0);return{key:`${X.at}:${z}`,age:NG(X.at,Z),kind:X.kind,tail:G.join(" \xB7 ")}})}var Qw=12,MF0=40;var xr=d(()=>{d_()});import{TextAttributes as zw}from"@opentui/core";function Yw($){let{theme:Z}=d0();return R.jsxDEV("box",{flexDirection:"row",gap:2,children:[R.jsxDEV("text",{fg:$.focused?Z.primary:Z.textMuted,attributes:$.focused?zw.BOLD|zw.UNDERLINE:zw.BOLD,wrapMode:"none",children:$.label},void 0,!1,void 0,this),$.hint?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:$.hint},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function fr($){let{theme:Z}=d0(),J=e0(),[X,z]=l_.useState(null);return l_.useEffect(()=>{let G=$.orchestrator;if(!G){z([]);return}let W=!0;return G.recentTaskEvents($.taskId).then((H)=>{if(W)z(wr(H.events,Date.now(),Qw))}).catch(()=>{if(W)z([])}),()=>{W=!1}},[$.orchestrator,$.taskId]),R.jsxDEV("box",{gap:0,children:[R.jsxDEV(Yw,{label:J("kanban.detail.eventsLabel"),focused:!1},void 0,!1,void 0,this),X===null?R.jsxDEV("text",{fg:Z.textMuted,children:J("kanban.detail.eventsLoading")},void 0,!1,void 0,this):X.length===0?R.jsxDEV("text",{fg:Z.textMuted,children:J("kanban.detail.eventsNone")},void 0,!1,void 0,this):X.map((G)=>R.jsxDEV("box",{flexDirection:"row",gap:1,children:[R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:G.age.padStart(NF0)},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.text,wrapMode:"none",children:G.kind},void 0,!1,void 0,this),G.tail?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:["\xB7 ",G.tail]},void 0,!0,void 0,this):null]},G.key,!0,void 0,this))]},void 0,!0,void 0,this)}var l_,NF0=4;var yr=d(async()=>{X$();xr();a0();await Z$();l_=z1(q1(),1)});import{TextAttributes as OG}from"@opentui/core";function jF0($){let Z=o$(),{theme:J}=d0(),X=e0(),z=M7(),G=$.issue,W=$.mode==="create",H=!W&&G.taskId&&G.taskId!==""?G.taskId:null,U=W||!H&&G.status!=="done",[B,M]=BX.useState($.defaultVendor),[O,L]=BX.useState(LG[0]??"worktree"),[j,A]=BX.useState(!1),[C,_]=BX.useState(G.title),[b,E]=BX.useState(G.body),[I,T]=BX.useState(W?"title":U?"workspace":H?"open":"title"),w=BX.useRef(null),y=U?["title","description","engine","workspace","jump"]:H?["title","description","open"]:["title","description"];function f(l){if(l.length===0)return;let n=Tr(w.current?.plainText??b,l);w.current?.setText(n),E(n)}hj((l)=>{let n=XU(new TextDecoder().decode(l.bytes));if(!n)return;l.preventDefault(),f(n)});function h(){h_().then((l)=>{if(l)f([l])})}function p(l){T((n)=>{let Y0=Math.max(0,y.indexOf(n));return y[(Y0+l+y.length)%y.length]??"title"})}function m(l){let n=$.engines;if(n.length===0)return;M((Y0)=>{let Z0=Math.max(0,n.indexOf(Y0));return n[(Z0+l+n.length)%n.length]??Y0})}function t(l){L((n)=>{let Y0=LG.indexOf(n);return LG[(Y0+l+LG.length)%LG.length]??n})}function s(){return{title:C.trim()||G.title,body:w.current?.plainText??b}}function G0(){if(C.trim().length>0)return!0;return T("title"),!1}function U0(){if(W){if(!G0())return;$.onSubmit({kind:"create",start:{vendor:B,placement:O,jump:j},...s()})}else if(U)$.onSubmit({kind:"start",vendor:B,placement:O,jump:j,...s()});else if(H)$.onSubmit({kind:"open",taskId:H,...s()});else return;Z.clear()}function F0(){if(!W||!G0())return;$.onSubmit({kind:"create",start:null,...s()}),Z.clear()}function B0(){if(W)$.onCancel();else $.onSubmit({kind:"close",...s()});Z.clear()}b1(()=>({bindings:[{key:"escape",cmd:()=>B0()},{key:"tab",cmd:()=>p(1)},{key:"shift+tab",cmd:()=>p(-1)},{key:"ctrl+return",cmd:()=>U0()},...W?[{key:"ctrl+s",cmd:()=>F0()}]:[],{key:"ctrl+v",cmd:()=>h()},...I==="engine"?[{key:"left",cmd:()=>m(-1)},{key:"right",cmd:()=>m(1)},{key:"return",cmd:()=>U0()}]:[],...I==="workspace"?[{key:"up",cmd:()=>t(-1)},{key:"down",cmd:()=>t(1)},{key:"return",cmd:()=>U0()}]:[],...I==="jump"?[{key:"left",cmd:()=>A((l)=>!l)},{key:"right",cmd:()=>A((l)=>!l)},{key:"return",cmd:()=>U0()}]:[],...I==="open"?[{key:"return",cmd:()=>U0()}]:[]]}));let W0=G.status==="done"?J.success:G.status==="hold"?J.warning:G.status==="doing"?J.accent:J.textMuted,k=(l,n,Y0)=>R.jsxDEV(Yw,{label:l,hint:Y0,focused:n!==null&&I===n},void 0,!1,void 0,this),i=(l)=>I===l?J.primary:J.borderSubtle;return R.jsxDEV("box",{paddingLeft:z,paddingRight:z,gap:1,children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:[W?R.jsxDEV("text",{fg:J.text,attributes:OG.BOLD,wrapMode:"none",children:X("kanban.detail.newStory")},void 0,!1,void 0,this):R.jsxDEV("box",{flexDirection:"row",gap:2,children:[R.jsxDEV("text",{fg:J.textMuted,attributes:OG.BOLD,wrapMode:"none",children:["#",G.id]},void 0,!0,void 0,this),R.jsxDEV("text",{fg:W0,attributes:OG.BOLD,wrapMode:"none",children:X(`kanban.detail.status.${G.status}`)},void 0,!1,void 0,this),R.jsxDEV("text",{fg:J.textMuted,wrapMode:"none",children:X("kanban.detail.created",{date:G.created})},void 0,!1,void 0,this),H?R.jsxDEV("text",{fg:J.accent,wrapMode:"none",children:X("kanban.detail.linked")},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),R.jsxDEV("text",{fg:J.textMuted,wrapMode:"none",onMouseUp:()=>B0(),children:"esc"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{gap:0,children:[k(X("kanban.detail.titleLabel"),"title"),R.jsxDEV("box",{border:!0,borderColor:i("title"),backgroundColor:J.backgroundElement,paddingLeft:1,paddingRight:1,children:R.jsxDEV("input",{value:C,focused:I==="title",onMouseUp:()=>T("title"),onInput:(l)=>_(r5(l)),onSubmit:()=>T("description")},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{gap:0,children:[k(X("kanban.detail.description"),"description",X("kanban.detail.attachHint")),R.jsxDEV("box",{border:!0,borderColor:i("description"),backgroundColor:J.backgroundElement,paddingLeft:1,paddingRight:1,children:R.jsxDEV("textarea",{ref:(l)=>{w.current=l},initialValue:G.body,placeholder:X("kanban.detail.noDescription"),focused:I==="description",height:OF0,wrapMode:"word",onMouseUp:()=>T("description"),onContentChange:()=>E(w.current?.plainText??"")},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),U?R.jsxDEV("box",{gap:0,children:[R.jsxDEV("box",{gap:0,children:[k(X("kanban.detail.engine"),"engine","\u2190/\u2192"),R.jsxDEV("box",{flexDirection:"row",gap:1,children:$.engines.map((l)=>{let n=l===B;return R.jsxDEV("box",{border:!0,borderColor:n?J.primary:J.borderSubtle,paddingLeft:2,paddingRight:2,paddingBottom:1,onMouseUp:()=>{T("engine"),M(l)},children:R.jsxDEV("text",{fg:n?J.primary:J.textMuted,attributes:n?OG.BOLD:void 0,wrapMode:"none",children:$.engineLabel(l)},void 0,!1,void 0,this)},l,!1,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{gap:0,paddingBottom:1,children:[k(X("kanban.detail.workspace"),"workspace","\u2191/\u2193"),R.jsxDEV("box",{border:!0,borderColor:i("workspace"),backgroundColor:J.backgroundElement,paddingLeft:1,paddingRight:1,children:LG.map((l)=>{let n=l===O;return R.jsxDEV("text",{fg:n?J.primary:J.textMuted,attributes:n?OG.BOLD:void 0,onMouseUp:()=>{T("workspace"),L(l)},children:[n?"\u25B8 ":" ",X(`kanban.detail.placement.${l}`)]},l,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{gap:0,paddingBottom:1,children:[k(X("kanban.detail.jumpLabel"),"jump","\u2190/\u2192"),R.jsxDEV("box",{flexDirection:"row",gap:1,children:[!1,!0].map((l)=>{let n=l===j;return R.jsxDEV("box",{border:!0,borderColor:n?J.primary:J.borderSubtle,paddingLeft:2,paddingRight:2,onMouseUp:()=>{T("jump"),A(l)},children:R.jsxDEV("text",{fg:n?J.primary:J.textMuted,attributes:n?OG.BOLD:void 0,wrapMode:"none",children:X(l?"kanban.detail.jump.follow":"kanban.detail.jump.stay")},void 0,!1,void 0,this)},String(l),!1,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{paddingBottom:1,children:R.jsxDEV("text",{fg:J.textMuted,children:W?X("kanban.detail.createLegend"):X("kanban.detail.startLegend")},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):H?R.jsxDEV("box",{gap:1,children:[R.jsxDEV("box",{gap:0,children:[k(X("kanban.detail.sessionLabel"),"open"),R.jsxDEV("box",{flexDirection:"row",children:R.jsxDEV("box",{border:!0,borderColor:I==="open"?J.primary:J.borderSubtle,paddingLeft:2,paddingRight:2,onMouseUp:()=>{T("open"),U0()},children:R.jsxDEV("text",{fg:I==="open"?J.primary:J.text,attributes:I==="open"?OG.BOLD:void 0,wrapMode:"none",children:X("kanban.detail.openAction")},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV(fr,{taskId:H,orchestrator:$.orchestrator??null},void 0,!1,void 0,this),R.jsxDEV("box",{paddingBottom:1,children:R.jsxDEV("text",{fg:J.textMuted,children:X("kanban.detail.openLegend")},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):R.jsxDEV("box",{paddingBottom:1,children:R.jsxDEV("text",{fg:J.textMuted,children:X("kanban.detail.doneNote")},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function VF0($,Z){return k2($,(J)=>R.jsxDEV(jF0,{...Z,onSubmit:(X)=>J(X),onCancel:()=>J(void 0)},void 0,!1,void 0,this),{size:"large"})}var BX,OF0=8,Gw;var gr=d(async()=>{c_();p8();QU();X$();a0();await J$([v4(),Z$(),D4(),C5(),yr()]);BX=z1(q1(),1);Gw={show:VF0}});import{TextAttributes as _F0}from"@opentui/core";function br($){let{theme:Z,transparentBackground:J}=d0(),X=e0(),{issue:z,column:G,selected:W}=$,H=J?Z.border:Z.borderSubtle,U=G==="done"?Z.textMuted:Z.text,B=z.body.trim(),M=$.activity?CF0[$.activity]:void 0,O=eE($.activity),L={accent:Z.accent,warning:Z.warning,error:Z.error,success:Z.success};return R.jsxDEV("box",{border:!0,borderColor:W?Z.primary:O?Z.warning:H,backgroundColor:Z.backgroundElement,padding:1,onMouseUp:()=>W?$.onOpen():$.onSelect(),children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:[R.jsxDEV("text",{fg:U,attributes:_F0.BOLD,wrapMode:"word",flexShrink:1,children:z.title},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:["#",z.id]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{height:2,overflow:"hidden",children:B?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"word",children:B},void 0,!1,void 0,this):null},void 0,!1,void 0,this),R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:[R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:z.created},void 0,!1,void 0,this),M?R.jsxDEV("text",{fg:L[M.tone],wrapMode:"none",children:X(M.labelKey)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var CF0;var vr=d(async()=>{$w();X$();a0();await Z$();CF0={running:{labelKey:"tasks.status.working",tone:"accent"},turn_complete:{labelKey:"kanban.turnComplete",tone:"success"},rate_limited:{labelKey:"tasks.activity.rateLimited",tone:"warning"},permission_needed:{labelKey:"tasks.activity.permissionNeeded",tone:"warning"},error:{labelKey:"tasks.activity.error",tone:"error"}}});import{TextAttributes as p_}from"@opentui/core";function kr($){let{theme:Z,transparentBackground:J}=d0(),X=J?Z.border:Z.borderSubtle,z=e0(),G=o$(),[W,H]=KX.useState(null),[U,B]=KX.useState([]);KX.useEffect(()=>{let k=!1;return jZ().then((i)=>{if(!k)B(i)}),()=>{k=!0}},[]);let[M,O]=KX.useState(0),[L,j]=KX.useState(null);KX.useEffect(()=>{let k=!1,i=$.orchestrator;if(!i){H([]);return}let l=[...new Set(i.listTasks().map((Y0)=>Y0.repo))];Promise.all(l.map((Y0)=>i.listIssues(Y0).catch(()=>null))).then((Y0)=>{if(k)return;let Z0=Y0.filter((D0)=>D0!==null);Z0.sort((D0,u0)=>D0.repoRoot.localeCompare(u0.repoRoot)),H(Z0);let a=(D0)=>D0.replace(/^\/private\//,"/").replace(/\/+$/,""),$0=i.activeTaskSignal().get(),O0=$.focusTask?.repo??i.listTasks().find((D0)=>D0.id===$0)?.repo,Q0=O0?Z0.find((D0)=>a(D0.repoRoot)===a(O0)):void 0;j((D0)=>D0??Q0?.repoRoot??null);let w0=$.focusTask?.id,b0=w0?Q0?.issues.find((D0)=>D0.taskId===w0):void 0;if(b0)w((D0)=>D0??b0.id)});let n=setInterval(()=>O((Y0)=>Y0+1),DF0);return()=>{k=!0,clearInterval(n)}},[$.orchestrator,M]);let A=W??[],C=Math.max(0,A.findIndex((k)=>k.repoRoot===L)),_=A[C],b=A.map((k)=>k.repoRoot),{columns:E,attentionCount:I}=Nr(_?Or(_.issues):[],(k)=>$.engineStates?.get(k)?.state),[T,w]=KX.useState(null);function y(k){if(A.length===0)return;let i=(C+k+A.length)%A.length;j(A[i]?.repoRoot??null),w(null)}function f(k){let i=Lr(E,T,k);if(i!=null)w(i)}function h(k){if(E.some((i)=>i.issues.length>0))f(k);else y(k==="left"?-1:1)}function p(k){let i=_;if(!i)return;w(k.id),Gw.show(G,{issue:k,engines:U,defaultVendor:Jw(i.repoRoot,U),engineLabel:y5,orchestrator:$.orchestrator}).then(async(l)=>{if(!l)return;let n={title:l.title,body:l.body};if(n.title!==k.title||n.body!==k.body)await $.orchestrator?.mutateIssue(i.repoRoot,{type:"update",id:k.id,...n}).catch((Y0)=>console.error("[rove kanban] issue update failed:",Y0)),O((Y0)=>Y0+1);if(l.kind==="open"){$.onOpenTask(l.taskId);return}if(l.kind!=="start")return;$.onStartChat({repoRoot:i.repoRoot,issue:{...k,...n},vendor:l.vendor,placement:l.placement,jump:l.jump})})}function m(){let k=_?.issues.find((i)=>i.id===T);if(k)p(k)}function t(){let k=_;if(!k)return;let i={id:k.nextId,title:"",status:"open",created:new Date().toISOString().slice(0,10),body:""};Gw.show(G,{issue:i,mode:"create",engines:U,defaultVendor:Jw(k.repoRoot,U),engineLabel:y5}).then(async(l)=>{if(!l||l.kind!=="create")return;let n=$.orchestrator;if(!n)return;try{let Y0=await n.mutateIssue(k.repoRoot,{type:"create",title:l.title,body:l.body});if(O((a)=>a+1),!l.start)return;let Z0=Y0.issues.find((a)=>a.id===k.nextId)??Y0.issues.reduce((a,$0)=>a&&a.id>$0.id?a:$0,null);if(!Z0)return;$.onStartChat({repoRoot:k.repoRoot,issue:Z0,vendor:l.start.vendor,placement:l.start.placement,jump:l.start.jump})}catch(Y0){console.error("[rove kanban] issue create failed:",Y0)}})}function s(){let k=_,i=k?.issues.find((l)=>l.id===T);if(!k||!i)return;O4.show(G,z("kanban.confirmDelete.title",{id:String(i.id)}),z("kanban.confirmDelete.body",{title:i.title})).then((l)=>{if(!l)return;$.orchestrator?.mutateIssue(k.repoRoot,{type:"delete",id:i.id}).then(()=>{w(null),O((n)=>n+1)}).catch((n)=>console.error("[rove kanban] issue delete failed:",n))})}b1(()=>({enabled:G.stack.length===0&&$.focused!==!1,bindings:[...s7($.onClose),{key:"r",cmd:()=>O((k)=>k+1)},{key:"tab",cmd:()=>y(1)},{key:"up",cmd:()=>f("up")},{key:"down",cmd:()=>f("down")},{key:"right",cmd:()=>h("right")},{key:"left",cmd:()=>h("left")},{key:"return",cmd:()=>m()},{key:"n",cmd:()=>t()},{key:"d",cmd:()=>s()}]}));let G0={backlog:Z.textMuted,in_progress:Z.accent,parked:Z.warning,done:Z.success};function U0(k,i){let n=(i==="in_progress"||i==="parked")&&k.taskId?$.engineStates?.get(k.taskId)?.state:void 0;return R.jsxDEV(br,{issue:k,column:i,selected:k.id===T,activity:n,onSelect:()=>w(k.id),onOpen:()=>p(k)},k.id,!1,void 0,this)}function F0(k){return R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",paddingTop:1,paddingLeft:3,paddingRight:3,children:[R.jsxDEV("box",{flexDirection:"row",onMouseUp:()=>y(1),children:[R.jsxDEV("text",{fg:Z.primary,attributes:p_.BOLD,wrapMode:"none",children:_9(k.repoRoot,b)},void 0,!1,void 0,this),A.length>1?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:[" ",C+1,"/",A.length]},void 0,!0,void 0,this):null,R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",flexShrink:1,children:[" ",k.repoRoot]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),k.issues.length===0?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:z("kanban.empty")},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function B0(){return R.jsxDEV("box",{flexDirection:"row",gap:1,flexGrow:1,paddingTop:1,paddingLeft:1,paddingRight:1,children:E.map((k)=>R.jsxDEV("box",{flexGrow:1,flexBasis:0,border:!0,borderColor:X,paddingLeft:1,paddingRight:1,children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:[R.jsxDEV("text",{fg:G0[k.key],attributes:p_.BOLD,wrapMode:"none",children:[z(AF0[k.key])," (",k.issues.length+k.hiddenCount,")"]},void 0,!0,void 0,this),k.key==="in_progress"&&I>0?R.jsxDEV("text",{fg:Z.warning,attributes:p_.BOLD,wrapMode:"none",children:z("kanban.attention",{count:String(I)})},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),R.jsxDEV("scrollbox",{flexGrow:1,paddingTop:1,verticalScrollbarOptions:{trackOptions:{foregroundColor:"transparent"}},children:[k.issues.map((i)=>U0(i,k.key)),k.hiddenCount>0?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:z("kanban.more",{count:String(k.hiddenCount)})},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},k.key,!0,void 0,this))},void 0,!1,void 0,this)}let W0=W===null;return R.jsxDEV("box",{flexGrow:1,backgroundColor:Z.background,paddingTop:1,paddingBottom:1,children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",paddingLeft:3,paddingRight:3,children:[R.jsxDEV("text",{attributes:p_.BOLD,fg:Z.text,children:z("kanban.title")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,children:z("kanban.hint")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W0?R.jsxDEV("text",{fg:Z.textMuted,paddingLeft:3,children:z("kanban.loading")},void 0,!1,void 0,this):A.length===0||!_?R.jsxDEV("text",{fg:Z.textMuted,paddingLeft:3,children:z("kanban.noRepos")},void 0,!1,void 0,this):R.jsxDEV(R.Fragment,{children:[F0(_),B0()]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var KX,DF0=5000,AF0;var mr=d(async()=>{cJ();L7();$w();i8();X$();u_();a0();await J$([Z$(),D4(),C5(),TZ(),gr(),vr()]);KX=z1(q1(),1),AF0={backlog:"kanban.column.backlog",in_progress:"kanban.column.inProgress",parked:"kanban.column.parked",done:"kanban.column.done"}});import{spawnSync as PF0}from"child_process";function RF0(){if(!process.stdin.isTTY)return Promise.resolve();return new Promise(($)=>{let Z=process.stdin,J=()=>{Z.off("data",J),Z.setRawMode?.(!1),Z.pause(),$()};Z.setRawMode?.(!0),Z.resume(),Z.once("data",J)})}async function n_($){$.renderer?.destroy(),process.stdout.write(`
|
|
740
740
|
rove ${R$} -> ${$.targetLabel}
|
|
741
741
|
`),process.stdout.write(`running: ${$.command}
|
|
742
742
|
|
|
@@ -748,7 +748,7 @@ ${$.t("update.updateComplete")}
|
|
|
748
748
|
${$.t("update.updateFailed",{code:String(J)})}
|
|
749
749
|
`),process.stdout.write($.t("update.pressAnyKey")),await RF0(),process.exit(J)}var Ww=d(()=>{d8()});import{spawn as TF0}from"child_process";import{TextAttributes as zU}from"@opentui/core";function SF0($){if(!$)return!1;let Z=process.platform,[J,X]=Z==="darwin"?["open",[$]]:Z==="win32"?["cmd",["/c","start","",$]]:["xdg-open",[$]];try{return TF0(J,X,{stdio:"ignore",detached:!0}).unref(),!0}catch{return!1}}function Hw($){return $.replace(/\r\n/g,`
|
|
750
750
|
`).split(`
|
|
751
|
-
`).map((Z)=>Z.trim()).filter(Boolean)}function hr($){let{theme:Z}=d0(),J=e0(),X=N4(),[z,G]=Qz.useState(null),[W,H]=Qz.useState([]),[U,B]=Qz.useState(!0),[M,O]=Qz.useState("update"),[L,j]=Qz.useState(null),A=z?.latest??R$,C=W[0]?.url??mT(A),_=[{id:"update",key:"U",label:J("update.actions.updateNow"),detail:VZ},{id:"release",key:"R",label:J("update.actions.openRelease"),detail:C??J("update.releaseUrlUnavailable")},{id:"close",key:"Q",label:J("update.actions.close"),detail:J("update.actions.closeDetail")}];Qz.useEffect(()=>{b()},[]);async function b(){let w=await bY({force:!0});G(w);let y=w?.latest??R$,f=await kT({current:R$,latest:y});H(f),B(!1)}function E(w){let y=_.map((p)=>p.id),h=(y.indexOf(M)+w+y.length)%y.length;O(y[h]??"update")}function I(w=M){if(w==="close"){$.onClose();return}if(w==="release"){j(SF0(C)?J("update.statusReleaseOpened"):J("update.statusReleaseError"));return}T()}async function T(){j(J("update.statusRunningUpdater")),await new Promise((w)=>setTimeout(w,30)),await n_({renderer:X,t:J,targetLabel:A,command:VZ})}return b1(()=>({bindings:[{key:"up",cmd:()=>E(-1)},{key:"down",cmd:()=>E(1)},{key:"k",cmd:()=>E(-1)},{key:"j",cmd:()=>E(1)},{key:"return",cmd:()=>I()},{key:"u",cmd:()=>I("update")},{key:"r",cmd:()=>I("release")},...s7(()=>I("close"))]})),R.jsxDEV("box",{flexDirection:"column",flexGrow:1,backgroundColor:Z.background,paddingTop:1,paddingLeft:2,paddingRight:2,children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",flexShrink:0,children:[R.jsxDEV("text",{fg:Z.text,attributes:zU.BOLD,wrapMode:"none",children:J("update.pageTitle")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",onMouseUp:()=>I("close"),children:"q / esc"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{flexDirection:"row",gap:2,flexShrink:0,paddingTop:1,children:[R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:J("update.current")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.text,attributes:zU.BOLD,wrapMode:"none",children:["v",R$]},void 0,!0,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:J("update.latest")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:z?.hasUpdate?Z.warning:Z.success,attributes:zU.BOLD,wrapMode:"none",children:["v",A]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{flexDirection:"column",flexShrink:0,paddingTop:1,gap:0,children:_.map((w)=>R.jsxDEV("box",{flexDirection:"row",gap:1,paddingLeft:1,paddingRight:1,backgroundColor:M===w.id?Z.primary:void 0,onMouseUp:()=>I(w.id),children:[R.jsxDEV("box",{width:4,flexShrink:0,children:R.jsxDEV("text",{fg:M===w.id?Z.selectedListItemText:Z.accent,attributes:zU.BOLD,wrapMode:"none",children:["[",w.key,"]"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),R.jsxDEV("box",{width:14,flexShrink:0,children:R.jsxDEV("text",{fg:M===w.id?Z.selectedListItemText:Z.text,wrapMode:"none",children:w.label},void 0,!1,void 0,this)},void 0,!1,void 0,this),R.jsxDEV("text",{fg:M===w.id?Z.selectedListItemText:Z.textMuted,wrapMode:"word",children:w.detail},void 0,!1,void 0,this)]},w.id,!0,void 0,this))},void 0,!1,void 0,this),L?R.jsxDEV("text",{fg:Z.info,wrapMode:"word",children:L},void 0,!1,void 0,this):null,R.jsxDEV("box",{flexShrink:0,paddingTop:1,children:R.jsxDEV("text",{fg:Z.textMuted,attributes:zU.DIM,wrapMode:"none",children:J("update.changesSectionHeader",{from:R$,to:A})},void 0,!1,void 0,this)},void 0,!1,void 0,this),R.jsxDEV("scrollbox",{flexGrow:1,flexShrink:1,stickyScroll:!1,verticalScrollbarOptions:{trackOptions:{backgroundColor:Z.background,foregroundColor:Z.borderActive}},children:R.jsxDEV("box",{flexDirection:"column",paddingRight:1,paddingBottom:1,gap:0,children:[U?R.jsxDEV("text",{fg:Z.textMuted,children:J("update.loadingNotes")},void 0,!1,void 0,this):null,!U&&W.length===0?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"word",children:J("update.notesUnavailable")},void 0,!1,void 0,this):null,W.map((w)=>R.jsxDEV("box",{flexDirection:"column",paddingBottom:1,gap:0,children:[R.jsxDEV("text",{fg:Z.text,attributes:zU.BOLD,wrapMode:"none",children:["v",w.version]},void 0,!0,void 0,this),Hw(w.body).map((y,f)=>R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"word",children:y},`${f}:${y}`,!1,void 0,this))]},w.version,!0,void 0,this))]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Qz;var qw=d(async()=>{d8();X$();Ww();a0();await J$([v4(),Z$(),D4()]);Qz=z1(q1(),1)});import{TextAttributes as ur}from"@opentui/core";function IF0($){if(!$)return[];let Z=[];for(let J of $.listTasks())if(J.repo&&!Z.includes(J.repo))Z.push(J.repo);return Z}function EF0($,Z){let J=Date.parse($);if(!Number.isFinite(J))return"";let X=Math.round((Z-J)/60000);if(X<60)return`${Math.max(X,0)}m`;let z=Math.round(X/60);if(z<24)return`${z}h`;return`${Math.round(z/24)}d`}function cr($){let{theme:Z}=d0(),J=e0(),X=IF0($.orchestrator),[z,G]=F6.useState(()=>{let h=$.focusRepo?X.indexOf($.focusRepo):-1;return h>=0?h:0}),W=X[z],[H,U]=F6.useState(null),[B,M]=F6.useState(null),[O,L]=F6.useState(0),[j,A]=F6.useState(!1),[C,_]=F6.useState(!1),[b,E]=F6.useState(null);F6.useEffect(()=>{let h=!1,p=$.orchestrator;if(!p||!W){U([]);return}return M(null),p.listWorkItems({repo:W,limit:30,...j?{assignee:"@me"}:{},...O>0?{refresh:!0}:{}}).then((m)=>{if(!h)U(m.items)}).catch((m)=>{if(h)return;M(m instanceof Error?m.message:String(m)),U([])}),()=>{h=!0}},[$.orchestrator,W,j,O]);let I=H??[],[T,w]=F6.useState(0);F6.useEffect(()=>{w((h)=>w4(h,I.length))},[I.length]);async function y(){let h=$.orchestrator,p=I[T];if(!h||!p||!W||C)return;_(!0),E(J("workItems.starting",{number:p.number}));try{let m=await h.startWorkItem({repo:W,number:p.number});if(m.started)$.onOpenTask?.(m.taskId);else E(J("workItems.startedNoEngine",{title:m.title}))}catch(m){E(m instanceof Error?m.message:String(m))}finally{_(!1)}}b1(()=>({enabled:$.focused!==!1,bindings:[...s7($.onClose),{key:"j",cmd:()=>w((h)=>w4(h+1,I.length))},{key:"down",cmd:()=>w((h)=>w4(h+1,I.length))},{key:"k",cmd:()=>w((h)=>w4(h-1,I.length))},{key:"up",cmd:()=>w((h)=>w4(h-1,I.length))},{key:"tab",cmd:()=>G((h)=>X.length?(h+1)%X.length:0)},{key:"a",cmd:()=>A((h)=>!h)},{key:"r",cmd:()=>L((h)=>h+1)},{key:"return",cmd:()=>void y()}]}));let f=Date.now();return R.jsxDEV("box",{flexDirection:"column",flexGrow:1,padding:1,children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:[R.jsxDEV("text",{attributes:ur.BOLD,fg:Z.accent,children:J("workItems.title")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,children:[W?_9(W,X):J("workItems.noRepo"),j?` ${J("workItems.assignedFilter")}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B?R.jsxDEV("box",{flexDirection:"column",marginTop:1,children:R.jsxDEV("text",{fg:Z.error,children:B},void 0,!1,void 0,this)},void 0,!1,void 0,this):H===null?R.jsxDEV("text",{fg:Z.textMuted,children:J("common.loading")},void 0,!1,void 0,this):I.length===0?R.jsxDEV("text",{fg:Z.textMuted,children:J("workItems.empty")},void 0,!1,void 0,this):R.jsxDEV("box",{flexDirection:"column",marginTop:1,flexGrow:1,children:I.map((h,p)=>{let m=HX(Z,{cursor:p===T,selected:!1});return R.jsxDEV("box",{flexDirection:"column",flexShrink:0,...m.backgroundColor?{backgroundColor:m.backgroundColor}:{},children:[R.jsxDEV("box",{flexDirection:"row",gap:0,children:[R.jsxDEV("text",{fg:m.markerColor,wrapMode:"none",children:m.marker},void 0,!1,void 0,this),R.jsxDEV("box",{flexDirection:"row",flexGrow:1,paddingLeft:1,paddingRight:1,gap:1,children:[R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:`#${h.number}`},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.text,attributes:p===T?ur.BOLD:void 0,wrapMode:"none",flexGrow:1,children:h.title},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{flexDirection:"row",gap:0,children:[R.jsxDEV("text",{fg:m.markerColor,wrapMode:"none",children:m.marker},void 0,!1,void 0,this),R.jsxDEV("box",{flexDirection:"row",flexGrow:1,paddingLeft:2,paddingRight:1,gap:1,children:[R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",flexGrow:1,children:[h.author,...h.labels.slice(0,2)].filter(Boolean).join(" \xB7 ")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:EF0(h.updatedAt,f)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},`${h.number}`,!0,void 0,this)})},void 0,!1,void 0,this),b?R.jsxDEV("text",{fg:Z.textMuted,children:b},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}var F6;var dr=d(async()=>{p8();i8();X$();a0();await J$([Z$(),D4()]);F6=z1(q1(),1)});import{TextAttributes as lr}from"@opentui/core";function pr($){return $.flatMap((Z)=>Z.worktrees)}function yF0($,Z){let J=(z)=>z.replace(/^\/private\//,"/").replace(/\/+$/,""),X=J(Z);return $.listTasks().find((z)=>z.worktreePath&&J(z.worktreePath)===X)?.id}function nr($){let{theme:Z}=d0(),J=o$(),X=e0(),[z,G]=FX.useState(null),[W,H]=FX.useState(0),U=()=>H((h)=>h+1);FX.useEffect(()=>{let h=!1,p=!1,m=$.orchestrator;if(!m){G([]);return}return m.listWorktrees({network:!1}).then((t)=>{if(!h&&!p)G(t)}).catch(()=>{}),m.listWorktrees().then((t)=>{if(p=!0,h)return;G(t);let s=new Set(pr(t).map((G0)=>G0.path));M((G0)=>G0.filter((U0)=>s.has(U0)))}).catch(()=>{}),()=>{h=!0}},[$.orchestrator,W]);let[B,M]=FX.useState([]),O=(z??[]).map((h)=>({...h,worktrees:h.worktrees.filter((p)=>!B.includes(p.path))})),L=pr(O),[j,A]=FX.useState(0);FX.useEffect(()=>{A((h)=>w4(h,L.length))},[L.length]);let[C,_]=FX.useState(null);async function b(h,p){let m=$.orchestrator;if(!m)return;M((t)=>[...t,h.path]);try{await m.removeWorktree(h.path,p),U()}catch(t){if(M((s)=>s.filter((G0)=>G0!==h.path)),!p&&t instanceof Error&&wF0.test(t.message)){if(await O4.show(J,X("worktrees.delete.forceTitle"),X("worktrees.delete.forceBody",{branch:h.branch||h.path}),X("common.cancel"),X("worktrees.delete.button"))===!0)await b(h,!0);return}console.error(`[rove worktrees] ${X("worktrees.delete.failed",{error:String(t)})}`)}}async function E(h){if(!$.orchestrator||C||B.includes(h.path))return;if(await O4.show(J,X("worktrees.delete.confirmTitle"),X("worktrees.delete.confirmBody",{branch:h.branch||h.path}),X("common.cancel"),X("worktrees.delete.button"))!==!0)return;b(h,!1)}async function I(h){let p=$.orchestrator;if(!p||C)return;let m=yF0(p,h.path);if(!m){console.error(`[rove worktrees] ${X("worktrees.land.noTask")}`);return}if(await O4.show(J,X("worktrees.land.confirmTitle"),X("worktrees.land.confirmBody",{branch:h.branch||h.path}),X("common.cancel"),X("worktrees.land.button"))!==!0)return;_(h.path);try{let s=await p.landTask(m);console.error(`[rove worktrees] ${X("worktrees.land.done",{branch:s.branch,landedOn:s.landedOn,commit:s.commit})}`),U()}catch(s){let G0=s instanceof Error?s.message:String(s);if(xF0.test(G0))console.error(`[rove worktrees] ${X("worktrees.land.conflict",{files:G0})}`);else if(fF0.test(G0))console.error(`[rove worktrees] ${X("worktrees.land.dirtyBase")}`);else console.error(`[rove worktrees] ${X("worktrees.land.failed",{error:G0})}`)}finally{_(null)}}b1(()=>({enabled:J.stack.length===0,bindings:[...s7($.onClose),{key:"up",cmd:()=>A((h)=>w4(h-1,L.length))},{key:"down",cmd:()=>A((h)=>w4(h+1,L.length))},{key:"d",cmd:()=>{let h=L[j];if(h)E(h)}},{key:"l",cmd:()=>{let h=L[j];if(h)I(h)}}]}));function T(h){if(h===!0)return R.jsxDEV("text",{fg:Z.success,children:[" ",X("worktrees.badge.remoteOn")]},void 0,!0,void 0,this);if(h===!1)return R.jsxDEV("text",{fg:Z.warning,children:[" ",X("worktrees.badge.remoteOff")]},void 0,!0,void 0,this);return R.jsxDEV("text",{fg:Z.textMuted,children:[" ",X("worktrees.badge.remoteUnknown")]},void 0,!0,void 0,this)}function w(h){if(h.verdictReason==="dirty"||h.verdictReason==="fresh")return null;let p=h.verdict==="merged"?Z.success:h.verdict==="stale"?Z.warning:Z.accent;return R.jsxDEV("text",{fg:p,children:[" ",X(`worktrees.verdict.${h.verdictReason}`)]},void 0,!0,void 0,this)}let y=z===null,f=0;return R.jsxDEV("scrollbox",{flexGrow:1,backgroundColor:Z.background,paddingTop:1,paddingLeft:2,paddingRight:2,paddingBottom:1,verticalScrollbarOptions:{trackOptions:{foregroundColor:"transparent"}},children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:R.jsxDEV("text",{attributes:lr.BOLD,fg:Z.text,children:X("worktrees.title")},void 0,!1,void 0,this)},void 0,!1,void 0,this),y?R.jsxDEV("text",{fg:Z.textMuted,children:X("worktrees.loading")},void 0,!1,void 0,this):O.length===0?R.jsxDEV("text",{fg:Z.textMuted,children:X("worktrees.noProjects")},void 0,!1,void 0,this):O.map((h)=>{let p=f;return f+=h.worktrees.length,R.jsxDEV("box",{gap:0,paddingTop:1,children:[R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:h.repo},void 0,!1,void 0,this),h.worktrees.length===0?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:X("worktrees.noWorktrees")},void 0,!1,void 0,this):h.worktrees.map((m,t)=>{let s=p+t,G0=s===j;return R.jsxDEV("box",{gap:0,onMouseUp:()=>A(s),children:[R.jsxDEV("box",{flexDirection:"row",children:[R.jsxDEV("text",{fg:G0?Z.primary:Z.text,attributes:G0?lr.BOLD:void 0,wrapMode:"none",children:[G0?"\u25B8 ":" ",m.branch||X("worktrees.row.detached")]},void 0,!0,void 0,this),m.kobeManaged?R.jsxDEV("text",{fg:Z.textMuted,children:[" ",X("worktrees.badge.kobeManaged")]},void 0,!0,void 0,this):null,m.dirty?R.jsxDEV("text",{fg:Z.warning,children:[" ",X("worktrees.badge.dirty")]},void 0,!0,void 0,this):null,T(m.branchOnRemote),w(m),C===m.path?R.jsxDEV("text",{fg:Z.textMuted,children:" \u2026"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",paddingLeft:2,children:[R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:m.path},void 0,!1,void 0,this),m.createdAtMs>0?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:X("worktrees.row.created",{age:NG(m.createdAtMs)})},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},m.path,!0,void 0,this)})]},h.repo,!0,void 0,this)})]},void 0,!0,void 0,this)}var FX,wF0,xF0,fF0;var ir=d(async()=>{p8();d_();X$();a0();await J$([Z$(),D4(),C5(),TZ()]);FX=z1(q1(),1);wF0=/refusing to remove dirty worktree/,xF0=/LAND_CONFLICT/,fF0=/MAIN_CHECKOUT_DIRTY/});function or($){let[Z,J]=QM.useState(!1),[X,z]=QM.useState(!1),[G,W]=QM.useState(!1),[H,U]=QM.useState("terminal"),B=(M)=>{U(M),$.setFocused(aa(M))};return{nav:H,setNav:U,goToNav:B,settingsOpen:Z,openSettings:()=>J(!0),closeSettings:()=>J(!1),worktreesOpen:X,openWorktrees:()=>z(!0),closeWorktrees:()=>z(!1),updateOpen:G,openUpdate:()=>W(!0),closeUpdate:()=>W(!1),kanbanOpen:H==="kanban",openKanban:()=>B("kanban"),closeKanban:()=>B("terminal"),automationsOpen:H==="automations",openAutomations:()=>B("automations"),closeAutomations:()=>B("terminal"),workItemsOpen:H==="issues",openWorkItems:()=>B("issues"),closeWorkItems:()=>B("terminal")}}function ar($){if($.worktreesOpen)return R.jsxDEV(nr,{orchestrator:$.orchestrator,onClose:$.closeWorktrees},void 0,!1,void 0,this);if($.updateOpen)return R.jsxDEV(hr,{onClose:$.closeUpdate},void 0,!1,void 0,this);return null}function rr($){let Z=$.orchestrator;if($.automationsOpen)return R.jsxDEV(Br,{orchestrator:Z,focused:$.contentFocused,...$.selectedTask?{focusRepo:$.selectedTask.repo}:{},onClose:$.closeAutomations,onOpenTask:(J)=>{$.closeAutomations(),$.activateTask(J)}},void 0,!1,void 0,this);if($.workItemsOpen)return R.jsxDEV(cr,{orchestrator:Z,focused:$.contentFocused,onClose:$.closeWorkItems,...$.selectedTask?{focusRepo:$.selectedTask.repo}:{},onOpenTask:(J)=>{$.closeWorkItems(),$.activateTask(J)}},void 0,!1,void 0,this);if($.kanbanOpen)return R.jsxDEV(kr,{orchestrator:Z,focused:$.contentFocused,onClose:$.closeKanban,onStartChat:$.startIssueChat,engineStates:$.engineStates,focusTask:$.selectedTask?{id:$.selectedTask.id,repo:$.selectedTask.repo}:void 0,onOpenTask:(J)=>{$.closeKanban(),$.activateTask(J)}},void 0,!1,void 0,this);return null}var QM;var sr=d(async()=>{dE();a0();await J$([Kr(),mr(),qw(),dr(),ir()]);QM=z1(q1(),1)});function tr($){let Z=$.scheduleTimeout??((U,B)=>{let M=setTimeout(U,B);return()=>clearTimeout(M)}),J=!1,X=null,z=()=>{J=!0,X?.(),X=Z(()=>{J=!1,X=null},700)},G=()=>{J=!1,X?.(),X=null},W=(U)=>{let B=$.getFlatIds();if(B.length===0)return;let M=$.getCursor(),O=M<0?0:M,L=Math.min(B.length-1,Math.max(0,O+U));$.setCursor(L)},H=(U)=>{let B=$.getFlatIds();if(B.length===0)return;$.setCursor(Math.min(B.length-1,Math.max(0,U)))};return{moveDown(){G(),W(1)},moveUp(){G(),W(-1)},selectCurrent(){G();let U=$.getFlatIds(),B=$.getCursor();if(B<0||B>=U.length)return;let M=U[B];if(M!==void 0)$.onSelect(M)},pressG(){if(J)G(),H(0);else z()},pressShiftG(){G(),H($.getFlatIds().length-1)},isChordArmed(){return J},disarmChord(){G()}}}import{homedir as gF0}from"os";function $s($,Z){if(!Z)return[...$];return[{kind:"recent",id:YU,task:Z,depth:1},...$]}function jG($,Z){return`${$}${Uw}${Z}`}function zz($){let Z=$.indexOf(Uw);if(Z<0)return{taskId:$,tabId:null};return{taskId:$.slice(0,Z),tabId:$.slice(Z+Uw.length)}}function Zs($,Z={}){let J=(Z.liveBranch??$.branch)||$.branch;if(J)return J;if($.kind!=="dir"&&$.title)return $.title;let X=$.worktreePath||$.repo;if(X){let z=Z.home??gF0(),G=z&&(X===z||X.startsWith(`${z}/`))?`~${X.slice(z.length)}`:X;return lj(G,bF0)}return $.title||"scratch"}function Js($){let{tasks:Z,tabsByTask:J}=$,X=new Map,z=Z.filter((U)=>U.kind==="dir"&&U.scratch===!0);for(let U of Z){if(U.kind==="dir"&&U.scratch===!0)continue;let B=MG(U.repo),M=X.get(B)??{repo:U.repo,tasks:[]};if(U.kind==="main")M.repo=U.repo,M.tasks.unshift(U);else M.tasks.push(U);X.set(B,M)}let G=[],W=new Set;for(let U of Z){if(U.kind!=="main")continue;let B=MG(U.repo);if(!W.has(B))W.add(B),G.push(B)}for(let U of X.keys())if(!W.has(U))W.add(U),G.push(U);let H=[];if(z.length>0){H.push({kind:"project",id:i_,repo:"",label:"Scratch",depth:0});for(let U of z){let B=J.get(U.id)??[];if(B.length===0){H.push({kind:"worktree",id:U.id,task:U,depth:1});continue}for(let M of B)H.push({kind:"tab",id:jG(U.id,M.id),task:U,tab:M,depth:2})}}for(let U of G){let B=X.get(U);if(!B)continue;H.push({kind:"project",id:U,repo:B.repo,label:U6(B.repo),depth:0});for(let M of B.tasks)vF0(H,M,J)}return H}function vF0($,Z,J){$.push({kind:"worktree",id:Z.id,task:Z,depth:1});for(let X of J.get(Z.id)??[])$.push({kind:"tab",id:jG(Z.id,X.id),task:Z,tab:X,depth:2})}function Bw($){let Z=[];for(let J of $)if(J.kind!=="project")Z.push(J.id);return Z}function er($){if($.kind==="dir"&&$.scratch===!0)return i_;return MG($.repo)}function kF0($){if($.kind==="project")return $.label;if($.kind==="tab")return $.tab.label;return`${$.task.title} ${$.task.branch??""} ${U6($.task.repo)}`}function Xs($,Z){let J=Z.trim();if(J==="")return[...$];let X=new Set,z=new Set;for(let W of $){if(!sE(J,kF0(W)))continue;if(X.add(W.id),z.add(W.id),W.kind==="project")continue;if(W.kind==="tab")z.add(W.task.id);let H=er(W.task);if(H!==null)z.add(H)}let G=[];for(let W of $){if(W.kind==="project"){if(z.has(W.id))G.push(W);continue}let H=er(W.task),U=H!==null&&X.has(H);if(W.kind==="worktree"){if(U||z.has(W.id))G.push(W);continue}if(U||X.has(W.task.id)||z.has(W.id))G.push(W)}return G}function Qs($,Z){for(let J of $){if(J.kind!=="main")continue;if(MG(J.repo)===Z)return String(J.id)}return null}function zs($){if($.tabActivity!==void 0)return $.tabActivity;if(!$.active||$.reportedTabCount>0)return;return $.taskActivity}var Uw="::",YU="~recent",i_="~scratch",bF0=24;var GU=d(()=>{i8()});function Gs($){let Z=$.maxWidth??mF0,J=Math.max(1,...$.lines.map((W)=>zc(W.text))),X=Math.min(Z-4,J),z=X+4,G=$.lines.length+2;return{innerWidth:X,boxWidth:z,boxHeight:G,left:Math.max(0,Math.min($.hoverX+2,$.screenWidth-z-1)),top:Math.max(0,Math.min($.hoverY+1,$.screenHeight-G-1))}}var Ys=2750,mF0=72;var Ws=d(()=>{i8()});function Hs($,Z){return CZ($,Z)}var Kw=()=>{};import{TextAttributes as hF0}from"@opentui/core";function qs($){let{theme:Z}=d0();if($.entries.length===0)return null;let J=Gs({hoverX:$.x,hoverY:$.y,screenWidth:$.dims.width,screenHeight:$.dims.height,lines:$.entries.map((X)=>({text:X.label}))});return R.jsxDEV("box",{position:"absolute",zIndex:uF0,left:J.left,top:J.top,width:J.boxWidth,flexDirection:"column",border:!0,borderColor:Z.focusAccent,backgroundColor:Z.backgroundElement,paddingLeft:1,paddingRight:1,onMouseDown:(X)=>X.stopPropagation(),children:$.entries.map((X,z)=>{let G=z===$.cursor;return R.jsxDEV("box",{flexShrink:0,backgroundColor:G?Z.focusAccent:void 0,onMouseUp:()=>$.onPick(X.id),children:R.jsxDEV("text",{fg:G?Z.backgroundElement:X.danger?Z.error:Z.text,attributes:G?hF0.BOLD:void 0,wrapMode:"none",flexGrow:1,children:Hs(X.label,J.innerWidth)},void 0,!1,void 0,this)},X.id,!1,void 0,this)})},void 0,!1,void 0,this)}var uF0;var Us=d(async()=>{Ws();Kw();a0();await Z$();uF0=Ys+10});function Bs($=process.platform){return $==="darwin"?"\u262F":"\u25D0"}import{MouseButton as cF0,TextAttributes as D9}from"@opentui/core";function Ks($){let{theme:Z,transparentBackground:J}=d0(),X=J?Z.border:Z.borderSubtle;return R.jsxDEV("box",{flexDirection:"column",flexShrink:0,children:[$.topPad?R.jsxDEV("box",{flexShrink:0,children:R.jsxDEV("text",{wrapMode:"none",children:" "},void 0,!1,void 0,this)},void 0,!1,void 0,this):null,R.jsxDEV("box",{flexDirection:"row",flexShrink:0,gap:1,paddingLeft:1,paddingRight:1,onMouseUp:$.onPress||$.onContextMenu?(z)=>{if(z.button===cF0.RIGHT&&$.onContextMenu){$.onContextMenu(z.x,z.y);return}$.onPress?.()}:void 0,children:[$.prefix?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",flexShrink:0,children:$.prefix},void 0,!1,void 0,this):null,R.jsxDEV("text",{fg:Z.textMuted,attributes:D9.BOLD,wrapMode:"none",flexShrink:0,children:$.label},void 0,!1,void 0,this),R.jsxDEV("text",{fg:X,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:"\u2500".repeat(240)},void 0,!1,void 0,this),$.suffix?R.jsxDEV("text",{fg:Z.info,attributes:D9.BOLD,wrapMode:"none",flexShrink:0,children:$.suffix},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Fs($){let{theme:Z}=d0(),J=e0();return R.jsxDEV("box",{flexDirection:"row",gap:0,flexShrink:0,paddingBottom:1,paddingLeft:1,children:[R.jsxDEV("text",{fg:Z.info,wrapMode:"none",children:"/"},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.text,wrapMode:"none",children:$.query},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.info,attributes:D9.BLINK,wrapMode:"none",children:"\u2588"},void 0,!1,void 0,this),$.query.length===0?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:[" ",J("tasks.search.placeholder")]},void 0,!0,void 0,this):R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:[" ",$.matchCount,"/",$.totalCount]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Ms($){let{theme:Z}=d0();return R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",gap:1,flexShrink:0,paddingLeft:1,paddingRight:1,children:R.jsxDEV("box",{flexDirection:"row",gap:1,children:[R.jsxDEV("text",{fg:$.focused?Z.focusAccent:Z.textMuted,attributes:D9.BOLD,wrapMode:"none",children:"ROVE"},void 0,!1,void 0,this),$.status?R.jsxDEV("text",{fg:$.status.emphasize?Z.warning:Z.textMuted,attributes:$.status.emphasize?D9.BOLD:D9.DIM,wrapMode:"none",onMouseUp:()=>$.onStatusClick?.(),children:$.status.label},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function Ls($){let{theme:Z,transparentBackground:J}=d0(),X=e0(),z=K9("task.new");if(!$.onAddTask)return null;return R.jsxDEV("box",{flexShrink:0,paddingTop:1,paddingBottom:1,paddingLeft:1,paddingRight:1,children:R.jsxDEV("box",{flexDirection:"row",flexShrink:0,gap:1,paddingLeft:1,paddingRight:1,backgroundColor:J?void 0:Z.backgroundElement,onMouseUp:()=>$.onAddTask?.(),children:[R.jsxDEV("text",{fg:Z.primary,attributes:D9.BOLD,wrapMode:"none",flexShrink:0,children:"+"},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.text,attributes:D9.BOLD,wrapMode:"none",flexGrow:1,children:X("tasks.menu.newTask")},void 0,!1,void 0,this),z?R.jsxDEV("text",{fg:Z.textMuted,attributes:D9.DIM,wrapMode:"none",flexShrink:0,children:z},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function Ns($){let{theme:Z}=d0(),J=e0();return R.jsxDEV("box",{flexDirection:"column",flexShrink:0,paddingBottom:1,children:oa.map((X)=>{let z=$.nav===X.nav;return R.jsxDEV("box",{flexDirection:"row",flexShrink:0,paddingLeft:1,paddingRight:1,backgroundColor:z?Z.focusAccent:void 0,onMouseUp:(G)=>{G.stopPropagation(),$.setNav(X.nav)},children:R.jsxDEV("text",{fg:z?Z.backgroundElement:Z.textMuted,attributes:z?D9.BOLD:void 0,wrapMode:"none",flexGrow:1,children:J(X.labelKey)},void 0,!1,void 0,this)},X.nav,!1,void 0,this)})},void 0,!1,void 0,this)}function Os($){let{theme:Z}=d0();return R.jsxDEV("box",{flexShrink:0,paddingLeft:1,paddingRight:1,paddingTop:1,children:R.jsxDEV("text",{fg:Z.accent,attributes:D9.BOLD,wrapMode:"none",onMouseUp:(J)=>{J.stopPropagation(),$.onZenClick?.()},children:`${Bs()} ZEN`},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var Fw=d(async()=>{RV();dE();X$();a0();await Z$()});function o_($){let Z=new Map,J=$.equals??((z,G)=>z===G);function X(z){let G=Z.get(z);if(!G){let W=$.initial;G={read:()=>W,write:(H)=>{if(!J(W,H))W=H},inFlight:!1,nextAllowedAt:0},Z.set(z,G)}return G}return{read(z){if(!z)return $.initial;return X(z).read()},poll(z){if(!z)return;let G=X(z);zv(G,$,(W)=>$.run(z,W),(W)=>G.write(W))},reset(){Z.clear()}}}var zM=d(()=>{uH();uH()});import{stat as dF0}from"fs/promises";import{join as lF0}from"path";async function oF0($){try{let Z=await dF0(lF0($,".git","HEAD"));return`${Z.mtimeMs}:${Z.size}`}catch{return null}}async function aF0($,Z,J=G9){let X=await oF0($);if(X!==null){let U=js.get($);if(U&&U.fingerprint===X)return U.value}let z="",G=!1,W=await J("git",["symbolic-ref","--short","HEAD"],{cwd:$,env:Q8(),signal:Z}),H=W.status===0?W.stdout.trim():"";if(H&&H!=="HEAD")z=H,G=!0;else if((await J("git",["rev-parse","--verify","HEAD"],{cwd:$,env:Q8(),signal:Z})).status===0)z="(detached)",G=!0;if(G&&X!==null)js.set($,{fingerprint:X,value:z});return z}function Mw($){return Vs.read($)}function Lw($){Vs.poll($)}var pF0=2000,nF0=30000,iF0=1500,js,Vs;var Nw=d(()=>{pJ();zM();js=new Map;Vs=o_({initial:"",timeoutMs:pF0,slowRetryMs:nF0,minIntervalMs:iF0,run:($,Z)=>aF0($,Z)})});var a_;var Ow=d(()=>{a_=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function rF0($){switch($){case"rate_limited":return{text:W$("tasks.activity.rateLimited"),tone:"warning"};case"permission_needed":return{text:W$("tasks.activity.permissionNeeded"),tone:"warning"};case"error":return{text:W$("tasks.activity.error"),tone:"error"};default:return null}}function jw($){switch($.prStatus?.checkState){case"passing":return{glyph:"\u2713",tone:"success"};case"failing":return{glyph:"\u2717",tone:"error"};case"pending":return{glyph:"\u2022",tone:"warning"};default:return null}}function sF0(){return W$("tasks.subtitle.noTracking")}function tF0(){return W$("tasks.subtitle.materializing")}function eF0($){return $?W$("tasks.subtitle.deleteFailed"):W$("tasks.subtitle.deleting")}function As($){if($.kind==="main")return!1;return $.vendor!==void 0&&!p5($.vendor)}function Ps($,Z){if($?.state!=="turn_complete"||!Z)return!1;if(!$.at||!Z.mtimeMs)return!1;return Z.mtimeMs>$.at+$M0}function ZM0($){let{task:Z}=$,J=$.activity?.state,X=J!==void 0,z=As(Z)&&!X,G=$.job!==void 0,W=Z.deletion?.phase==="queued"||Z.deletion?.phase==="running",H=J==="running"||Ps($.activity,$.transcript);return W||G||!z&&H}function _w($){let{task:Z}=$,J=Z.kind==="main",X=J?$.mainBranch??"":Z.branch,z=$.activity?.state,G=z!==void 0,H=Ps($.activity,$.transcript)?null:JM0(z,$.completionSeen===!0),U=rF0(z),B=As(Z)&&!G,M=$.job!==void 0,O=Z.deletion?.phase==="queued"||Z.deletion?.phase==="running",L=Z.deletion?.phase==="error",j=ZM0({task:Z,activity:$.activity,job:$.job,transcript:$.transcript}),A=a_,C=A[$.spinnerFrame%A.length]??A[0],_=L?"error":O||M?"primary":B?"textMuted":U?.tone??(j?"primary":H?.tone??"textMuted"),b=B?sF0():"\u2014",E=j?$.lifecycle?.subagents??0:0,I=E>0&&X.length>0?`\u25C7${E} ${X}`:X,T=O||L?$.truncateBranch(eF0(L),$.subtitleBudget):M?$.truncateBranch(tF0(),$.subtitleBudget):U?$.truncateBranch(U.text,$.subtitleBudget):I.length>0?$.truncateBranch(I,$.subtitleBudget):$.truncateBranch(b,$.subtitleBudget),w=L?Ds:B?Vw:H?.glyph??"\u25CB";return{isMain:J,titleText:J?U6(Z.repo):Z.title,subtitleText:T,loading:j,stateGlyph:j?C:w,tone:_,spinnerFrames:A,materializing:M}}function Cw($,Z){if(!$.loading)return $;let J=$.spinnerFrames,X=J[Z()%J.length]??J[0]??"\u280B";if(X===$.stateGlyph)return $;return{...$,stateGlyph:X}}function JM0($,Z){switch($){case"rate_limited":return{glyph:"\u25F7",tone:"warning"};case"permission_needed":return{glyph:"?",tone:"warning"};case"error":return{glyph:Ds,tone:"error"};case"turn_complete":return Z?null:{glyph:"\u25CF",tone:"primary"};default:return null}}var _s=100,Cs=600,Vw="\xB7",Ds="\xD7",$M0=2000;var r_=d(()=>{Ow();RZ();P7();i8()});function XM0(){t_=(t_+1)%Cs;for(let $ of s_)try{$()}catch{}}function e_(){return t_}function $C($){if(s_.add($),WU===null)WU=setInterval(XM0,_s),WU.unref?.();return()=>{if(s_.delete($),s_.size===0&&WU!==null)clearInterval(WU),WU=null,t_=0}}var s_,t_=0,WU=null;var Dw=d(()=>{r_();s_=new Set});function Ts($){return Rs.read($)}function Ss($){Rs.poll($)}var QM0=4000,zM0=60000,YM0=1500,GM0,Rs;var Is=d(()=>{pJ();zM();Wq();zM();GM0={added:0,deleted:0},Rs=o_({initial:GM0,equals:MF,timeoutMs:QM0,slowRetryMs:zM0,minIntervalMs:YM0,run:async($,Z)=>{let J=await G9("git",["status","--porcelain=v1"],{cwd:$,env:Q8(),signal:Z});if(J.status!==0)throw Error("git status failed");return Gq(J.stdout)}})});function Aw($,Z){return Z===void 0?$:`${$}\x00${Z}`}function WM0($){if(typeof $!=="object"||$===null||Array.isArray($))return{};let Z={};for(let[J,X]of Object.entries($))if(typeof X==="number"&&Number.isFinite(X))Z[J]=X;return Z}function HM0($,Z,J,X=200){let z=$[Z];if(z!==void 0&&z>=J)return $;let G={...$,[Z]:J},W=Object.keys(G);if(W.length<=X)return G;let H={};for(let U of W.sort((B,M)=>G[M]-G[B]).slice(0,X))H[U]=G[U];return H}function Es($,Z,J){if(!$||J===void 0)return!1;let X=$.get("completionSeen");if(typeof X!=="object"||X===null||Array.isArray(X))return!1;let z=X[Z];return typeof z==="number"&&z>=J}function ws($,Z,J){let X=WM0($.get("completionSeen")),z=HM0(X,Z,J);if(z!==X)$.set("completionSeen",z)}import{TextAttributes as k01}from"@opentui/core";function xs($){return HU.useSyncExternalStore($?$C:qM0,$?e_:UM0)}function fs($,Z){let J=HS($.worktreeChanges,Z.worktreePath),X=J!==null;return HU.useEffect(()=>{if($.branchTick,X||Z.archived)return;Ss(Z.worktreePath)},[X,Z.archived,Z.worktreePath,$.branchTick]),J??Ts(Z.worktreePath)}function ys($){let{theme:Z}=d0();if($.changes.added<=0&&$.changes.deleted<=0)return null;return R.jsxDEV("box",{flexDirection:"row",gap:1,flexShrink:0,children:[$.changes.added>0?R.jsxDEV("text",{fg:Z.success,wrapMode:"none",flexShrink:0,children:["+",$.changes.added]},void 0,!0,void 0,this):null,$.changes.deleted>0?R.jsxDEV("text",{fg:Z.error,wrapMode:"none",flexShrink:0,children:["\u2212",$.changes.deleted]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)}function gs($,Z,J,X,z=!1){let G=Aw($,X);if(Z==="turn_complete"){if(J)Pw.add(G)}else Pw.delete(G);return Pw.has(G)||z}function bs($){return $?.state==="turn_complete"?$.at:void 0}function vs($,Z,J,X){let z=rQ(),G=Aw($,Z),W=Es(z,G,J);return HU.useEffect(()=>{if(!z||!X||J===void 0||W)return;ws(z,G,J)},[z,G,J,X,W]),W}function Rw($){return null}var HU,qM0=()=>()=>{},UM0=()=>0,Pw;var ks=d(async()=>{hI();Dw();Nw();Kw();r_();hQ();Wq();Is();A3();X$();a0();await Z$();HU=z1(q1(),1);Pw=new Set});import{MouseButton as BM0}from"@opentui/core";function hs($){let{theme:Z}=d0(),J=e0();if($.shared.movingRowId!==$.rowId)return null;return R.jsxDEV("text",{fg:Z.info,wrapMode:"none",flexShrink:0,children:J("tasks.moveChip").trim()},void 0,!1,void 0,this)}function Tw($){let{theme:Z}=d0(),J=$.shared,X=HX(Z,{cursor:J.cursorIndex===$.flatIndex,selected:J.activeRowId===$.rowId});return R.jsxDEV("box",{ref:(z)=>{if(!z)return;return J.rowEls.set($.flatIndex,z),()=>{if(J.rowEls.get($.flatIndex)===z)J.rowEls.delete($.flatIndex)}},width:"100%",flexDirection:"row",gap:0,backgroundColor:X.backgroundColor,onMouseUp:(z)=>{if(z.stopPropagation(),z.button===BM0.RIGHT&&J.onContextMenu){J.onContextMenu($.flatIndex,$.rowId,z.x,z.y);return}J.onPress($.flatIndex,$.rowId)},children:[R.jsxDEV("text",{fg:X.markerColor,wrapMode:"none",children:X.marker},void 0,!1,void 0,this),R.jsxDEV("text",{wrapMode:"none",flexShrink:0,children:" ".repeat($.depth*KM0)},void 0,!1,void 0,this),$.children]},void 0,!0,void 0,this)}function us($){let{theme:Z}=d0(),J=$.shared,X=$.task,z=J.cursorIndex===$.flatIndex,G=fs(J,X),W=jw(X),H=X.kind==="main";ms.useEffect(()=>{if(J.branchTick,H)Lw(X.repo)},[H,X.repo,J.branchTick]);let U=Zs(X,H?{liveBranch:Mw(X.repo)}:{});return R.jsxDEV(Tw,{rowId:$.rowId,flatIndex:$.flatIndex,depth:1,shared:J,children:R.jsxDEV("box",{flexDirection:"row",flexGrow:1,paddingRight:1,gap:1,children:[R.jsxDEV("text",{fg:Z.text,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:U},void 0,!1,void 0,this),X.pinned===!0?R.jsxDEV("text",{fg:Z.warning,wrapMode:"none",flexShrink:0,children:"\u25B4"},void 0,!1,void 0,this):null,W?R.jsxDEV("text",{fg:pj(Z,W.tone),wrapMode:"none",flexShrink:0,children:W.glyph},void 0,!1,void 0,this):null,R.jsxDEV(ys,{changes:G},void 0,!1,void 0,this),R.jsxDEV(hs,{rowId:$.rowId,shared:J},void 0,!1,void 0,this),R.jsxDEV(Rw,{flatIndex:$.flatIndex,dim:!z},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function cs($){let{theme:Z}=d0(),J=$.shared,X=J.cursorIndex===$.flatIndex,z=$.tab.engine===!0,G=z?J.engineTabState?.get($.task.id):void 0,W=z?zs({tabActivity:G?.get($.tab.id),reportedTabCount:G?.size??0,taskActivity:J.engineState?.get($.task.id),active:$.tab.active===!0}):void 0,H=W!==void 0,U=J.selectedTaskId===$.task.id&&$.tab.active===!0,B=vs($.task.id,$.tab.id,H?bs(W):void 0,U),M=H?gs($.task.id,W?.state,U,$.tab.id,B):!1,O=_w({task:$.task,activity:W,lifecycle:H?J.engineLifecycle?.get($.task.id):void 0,job:H?J.taskJobs?.get($.task.id):void 0,spinnerFrame:0,subtitleBudget:0,truncateBranch:OS,completionSeen:M}),L=xs(H&&O.loading),j=Cw(O,()=>L),A=z&&H?j.stateGlyph:Vw;return R.jsxDEV(Tw,{rowId:$.rowId,flatIndex:$.flatIndex,depth:1,shared:$.shared,children:[R.jsxDEV("text",{fg:H?pj(Z,j.tone):Z.textMuted,wrapMode:"none",width:2,flexShrink:0,children:`${A} `},void 0,!1,void 0,this),R.jsxDEV("box",{flexDirection:"row",flexGrow:1,paddingRight:1,gap:1,children:[R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:$.tab.label},void 0,!1,void 0,this),R.jsxDEV(hs,{rowId:$.rowId,shared:J},void 0,!1,void 0,this),R.jsxDEV(Rw,{flatIndex:$.flatIndex,dim:!X},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function ds($){let{theme:Z}=d0(),J=e0();return R.jsxDEV(Tw,{rowId:$.rowId,flatIndex:$.flatIndex,depth:1,shared:$.shared,children:[R.jsxDEV("text",{fg:Z.accent,wrapMode:"none",width:2,flexShrink:0,children:"\u21A9 "},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.text,wrapMode:"none",flexShrink:1,children:J("tasks.recentJump",{title:$.task.title})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var ms,KM0=1;var ls=d(async()=>{Nw();r_();GU();hQ();X$();a0();await J$([Z$(),ks()]);ms=z1(q1(),1)});function ps($){let{theme:Z}=d0(),J=e0();return R.jsxDEV("scrollbox",{ref:$.setScrollRef,flexGrow:1,minHeight:0,stickyScroll:!1,verticalScrollbarOptions:{visible:!1},children:R.jsxDEV("box",{flexShrink:0,gap:0,children:[$.rows.map((X,z)=>{if(X.kind==="project"){let G=X.id===i_;return R.jsxDEV(Ks,{label:G?J("tasks.header.scratch"):X.label,suffix:$.movingProjectId===X.id?J("tasks.moveChip"):void 0,topPad:z>0,onContextMenu:$.onProjectContextMenu&&!G?(W,H)=>$.onProjectContextMenu?.(X.id,W,H):void 0},X.id,!1,void 0,this)}if(X.kind==="recent")return R.jsxDEV(ds,{rowId:X.id,flatIndex:$.flatIndexOf.get(X.id)??-1,task:X.task,shared:$.shared},X.id,!1,void 0,this);if(X.kind==="worktree")return R.jsxDEV(us,{rowId:X.id,flatIndex:$.flatIndexOf.get(X.id)??-1,task:X.task,shared:$.shared},X.id,!1,void 0,this);return R.jsxDEV(cs,{rowId:X.id,flatIndex:$.flatIndexOf.get(X.id)??-1,task:X.task,tab:X.tab,shared:$.shared},X.id,!1,void 0,this)}),$.rows.length===0?R.jsxDEV("box",{paddingTop:1,paddingLeft:1,children:R.jsxDEV("text",{fg:Z.textMuted,children:J(Gc({searching:$.searching,projectFilter:!1}))},void 0,!1,void 0,this)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var ns=d(async()=>{GU();hQ();X$();a0();await J$([Z$(),Fw(),ls()])});function is(){return[{action:"newChat",labelKey:"tasks.menu.newChat"},{action:"newShell",labelKey:"tasks.menu.newShell"}]}function os($){return[{action:"rename",labelKey:"tasks.menu.rename"},{action:"pin",labelKey:$?"tasks.menu.unpin":"tasks.menu.pin"},{action:"localMerge",labelKey:"tasks.menu.localMerge"},{action:"archive",labelKey:"tasks.menu.archive"},{action:"delete",labelKey:"tasks.menu.delete",danger:!0}]}function as($,Z={}){if($.kind==="project")return[{action:"newTask",labelKey:"tasks.menu.newTask"}];if($.kind==="worktree")return[{action:"open",labelKey:"tasks.menu.open"},...is(),...os($.task.pinned===!0)];let J=[{action:"open",labelKey:"tasks.menu.openTab"}];if((Z.tabCount??0)>1)J.push({action:"closeTab",labelKey:"tasks.menu.closeTab"});return[...J,...is(),...os($.task.pinned===!0)]}function FM0($){for(let Z of[...ZC])Z($)}function rs($,Z){if(ZC.add(Z),VG!==$){if(VG)VG.onMouseDown=void 0;VG=$,$.onMouseDown=FM0}return()=>{if(ZC.delete(Z),ZC.size===0&&VG)VG.onMouseDown=void 0,VG=null}}var ZC,VG=null;var ss=d(()=>{ZC=new Set});function es($,Z){let J=N4(),X=V1(Z);ts.useEffect(()=>{let z=J?.root;if(!$||!z)return;return rs(z,()=>X.current())},[$,J])}var ts;var $t=d(async()=>{ss();w7();await v4();ts=z1(q1(),1)});function Zt($){let Z=e0(),{tree:J,activateRow:X,setCursorIndex:z,actions:G}=$,[W,H]=M6.useState(null),[U,B]=M6.useState(0),M=M6.useCallback((E,I,T,w)=>{let y=as(E,I);H({row:E,actions:y.map((f)=>f.action),entries:y.map((f)=>({id:f.action,label:Z(f.labelKey),danger:f.danger})),x:T,y:w}),B(0)},[Z]),O=M6.useCallback((E,I,T,w)=>{let y=J.rows.find((f)=>f.id===I);if(!y||y.kind==="project"||y.kind==="recent")return;z(E),M(y,{tabCount:J.tabCount(y.task.id)},T,w)},[J.rows,J.tabCount,M,z]),L=M6.useCallback((E,I,T)=>{let w=J.rows.find((y)=>y.kind==="project"&&y.id===E);if(!w)return;M(w,{},I,T)},[J.rows,M]),j=M6.useCallback(()=>H(null),[]);es(W!==null,j);let A=M6.useCallback((E)=>{let I=W?.entries.length??0;if(I===0)return;B((T)=>(T+E+I)%I)},[W]),C=M6.useCallback((E)=>{if(!W||E===void 0)return;let I=W.row;if(H(null),I.kind==="project"){if(E==="newTask")$.onAddTask?.();return}let T=I.task.id;switch(E){case"open":X(I.id);break;case"closeTab":if(I.kind==="tab")$.onCloseTab?.(T,I.tab.id);break;case"newChat":$.onNewTab?.(T,"chat");break;case"newShell":$.onNewTab?.(T,"shell");break;case"rename":G.onRenameRequest?.(T);break;case"pin":G.onPinRequest?.(T);break;case"localMerge":G.onLocalMergeRequest?.(T);break;case"archive":G.onArchiveRequest?.(T);break;case"delete":G.onDeleteRequest?.(T);break;default:break}},[W,X,G,$.onAddTask,$.onCloseTab,$.onNewTab]),_=M6.useCallback(()=>C(W?.actions[U]),[C,W,U]),b=M6.useCallback((E)=>C(W?.actions.find((I)=>I===E)),[C,W]);return{open:W!==null,entries:W?.entries??[],cursor:U,x:W?.x??0,y:W?.y??0,close:j,moveCursor:A,pickCurrent:_,pick:b,openForRow:O,openForProject:L}}var M6;var Jt=d(async()=>{X$();await $t();M6=z1(q1(),1)});function Xt($){let[Z,J]=Yz.useState(!1),[X,z]=Yz.useState(""),G=V1($.focused),W=$.onActiveChange,H=Yz.useCallback(()=>{z(""),J(!0),W?.(!0)},[W]),U=Yz.useCallback(()=>{J(!1),z(""),W?.(!1)},[W]),B=N4();return Yz.useEffect(()=>{if(!Z||!B)return;let M=(O)=>{if(!G.current||JG())return;z((L)=>Wc(L,O)??L)};return B.keyInput.on("keypress",M),()=>{B.keyInput.off("keypress",M)}},[Z,B]),{active:Z,query:X,enter:H,exit:U}}var Yz;var Qt=d(async()=>{hQ();w7();await J$([v4(),D4()]);Yz=z1(q1(),1)});function zt($){return $.split("::").slice(0,2).join("::")}function JC($,Z=Date.now()){Sw.set(zt($),Z)}function Yt($,Z=Date.now()){let J=zt($),X=Sw.get(J);if(X===void 0)return!1;if(Z-X>15000)return Sw.delete(J),!1;return!0}var Sw;var XC=d(()=>{Sw=new Map});function MM0($={}){let Z=$.entries??(()=>i$().entries()),J=$.snapshot??Y6,X=Math.max(1,$.releaseAfterMisses??2),z=new Map,G=new Map,W=new Set,H=new Map,U=new Set,B=!1,M=()=>{for(let j of U)j()},O={async probe(){if(B)return;let j=new Map,A=new Set;for(let[_,b]of H)A.add(_),j.set(_,b);for(let[_,b]of Z()){A.add(_);let E=b.shellPid??null;if(E!==null)j.set(_,E)}let C=!1;for(let _ of[...z.keys()]){if(A.has(_)&&j.has(_))continue;z.delete(_),G.delete(_),C=!0}for(let _ of[...W]){if(A.has(_)&&j.has(_))continue;W.delete(_)}if(j.size>0){let _;try{_=z6(await J())}catch{if(C)M();return}if(B)return;for(let[b,E]of j){let I=sJ(_,E)?.vendor??null;W.add(b);let T=z.get(b)??null;if(I){if(G.delete(b),T===I)continue;z.set(b,I),C=!0;continue}if(T===null)continue;let w=(G.get(b)??0)+1;if(w<X){G.set(b,w);continue}G.delete(b),z.delete(b),C=!0}}if(C)M()},get(j){return z.get(j)??null},resolve(j){let A=z.get(j);if(A)return A;return W.has(j)?null:void 0},setAuxPids(j){H=j},subscribe(j){return U.add(j),()=>{U.delete(j)}},dispose(){B=!0,U.clear(),z.clear(),G.clear(),W.clear(),clearInterval(L)}},L=setInterval(()=>{O.probe()},$.intervalMs??2000);return L.unref?.(),O}function MX(){if(!Iw)Iw=MM0();return Iw}var Iw=null;var YM=d(()=>{DZ();G8()});function LM0($,Z){let J=/^tab-(\d+)$/.exec($);return J?Number(J[1]):Z}function QC($,Z){let J=new Set($.tabs.map((U)=>U.id)),X=[];for(let U of Z){if(J.has(U))continue;J.add(U),X.push(U)}if(X.length===0)return $;let z=$.nextOrdinal,G=X.map((U)=>({kind:"engine",id:U,title:null,ordinal:LM0(U,z++),spawned:!0}));G.sort((U,B)=>U.ordinal-B.ordinal);let W=[...$.tabs,...G],H=W.reduce((U,B)=>Math.max(U,B.ordinal),0);return{tabs:W,activeId:$.activeId,nextOrdinal:Math.max($.nextOrdinal,H+1)}}function zC($,Z,J){if(J.length===0)return!1;if(lo(Z,J),!no())return!1;let z=$.store[v5(Z)],G=e7.get(Z)??(z&&Array.isArray(z.tabs)?z:null),W={tabs:[],activeId:J[0],nextOrdinal:1},H=QC(G??W,J);if(G&&H===G)return!1;return e7.set(Z,H),$.set(v5(Z),H),!0}var Ew=d(()=>{M2()});function Gt($,Z){let J=new Map;for(let X of $){if(X.alive===!1)continue;let{taskId:z,tabId:G}=zz(X.key);if(!G)continue;let W=G.split("::")[0];if(Z.has(jG(z,W)))continue;let H=J.get(z)??[];if(H.some((U)=>U.id===W))continue;H.push({id:W,label:`\u26A0 ${mQ(X.title?.trim()??"",null).trim()||W}`,active:H.length===0,engine:!0}),J.set(z,H)}return J}var Wt=d(()=>{F7();GU()});function OM0($,Z){if($.length!==Z.length)return!1;return $.every((J,X)=>{let z=Z[X];return J.key===z.key&&J.alive===z.alive&&J.title===z.title})}function jM0(){return process.env.BUN_TEST!=="1"&&process.env.VITEST!=="true"}function qt($=jM0()){let[Z,J]=YC.useState(Ht);return YC.useEffect(()=>{if(!$)return;let X=!1,z=async()=>{try{let W=await rY(),{sessions:H=[]}=await W.request("pty.list",{});if(!X)J((U)=>OM0(U,H)?U:H)}catch{if(!X)J((W)=>W.length===0?W:Ht)}};z();let G=setInterval(()=>void z(),NM0);return()=>{X=!0,clearInterval(G)}},[$]),Z}var YC,NM0=2000,Ht;var Ut=d(()=>{Mq();YC=z1(q1(),1),Ht=[]});function Bt($){let{tasks:Z,kv:J,selectedTaskId:X,selectedTabId:z}=$,G=$.query??"",W=G.trim()!=="",H=MX(),[U,B]=$2.useState(0);$2.useEffect(()=>H.subscribe(()=>B((f)=>f+1)),[H]);let M=qt();$2.useEffect(()=>{let f=new Map;for(let h of M)if(h.alive!==!1&&typeof h.pid==="number"&&h.pid>0)f.set(h.key,h.pid);return H.setAuxPids(f),()=>H.setAuxPids(new Map)},[M,H]);let O=$2.useMemo(()=>{let f=new Map;for(let h of M){let p=h.title?.trim();if(p)f.set(h.key,p)}return f},[M]),L=$2.useMemo(()=>{let f=new Map;for(let h of Z){let p=iq(J,h.id);if(!p)continue;let m=h.vendor??b4;f.set(h.id,p.tabs.map((t)=>{let s=q8(h.id,t),G0=H.resolve(s),U0=G0===void 0?t.liveVendor:G0;return{id:t.id,label:BG(t,m,U0,O.get(s)),active:t.id===p.activeId,engine:t.kind==="engine"||(U0??null)!==null}}))}return f},[Z,J,H,U,O]),j=$2.useMemo(()=>{let f=new Set;for(let[m,t]of L)for(let s of t)f.add(jG(m,s.id));let h=new Map,p=M.filter((m)=>!Yt(m.key));for(let[m,t]of Gt(p,f))if(Z.some((s)=>s.id===m))h.set(m,t);return h},[L,M,Z]);$2.useEffect(()=>{if(!J)return;for(let[f,h]of j)zC(J,f,h.map((p)=>p.id))},[j,J]);let A=$2.useMemo(()=>{if(j.size===0)return L;let f=new Map(L);for(let[h,p]of j){let m=f.get(h);f.set(h,m?[...m,...p.map((t)=>({...t,active:!1}))]:p)}return f},[L,j]),C=$.recentTask??null,{rows:_,totalCount:b}=$2.useMemo(()=>{let f=Js({tasks:Z,tabsByTask:A}),h=Bw(f).length;return{rows:W?Xs(f,G):$s(f,C),totalCount:h}},[Z,A,W,G,C]),E=$2.useMemo(()=>Bw(_),[_]),I=$2.useMemo(()=>{if(X===null)return null;if(z!==null)return jG(X,z);return X},[X,z]),T=$2.useCallback((f)=>A.get(f)?.length??0,[A]),w=$2.useCallback((f)=>Qs(Z,f),[Z]),y=$2.useCallback((f)=>{let h=Z.find((p)=>p.id===f);if(!h||h.kind==="dir")return null;return MG(h.repo)},[Z]);return{rows:_,flatIds:E,totalCount:b,tabCount:T,activeRowId:I,projectIdOfTask:y,mainTaskIdOfProject:w}}var $2;var Kt=d(()=>{U2();i8();GU();XC();YM();jE();b5();Ew();M2();Wt();Ut();$2=z1(q1(),1)});function Ft($){let{theme:Z}=d0(),J=rQ(),X=$.focused??!0,z=f5(),G=r4.useMemo(()=>Gr($.tasks,"active"),[$.tasks]),[W,H]=r4.useState(0);r4.useEffect(()=>{let n=setInterval(()=>H((Y0)=>Y0+1),Yc);return()=>clearInterval(n)},[]);let U=Xt({focused:X,onActiveChange:$.onSearchActiveChange}),B=Bt({tasks:G,kv:J,selectedTaskId:$.selectedId,selectedTabId:$.selectedTabId??null,query:U.active?U.query:"",recentTask:$.recentTask??null}),M=r4.useMemo(()=>{let n=new Map;return B.flatIds.forEach((Y0,Z0)=>n.set(Y0,Z0)),n},[B.flatIds]),[O,L]=r4.useState(-1),j=r4.useRef(O),A=r4.useCallback((n)=>{j.current=n,L(n)},[]),C=V1(B.flatIds),_=r4.useRef(null),b=r4.useRef(null),E=$.moveMode===!0;r4.useEffect(()=>{let n=B.flatIds;if(E){let $0=b.current,O0=$0===null?-1:n.indexOf($0);if(O0>=0){if(O0!==j.current)A(O0);return}}let Y0=B.activeRowId,Z0=Y0!==_.current;_.current=Y0;let a=Y0===null?-1:n.indexOf(Y0);if(Z0&&a>=0){if(a!==j.current)A(a);return}if(j.current>=n.length)A(Math.max(0,n.length-1));else if(j.current<0&&n.length>0)A(a>=0?a:0)},[B.flatIds,B.activeRowId,E,A]),r4.useEffect(()=>{b.current=B.flatIds[j.current]??null}),r4.useEffect(()=>{if(U.query,!U.active)return;A(0)},[U.active,U.query,A]);let I=V1($.recentTask??null),T=r4.useCallback((n)=>{let Y0=n===YU?I.current:null,{taskId:Z0,tabId:a}=Y0?{taskId:Y0.id,tabId:null}:zz(n);if($.onSelect(Z0),a===null){$.onActivate?.(Z0);return}$.onSelectTab?.(Z0,a),$.onActivate?.(Z0)},[$.onSelect,$.onActivate,$.onSelectTab]),w=V1(T),y=r4.useRef(null);if(y.current===null)y.current=tr({getCursor:()=>j.current,setCursor:A,getFlatIds:()=>C.current,onSelect:(n)=>w.current(n)});let f=y.current,h=V1($.tasks),p=r4.useCallback((n)=>{let Y0=C.current[j.current];if(Y0===void 0||Y0===YU)return;let{taskId:Z0,tabId:a}=zz(Y0);if(a!==null){$.onMoveTabRequest?.(Z0,a,n);return}let $0=h.current.find((w0)=>w0.id===Z0);if(!$0)return;if($0.kind!=="main"){$.onMoveRequest?.(Z0,n);return}let O0=B.projectIdOfTask(Z0);if(O0===null)return;let Q0=B.mainTaskIdOfProject(O0);if(Q0===null)return;$.onMoveRequest?.(Q0,n)},[B.projectIdOfTask,B.mainTaskIdOfProject,$.onMoveRequest,$.onMoveTabRequest]),m=B.flatIds[O],t=r4.useMemo(()=>{if(m===void 0||m===YU)return{projectId:null,rowId:null};let{taskId:n,tabId:Y0}=zz(m);if(Y0===null){if($.tasks.find((a)=>a.id===n)?.kind==="main")return{projectId:B.projectIdOfTask(n),rowId:null}}return{projectId:null,rowId:m}},[m,$.tasks,B.projectIdOfTask]),s=Zt({tree:B,activateRow:T,setCursorIndex:A,onAddTask:$.onAddTask,onCloseTab:$.onCloseTab,onNewTab:$.onNewTab,actions:$}),G0=y_("sidebar");b1(()=>({enabled:X&&!U.active&&!s.open,bindings:_5({"sidebar.nav":(n,Y0)=>{G0();let Z0=(Y0??0)%2===0;if(E){p(Z0?1:-1);return}if(Z0)f.moveDown();else f.moveUp()},"sidebar.select":()=>{if(G0(),E){$.onMoveModeExit?.();return}f.selectCurrent()},"sidebar.goto":(n,Y0)=>{if(E)return;if((Y0??0)%2===1)f.pressShiftG();else f.pressG()},"sidebar.tree.open":()=>{if(E)return;f.selectCurrent()},"sidebar.search.enter":()=>{if(E)return;U.enter()},"sidebar.delete":()=>{if(E)return;U0($.onDeleteRequest)},"sidebar.archive":()=>{if(E)return;U0($.onArchiveRequest)},"sidebar.rename":()=>{if(E)return;U0($.onRenameRequest)},"sidebar.localMerge":()=>U0($.onLocalMergeRequest),"sidebar.pin":()=>{if(E)return;U0($.onPinRequest)}})})),b1(()=>({enabled:X&&E,bindings:[{key:"escape",cmd:()=>$.onMoveModeExit?.()}]})),b1(()=>({enabled:X&&U.active,bindings:_5({"sidebar.search.nav":(n,Y0)=>{if((Y0??0)%2===0)f.moveDown();else f.moveUp()},"sidebar.search.submit":()=>{f.selectCurrent(),U.exit()},"sidebar.search.cancel":()=>U.exit()})})),b1(()=>({enabled:X&&s.open,bindings:_5({"sidebar.nav":(n,Y0)=>s.moveCursor((Y0??0)%2===0?1:-1),"sidebar.select":()=>s.pickCurrent()})})),b1(()=>({enabled:X&&s.open,bindings:[{key:"escape",cmd:()=>s.close()}]}));function U0(n){let Y0=C.current[j.current];if(Y0===void 0||!n)return;if(Y0===YU)return;n(zz(Y0).taskId)}b1(()=>({enabled:!0,bindings:_5({"tasks.jump":(n,Y0)=>{let Z0=C.current[Y0??0];if(Z0===void 0)return;A(Y0??0),w.current(Z0)}})}));let F0=r4.useRef(null),B0=r4.useRef(null);if(B0.current===null)B0.current=new Map;let W0=B0.current;r4.useEffect(()=>{let n=F0.current;if(!n||O<0||n.viewport.height<=0)return;let Y0=W0.get(O);if(Y0)n.scrollChildIntoView(Y0.id)},[O,W0]);let k=r4.useRef(null),i=$.width??dY;r4.useEffect(()=>{let n=k.current;if(!n)return;n.width=i,n.flexShrink=1,n.minHeight=0},[i]);let l={cursorIndex:O,activeRowId:B.activeRowId,selectedTaskId:$.selectedId,movingRowId:E?t.rowId:null,rowEls:W0,onPress:(n,Y0)=>{s.close(),A(n),T(Y0)},onContextMenu:s.openForRow,branchTick:W,engineState:$.engineState,engineTabState:$.engineTabState,engineLifecycle:$.engineLifecycle,taskJobs:$.taskJobs,worktreeChanges:$.worktreeChanges};return R.jsxDEV("box",{ref:k,flexGrow:1,minHeight:0,flexDirection:"column",backgroundColor:Z.backgroundPanel,paddingTop:1,paddingBottom:1,children:[R.jsxDEV(Ms,{focused:X,status:$.headerStatus??null,onStatusClick:$.onHeaderStatusClick},void 0,!1,void 0,this),R.jsxDEV(Ls,{onAddTask:$.onAddTask},void 0,!1,void 0,this),U.active?R.jsxDEV(Fs,{query:U.query,matchCount:B.flatIds.length,totalCount:B.totalCount},void 0,!1,void 0,this):null,R.jsxDEV(Ns,{nav:$.nav??"terminal",setNav:(n)=>$.onNavChange?.(n)},void 0,!1,void 0,this),R.jsxDEV(ps,{rows:B.rows,flatIndexOf:M,searching:U.active&&U.query.trim().length>0,shared:l,onProjectContextMenu:s.openForProject,movingProjectId:E?t.projectId:null,setScrollRef:(n)=>{F0.current=n}},void 0,!1,void 0,this),$.zenActive?R.jsxDEV(Os,{onZenClick:$.onZenClick},void 0,!1,void 0,this):null,s.open?R.jsxDEV(qs,{entries:s.entries,cursor:s.cursor,x:s.x,y:s.y,dims:{width:i,height:z.height},onPick:s.pick},void 0,!1,void 0,this):null,z.height<0?R.jsxDEV("text",{children:""},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}var r4;var Mt=d(async()=>{i8();GU();hQ();SZ();A3();w7();Kt();a0();await J$([v4(),tF(),Z$(),D4(),Us(),Fw(),ns(),Jt(),Qt()]);r4=z1(q1(),1)});class ww{ptyIdentity=null;coordinate=null;update($,Z){if($!==this.ptyIdentity)this.ptyIdentity=$,this.coordinate=null;if($===null)return this.coordinate=null,null;if(Z)this.coordinate={x:Z.x,y:Z.y};return this.coordinate}current(){return this.coordinate}}var xw,fw;var Lt=d(()=>{xw=class xw extends ww{};fw=class fw extends ww{}});import{RGBA as VM0}from"@opentui/core";function Nt($){if(!$)return;return VM0.fromInts($[0],$[1],$[2])}function _M0($){return{__isChunk:!0,text:$.text,...$.fg?{fg:Nt($.fg)}:{},...$.bg?{bg:Nt($.bg)}:{},...$.attributes!==void 0?{attributes:$.attributes}:{}}}function Ot($){let Z=[];for(let J=0;J<$.length;J++){if(J>0)Z.push({__isChunk:!0,text:`
|
|
751
|
+
`).map((Z)=>Z.trim()).filter(Boolean)}function hr($){let{theme:Z}=d0(),J=e0(),X=N4(),[z,G]=Qz.useState(null),[W,H]=Qz.useState([]),[U,B]=Qz.useState(!0),[M,O]=Qz.useState("update"),[L,j]=Qz.useState(null),A=z?.latest??R$,C=W[0]?.url??mT(A),_=[{id:"update",key:"U",label:J("update.actions.updateNow"),detail:VZ},{id:"release",key:"R",label:J("update.actions.openRelease"),detail:C??J("update.releaseUrlUnavailable")},{id:"close",key:"Q",label:J("update.actions.close"),detail:J("update.actions.closeDetail")}];Qz.useEffect(()=>{b()},[]);async function b(){let w=await bY({force:!0});G(w);let y=w?.latest??R$,f=await kT({current:R$,latest:y});H(f),B(!1)}function E(w){let y=_.map((p)=>p.id),h=(y.indexOf(M)+w+y.length)%y.length;O(y[h]??"update")}function I(w=M){if(w==="close"){$.onClose();return}if(w==="release"){j(SF0(C)?J("update.statusReleaseOpened"):J("update.statusReleaseError"));return}T()}async function T(){j(J("update.statusRunningUpdater")),await new Promise((w)=>setTimeout(w,30)),await n_({renderer:X,t:J,targetLabel:A,command:VZ})}return b1(()=>({bindings:[{key:"up",cmd:()=>E(-1)},{key:"down",cmd:()=>E(1)},{key:"k",cmd:()=>E(-1)},{key:"j",cmd:()=>E(1)},{key:"return",cmd:()=>I()},{key:"u",cmd:()=>I("update")},{key:"r",cmd:()=>I("release")},...s7(()=>I("close"))]})),R.jsxDEV("box",{flexDirection:"column",flexGrow:1,backgroundColor:Z.background,paddingTop:1,paddingLeft:2,paddingRight:2,children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",flexShrink:0,children:[R.jsxDEV("text",{fg:Z.text,attributes:zU.BOLD,wrapMode:"none",children:J("update.pageTitle")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",onMouseUp:()=>I("close"),children:"q / esc"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{flexDirection:"row",gap:2,flexShrink:0,paddingTop:1,children:[R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:J("update.current")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.text,attributes:zU.BOLD,wrapMode:"none",children:["v",R$]},void 0,!0,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:J("update.latest")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:z?.hasUpdate?Z.warning:Z.success,attributes:zU.BOLD,wrapMode:"none",children:["v",A]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{flexDirection:"column",flexShrink:0,paddingTop:1,gap:0,children:_.map((w)=>R.jsxDEV("box",{flexDirection:"row",gap:1,paddingLeft:1,paddingRight:1,backgroundColor:M===w.id?Z.primary:void 0,onMouseUp:()=>I(w.id),children:[R.jsxDEV("box",{width:4,flexShrink:0,children:R.jsxDEV("text",{fg:M===w.id?Z.selectedListItemText:Z.accent,attributes:zU.BOLD,wrapMode:"none",children:["[",w.key,"]"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),R.jsxDEV("box",{width:14,flexShrink:0,children:R.jsxDEV("text",{fg:M===w.id?Z.selectedListItemText:Z.text,wrapMode:"none",children:w.label},void 0,!1,void 0,this)},void 0,!1,void 0,this),R.jsxDEV("text",{fg:M===w.id?Z.selectedListItemText:Z.textMuted,wrapMode:"word",children:w.detail},void 0,!1,void 0,this)]},w.id,!0,void 0,this))},void 0,!1,void 0,this),L?R.jsxDEV("text",{fg:Z.info,wrapMode:"word",children:L},void 0,!1,void 0,this):null,R.jsxDEV("box",{flexShrink:0,paddingTop:1,children:R.jsxDEV("text",{fg:Z.textMuted,attributes:zU.DIM,wrapMode:"none",children:J("update.changesSectionHeader",{from:R$,to:A})},void 0,!1,void 0,this)},void 0,!1,void 0,this),R.jsxDEV("scrollbox",{flexGrow:1,flexShrink:1,stickyScroll:!1,verticalScrollbarOptions:{trackOptions:{backgroundColor:Z.background,foregroundColor:Z.borderActive}},children:R.jsxDEV("box",{flexDirection:"column",paddingRight:1,paddingBottom:1,gap:0,children:[U?R.jsxDEV("text",{fg:Z.textMuted,children:J("update.loadingNotes")},void 0,!1,void 0,this):null,!U&&W.length===0?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"word",children:J("update.notesUnavailable")},void 0,!1,void 0,this):null,W.map((w)=>R.jsxDEV("box",{flexDirection:"column",paddingBottom:1,gap:0,children:[R.jsxDEV("text",{fg:Z.text,attributes:zU.BOLD,wrapMode:"none",children:["v",w.version]},void 0,!0,void 0,this),Hw(w.body).map((y,f)=>R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"word",children:y},`${f}:${y}`,!1,void 0,this))]},w.version,!0,void 0,this))]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Qz;var qw=d(async()=>{d8();X$();Ww();a0();await J$([v4(),Z$(),D4()]);Qz=z1(q1(),1)});import{TextAttributes as ur}from"@opentui/core";function IF0($){if(!$)return[];let Z=[];for(let J of $.listTasks())if(J.repo&&!Z.includes(J.repo))Z.push(J.repo);return Z}function EF0($,Z){let J=Date.parse($);if(!Number.isFinite(J))return"";let X=Math.round((Z-J)/60000);if(X<60)return`${Math.max(X,0)}m`;let z=Math.round(X/60);if(z<24)return`${z}h`;return`${Math.round(z/24)}d`}function cr($){let{theme:Z}=d0(),J=e0(),X=IF0($.orchestrator),[z,G]=F6.useState(()=>{let h=$.focusRepo?X.indexOf($.focusRepo):-1;return h>=0?h:0}),W=X[z],[H,U]=F6.useState(null),[B,M]=F6.useState(null),[O,L]=F6.useState(0),[j,A]=F6.useState(!1),[C,_]=F6.useState(!1),[b,E]=F6.useState(null);F6.useEffect(()=>{let h=!1,p=$.orchestrator;if(!p||!W){U([]);return}return M(null),p.listWorkItems({repo:W,limit:30,...j?{assignee:"@me"}:{},...O>0?{refresh:!0}:{}}).then((m)=>{if(!h)U(m.items)}).catch((m)=>{if(h)return;M(m instanceof Error?m.message:String(m)),U([])}),()=>{h=!0}},[$.orchestrator,W,j,O]);let I=H??[],[T,w]=F6.useState(0);F6.useEffect(()=>{w((h)=>w4(h,I.length))},[I.length]);async function y(){let h=$.orchestrator,p=I[T];if(!h||!p||!W||C)return;_(!0),E(J("workItems.starting",{number:p.number}));try{let m=await h.startWorkItem({repo:W,number:p.number});if(m.started)$.onOpenTask?.(m.taskId);else E(J("workItems.startedNoEngine",{title:m.title}))}catch(m){E(m instanceof Error?m.message:String(m))}finally{_(!1)}}b1(()=>({enabled:$.focused!==!1,bindings:[...s7($.onClose),{key:"j",cmd:()=>w((h)=>w4(h+1,I.length))},{key:"down",cmd:()=>w((h)=>w4(h+1,I.length))},{key:"k",cmd:()=>w((h)=>w4(h-1,I.length))},{key:"up",cmd:()=>w((h)=>w4(h-1,I.length))},{key:"tab",cmd:()=>G((h)=>X.length?(h+1)%X.length:0)},{key:"a",cmd:()=>A((h)=>!h)},{key:"r",cmd:()=>L((h)=>h+1)},{key:"return",cmd:()=>void y()}]}));let f=Date.now();return R.jsxDEV("box",{flexDirection:"column",flexGrow:1,padding:1,children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:[R.jsxDEV("text",{attributes:ur.BOLD,fg:Z.accent,children:J("workItems.title")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,children:[W?_9(W,X):J("workItems.noRepo"),j?` ${J("workItems.assignedFilter")}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B?R.jsxDEV("box",{flexDirection:"column",marginTop:1,children:R.jsxDEV("text",{fg:Z.error,children:B},void 0,!1,void 0,this)},void 0,!1,void 0,this):H===null?R.jsxDEV("text",{fg:Z.textMuted,children:J("common.loading")},void 0,!1,void 0,this):I.length===0?R.jsxDEV("text",{fg:Z.textMuted,children:J("workItems.empty")},void 0,!1,void 0,this):R.jsxDEV("box",{flexDirection:"column",marginTop:1,flexGrow:1,children:I.map((h,p)=>{let m=HX(Z,{cursor:p===T,selected:!1});return R.jsxDEV("box",{flexDirection:"column",flexShrink:0,...m.backgroundColor?{backgroundColor:m.backgroundColor}:{},children:[R.jsxDEV("box",{flexDirection:"row",gap:0,children:[R.jsxDEV("text",{fg:m.markerColor,wrapMode:"none",children:m.marker},void 0,!1,void 0,this),R.jsxDEV("box",{flexDirection:"row",flexGrow:1,paddingLeft:1,paddingRight:1,gap:1,children:[R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:`#${h.number}`},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.text,attributes:p===T?ur.BOLD:void 0,wrapMode:"none",flexGrow:1,children:h.title},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{flexDirection:"row",gap:0,children:[R.jsxDEV("text",{fg:m.markerColor,wrapMode:"none",children:m.marker},void 0,!1,void 0,this),R.jsxDEV("box",{flexDirection:"row",flexGrow:1,paddingLeft:2,paddingRight:1,gap:1,children:[R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",flexGrow:1,children:[h.author,...h.labels.slice(0,2)].filter(Boolean).join(" \xB7 ")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:EF0(h.updatedAt,f)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},`${h.number}`,!0,void 0,this)})},void 0,!1,void 0,this),b?R.jsxDEV("text",{fg:Z.textMuted,children:b},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}var F6;var dr=d(async()=>{p8();i8();X$();a0();await J$([Z$(),D4()]);F6=z1(q1(),1)});import{TextAttributes as lr}from"@opentui/core";function pr($){return $.flatMap((Z)=>Z.worktrees)}function yF0($,Z){let J=(z)=>z.replace(/^\/private\//,"/").replace(/\/+$/,""),X=J(Z);return $.listTasks().find((z)=>z.worktreePath&&J(z.worktreePath)===X)?.id}function nr($){let{theme:Z}=d0(),J=o$(),X=e0(),[z,G]=FX.useState(null),[W,H]=FX.useState(0),U=()=>H((h)=>h+1);FX.useEffect(()=>{let h=!1,p=!1,m=$.orchestrator;if(!m){G([]);return}return m.listWorktrees({network:!1}).then((t)=>{if(!h&&!p)G(t)}).catch(()=>{}),m.listWorktrees().then((t)=>{if(p=!0,h)return;G(t);let s=new Set(pr(t).map((G0)=>G0.path));M((G0)=>G0.filter((U0)=>s.has(U0)))}).catch(()=>{}),()=>{h=!0}},[$.orchestrator,W]);let[B,M]=FX.useState([]),O=(z??[]).map((h)=>({...h,worktrees:h.worktrees.filter((p)=>!B.includes(p.path))})),L=pr(O),[j,A]=FX.useState(0);FX.useEffect(()=>{A((h)=>w4(h,L.length))},[L.length]);let[C,_]=FX.useState(null);async function b(h,p){let m=$.orchestrator;if(!m)return;M((t)=>[...t,h.path]);try{await m.removeWorktree(h.path,p),U()}catch(t){if(M((s)=>s.filter((G0)=>G0!==h.path)),!p&&t instanceof Error&&wF0.test(t.message)){if(await O4.show(J,X("worktrees.delete.forceTitle"),X("worktrees.delete.forceBody",{branch:h.branch||h.path}),X("common.cancel"),X("worktrees.delete.button"))===!0)await b(h,!0);return}console.error(`[rove worktrees] ${X("worktrees.delete.failed",{error:String(t)})}`)}}async function E(h){if(!$.orchestrator||C||B.includes(h.path))return;if(await O4.show(J,X("worktrees.delete.confirmTitle"),X("worktrees.delete.confirmBody",{branch:h.branch||h.path}),X("common.cancel"),X("worktrees.delete.button"))!==!0)return;b(h,!1)}async function I(h){let p=$.orchestrator;if(!p||C)return;let m=yF0(p,h.path);if(!m){console.error(`[rove worktrees] ${X("worktrees.land.noTask")}`);return}if(await O4.show(J,X("worktrees.land.confirmTitle"),X("worktrees.land.confirmBody",{branch:h.branch||h.path}),X("common.cancel"),X("worktrees.land.button"))!==!0)return;_(h.path);try{let s=await p.landTask(m);console.error(`[rove worktrees] ${X("worktrees.land.done",{branch:s.branch,landedOn:s.landedOn,commit:s.commit})}`),U()}catch(s){let G0=s instanceof Error?s.message:String(s);if(xF0.test(G0))console.error(`[rove worktrees] ${X("worktrees.land.conflict",{files:G0})}`);else if(fF0.test(G0))console.error(`[rove worktrees] ${X("worktrees.land.dirtyBase")}`);else console.error(`[rove worktrees] ${X("worktrees.land.failed",{error:G0})}`)}finally{_(null)}}b1(()=>({enabled:J.stack.length===0,bindings:[...s7($.onClose),{key:"up",cmd:()=>A((h)=>w4(h-1,L.length))},{key:"down",cmd:()=>A((h)=>w4(h+1,L.length))},{key:"d",cmd:()=>{let h=L[j];if(h)E(h)}},{key:"l",cmd:()=>{let h=L[j];if(h)I(h)}}]}));function T(h){if(h===!0)return R.jsxDEV("text",{fg:Z.success,children:[" ",X("worktrees.badge.remoteOn")]},void 0,!0,void 0,this);if(h===!1)return R.jsxDEV("text",{fg:Z.warning,children:[" ",X("worktrees.badge.remoteOff")]},void 0,!0,void 0,this);return R.jsxDEV("text",{fg:Z.textMuted,children:[" ",X("worktrees.badge.remoteUnknown")]},void 0,!0,void 0,this)}function w(h){if(h.verdictReason==="dirty"||h.verdictReason==="fresh")return null;let p=h.verdict==="merged"?Z.success:h.verdict==="stale"?Z.warning:Z.accent;return R.jsxDEV("text",{fg:p,children:[" ",X(`worktrees.verdict.${h.verdictReason}`)]},void 0,!0,void 0,this)}let y=z===null,f=0;return R.jsxDEV("scrollbox",{flexGrow:1,backgroundColor:Z.background,paddingTop:1,paddingLeft:2,paddingRight:2,paddingBottom:1,verticalScrollbarOptions:{trackOptions:{foregroundColor:"transparent"}},children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:R.jsxDEV("text",{attributes:lr.BOLD,fg:Z.text,children:X("worktrees.title")},void 0,!1,void 0,this)},void 0,!1,void 0,this),y?R.jsxDEV("text",{fg:Z.textMuted,children:X("worktrees.loading")},void 0,!1,void 0,this):O.length===0?R.jsxDEV("text",{fg:Z.textMuted,children:X("worktrees.noProjects")},void 0,!1,void 0,this):O.map((h)=>{let p=f;return f+=h.worktrees.length,R.jsxDEV("box",{gap:0,paddingTop:1,children:[R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:h.repo},void 0,!1,void 0,this),h.worktrees.length===0?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:X("worktrees.noWorktrees")},void 0,!1,void 0,this):h.worktrees.map((m,t)=>{let s=p+t,G0=s===j;return R.jsxDEV("box",{gap:0,onMouseUp:()=>A(s),children:[R.jsxDEV("box",{flexDirection:"row",children:[R.jsxDEV("text",{fg:G0?Z.primary:Z.text,attributes:G0?lr.BOLD:void 0,wrapMode:"none",children:[G0?"\u25B8 ":" ",m.branch||X("worktrees.row.detached")]},void 0,!0,void 0,this),m.kobeManaged?R.jsxDEV("text",{fg:Z.textMuted,children:[" ",X("worktrees.badge.kobeManaged")]},void 0,!0,void 0,this):null,m.dirty?R.jsxDEV("text",{fg:Z.warning,children:[" ",X("worktrees.badge.dirty")]},void 0,!0,void 0,this):null,T(m.branchOnRemote),w(m),C===m.path?R.jsxDEV("text",{fg:Z.textMuted,children:" \u2026"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",paddingLeft:2,children:[R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:m.path},void 0,!1,void 0,this),m.createdAtMs>0?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:X("worktrees.row.created",{age:NG(m.createdAtMs)})},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},m.path,!0,void 0,this)})]},h.repo,!0,void 0,this)})]},void 0,!0,void 0,this)}var FX,wF0,xF0,fF0;var ir=d(async()=>{p8();d_();X$();a0();await J$([Z$(),D4(),C5(),TZ()]);FX=z1(q1(),1);wF0=/refusing to remove dirty worktree/,xF0=/LAND_CONFLICT/,fF0=/MAIN_CHECKOUT_DIRTY/});function or($){let[Z,J]=QM.useState(!1),[X,z]=QM.useState(!1),[G,W]=QM.useState(!1),[H,U]=QM.useState("terminal"),B=(M)=>{U(M),$.setFocused(aa(M))};return{nav:H,setNav:U,goToNav:B,settingsOpen:Z,openSettings:()=>J(!0),closeSettings:()=>J(!1),worktreesOpen:X,openWorktrees:()=>z(!0),closeWorktrees:()=>z(!1),updateOpen:G,openUpdate:()=>W(!0),closeUpdate:()=>W(!1),kanbanOpen:H==="kanban",openKanban:()=>B("kanban"),closeKanban:()=>B("terminal"),automationsOpen:H==="automations",openAutomations:()=>B("automations"),closeAutomations:()=>B("terminal"),workItemsOpen:H==="issues",openWorkItems:()=>B("issues"),closeWorkItems:()=>B("terminal")}}function ar($){if($.worktreesOpen)return R.jsxDEV(nr,{orchestrator:$.orchestrator,onClose:$.closeWorktrees},void 0,!1,void 0,this);if($.updateOpen)return R.jsxDEV(hr,{onClose:$.closeUpdate},void 0,!1,void 0,this);return null}function rr($){let Z=$.orchestrator;if($.automationsOpen)return R.jsxDEV(Br,{orchestrator:Z,focused:$.contentFocused,...$.selectedTask?{focusRepo:$.selectedTask.repo}:{},onClose:$.closeAutomations,onOpenTask:(J)=>{$.closeAutomations(),$.activateTask(J)}},void 0,!1,void 0,this);if($.workItemsOpen)return R.jsxDEV(cr,{orchestrator:Z,focused:$.contentFocused,onClose:$.closeWorkItems,...$.selectedTask?{focusRepo:$.selectedTask.repo}:{},onOpenTask:(J)=>{$.closeWorkItems(),$.activateTask(J)}},void 0,!1,void 0,this);if($.kanbanOpen)return R.jsxDEV(kr,{orchestrator:Z,focused:$.contentFocused,onClose:$.closeKanban,onStartChat:$.startIssueChat,engineStates:$.engineStates,focusTask:$.selectedTask?{id:$.selectedTask.id,repo:$.selectedTask.repo}:void 0,onOpenTask:(J)=>{$.closeKanban(),$.activateTask(J)}},void 0,!1,void 0,this);return null}var QM;var sr=d(async()=>{dE();a0();await J$([Kr(),mr(),qw(),dr(),ir()]);QM=z1(q1(),1)});function tr($){let Z=$.scheduleTimeout??((U,B)=>{let M=setTimeout(U,B);return()=>clearTimeout(M)}),J=!1,X=null,z=()=>{J=!0,X?.(),X=Z(()=>{J=!1,X=null},700)},G=()=>{J=!1,X?.(),X=null},W=(U)=>{let B=$.getFlatIds();if(B.length===0)return;let M=$.getCursor(),O=M<0?0:M,L=Math.min(B.length-1,Math.max(0,O+U));$.setCursor(L)},H=(U)=>{let B=$.getFlatIds();if(B.length===0)return;$.setCursor(Math.min(B.length-1,Math.max(0,U)))};return{moveDown(){G(),W(1)},moveUp(){G(),W(-1)},selectCurrent(){G();let U=$.getFlatIds(),B=$.getCursor();if(B<0||B>=U.length)return;let M=U[B];if(M!==void 0)$.onSelect(M)},pressG(){if(J)G(),H(0);else z()},pressShiftG(){G(),H($.getFlatIds().length-1)},isChordArmed(){return J},disarmChord(){G()}}}import{homedir as gF0}from"os";function $s($,Z){if(!Z)return[...$];return[{kind:"recent",id:YU,task:Z,depth:1},...$]}function jG($,Z){return`${$}${Uw}${Z}`}function zz($){let Z=$.indexOf(Uw);if(Z<0)return{taskId:$,tabId:null};return{taskId:$.slice(0,Z),tabId:$.slice(Z+Uw.length)}}function Zs($,Z={}){let J=(Z.liveBranch??$.branch)||$.branch;if(J)return J;if($.kind!=="dir"&&$.title)return $.title;let X=$.worktreePath||$.repo;if(X){let z=Z.home??gF0(),G=z&&(X===z||X.startsWith(`${z}/`))?`~${X.slice(z.length)}`:X;return lj(G,bF0)}return $.title||"scratch"}function Js($){let{tasks:Z,tabsByTask:J}=$,X=new Map,z=Z.filter((U)=>U.kind==="dir"&&U.scratch===!0);for(let U of Z){if(U.kind==="dir"&&U.scratch===!0)continue;let B=MG(U.repo),M=X.get(B)??{repo:U.repo,tasks:[]};if(U.kind==="main")M.repo=U.repo,M.tasks.unshift(U);else M.tasks.push(U);X.set(B,M)}let G=[],W=new Set;for(let U of Z){if(U.kind!=="main")continue;let B=MG(U.repo);if(!W.has(B))W.add(B),G.push(B)}for(let U of X.keys())if(!W.has(U))W.add(U),G.push(U);let H=[];if(z.length>0){H.push({kind:"project",id:i_,repo:"",label:"Scratch",depth:0});for(let U of z){let B=J.get(U.id)??[];if(B.length===0){H.push({kind:"worktree",id:U.id,task:U,depth:1});continue}for(let M of B)H.push({kind:"tab",id:jG(U.id,M.id),task:U,tab:M,depth:2})}}for(let U of G){let B=X.get(U);if(!B)continue;H.push({kind:"project",id:U,repo:B.repo,label:U6(B.repo),depth:0});for(let M of B.tasks)vF0(H,M,J)}return H}function vF0($,Z,J){$.push({kind:"worktree",id:Z.id,task:Z,depth:1});for(let X of J.get(Z.id)??[])$.push({kind:"tab",id:jG(Z.id,X.id),task:Z,tab:X,depth:2})}function Bw($){let Z=[];for(let J of $)if(J.kind!=="project")Z.push(J.id);return Z}function er($){if($.kind==="dir"&&$.scratch===!0)return i_;return MG($.repo)}function kF0($){if($.kind==="project")return $.label;if($.kind==="tab")return $.tab.label;return`${$.task.title} ${$.task.branch??""} ${U6($.task.repo)}`}function Xs($,Z){let J=Z.trim();if(J==="")return[...$];let X=new Set,z=new Set;for(let W of $){if(!sE(J,kF0(W)))continue;if(X.add(W.id),z.add(W.id),W.kind==="project")continue;if(W.kind==="tab")z.add(W.task.id);let H=er(W.task);if(H!==null)z.add(H)}let G=[];for(let W of $){if(W.kind==="project"){if(z.has(W.id))G.push(W);continue}let H=er(W.task),U=H!==null&&X.has(H);if(W.kind==="worktree"){if(U||z.has(W.id))G.push(W);continue}if(U||X.has(W.task.id)||z.has(W.id))G.push(W)}return G}function Qs($,Z){for(let J of $){if(J.kind!=="main")continue;if(MG(J.repo)===Z)return String(J.id)}return null}function zs($){if($.tabActivity!==void 0)return $.tabActivity;if(!$.active||$.reportedTabCount>0)return;return $.taskActivity}var Uw="::",YU="~recent",i_="~scratch",bF0=24;var GU=d(()=>{i8()});function Gs($){let Z=$.maxWidth??mF0,J=Math.max(1,...$.lines.map((W)=>zc(W.text))),X=Math.min(Z-4,J),z=X+4,G=$.lines.length+2;return{innerWidth:X,boxWidth:z,boxHeight:G,left:Math.max(0,Math.min($.hoverX+2,$.screenWidth-z-1)),top:Math.max(0,Math.min($.hoverY+1,$.screenHeight-G-1))}}var Ys=2750,mF0=72;var Ws=d(()=>{i8()});function Hs($,Z){return CZ($,Z)}var Kw=()=>{};import{TextAttributes as hF0}from"@opentui/core";function qs($){let{theme:Z}=d0();if($.entries.length===0)return null;let J=Gs({hoverX:$.x,hoverY:$.y,screenWidth:$.dims.width,screenHeight:$.dims.height,lines:$.entries.map((X)=>({text:X.label}))});return R.jsxDEV("box",{position:"absolute",zIndex:uF0,left:J.left,top:J.top,width:J.boxWidth,flexDirection:"column",border:!0,borderColor:Z.focusAccent,backgroundColor:Z.backgroundElement,paddingLeft:1,paddingRight:1,onMouseDown:(X)=>X.stopPropagation(),children:$.entries.map((X,z)=>{let G=z===$.cursor;return R.jsxDEV("box",{flexShrink:0,backgroundColor:G?Z.focusAccent:void 0,onMouseUp:()=>$.onPick(X.id),children:R.jsxDEV("text",{fg:G?Z.backgroundElement:X.danger?Z.error:Z.text,attributes:G?hF0.BOLD:void 0,wrapMode:"none",flexGrow:1,children:Hs(X.label,J.innerWidth)},void 0,!1,void 0,this)},X.id,!1,void 0,this)})},void 0,!1,void 0,this)}var uF0;var Us=d(async()=>{Ws();Kw();a0();await Z$();uF0=Ys+10});function Bs($=process.platform){return $==="darwin"?"\u262F":"\u25D0"}import{MouseButton as cF0,TextAttributes as D9}from"@opentui/core";function Ks($){let{theme:Z,transparentBackground:J}=d0(),X=J?Z.border:Z.borderSubtle;return R.jsxDEV("box",{flexDirection:"column",flexShrink:0,children:[$.topPad?R.jsxDEV("box",{flexShrink:0,children:R.jsxDEV("text",{wrapMode:"none",children:" "},void 0,!1,void 0,this)},void 0,!1,void 0,this):null,R.jsxDEV("box",{flexDirection:"row",flexShrink:0,gap:1,paddingLeft:1,paddingRight:1,onMouseUp:$.onPress||$.onContextMenu?(z)=>{if(z.button===cF0.RIGHT&&$.onContextMenu){$.onContextMenu(z.x,z.y);return}$.onPress?.()}:void 0,children:[$.prefix?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",flexShrink:0,children:$.prefix},void 0,!1,void 0,this):null,R.jsxDEV("text",{fg:Z.textMuted,attributes:D9.BOLD,wrapMode:"none",flexShrink:0,children:$.label},void 0,!1,void 0,this),R.jsxDEV("text",{fg:X,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:"\u2500".repeat(240)},void 0,!1,void 0,this),$.suffix?R.jsxDEV("text",{fg:Z.info,attributes:D9.BOLD,wrapMode:"none",flexShrink:0,children:$.suffix},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Fs($){let{theme:Z}=d0(),J=e0();return R.jsxDEV("box",{flexDirection:"row",gap:0,flexShrink:0,paddingBottom:1,paddingLeft:1,children:[R.jsxDEV("text",{fg:Z.info,wrapMode:"none",children:"/"},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.text,wrapMode:"none",children:$.query},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.info,attributes:D9.BLINK,wrapMode:"none",children:"\u2588"},void 0,!1,void 0,this),$.query.length===0?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:[" ",J("tasks.search.placeholder")]},void 0,!0,void 0,this):R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:[" ",$.matchCount,"/",$.totalCount]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Ms($){let{theme:Z}=d0();return R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",gap:1,flexShrink:0,paddingLeft:1,paddingRight:1,children:R.jsxDEV("box",{flexDirection:"row",gap:1,children:[R.jsxDEV("text",{fg:$.focused?Z.focusAccent:Z.textMuted,attributes:D9.BOLD,wrapMode:"none",children:"ROVE"},void 0,!1,void 0,this),$.status?R.jsxDEV("text",{fg:$.status.emphasize?Z.warning:Z.textMuted,attributes:$.status.emphasize?D9.BOLD:D9.DIM,wrapMode:"none",onMouseUp:()=>$.onStatusClick?.(),children:$.status.label},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function Ls($){let{theme:Z,transparentBackground:J}=d0(),X=e0(),z=K9("task.new");if(!$.onAddTask)return null;return R.jsxDEV("box",{flexShrink:0,paddingTop:1,paddingBottom:1,paddingLeft:1,paddingRight:1,children:R.jsxDEV("box",{flexDirection:"row",flexShrink:0,gap:1,paddingLeft:1,paddingRight:1,backgroundColor:J?void 0:Z.backgroundElement,onMouseUp:()=>$.onAddTask?.(),children:[R.jsxDEV("text",{fg:Z.text,attributes:D9.BOLD,wrapMode:"none",flexGrow:1,children:X("tasks.menu.newTask")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.primary,attributes:D9.BOLD,wrapMode:"none",flexShrink:0,children:"+"},void 0,!1,void 0,this),z?R.jsxDEV("text",{fg:Z.textMuted,attributes:D9.DIM,wrapMode:"none",flexShrink:0,children:z},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function Ns($){let{theme:Z}=d0(),J=e0();return R.jsxDEV("box",{flexDirection:"column",flexShrink:0,paddingBottom:1,children:oa.map((X)=>{let z=$.nav===X.nav;return R.jsxDEV("box",{flexDirection:"row",flexShrink:0,paddingLeft:1,paddingRight:1,backgroundColor:z?Z.focusAccent:void 0,onMouseUp:(G)=>{G.stopPropagation(),$.setNav(X.nav)},children:R.jsxDEV("text",{fg:z?Z.backgroundElement:Z.textMuted,attributes:z?D9.BOLD:void 0,wrapMode:"none",flexGrow:1,children:J(X.labelKey)},void 0,!1,void 0,this)},X.nav,!1,void 0,this)})},void 0,!1,void 0,this)}function Os($){let{theme:Z}=d0();return R.jsxDEV("box",{flexShrink:0,paddingLeft:1,paddingRight:1,paddingTop:1,children:R.jsxDEV("text",{fg:Z.accent,attributes:D9.BOLD,wrapMode:"none",onMouseUp:(J)=>{J.stopPropagation(),$.onZenClick?.()},children:`${Bs()} ZEN`},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var Fw=d(async()=>{RV();dE();X$();a0();await Z$()});function o_($){let Z=new Map,J=$.equals??((z,G)=>z===G);function X(z){let G=Z.get(z);if(!G){let W=$.initial;G={read:()=>W,write:(H)=>{if(!J(W,H))W=H},inFlight:!1,nextAllowedAt:0},Z.set(z,G)}return G}return{read(z){if(!z)return $.initial;return X(z).read()},poll(z){if(!z)return;let G=X(z);zv(G,$,(W)=>$.run(z,W),(W)=>G.write(W))},reset(){Z.clear()}}}var zM=d(()=>{uH();uH()});import{stat as dF0}from"fs/promises";import{join as lF0}from"path";async function oF0($){try{let Z=await dF0(lF0($,".git","HEAD"));return`${Z.mtimeMs}:${Z.size}`}catch{return null}}async function aF0($,Z,J=G9){let X=await oF0($);if(X!==null){let U=js.get($);if(U&&U.fingerprint===X)return U.value}let z="",G=!1,W=await J("git",["symbolic-ref","--short","HEAD"],{cwd:$,env:Q8(),signal:Z}),H=W.status===0?W.stdout.trim():"";if(H&&H!=="HEAD")z=H,G=!0;else if((await J("git",["rev-parse","--verify","HEAD"],{cwd:$,env:Q8(),signal:Z})).status===0)z="(detached)",G=!0;if(G&&X!==null)js.set($,{fingerprint:X,value:z});return z}function Mw($){return Vs.read($)}function Lw($){Vs.poll($)}var pF0=2000,nF0=30000,iF0=1500,js,Vs;var Nw=d(()=>{pJ();zM();js=new Map;Vs=o_({initial:"",timeoutMs:pF0,slowRetryMs:nF0,minIntervalMs:iF0,run:($,Z)=>aF0($,Z)})});var a_;var Ow=d(()=>{a_=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]});function rF0($){switch($){case"rate_limited":return{text:W$("tasks.activity.rateLimited"),tone:"warning"};case"permission_needed":return{text:W$("tasks.activity.permissionNeeded"),tone:"warning"};case"error":return{text:W$("tasks.activity.error"),tone:"error"};default:return null}}function jw($){switch($.prStatus?.checkState){case"passing":return{glyph:"\u2713",tone:"success"};case"failing":return{glyph:"\u2717",tone:"error"};case"pending":return{glyph:"\u2022",tone:"warning"};default:return null}}function sF0(){return W$("tasks.subtitle.noTracking")}function tF0(){return W$("tasks.subtitle.materializing")}function eF0($){return $?W$("tasks.subtitle.deleteFailed"):W$("tasks.subtitle.deleting")}function As($){if($.kind==="main")return!1;return $.vendor!==void 0&&!p5($.vendor)}function Ps($,Z){if($?.state!=="turn_complete"||!Z)return!1;if(!$.at||!Z.mtimeMs)return!1;return Z.mtimeMs>$.at+$M0}function ZM0($){let{task:Z}=$,J=$.activity?.state,X=J!==void 0,z=As(Z)&&!X,G=$.job!==void 0,W=Z.deletion?.phase==="queued"||Z.deletion?.phase==="running",H=J==="running"||Ps($.activity,$.transcript);return W||G||!z&&H}function _w($){let{task:Z}=$,J=Z.kind==="main",X=J?$.mainBranch??"":Z.branch,z=$.activity?.state,G=z!==void 0,H=Ps($.activity,$.transcript)?null:JM0(z,$.completionSeen===!0),U=rF0(z),B=As(Z)&&!G,M=$.job!==void 0,O=Z.deletion?.phase==="queued"||Z.deletion?.phase==="running",L=Z.deletion?.phase==="error",j=ZM0({task:Z,activity:$.activity,job:$.job,transcript:$.transcript}),A=a_,C=A[$.spinnerFrame%A.length]??A[0],_=L?"error":O||M?"primary":B?"textMuted":U?.tone??(j?"primary":H?.tone??"textMuted"),b=B?sF0():"\u2014",E=j?$.lifecycle?.subagents??0:0,I=E>0&&X.length>0?`\u25C7${E} ${X}`:X,T=O||L?$.truncateBranch(eF0(L),$.subtitleBudget):M?$.truncateBranch(tF0(),$.subtitleBudget):U?$.truncateBranch(U.text,$.subtitleBudget):I.length>0?$.truncateBranch(I,$.subtitleBudget):$.truncateBranch(b,$.subtitleBudget),w=L?Ds:B?Vw:H?.glyph??"\u25CB";return{isMain:J,titleText:J?U6(Z.repo):Z.title,subtitleText:T,loading:j,stateGlyph:j?C:w,tone:_,spinnerFrames:A,materializing:M}}function Cw($,Z){if(!$.loading)return $;let J=$.spinnerFrames,X=J[Z()%J.length]??J[0]??"\u280B";if(X===$.stateGlyph)return $;return{...$,stateGlyph:X}}function JM0($,Z){switch($){case"rate_limited":return{glyph:"\u25F7",tone:"warning"};case"permission_needed":return{glyph:"?",tone:"warning"};case"error":return{glyph:Ds,tone:"error"};case"turn_complete":return Z?null:{glyph:"\u25CF",tone:"primary"};default:return null}}var _s=100,Cs=600,Vw="\xB7",Ds="\xD7",$M0=2000;var r_=d(()=>{Ow();RZ();P7();i8()});function XM0(){t_=(t_+1)%Cs;for(let $ of s_)try{$()}catch{}}function e_(){return t_}function $C($){if(s_.add($),WU===null)WU=setInterval(XM0,_s),WU.unref?.();return()=>{if(s_.delete($),s_.size===0&&WU!==null)clearInterval(WU),WU=null,t_=0}}var s_,t_=0,WU=null;var Dw=d(()=>{r_();s_=new Set});function Ts($){return Rs.read($)}function Ss($){Rs.poll($)}var QM0=4000,zM0=60000,YM0=1500,GM0,Rs;var Is=d(()=>{pJ();zM();Wq();zM();GM0={added:0,deleted:0},Rs=o_({initial:GM0,equals:MF,timeoutMs:QM0,slowRetryMs:zM0,minIntervalMs:YM0,run:async($,Z)=>{let J=await G9("git",["status","--porcelain=v1"],{cwd:$,env:Q8(),signal:Z});if(J.status!==0)throw Error("git status failed");return Gq(J.stdout)}})});function Aw($,Z){return Z===void 0?$:`${$}\x00${Z}`}function WM0($){if(typeof $!=="object"||$===null||Array.isArray($))return{};let Z={};for(let[J,X]of Object.entries($))if(typeof X==="number"&&Number.isFinite(X))Z[J]=X;return Z}function HM0($,Z,J,X=200){let z=$[Z];if(z!==void 0&&z>=J)return $;let G={...$,[Z]:J},W=Object.keys(G);if(W.length<=X)return G;let H={};for(let U of W.sort((B,M)=>G[M]-G[B]).slice(0,X))H[U]=G[U];return H}function Es($,Z,J){if(!$||J===void 0)return!1;let X=$.get("completionSeen");if(typeof X!=="object"||X===null||Array.isArray(X))return!1;let z=X[Z];return typeof z==="number"&&z>=J}function ws($,Z,J){let X=WM0($.get("completionSeen")),z=HM0(X,Z,J);if(z!==X)$.set("completionSeen",z)}import{TextAttributes as k01}from"@opentui/core";function xs($){return HU.useSyncExternalStore($?$C:qM0,$?e_:UM0)}function fs($,Z){let J=HS($.worktreeChanges,Z.worktreePath),X=J!==null;return HU.useEffect(()=>{if($.branchTick,X||Z.archived)return;Ss(Z.worktreePath)},[X,Z.archived,Z.worktreePath,$.branchTick]),J??Ts(Z.worktreePath)}function ys($){let{theme:Z}=d0();if($.changes.added<=0&&$.changes.deleted<=0)return null;return R.jsxDEV("box",{flexDirection:"row",gap:1,flexShrink:0,children:[$.changes.added>0?R.jsxDEV("text",{fg:Z.success,wrapMode:"none",flexShrink:0,children:["+",$.changes.added]},void 0,!0,void 0,this):null,$.changes.deleted>0?R.jsxDEV("text",{fg:Z.error,wrapMode:"none",flexShrink:0,children:["\u2212",$.changes.deleted]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)}function gs($,Z,J,X,z=!1){let G=Aw($,X);if(Z==="turn_complete"){if(J)Pw.add(G)}else Pw.delete(G);return Pw.has(G)||z}function bs($){return $?.state==="turn_complete"?$.at:void 0}function vs($,Z,J,X){let z=rQ(),G=Aw($,Z),W=Es(z,G,J);return HU.useEffect(()=>{if(!z||!X||J===void 0||W)return;ws(z,G,J)},[z,G,J,X,W]),W}function Rw($){return null}var HU,qM0=()=>()=>{},UM0=()=>0,Pw;var ks=d(async()=>{hI();Dw();Nw();Kw();r_();hQ();Wq();Is();A3();X$();a0();await Z$();HU=z1(q1(),1);Pw=new Set});import{MouseButton as BM0}from"@opentui/core";function hs($){let{theme:Z}=d0(),J=e0();if($.shared.movingRowId!==$.rowId)return null;return R.jsxDEV("text",{fg:Z.info,wrapMode:"none",flexShrink:0,children:J("tasks.moveChip").trim()},void 0,!1,void 0,this)}function Tw($){let{theme:Z}=d0(),J=$.shared,X=HX(Z,{cursor:J.cursorIndex===$.flatIndex,selected:J.activeRowId===$.rowId});return R.jsxDEV("box",{ref:(z)=>{if(!z)return;return J.rowEls.set($.flatIndex,z),()=>{if(J.rowEls.get($.flatIndex)===z)J.rowEls.delete($.flatIndex)}},width:"100%",flexDirection:"row",gap:0,backgroundColor:X.backgroundColor,onMouseUp:(z)=>{if(z.stopPropagation(),z.button===BM0.RIGHT&&J.onContextMenu){J.onContextMenu($.flatIndex,$.rowId,z.x,z.y);return}J.onPress($.flatIndex,$.rowId)},children:[R.jsxDEV("text",{fg:X.markerColor,wrapMode:"none",children:X.marker},void 0,!1,void 0,this),R.jsxDEV("text",{wrapMode:"none",flexShrink:0,children:" ".repeat($.depth*KM0)},void 0,!1,void 0,this),$.children]},void 0,!0,void 0,this)}function us($){let{theme:Z}=d0(),J=$.shared,X=$.task,z=J.cursorIndex===$.flatIndex,G=fs(J,X),W=jw(X),H=X.kind==="main";ms.useEffect(()=>{if(J.branchTick,H)Lw(X.repo)},[H,X.repo,J.branchTick]);let U=Zs(X,H?{liveBranch:Mw(X.repo)}:{});return R.jsxDEV(Tw,{rowId:$.rowId,flatIndex:$.flatIndex,depth:1,shared:J,children:R.jsxDEV("box",{flexDirection:"row",flexGrow:1,paddingRight:1,gap:1,children:[R.jsxDEV("text",{fg:Z.text,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:U},void 0,!1,void 0,this),X.pinned===!0?R.jsxDEV("text",{fg:Z.warning,wrapMode:"none",flexShrink:0,children:"\u25B4"},void 0,!1,void 0,this):null,W?R.jsxDEV("text",{fg:pj(Z,W.tone),wrapMode:"none",flexShrink:0,children:W.glyph},void 0,!1,void 0,this):null,R.jsxDEV(ys,{changes:G},void 0,!1,void 0,this),R.jsxDEV(hs,{rowId:$.rowId,shared:J},void 0,!1,void 0,this),R.jsxDEV(Rw,{flatIndex:$.flatIndex,dim:!z},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function cs($){let{theme:Z}=d0(),J=$.shared,X=J.cursorIndex===$.flatIndex,z=$.tab.engine===!0,G=z?J.engineTabState?.get($.task.id):void 0,W=z?zs({tabActivity:G?.get($.tab.id),reportedTabCount:G?.size??0,taskActivity:J.engineState?.get($.task.id),active:$.tab.active===!0}):void 0,H=W!==void 0,U=J.selectedTaskId===$.task.id&&$.tab.active===!0,B=vs($.task.id,$.tab.id,H?bs(W):void 0,U),M=H?gs($.task.id,W?.state,U,$.tab.id,B):!1,O=_w({task:$.task,activity:W,lifecycle:H?J.engineLifecycle?.get($.task.id):void 0,job:H?J.taskJobs?.get($.task.id):void 0,spinnerFrame:0,subtitleBudget:0,truncateBranch:OS,completionSeen:M}),L=xs(H&&O.loading),j=Cw(O,()=>L),A=z&&H?j.stateGlyph:Vw;return R.jsxDEV(Tw,{rowId:$.rowId,flatIndex:$.flatIndex,depth:1,shared:$.shared,children:[R.jsxDEV("text",{fg:H?pj(Z,j.tone):Z.textMuted,wrapMode:"none",width:2,flexShrink:0,children:`${A} `},void 0,!1,void 0,this),R.jsxDEV("box",{flexDirection:"row",flexGrow:1,paddingRight:1,gap:1,children:[R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:$.tab.label},void 0,!1,void 0,this),R.jsxDEV(hs,{rowId:$.rowId,shared:J},void 0,!1,void 0,this),R.jsxDEV(Rw,{flatIndex:$.flatIndex,dim:!X},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function ds($){let{theme:Z}=d0(),J=e0();return R.jsxDEV(Tw,{rowId:$.rowId,flatIndex:$.flatIndex,depth:1,shared:$.shared,children:[R.jsxDEV("text",{fg:Z.accent,wrapMode:"none",width:2,flexShrink:0,children:"\u21A9 "},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.text,wrapMode:"none",flexShrink:1,children:J("tasks.recentJump",{title:$.task.title})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var ms,KM0=1;var ls=d(async()=>{Nw();r_();GU();hQ();X$();a0();await J$([Z$(),ks()]);ms=z1(q1(),1)});function ps($){let{theme:Z}=d0(),J=e0();return R.jsxDEV("scrollbox",{ref:$.setScrollRef,flexGrow:1,minHeight:0,stickyScroll:!1,verticalScrollbarOptions:{visible:!1},children:R.jsxDEV("box",{flexShrink:0,gap:0,children:[$.rows.map((X,z)=>{if(X.kind==="project"){let G=X.id===i_;return R.jsxDEV(Ks,{label:G?J("tasks.header.scratch"):X.label,suffix:$.movingProjectId===X.id?J("tasks.moveChip"):void 0,topPad:z>0,onContextMenu:$.onProjectContextMenu&&!G?(W,H)=>$.onProjectContextMenu?.(X.id,W,H):void 0},X.id,!1,void 0,this)}if(X.kind==="recent")return R.jsxDEV(ds,{rowId:X.id,flatIndex:$.flatIndexOf.get(X.id)??-1,task:X.task,shared:$.shared},X.id,!1,void 0,this);if(X.kind==="worktree")return R.jsxDEV(us,{rowId:X.id,flatIndex:$.flatIndexOf.get(X.id)??-1,task:X.task,shared:$.shared},X.id,!1,void 0,this);return R.jsxDEV(cs,{rowId:X.id,flatIndex:$.flatIndexOf.get(X.id)??-1,task:X.task,tab:X.tab,shared:$.shared},X.id,!1,void 0,this)}),$.rows.length===0?R.jsxDEV("box",{paddingTop:1,paddingLeft:1,children:R.jsxDEV("text",{fg:Z.textMuted,children:J(Gc({searching:$.searching,projectFilter:!1}))},void 0,!1,void 0,this)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var ns=d(async()=>{GU();hQ();X$();a0();await J$([Z$(),Fw(),ls()])});function is(){return[{action:"newChat",labelKey:"tasks.menu.newChat"},{action:"newShell",labelKey:"tasks.menu.newShell"}]}function os($){return[{action:"rename",labelKey:"tasks.menu.rename"},{action:"pin",labelKey:$?"tasks.menu.unpin":"tasks.menu.pin"},{action:"localMerge",labelKey:"tasks.menu.localMerge"},{action:"archive",labelKey:"tasks.menu.archive"},{action:"delete",labelKey:"tasks.menu.delete",danger:!0}]}function as($,Z={}){if($.kind==="project")return[{action:"newTask",labelKey:"tasks.menu.newTask"}];if($.kind==="worktree")return[{action:"open",labelKey:"tasks.menu.open"},...is(),...os($.task.pinned===!0)];let J=[{action:"open",labelKey:"tasks.menu.openTab"}];if((Z.tabCount??0)>1)J.push({action:"closeTab",labelKey:"tasks.menu.closeTab"});return[...J,...is(),...os($.task.pinned===!0)]}function FM0($){for(let Z of[...ZC])Z($)}function rs($,Z){if(ZC.add(Z),VG!==$){if(VG)VG.onMouseDown=void 0;VG=$,$.onMouseDown=FM0}return()=>{if(ZC.delete(Z),ZC.size===0&&VG)VG.onMouseDown=void 0,VG=null}}var ZC,VG=null;var ss=d(()=>{ZC=new Set});function es($,Z){let J=N4(),X=V1(Z);ts.useEffect(()=>{let z=J?.root;if(!$||!z)return;return rs(z,()=>X.current())},[$,J])}var ts;var $t=d(async()=>{ss();w7();await v4();ts=z1(q1(),1)});function Zt($){let Z=e0(),{tree:J,activateRow:X,setCursorIndex:z,actions:G}=$,[W,H]=M6.useState(null),[U,B]=M6.useState(0),M=M6.useCallback((E,I,T,w)=>{let y=as(E,I);H({row:E,actions:y.map((f)=>f.action),entries:y.map((f)=>({id:f.action,label:Z(f.labelKey),danger:f.danger})),x:T,y:w}),B(0)},[Z]),O=M6.useCallback((E,I,T,w)=>{let y=J.rows.find((f)=>f.id===I);if(!y||y.kind==="project"||y.kind==="recent")return;z(E),M(y,{tabCount:J.tabCount(y.task.id)},T,w)},[J.rows,J.tabCount,M,z]),L=M6.useCallback((E,I,T)=>{let w=J.rows.find((y)=>y.kind==="project"&&y.id===E);if(!w)return;M(w,{},I,T)},[J.rows,M]),j=M6.useCallback(()=>H(null),[]);es(W!==null,j);let A=M6.useCallback((E)=>{let I=W?.entries.length??0;if(I===0)return;B((T)=>(T+E+I)%I)},[W]),C=M6.useCallback((E)=>{if(!W||E===void 0)return;let I=W.row;if(H(null),I.kind==="project"){if(E==="newTask")$.onAddTask?.();return}let T=I.task.id;switch(E){case"open":X(I.id);break;case"closeTab":if(I.kind==="tab")$.onCloseTab?.(T,I.tab.id);break;case"newChat":$.onNewTab?.(T,"chat");break;case"newShell":$.onNewTab?.(T,"shell");break;case"rename":G.onRenameRequest?.(T);break;case"pin":G.onPinRequest?.(T);break;case"localMerge":G.onLocalMergeRequest?.(T);break;case"archive":G.onArchiveRequest?.(T);break;case"delete":G.onDeleteRequest?.(T);break;default:break}},[W,X,G,$.onAddTask,$.onCloseTab,$.onNewTab]),_=M6.useCallback(()=>C(W?.actions[U]),[C,W,U]),b=M6.useCallback((E)=>C(W?.actions.find((I)=>I===E)),[C,W]);return{open:W!==null,entries:W?.entries??[],cursor:U,x:W?.x??0,y:W?.y??0,close:j,moveCursor:A,pickCurrent:_,pick:b,openForRow:O,openForProject:L}}var M6;var Jt=d(async()=>{X$();await $t();M6=z1(q1(),1)});function Xt($){let[Z,J]=Yz.useState(!1),[X,z]=Yz.useState(""),G=V1($.focused),W=$.onActiveChange,H=Yz.useCallback(()=>{z(""),J(!0),W?.(!0)},[W]),U=Yz.useCallback(()=>{J(!1),z(""),W?.(!1)},[W]),B=N4();return Yz.useEffect(()=>{if(!Z||!B)return;let M=(O)=>{if(!G.current||JG())return;z((L)=>Wc(L,O)??L)};return B.keyInput.on("keypress",M),()=>{B.keyInput.off("keypress",M)}},[Z,B]),{active:Z,query:X,enter:H,exit:U}}var Yz;var Qt=d(async()=>{hQ();w7();await J$([v4(),D4()]);Yz=z1(q1(),1)});function zt($){return $.split("::").slice(0,2).join("::")}function JC($,Z=Date.now()){Sw.set(zt($),Z)}function Yt($,Z=Date.now()){let J=zt($),X=Sw.get(J);if(X===void 0)return!1;if(Z-X>15000)return Sw.delete(J),!1;return!0}var Sw;var XC=d(()=>{Sw=new Map});function MM0($={}){let Z=$.entries??(()=>i$().entries()),J=$.snapshot??Y6,X=Math.max(1,$.releaseAfterMisses??2),z=new Map,G=new Map,W=new Set,H=new Map,U=new Set,B=!1,M=()=>{for(let j of U)j()},O={async probe(){if(B)return;let j=new Map,A=new Set;for(let[_,b]of H)A.add(_),j.set(_,b);for(let[_,b]of Z()){A.add(_);let E=b.shellPid??null;if(E!==null)j.set(_,E)}let C=!1;for(let _ of[...z.keys()]){if(A.has(_)&&j.has(_))continue;z.delete(_),G.delete(_),C=!0}for(let _ of[...W]){if(A.has(_)&&j.has(_))continue;W.delete(_)}if(j.size>0){let _;try{_=z6(await J())}catch{if(C)M();return}if(B)return;for(let[b,E]of j){let I=sJ(_,E)?.vendor??null;W.add(b);let T=z.get(b)??null;if(I){if(G.delete(b),T===I)continue;z.set(b,I),C=!0;continue}if(T===null)continue;let w=(G.get(b)??0)+1;if(w<X){G.set(b,w);continue}G.delete(b),z.delete(b),C=!0}}if(C)M()},get(j){return z.get(j)??null},resolve(j){let A=z.get(j);if(A)return A;return W.has(j)?null:void 0},setAuxPids(j){H=j},subscribe(j){return U.add(j),()=>{U.delete(j)}},dispose(){B=!0,U.clear(),z.clear(),G.clear(),W.clear(),clearInterval(L)}},L=setInterval(()=>{O.probe()},$.intervalMs??2000);return L.unref?.(),O}function MX(){if(!Iw)Iw=MM0();return Iw}var Iw=null;var YM=d(()=>{DZ();G8()});function LM0($,Z){let J=/^tab-(\d+)$/.exec($);return J?Number(J[1]):Z}function QC($,Z){let J=new Set($.tabs.map((U)=>U.id)),X=[];for(let U of Z){if(J.has(U))continue;J.add(U),X.push(U)}if(X.length===0)return $;let z=$.nextOrdinal,G=X.map((U)=>({kind:"engine",id:U,title:null,ordinal:LM0(U,z++),spawned:!0}));G.sort((U,B)=>U.ordinal-B.ordinal);let W=[...$.tabs,...G],H=W.reduce((U,B)=>Math.max(U,B.ordinal),0);return{tabs:W,activeId:$.activeId,nextOrdinal:Math.max($.nextOrdinal,H+1)}}function zC($,Z,J){if(J.length===0)return!1;if(lo(Z,J),!no())return!1;let z=$.store[v5(Z)],G=e7.get(Z)??(z&&Array.isArray(z.tabs)?z:null),W={tabs:[],activeId:J[0],nextOrdinal:1},H=QC(G??W,J);if(G&&H===G)return!1;return e7.set(Z,H),$.set(v5(Z),H),!0}var Ew=d(()=>{M2()});function Gt($,Z){let J=new Map;for(let X of $){if(X.alive===!1)continue;let{taskId:z,tabId:G}=zz(X.key);if(!G)continue;let W=G.split("::")[0];if(Z.has(jG(z,W)))continue;let H=J.get(z)??[];if(H.some((U)=>U.id===W))continue;H.push({id:W,label:`\u26A0 ${mQ(X.title?.trim()??"",null).trim()||W}`,active:H.length===0,engine:!0}),J.set(z,H)}return J}var Wt=d(()=>{F7();GU()});function OM0($,Z){if($.length!==Z.length)return!1;return $.every((J,X)=>{let z=Z[X];return J.key===z.key&&J.alive===z.alive&&J.title===z.title})}function jM0(){return process.env.BUN_TEST!=="1"&&process.env.VITEST!=="true"}function qt($=jM0()){let[Z,J]=YC.useState(Ht);return YC.useEffect(()=>{if(!$)return;let X=!1,z=async()=>{try{let W=await rY(),{sessions:H=[]}=await W.request("pty.list",{});if(!X)J((U)=>OM0(U,H)?U:H)}catch{if(!X)J((W)=>W.length===0?W:Ht)}};z();let G=setInterval(()=>void z(),NM0);return()=>{X=!0,clearInterval(G)}},[$]),Z}var YC,NM0=2000,Ht;var Ut=d(()=>{Mq();YC=z1(q1(),1),Ht=[]});function Bt($){let{tasks:Z,kv:J,selectedTaskId:X,selectedTabId:z}=$,G=$.query??"",W=G.trim()!=="",H=MX(),[U,B]=$2.useState(0);$2.useEffect(()=>H.subscribe(()=>B((f)=>f+1)),[H]);let M=qt();$2.useEffect(()=>{let f=new Map;for(let h of M)if(h.alive!==!1&&typeof h.pid==="number"&&h.pid>0)f.set(h.key,h.pid);return H.setAuxPids(f),()=>H.setAuxPids(new Map)},[M,H]);let O=$2.useMemo(()=>{let f=new Map;for(let h of M){let p=h.title?.trim();if(p)f.set(h.key,p)}return f},[M]),L=$2.useMemo(()=>{let f=new Map;for(let h of Z){let p=iq(J,h.id);if(!p)continue;let m=h.vendor??b4;f.set(h.id,p.tabs.map((t)=>{let s=q8(h.id,t),G0=H.resolve(s),U0=G0===void 0?t.liveVendor:G0;return{id:t.id,label:BG(t,m,U0,O.get(s)),active:t.id===p.activeId,engine:t.kind==="engine"||(U0??null)!==null}}))}return f},[Z,J,H,U,O]),j=$2.useMemo(()=>{let f=new Set;for(let[m,t]of L)for(let s of t)f.add(jG(m,s.id));let h=new Map,p=M.filter((m)=>!Yt(m.key));for(let[m,t]of Gt(p,f))if(Z.some((s)=>s.id===m))h.set(m,t);return h},[L,M,Z]);$2.useEffect(()=>{if(!J)return;for(let[f,h]of j)zC(J,f,h.map((p)=>p.id))},[j,J]);let A=$2.useMemo(()=>{if(j.size===0)return L;let f=new Map(L);for(let[h,p]of j){let m=f.get(h);f.set(h,m?[...m,...p.map((t)=>({...t,active:!1}))]:p)}return f},[L,j]),C=$.recentTask??null,{rows:_,totalCount:b}=$2.useMemo(()=>{let f=Js({tasks:Z,tabsByTask:A}),h=Bw(f).length;return{rows:W?Xs(f,G):$s(f,C),totalCount:h}},[Z,A,W,G,C]),E=$2.useMemo(()=>Bw(_),[_]),I=$2.useMemo(()=>{if(X===null)return null;if(z!==null)return jG(X,z);return X},[X,z]),T=$2.useCallback((f)=>A.get(f)?.length??0,[A]),w=$2.useCallback((f)=>Qs(Z,f),[Z]),y=$2.useCallback((f)=>{let h=Z.find((p)=>p.id===f);if(!h||h.kind==="dir")return null;return MG(h.repo)},[Z]);return{rows:_,flatIds:E,totalCount:b,tabCount:T,activeRowId:I,projectIdOfTask:y,mainTaskIdOfProject:w}}var $2;var Kt=d(()=>{U2();i8();GU();XC();YM();jE();b5();Ew();M2();Wt();Ut();$2=z1(q1(),1)});function Ft($){let{theme:Z}=d0(),J=rQ(),X=$.focused??!0,z=f5(),G=r4.useMemo(()=>Gr($.tasks,"active"),[$.tasks]),[W,H]=r4.useState(0);r4.useEffect(()=>{let n=setInterval(()=>H((Y0)=>Y0+1),Yc);return()=>clearInterval(n)},[]);let U=Xt({focused:X,onActiveChange:$.onSearchActiveChange}),B=Bt({tasks:G,kv:J,selectedTaskId:$.selectedId,selectedTabId:$.selectedTabId??null,query:U.active?U.query:"",recentTask:$.recentTask??null}),M=r4.useMemo(()=>{let n=new Map;return B.flatIds.forEach((Y0,Z0)=>n.set(Y0,Z0)),n},[B.flatIds]),[O,L]=r4.useState(-1),j=r4.useRef(O),A=r4.useCallback((n)=>{j.current=n,L(n)},[]),C=V1(B.flatIds),_=r4.useRef(null),b=r4.useRef(null),E=$.moveMode===!0;r4.useEffect(()=>{let n=B.flatIds;if(E){let $0=b.current,O0=$0===null?-1:n.indexOf($0);if(O0>=0){if(O0!==j.current)A(O0);return}}let Y0=B.activeRowId,Z0=Y0!==_.current;_.current=Y0;let a=Y0===null?-1:n.indexOf(Y0);if(Z0&&a>=0){if(a!==j.current)A(a);return}if(j.current>=n.length)A(Math.max(0,n.length-1));else if(j.current<0&&n.length>0)A(a>=0?a:0)},[B.flatIds,B.activeRowId,E,A]),r4.useEffect(()=>{b.current=B.flatIds[j.current]??null}),r4.useEffect(()=>{if(U.query,!U.active)return;A(0)},[U.active,U.query,A]);let I=V1($.recentTask??null),T=r4.useCallback((n)=>{let Y0=n===YU?I.current:null,{taskId:Z0,tabId:a}=Y0?{taskId:Y0.id,tabId:null}:zz(n);if($.onSelect(Z0),a===null){$.onActivate?.(Z0);return}$.onSelectTab?.(Z0,a),$.onActivate?.(Z0)},[$.onSelect,$.onActivate,$.onSelectTab]),w=V1(T),y=r4.useRef(null);if(y.current===null)y.current=tr({getCursor:()=>j.current,setCursor:A,getFlatIds:()=>C.current,onSelect:(n)=>w.current(n)});let f=y.current,h=V1($.tasks),p=r4.useCallback((n)=>{let Y0=C.current[j.current];if(Y0===void 0||Y0===YU)return;let{taskId:Z0,tabId:a}=zz(Y0);if(a!==null){$.onMoveTabRequest?.(Z0,a,n);return}let $0=h.current.find((w0)=>w0.id===Z0);if(!$0)return;if($0.kind!=="main"){$.onMoveRequest?.(Z0,n);return}let O0=B.projectIdOfTask(Z0);if(O0===null)return;let Q0=B.mainTaskIdOfProject(O0);if(Q0===null)return;$.onMoveRequest?.(Q0,n)},[B.projectIdOfTask,B.mainTaskIdOfProject,$.onMoveRequest,$.onMoveTabRequest]),m=B.flatIds[O],t=r4.useMemo(()=>{if(m===void 0||m===YU)return{projectId:null,rowId:null};let{taskId:n,tabId:Y0}=zz(m);if(Y0===null){if($.tasks.find((a)=>a.id===n)?.kind==="main")return{projectId:B.projectIdOfTask(n),rowId:null}}return{projectId:null,rowId:m}},[m,$.tasks,B.projectIdOfTask]),s=Zt({tree:B,activateRow:T,setCursorIndex:A,onAddTask:$.onAddTask,onCloseTab:$.onCloseTab,onNewTab:$.onNewTab,actions:$}),G0=y_("sidebar");b1(()=>({enabled:X&&!U.active&&!s.open,bindings:_5({"sidebar.nav":(n,Y0)=>{G0();let Z0=(Y0??0)%2===0;if(E){p(Z0?1:-1);return}if(Z0)f.moveDown();else f.moveUp()},"sidebar.select":()=>{if(G0(),E){$.onMoveModeExit?.();return}f.selectCurrent()},"sidebar.goto":(n,Y0)=>{if(E)return;if((Y0??0)%2===1)f.pressShiftG();else f.pressG()},"sidebar.tree.open":()=>{if(E)return;f.selectCurrent()},"sidebar.search.enter":()=>{if(E)return;U.enter()},"sidebar.delete":()=>{if(E)return;U0($.onDeleteRequest)},"sidebar.archive":()=>{if(E)return;U0($.onArchiveRequest)},"sidebar.rename":()=>{if(E)return;U0($.onRenameRequest)},"sidebar.localMerge":()=>U0($.onLocalMergeRequest),"sidebar.pin":()=>{if(E)return;U0($.onPinRequest)}})})),b1(()=>({enabled:X&&E,bindings:[{key:"escape",cmd:()=>$.onMoveModeExit?.()}]})),b1(()=>({enabled:X&&U.active,bindings:_5({"sidebar.search.nav":(n,Y0)=>{if((Y0??0)%2===0)f.moveDown();else f.moveUp()},"sidebar.search.submit":()=>{f.selectCurrent(),U.exit()},"sidebar.search.cancel":()=>U.exit()})})),b1(()=>({enabled:X&&s.open,bindings:_5({"sidebar.nav":(n,Y0)=>s.moveCursor((Y0??0)%2===0?1:-1),"sidebar.select":()=>s.pickCurrent()})})),b1(()=>({enabled:X&&s.open,bindings:[{key:"escape",cmd:()=>s.close()}]}));function U0(n){let Y0=C.current[j.current];if(Y0===void 0||!n)return;if(Y0===YU)return;n(zz(Y0).taskId)}b1(()=>({enabled:!0,bindings:_5({"tasks.jump":(n,Y0)=>{let Z0=C.current[Y0??0];if(Z0===void 0)return;A(Y0??0),w.current(Z0)}})}));let F0=r4.useRef(null),B0=r4.useRef(null);if(B0.current===null)B0.current=new Map;let W0=B0.current;r4.useEffect(()=>{let n=F0.current;if(!n||O<0||n.viewport.height<=0)return;let Y0=W0.get(O);if(Y0)n.scrollChildIntoView(Y0.id)},[O,W0]);let k=r4.useRef(null),i=$.width??dY;r4.useEffect(()=>{let n=k.current;if(!n)return;n.width=i,n.flexShrink=1,n.minHeight=0},[i]);let l={cursorIndex:O,activeRowId:B.activeRowId,selectedTaskId:$.selectedId,movingRowId:E?t.rowId:null,rowEls:W0,onPress:(n,Y0)=>{s.close(),A(n),T(Y0)},onContextMenu:s.openForRow,branchTick:W,engineState:$.engineState,engineTabState:$.engineTabState,engineLifecycle:$.engineLifecycle,taskJobs:$.taskJobs,worktreeChanges:$.worktreeChanges};return R.jsxDEV("box",{ref:k,flexGrow:1,minHeight:0,flexDirection:"column",backgroundColor:Z.backgroundPanel,paddingTop:1,paddingBottom:1,children:[R.jsxDEV(Ms,{focused:X,status:$.headerStatus??null,onStatusClick:$.onHeaderStatusClick},void 0,!1,void 0,this),R.jsxDEV(Ls,{onAddTask:$.onAddTask},void 0,!1,void 0,this),U.active?R.jsxDEV(Fs,{query:U.query,matchCount:B.flatIds.length,totalCount:B.totalCount},void 0,!1,void 0,this):null,R.jsxDEV(Ns,{nav:$.nav??"terminal",setNav:(n)=>$.onNavChange?.(n)},void 0,!1,void 0,this),R.jsxDEV(ps,{rows:B.rows,flatIndexOf:M,searching:U.active&&U.query.trim().length>0,shared:l,onProjectContextMenu:s.openForProject,movingProjectId:E?t.projectId:null,setScrollRef:(n)=>{F0.current=n}},void 0,!1,void 0,this),$.zenActive?R.jsxDEV(Os,{onZenClick:$.onZenClick},void 0,!1,void 0,this):null,s.open?R.jsxDEV(qs,{entries:s.entries,cursor:s.cursor,x:s.x,y:s.y,dims:{width:i,height:z.height},onPick:s.pick},void 0,!1,void 0,this):null,z.height<0?R.jsxDEV("text",{children:""},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}var r4;var Mt=d(async()=>{i8();GU();hQ();SZ();A3();w7();Kt();a0();await J$([v4(),tF(),Z$(),D4(),Us(),Fw(),ns(),Jt(),Qt()]);r4=z1(q1(),1)});class ww{ptyIdentity=null;coordinate=null;update($,Z){if($!==this.ptyIdentity)this.ptyIdentity=$,this.coordinate=null;if($===null)return this.coordinate=null,null;if(Z)this.coordinate={x:Z.x,y:Z.y};return this.coordinate}current(){return this.coordinate}}var xw,fw;var Lt=d(()=>{xw=class xw extends ww{};fw=class fw extends ww{}});import{RGBA as VM0}from"@opentui/core";function Nt($){if(!$)return;return VM0.fromInts($[0],$[1],$[2])}function _M0($){return{__isChunk:!0,text:$.text,...$.fg?{fg:Nt($.fg)}:{},...$.bg?{bg:Nt($.bg)}:{},...$.attributes!==void 0?{attributes:$.attributes}:{}}}function Ot($){let Z=[];for(let J=0;J<$.length;J++){if(J>0)Z.push({__isChunk:!0,text:`
|
|
752
752
|
`});let X=$[J];if(!X)continue;for(let z of X)Z.push(_M0(z))}return Z}var jt=()=>{};function Vt($){let Z=$.toLowerCase();return Z.includes("enoent")||Z.includes("not found")}function GM($,Z,J=$.attributes??0){return{text:Z,...$.fg?{fg:$.fg}:{},...$.bg?{bg:$.bg}:{},...J!==0?{attributes:J}:{}}}function CM0($){let Z=0;for(let J of $)Z+=oJ(J.codePointAt(0))||1;return Z}function DM0($,Z){let J=[],X=0,z=!1;for(let G of $){if(z){J.push(G);continue}let W=Array.from(G.text),H=X,U=-1;for(let B=0;B<W.length;B++){let M=oJ(W[B].codePointAt(0))||1;if(Z>=H&&Z<H+M){U=B;break}H+=M}if(U>=0){let B=W.slice(0,U).join(""),M=W.slice(U+1).join("");if(B)J.push(GM(G,B));if(J.push(GM(G,W[U]||" ",(G.attributes??0)|G4.INVERSE)),M)J.push(GM(G,M));z=!0}else J.push(G),X+=CM0(W)}if(!z){if(Z>X)J.push({text:" ".repeat(Z-X)});J.push({text:" ",attributes:G4.INVERSE})}return J}function _t($,Z){if(!Z)return $;return $.map((J,X)=>X===Z.y?DM0(J,Z.x):J)}function Ct($,Z,J,X){if(Z<=0)return $;let z=Z-1;return $.map((G)=>{let W=0;for(let H=0;H<G.length;H++){let U=G[H],B=Array.from(U.text);for(let M=0;M<B.length;M++){let O=B[M],L=oJ(O.codePointAt(0))||1;if(W+L<=z){W+=L;continue}let j=U.attributes??0;if(j===0)return G;let A=U.fg??J,C=U.bg??X,_=(j&G4.INVERSE)!==0?{text:O,fg:C,bg:A}:{text:O,fg:A,bg:C},b=B.slice(0,M).join(""),E=B.slice(M+1).join(""),I=G.slice(0,H);if(b)I.push(GM(U,b));if(I.push(_),E)I.push(GM(U,E));return[...I,...G.slice(H+1)]}}return G})}var Dt=d(()=>{Oq()});function At($){let{anchor:Z,head:J}=$;return J.row<Z.row||J.row===Z.row&&J.col<Z.col?{start:J,end:Z}:{start:Z,end:J}}function Pt($,Z,J){let{start:X,end:z}=At($);if(Z<X.row||Z>z.row)return null;let G=Z===X.row?X.col:0,W=Z===z.row?z.col+1:J;return G<W?[G,W]:null}function AM0($){let Z="";for(let J of $)Z+=J.text;return Z}function Rt($){let Z=0;for(let J of $)Z+=oJ(J.codePointAt(0));return Z}function Tt($,Z,J){let X="",z="",G="",W=0,H="before";for(let U of $){let B=oJ(U.codePointAt(0));if(B===0){if(H==="selected")z+=U;else if(H==="after")G+=U;else X+=U;continue}let M=W+B;if(M<=Z)X+=U,H="before";else if(W>=J)G+=U,H="after";else z+=U,H="selected";W=M}return{before:X,selected:z,after:G}}function St($,Z){let{start:J,end:X}=At(Z),z=[];for(let G=Math.max(0,J.row);G<=Math.min($.length-1,X.row);G++){let W=AM0($[G]??[]),H=Pt(Z,G,Math.max(Rt(W),1));z.push(H?Tt(W,H[0],H[1]).selected.trimEnd():"")}return z.join(`
|
|
753
753
|
`)}function PM0($,Z,J){let X=[],z=0;for(let G of $){let W=z,H=W+Rt(G.text);if(z=H,H<=Z||W>=J){X.push(G);continue}let{before:U,selected:B,after:M}=Tt(G.text,Z-W,J-W);if(U)X.push({...G,text:U});if(X.push({...G,text:B,attributes:(G.attributes??0)|G4.INVERSE}),M)X.push({...G,text:M})}if(z<J)X.push({text:" ".repeat(J-Math.max(z,Z)),attributes:G4.INVERSE});return X}function It($,Z,J,X){if(!Z)return $;return $.map((z,G)=>{let W=Pt(Z,J+G,X);return W?PM0(z,W[0],W[1]):z})}var yw=d(()=>{Oq()});function gw($,Z,J){let X=Math.max(1,Z),z=Math.max(0,$-Math.max(0,J));return{start:Math.max(0,z-X),end:z}}function bw($,Z,J,X){let z=Math.max(0,$-Math.max(1,Z)),G=Math.min(z,Math.max(0,J.fallbackOffset));if(!J.anchor||!X||J.anchor.epoch!==X.epoch)return G;let W=J.anchor.topLine-X.startLine;if(W<=0)return z;return Math.min(z,Math.max(0,$-(W+Math.max(1,Z))))}function Et($,Z,J,X,z){let G=bw(Z,J,$,z),W=Math.max(0,Z-Math.max(1,J)),H=Math.min(W,Math.max(0,G-X));if(H===0)return GC;let U=gw(Z,J,H),B=z?{epoch:z.epoch,topLine:z.startLine+U.start}:null;return{fallbackOffset:H,anchor:B}}function vw($,Z,J){if(!$||Z!==0)return null;if($.y<J.start||$.y>=J.end)return null;return{x:$.x,y:$.y-J.start}}var GC;var wt=d(()=>{GC={fallbackOffset:0,anchor:null}});import{decodePasteBytes as RM0}from"@opentui/core";function xt($){let Z=$.pageSize??Fd,J=V1($),X=V1(Z),z=WC.useMemo(()=>{let W=[];W.push(..._5({"terminal.scroll-up":()=>J.current.scroll(-X.current),"terminal.scroll-down":()=>J.current.scroll(X.current),"terminal.reset":()=>J.current.reset()}));let H=(U)=>{let B=nS(U);if(B!=null)J.current.write(B)};for(let U of Md)W.push({key:U,cmd:H,passthrough:!0});return W},[]);b1(()=>({enabled:J.current.focused,bindings:z}));let G=N4();WC.useEffect(()=>{if(!G)return;let W=(U)=>{if(!J.current.focused||U.defaultPrevented||JG())return;let B=nS(U);if(B==null)return;J.current.write(B),U.preventDefault()},H=(U)=>{if(U.defaultPrevented||JG())return;let B=RM0(U.bytes);if(B.length===0)return;if(!J.current.focused&&(!J.current.unfocusedAttachmentTarget||!XU(B)))return;J.current.paste(B),U.preventDefault()};return G.keyInput.on("keypress",W),G.keyInput.on("paste",H),()=>{G.keyInput.off("keypress",W),G.keyInput.off("paste",H)}},[G])}var WC;var ft=d(async()=>{QU();iS();SZ();w7();await J$([v4(),D4()]);WC=z1(q1(),1)});function yt(){let[$,Z]=LX.useState(null),[J,X]=LX.useState(4),[z,G]=LX.useState(null),W=f5(),[H,U]=LX.useState(0),B=LX.useCallback(()=>{U((M)=>M+1&255)},[]);return LX.useEffect(()=>{if(!$)return;if($.width<=0||$.height<=0)return;let M=Math.max(20,$.width),O=Math.max(4,$.height);X(O),G((L)=>L&&L.cols===M&&L.rows===O?L:{cols:M,rows:O})},[$,W,H]),{bodyEl:$,setBodyEl:Z,bodyRows:J,bodyGeometry:z,bumpGeomTick:B,dims:W,geomTick:H}}var LX;var gt=d(async()=>{await v4();LX=z1(q1(),1)});function bt($){let[Z,J]=U8.useState(null),[X,z]=U8.useState(null),[G,W]=U8.useState([]),H=U8.useRef(null),[U,B]=U8.useState(null),[M,O]=U8.useState(!1),L=V1($.command),j=V1($.initialInput),A=V1($.firstMessage),C=V1($.engineBin),_=V1($.bodyGeometry),b=V1($.registry),E=V1($.onExit),I=V1($.onFreshPty),T=V1($.cwd),w=V1($.taskId),y=$.bodyGeometry!==null,f=$.cwd,h=$.taskId;U8.useEffect(()=>{if(!f||!h||!y){J(null),W([]),H.current=null,B(null),z(null);return}let t=_.current;if(!t)return;let s;try{s=b.current.acquire(h,f,{...t,command:L.current,initialInput:j.current,firstMessage:A.current,engineBin:C.current})}catch(G0){let U0=M1(G0);z(U0),J(null),W([]),H.current=null,B(null);return}z(null),W([]),H.current=null,B(null),O(s.killed),J(s),I.current()},[f,h,y]),U8.useEffect(()=>{let t=Z?Z.killed:!1;if(O(t),!Z)return;if(t){E.current?.({deadOnAttach:Z.deadOnAttach===!0});return}let s=Z.onExit(()=>{O(!0),E.current?.({deadOnAttach:Z.deadOnAttach===!0})}),G0=Z.onData((U0,F0,B0)=>{H.current=B0,W(U0),B(F0)});try{let U0=Z.capture();if(H.current=Z.captureWindow(),U0.length>0)W(U0);B(Z.captureCursor())}catch{}return()=>{s(),G0()}},[Z]);let p=U8.useCallback((t,s,G0,U0)=>{try{let F0={...G0,command:L.current,initialInput:j.current,firstMessage:A.current,engineBin:C.current},B0=U0?b.current.resetIfCurrent(s,U0,t,F0):b.current.reset(s,t,F0);if(!B0)return;J(B0),W([]),H.current=null,B(null),I.current()}catch(F0){let B0=M1(F0);z(B0),J(null),W([]),H.current=null,B(null)}},[]),m=U8.useRef(!1);return U8.useEffect(()=>{if($.resetToken,!m.current){m.current=!0;return}let t=T.current,s=w.current,G0=_.current;if(t&&s&&G0)p(t,s,G0)},[$.resetToken,p]),{pty:Z,snapshot:G,snapshotWindow:H.current,cursor:U,exited:M,acquireError:X,forceReacquire:p}}var U8;var vt=d(()=>{w7();U8=z1(q1(),1)});import{spawnSync as TM0}from"child_process";function kt($,Z){if($==="darwin")return"pbcopy";if($==="linux"){for(let J of SM0)if(Z(J.binary))return J.command}return null}var SM0,mt=($)=>{try{let Z=process.platform==="win32"?"where":"which";return TM0(Z,[$],{encoding:"utf8"}).status===0}catch{return!1}};var ht=d(()=>{SM0=[{binary:"wl-copy",command:"wl-copy"},{binary:"xclip",command:"xclip -selection clipboard -in"},{binary:"xsel",command:"xsel --clipboard --input"}]});function IM0(){if(kw===void 0)kw=kt(process.platform,mt);return kw}function ut($,Z){let J=IM0();if(J)try{let X=Bun.spawn(["sh","-c",J],{stdin:"pipe",stdout:"ignore",stderr:"ignore"});X.stdin.write($),X.stdin.end()}catch{}try{Z($)}catch{}}var kw;var ct=d(()=>{ht()});function dt($){let[Z,J]=_G.useState(null),[X,z]=_G.useState(null),G=_G.useRef(!1),W=N4(),H=_G.useMemo(()=>{if(!Z||!X)return null;if(Z.row===X.row&&Z.col===X.col)return null;return{anchor:Z,head:X}},[Z,X]);return{selection:H,cellFromEvent:(L)=>{let{bodyEl:j,bodyGeometry:A,bodyRows:C,visibleRangeStart:_}=$;if(!j||!A)return null;let b=Math.min(A.cols-1,Math.max(0,(L.x??0)-j.screenX)),E=Math.min(C-1,Math.max(0,(L.y??0)-j.screenY));return{row:_+E,col:b}},beginSelection:(L)=>{G.current=!0,J(L),z(L)},updateSelectionHead:(L)=>{if(!G.current)return;z(L)},isDragging:()=>G.current,endDragging:()=>{G.current=!1},clearSelection:()=>{J(null),z(null)},copySelection:()=>{if(!H)return;let L=St($.snapshot,H);if(L.trim().length>0)ut(L,(j)=>W?.copyToClipboardOSC52(j))}}}var _G;var lt=d(async()=>{ct();yw();await v4();_G=z1(q1(),1)});import{StyledText as EM0}from"@opentui/core";function mw($){let{theme:Z}=d0(),J=e0(),X=$.registry??i$(),[z,G]=D5.useState(!1),W=$.focused??z,[H,U]=D5.useState(GC),{bodyEl:B,setBodyEl:M,bodyRows:O,bodyGeometry:L,bumpGeomTick:j,dims:A,geomTick:C}=yt(),{pty:_,snapshot:b,snapshotWindow:E,cursor:I,exited:T,acquireError:w,forceReacquire:y}=bt({cwd:$.cwd,taskId:$.taskId,command:$.command,initialInput:$.initialInput,firstMessage:$.firstMessage,engineBin:$.engineBin,resetToken:$.resetToken,onExit:$.onExit,registry:X,bodyGeometry:L,onFreshPty:()=>U(GC)}),f=bw(b.length,O,H,E),h=(u0)=>{U((j0)=>Et(j0,b.length,O,u0,E))},p=D5.useMemo(()=>gw(b.length,O,f),[b.length,O,f]),m=D5.useMemo(()=>b.slice(p.start,p.end),[b,p]),t=D5.useMemo(()=>vw(I,f,p),[I,f,p]),[s]=D5.useState(()=>new xw),G0=s.update(_,I),U0=D5.useMemo(()=>vw(G0,f,p),[G0,f,p]),F0=dt({bodyEl:B,bodyGeometry:L,bodyRows:O,visibleRangeStart:p.start,snapshot:b}),B0=D5.useMemo(()=>{let u0=It(m,F0.selection,p.start,L?.cols??80),j0=W&&!F0.selection?t:null;return _t(u0,j0)},[m,F0.selection,p.start,L,W,t]),W0=D5.useMemo(()=>{let u0=Z.text.toInts(),j0=Z.background.toInts(),l0=Ct(B0,L?.cols??80,[u0[0],u0[1],u0[2]],[j0[0],j0[1],j0[2]]);return new EM0(Ot(l0))},[B0,L,Z]),[k,i]=D5.useState(null);D5.useEffect(()=>{if(k&&!k.isDestroyed)k.content=W0},[k,W0]);let l=o$(),n=($.imeAnchorActive??!0)&&l.stack.length===0,Y0=$.imeAnchorActive===!0&&l.stack.length===0,Z0=V1($.taskId),a=V1($.cwd),$0=D5.useRef(!0);D5.useLayoutEffect(()=>{return $0.current=!0,()=>{$0.current=!1}},[]),xt({focused:W,unfocusedAttachmentTarget:Y0,write:(u0)=>{if(!_||_.killed)return;_.write(u0),$.onUserInput?.(u0)},paste:(u0)=>{if(!_||_.killed)return;_.paste(u0)},scroll:h,reset:()=>{if(!_)return;let u0=_,j0=$.cwd,l0=$.taskId,W1=L;if(!j0||!l0||!W1)return;O4.show(l,J("terminal.reset.title"),J("terminal.reset.body"),"cancel").then((R1)=>{if(R1!==!0||!$0.current)return;if(Z0.current!==l0||a.current!==j0)return;y(j0,l0,W1,u0)})}});let Q0=N4(),w0=D5.useRef(Symbol("terminal-ime-anchor")).current,[b0]=D5.useState(()=>new fw),D0=D5.useRef(null);return D5.useEffect(()=>{if(!_||!L)return;let{cols:u0,rows:j0}=L,l0=D0.current;if(l0?.pty===_&&l0.cols===u0&&l0.rows===j0)return;D0.current={pty:_,cols:u0,rows:j0};try{_.resize(u0,j0)}catch{}},[_,L]),D5.useEffect(()=>{if(!Q0)return;if(!n){if(b0.update(null,null),bq.release(w0))Q0.setCursorPosition(0,0,!1);return}let u0=null;if(B&&U0&&B.width>0)u0={x:B.screenX+U0.x,y:B.screenY+U0.y};let j0=b0.update(_,u0);if(j0){bq.claim(w0,j0),Q0.setCursorPosition(j0.x,j0.y,!1);return}bq.claim(w0,{x:0,y:0}),Q0.setCursorPosition(0,0,!1)},[Q0,n,B,U0,A,C,w0,b0,_]),D5.useEffect(()=>{return()=>{try{if(bq.release(w0))Q0?.setCursorPosition(0,0,!1)}catch{}}},[Q0,w0]),R.jsxDEV("box",{flexDirection:"column",flexGrow:1,overflow:"hidden",backgroundColor:Z.background,onMouseDown:(u0)=>{if(u0.button!==0)return;if(!W)$.onRequestFocus?.();let j0=F0.cellFromEvent(u0);if(!j0)return;F0.beginSelection(j0)},onMouseDrag:(u0)=>{let j0=F0.cellFromEvent(u0);if(j0)F0.updateSelectionHead(j0)},onMouseUp:()=>{if(G(!0),!F0.isDragging())return;if(F0.endDragging(),F0.selection)F0.copySelection();else F0.clearSelection()},onMouseScroll:(u0)=>{let j0=u0.scroll;if(!j0||j0.direction!=="up"&&j0.direction!=="down")return;if(_&&!_.killed&&B){let W1=Math.max(1,u0.x-B.screenX+1),R1=Math.max(1,u0.y-B.screenY+1);if(_.wheel(j0.direction,W1,R1))return}let l0=Math.max(1,j0.delta||1);h(j0.direction==="up"?-l0:l0)},children:[T?R.jsxDEV("box",{flexDirection:"row",flexShrink:0,paddingLeft:1,paddingRight:1,children:R.jsxDEV("text",{fg:Z.error,wrapMode:"none",children:J("terminal.exited")},void 0,!1,void 0,this)},void 0,!1,void 0,this):null,f>0?R.jsxDEV("box",{position:"absolute",zIndex:10,left:0,right:0,bottom:0,flexDirection:"row",paddingLeft:1,paddingRight:1,backgroundColor:Z.backgroundPanel,children:R.jsxDEV("text",{fg:Z.warning,wrapMode:"none",children:J("terminal.scrolledBack",{lines:f})},void 0,!1,void 0,this)},void 0,!1,void 0,this):null,R.jsxDEV("box",{ref:(u0)=>M(u0),onSizeChange:j,flexGrow:1,overflow:"hidden",children:_?R.jsxDEV("text",{fg:Z.text,wrapMode:"none",ref:(u0)=>i(u0)},void 0,!1,void 0,this):R.jsxDEV("box",{paddingLeft:1,paddingTop:1,flexDirection:"column",gap:0,children:w?R.jsxDEV(R.Fragment,{children:[R.jsxDEV("text",{fg:Z.error,wrapMode:"word",children:Vt(w)?J("terminal.unavailable.shellMissing"):J("terminal.unavailable.spawnFailed")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"word",children:w},void 0,!1,void 0,this)]},void 0,!0,void 0,this):R.jsxDEV("text",{fg:Z.textMuted,children:J("terminal.noTask")},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var D5;var pt=d(async()=>{ME();Lt();G8();jt();Dt();yw();wt();X$();w7();vt();a0();await J$([v4(),Z$(),C5(),TZ(),ft(),gt(),lt()]);D5=z1(q1(),1)});function hw($=i$().get.bind(i$())){let Z=new Map,J=new Set,X=()=>{for(let z of J)z()};return{reconcile(z){let G=new Set(z),W=!1;for(let[H,U]of Z){if((G.has(H)?$(H):null)===U.pty)continue;U.unsub(),Z.delete(H),W=!0}for(let H of G){if(Z.has(H))continue;let U=$(H);if(!U)continue;let B={pty:U,unsub:()=>{},title:void 0};B.unsub=U.onTitleChange((M)=>{if(B.title===M)return;B.title=M,X()}),Z.set(H,B),W=!0}return W},get(z){return Z.get(z)?.title},subscribe(z){return J.add(z),()=>{J.delete(z)}},dispose(){for(let z of Z.values())z.unsub();Z.clear(),J.clear()}}}function nt($){let Z=A9.useRef(null);if(Z.current===null)Z.current=hw();let J=Z.current,[X,z]=A9.useState(new Map),G=V1($),W=A9.useCallback(()=>{let H=G.current;J.reconcile(H.values());let U=MX();z((B)=>{let M=new Map;for(let[O,L]of H){let j=J.get(L);if(j===void 0)continue;M.set(O,mQ(j,U.resolve(L)))}if(M.size===B.size&&[...M].every(([O,L])=>B.get(O)===L))return B;return M})},[J]);return A9.useEffect(()=>{let H=setInterval(W,wM0);return()=>clearInterval(H)},[W]),A9.useEffect(()=>{W()},[$,W]),A9.useEffect(()=>{let H=!0,U=!1,B=J.subscribe(()=>{if(U)return;U=!0,queueMicrotask(()=>{if(U=!1,H)W()})});return()=>{H=!1,B()}},[J,W]),A9.useEffect(()=>()=>J.dispose(),[J]),X}var A9,wM0=2000;var uw=d(()=>{F7();G8();YM();w7();A9=z1(q1(),1)});import{TextAttributes as it}from"@opentui/core";function CG($,Z){if(!Z)return;for(let J of t7(Z.root))if(J.id!=="leaf-1")i$().release(P3($,J.id))}function at($){let{theme:Z,transparentBackground:J}=d0(),X=J?Z.border:Z.borderSubtle,z=e0(),G=m2(),W=$.splitTree??ot,[H,U]=qU.useState(W.activeLeafId);qU.useEffect(()=>{U(($.splitTree??ot).activeLeafId)},[$.splitTree]);let B=()=>({...W,activeLeafId:H}),M=(p)=>{if(p===W)return;$.onSplitChange(kq(p))},O=nF(W),L=DV(G.get(SF))==="box"&&O,j=kq(W)!==null;function A(p){let m=B(),t=F_(m,p);if(t===null)return!1;if(t!==m)M(t),i$().release(P3($.tabKey,p));return!0}function C(p){if(A(p))return;CG($.tabKey,W),$.onSplitChange(null),$.onExit?.()}let _=()=>i$().get(P3($.tabKey,H))?.size??null;b1(()=>({enabled:$.focused,bindings:_5({"workspace.split.right":()=>M(lF(B(),"row",[H5()],_())),"workspace.split.down":()=>M(lF(B(),"column",[H5()],_())),"workspace.split.focus-next":()=>U(Yo(B(),1).activeLeafId)})}));let b=o$();b1(()=>({enabled:$.focused&&O,bindings:_5({"workspace.split.close":()=>A(H),"workspace.split.rename":()=>{let p=H;g5.show(b,w.get(p)??"",{dialogTitle:z("terminal.split.renameTitle"),fieldLabel:z("terminal.split.renameField"),submitLabel:z("terminal.tab.renameSubmit"),allowEmpty:!0}).then((m)=>{if(m===void 0)return;M(M_(B(),p,m))})}})}));let E=(p)=>$.focused&&H===p,I=qU.useMemo(()=>{let p=new Map;for(let m of t7(W.root))p.set(m.id,P3($.tabKey,m.id));return p},[$.tabKey,W]),T=nt(I),w=NE(t7(W.root),$.command,$.engineTitle,T),y=(p,m)=>p?{border:[p],borderColor:m}:{border:!1},f=(p,m)=>{let t=()=>U(p.id),s=H===p.id,G0=E(p.id),U0=R.jsxDEV(R.Fragment,{children:[R.jsxDEV(mw,{cwd:$.cwd,taskId:P3($.tabKey,p.id),command:p.content??$.command,initialInput:p.content===null?$.initialInput:void 0,firstMessage:p.content===null?$.firstMessage:void 0,engineBin:p.content===null?$.engineBin:void 0,onUserInput:p.content===null?$.onUserInput:void 0,onExit:()=>C(p.id),resetToken:p.id==="leaf-1"?$.resetToken:void 0,focused:G0,imeAnchorActive:s,onRequestFocus:()=>{$.onRequestFocus?.(),t()}},void 0,!1,void 0,this),O?R.jsxDEV("box",{position:"absolute",right:0,top:0,zIndex:10,backgroundColor:Z.backgroundElement,children:R.jsxDEV("text",{fg:G0?Z.focusAccent:Z.textMuted,attributes:G0?it.BOLD:it.DIM,wrapMode:"none",children:` ${w.get(p.id)??""} `},void 0,!1,void 0,this)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this);if(L)return R.jsxDEV("box",{flexGrow:1,flexShrink:1,flexBasis:0,border:!0,borderColor:G0?Z.focusAccent:X,onMouseUp:t,children:U0},p.id,!1,void 0,this);return m?R.jsxDEV("box",{flexGrow:1,flexShrink:1,flexBasis:0,border:[m],borderColor:G0?Z.focusAccent:X,onMouseUp:t,children:U0},p.id,!1,void 0,this):R.jsxDEV("box",{flexGrow:1,flexShrink:1,flexBasis:0,border:!1,onMouseUp:t,children:U0},p.id,!1,void 0,this)},h=(p,m,t)=>p.kind==="leaf"?f(p,t):R.jsxDEV("box",{flexDirection:p.orientation,flexGrow:1,flexShrink:1,flexBasis:0,...y(L?void 0:t,X),children:p.children.map((s,G0)=>h(s,s.kind==="leaf"?s.id:`${m}.${G0}`,G0>0?p.orientation==="row"?"left":"top":void 0))},m,!1,void 0,this);if(j)return R.jsxDEV("box",{flexDirection:"column",flexGrow:1,overflow:"hidden",children:h(W.root,"root")},void 0,!1,void 0,this);return R.jsxDEV(mw,{cwd:$.cwd,taskId:$.tabKey,command:$.command,initialInput:$.initialInput,firstMessage:$.firstMessage,engineBin:$.engineBin,onUserInput:$.onUserInput,onExit:$.onExit,resetToken:$.resetToken,focused:$.focused,imeAnchorActive:!0,onRequestFocus:$.onRequestFocus},void 0,!1,void 0,this)}var qU,ot;var WM=d(async()=>{IF();_3();G8();b5();SZ();A3();X$();uw();a0();await J$([QX(),Z$(),D4(),pt(),C5()]);qU=z1(q1(),1),ot=K_(null)});function HM($,Z,J){let X=Z?q8($,Z):Y7($,J);if(CG(X,Z?.splitTree??null),Z?.kind==="engine"&&Z.ptyTask)return;JC(X);let z=i$(),G=z.get(X);if(z.release(X),!G)xM0(X)}function xM0($){let Z=xc();if(!Z)return;Z.then((J)=>J.request("pty.kill",{key:$})).catch(()=>{})}function fM0($,Z){let J=e7.get(Z);if(J)return J;let X=$.store[v5(Z)];return X&&Array.isArray(X.tabs)?X:null}function rt($,Z,J){if(ho(Z,J),!co())return!0;let z=fM0($,Z);if(!z)return!1;let G=z.tabs.find((U)=>U.id===J),{state:W,closedId:H}=dq(z,J);if(!H)return!1;return e7.set(Z,W),$.set(v5(Z),W),HM(Z,G,H),!0}var cw=d(async()=>{Mq();G8();XC();b5();M2();await WM()});function st($,Z,J,X){if(io(Z,J,X),!ao())return!0;let G=$.store[v5(Z)],W=e7.get(Z)??(G&&Array.isArray(G.tabs)?G:null);if(!W)return!1;let H=V_(W,J,X);if(H===W)return!1;return e7.set(Z,H),$.set(v5(Z),H),!0}var tt=d(()=>{b5();M2()});function et($){let{theme:Z}=d0(),J=m2(),X=Zz(),z=e0(),G=HC.useCallback((B,M)=>{if(!rt(J,B,M))X.notify({kind:"error",taskId:B,tabId:M,title:z("terminal.tab.cannotCloseLast")})},[J,X,z]),W=HC.useCallback((B,M,O)=>{st(J,B,M,O)},[J]),H=HC.useCallback((B,M)=>{$.onActivate(B),bo(B,M)},[$.onActivate]),U={width:$.width,nav:$.nav,onNavChange:$.onNavChange,tasks:$.tasks,selectedId:$.selectedId,onSelect:$.onSelect,onActivate:$.onActivate,engineState:$.engineState,engineTabState:$.engineTabState,engineLifecycle:$.engineLifecycle,taskJobs:$.taskJobs,worktreeChanges:$.worktreeChanges,transcriptActivity:$.transcriptActivity,focused:$.focused,onDeleteRequest:$.onDeleteRequest,onArchiveRequest:$.onArchiveRequest,onRenameRequest:$.onRenameRequest,onPinRequest:$.onPinRequest,onLocalMergeRequest:$.onLocalMergeRequest,moveMode:$.moveMode,onMoveRequest:$.onMoveRequest,onMoveModeExit:$.onMoveModeExit,onSearchActiveChange:$.onSearchActiveChange,onAddTask:$.onAddTask,headerStatus:$.headerStatus,onHeaderStatusClick:$.onHeaderStatusClick,zenActive:$.zenActive,onZenClick:$.onZenClick};return R.jsxDEV("box",{width:$.width,flexShrink:0,flexDirection:"column",backgroundColor:Z.backgroundPanel,onMouseUp:$.onFocusRequest,children:[R.jsxDEV(Ft,{...U,selectedTabId:$.selectedTabId,onSelectTab:$.onSelectTab,onCloseTab:G,onNewTab:H,onMoveTabRequest:W,recentTask:$.recentTask??null},void 0,!1,void 0,this),R.jsxDEV("box",{flexShrink:0,paddingLeft:1,paddingBottom:0,children:R.jsxDEV(g_,{pane:"sidebar"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var HC;var $e=d(async()=>{A3();yq();X$();tt();M2();a0();await J$([tF(),Z$(),Mt(),cw()]);HC=z1(q1(),1)});function Ze($,Z){return $.find((J)=>J.id!==Z&&!J.archived)}async function Je($,Z,J){let X=await pY();if(!X)return;try{await Bq(X.rpc,Uq(await nY(X.rpc),$))}catch(z){Z.error(`${J} kill hosted session failed:`,z)}finally{X.close()}}function Xe($,Z){let J=$.activeTaskSignal;if(typeof J!=="function")return!0;return J.call($)()===Z}async function yM0($){let Z=$.tasks.find((z)=>z.id===$.taskId);if(!Z)return null;let J=!Z.archived;try{await $.orch.setArchived($.taskId,J)}catch(z){return $.logger.error(`${$.logPrefix} archive failed:`,z),null}if(!J)return{archived:J};let X=Ze($.tasks,$.taskId);if($.updateActiveTask&&Xe($.orch,$.taskId))await $.orch.setActiveTask(X?.id??null).catch(()=>{});return await Je($.taskId,$.logger,$.logPrefix),{archived:J,nextTask:X}}async function dw($){let Z=Ze($.tasks,$.taskId);if($.updateActiveTask&&$.orch&&Xe($.orch,$.taskId))await $.orch.setActiveTask(Z?.id??null).catch(()=>{});return await Je($.taskId,$.logger,$.logPrefix),{nextTask:Z}}async function Qe($,Z){if(!$.orch)return;let J=$.tasks().find((z)=>z.id===Z);if(!J)return;if(!J.archived){if(!await $.confirm({title:`Archive "${J.title}"?`,body:"Moves it to Archives and stops its running session. The worktree, branch, and chat history stay \u2014 unarchive to bring it back.",cancelLabel:"cancel",confirmLabel:"archive"}))return}if(!await yM0({orch:$.orch,tasks:$.tasks(),taskId:Z,logger:$.logger,logPrefix:$.logPrefix,updateActiveTask:$.updateActiveTask}))return;await $.reload?.()}async function ze($,Z){if(!$.orch)return;let J=$.tasks().find((W)=>W.id===Z);if(!J)return;if(J.kind==="main"){if(!await $.confirm({title:`Remove project "${J.title}"?`,body:"Forgets it from the projects list. The repo, its branches, worktrees, and any tasks under it stay on disk \u2014 re-add it with `rove add`.",cancelLabel:"cancel",confirmLabel:"remove"}))return;try{await $.orch.forgetProject(J.repo)}catch(H){$.logger.error(`${$.logPrefix} forget project failed:`,H),$.notifyError?.(`Couldn't remove: ${M1(H)}`);return}await $.reload?.();return}if(!await $.confirm({title:`Delete "${J.title}"?`,body:J.kind==="dir"?"Removes the task entry. The directory itself stays on disk. Its hosted sessions are stopped.":"Removes the task entry and its worktree. The git branch stays. Its hosted sessions are stopped.",cancelLabel:"cancel",confirmLabel:"delete"}))return;let z=!1;try{await $.orch.deleteTask(Z),z=!0}catch(W){if(M1(W).includes(LR)){if(await $.confirm({title:`"${J.title}" has uncommitted changes`,body:"Its worktree has uncommitted or untracked work that will be permanently deleted. Force delete anyway?",cancelLabel:"cancel",confirmLabel:"force delete"}))try{await $.orch.deleteTask(Z,{force:!0}),z=!0}catch(B){$.logger.error(`${$.logPrefix} force delete failed:`,B),$.notifyError?.(`Couldn't delete: ${M1(B)}`)}}else $.logger.error(`${$.logPrefix} delete failed:`,W),$.notifyError?.(`Couldn't delete: ${M1(W)}`)}if(!z)return;let{nextTask:G}=await dw({orch:$.orch,tasks:$.tasks(),taskId:Z,logger:$.logger,logPrefix:$.logPrefix,updateActiveTask:$.updateActiveTask});await $.reload?.(),$.onTaskDeleted?.(Z,G)}async function Ye($,Z){let J=$.tasks().find((z)=>z.id===Z);if(!J)return;let X=await $.promptText(J.title);if(!X||!$.orch)return;try{await $.orch.setTitle(Z,X)}catch(z){$.logger.error(`${$.logPrefix} task.rename failed:`,z),$.notifyError?.(`Couldn't rename task: ${M1(z)}`);return}await $.reload?.()}async function Ge($,Z){let J=$.tasks().find((G)=>G.id===Z);if(!J||!$.orch)return;let X=await jZ(),z=IH(X,J.vendor??b4);try{await $.orch.setVendor(Z,z)}catch(G){$.logger.error(`${$.logPrefix} task.setVendor failed:`,G),$.notifyError?.(`Couldn't switch engine: ${M1(G)}`);return}$.notifyInfo?.(`Engine \u2192 ${y5(z)} (applies on reopen)`),await $.reload?.()}var lw=d(()=>{cJ();VF();L7();bJ();U2();P7()});async function We($){let Z=J6(),J=$.cursorRepo()??Z[0]??process.cwd(),X=$.lastVendor(J)??b4,z=await jZ();if(z.length===0)$.notifyInfo?.("No engine CLI detected \u2014 install claude or codex, or add one in Settings \u2192 Engines");let G=$.orch,W=await $.promptNewTask(J,Z,{defaultVendor:X,availableVendors:z,discoverAdoptable:G?(U)=>G.discoverAdoptableWorktrees(U):void 0});if(!W)return;if($.rememberVendor(W.repo,W.vendor),SY(W.repo),$.onRepoSaved?.(),!G){$.logger.error(`${$.logPrefix} no daemon; cannot create task`);return}$.notifyInfo?.("Creating task\u2026");let H;if(W.mode==="adopt"){let U=W.adopt.length,B=0,M;for(let O of W.adopt)try{H=(await G.adoptWorktree({repo:W.repo,worktreePath:O.worktreePath,branch:O.branch,vendor:W.vendor})).id,B++}catch(L){if(M===void 0)M=M1(L);$.logger.error(`${$.logPrefix} adoptWorktree failed for ${O.worktreePath}:`,L)}if(B===0){$.notifyError?.(W$("newTask.adopt.summaryNone",{error:M??""}));return}if(B<U)$.notifyInfo?.(W$("newTask.adopt.summaryPartial",{done:B,total:U}));else $.notifyInfo?.(W$("newTask.adopt.summaryAll",{count:B}))}else try{H=(await G.createTask({repo:W.repo,baseRef:W.baseRef,vendor:W.vendor})).id}catch(U){$.logger.error(`${$.logPrefix} task.create failed:`,U),$.notifyError?.(`Couldn't create task: ${M1(U)}`);return}if(await $.reload?.(),H)$.selectTask?.(H),await $.enterTask?.(H)}var He=d(()=>{cJ();C4();RZ();U2()});import{TextAttributes as gM0}from"@opentui/core";function bM0($){let Z=o$(),{theme:J}=d0(),X=e0(),z=M7(),[G,W]=UU.useState($.currentBranch),[H,U]=UU.useState(0),B=UU.useMemo(()=>mV($.repo),[$.repo]),M=UU.useMemo(()=>hV(B,G),[B,G]),O=L9(M,H);function L(C){if(M.length===0)return;U((_)=>w4(_+C,M.length))}function j(C){let _=C.trim();if(!_)return;$.onSubmit(_),Z.clear()}let A=O.items.map((C,_)=>({key:`${O.start+_}:${C}`,body:C,accent:G.trim()===C}));return b1(()=>({bindings:[{key:"up",cmd:()=>L(-1)},{key:"down",cmd:()=>L(1)}]})),R.jsxDEV("box",{paddingLeft:z,paddingRight:z,gap:1,children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:[R.jsxDEV("text",{attributes:gM0.BOLD,fg:J.text,children:X("tasks.reBranch.title")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:J.textMuted,onMouseUp:()=>$.onCancel(),children:"esc"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{gap:0,children:[R.jsxDEV("text",{fg:J.accent,children:X("tasks.reBranch.fieldLabel")},void 0,!1,void 0,this),R.jsxDEV("input",{value:G,placeholder:$.currentBranch,focused:!0,onInput:(C)=>{W(r5(C)),U(0)},onSubmit:()=>j(uV(G,M,H))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.length===0?R.jsxDEV("box",{gap:0,paddingBottom:1,children:R.jsxDEV("text",{fg:J.textMuted,wrapMode:"none",children:B.length===0?X("tasks.reBranch.hintNoBranches"):X("tasks.reBranch.hintNoMatch")},void 0,!1,void 0,this)},void 0,!1,void 0,this):R.jsxDEV(C9,{window:O,cursor:H,rows:A,onPick:(C)=>j(M[C]??G),paddingBottom:1},void 0,!1,void 0,this),R.jsxDEV("box",{paddingBottom:1,children:R.jsxDEV("text",{fg:J.textMuted,children:X("tasks.reBranch.footer")},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function vM0($,Z){return k2($,(J)=>R.jsxDEV(bM0,{currentBranch:Z.currentBranch,repo:Z.repo,onSubmit:(X)=>J(X),onCancel:()=>J(void 0)},void 0,!1,void 0,this))}var UU,qe;var Ue=d(async()=>{p8();sQ();X$();a0();await J$([Z$(),D4(),C5(),UX()]);UU=z1(q1(),1);qe={show:vM0}});function Be({vm:$}){let{theme:Z}=d0(),J=e0(),X=$.adoptVisible.map((z)=>{let G=[z.dirty?"dirty":"",z.kobeManaged?"":"external"].filter(Boolean).join(",");return{key:z.path,body:`${$.adoptSelected.has(z.path)?"[x] ":"[ ] "}${z.branch}${G?` (${G})`:""}`,accent:$.adoptSelected.has(z.path)}});return R.jsxDEV(R.Fragment,{children:[R.jsxDEV("box",{gap:0,children:[R.jsxDEV("text",{...B6(Z,$.field,"adoptFilter"),children:J("newTask.field.adoptFilter")},void 0,!1,void 0,this),R.jsxDEV("input",{value:$.adoptFilter,placeholder:J("newTask.placeholder.adoptFilter"),focused:$.field==="adoptFilter",onMouseUp:()=>$.setField("adoptFilter"),onInput:(z)=>$.setAdoptFilterText(z),onSubmit:()=>$.toggleAdoptCursor()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{paddingLeft:2,children:R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:J("newTask.adopt.repoLine",{path:$.expandedRepo||J("newTask.adopt.repoNone")})},void 0,!1,void 0,this)},void 0,!1,void 0,this),$.adoptLoading?R.jsxDEV("box",{paddingLeft:2,children:R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:J("newTask.hint.scanningWorktrees")},void 0,!1,void 0,this)},void 0,!1,void 0,this):null,!$.adoptLoading&&$.adoptList.length===0?R.jsxDEV("box",{paddingLeft:2,children:R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:$.adoptDiscoveredCount===0?J("newTask.adopt.noUnlinked"):J("newTask.adopt.noMatch")},void 0,!1,void 0,this)},void 0,!1,void 0,this):null,$.adoptList.length>0?R.jsxDEV(C9,{window:$.adoptWindow,cursor:$.adoptCursor,rows:X,onPick:$.pickAdoptAt,footer:R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:$.adoptSelected.size>0?J("newTask.adopt.hintSelected",{count:$.adoptSelected.size}):J("newTask.adopt.hintDefault")},void 0,!1,void 0,this)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}var Ke=d(async()=>{X$();a0();await J$([Z$(),UX()])});function Fe({vm:$}){let{theme:Z}=d0(),J=e0(),X=$.cloneParentWindow.items.map((z,G)=>({key:`${$.cloneParentWindow.start+G}:${z}`,body:`${z}/`}));return R.jsxDEV(R.Fragment,{children:[R.jsxDEV("box",{gap:0,children:[R.jsxDEV("text",{...B6(Z,$.field,"cloneUrl"),children:J("newTask.field.gitUrl")},void 0,!1,void 0,this),R.jsxDEV("input",{value:$.cloneUrl,placeholder:"https://github.com/user/repo.git",focused:$.field==="cloneUrl",onMouseUp:()=>$.setField("cloneUrl"),onInput:(z)=>$.setCloneUrlText(z),onSubmit:()=>{if(!$.cloneUrl.trim())return;$.setField("cloneParent")}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{gap:0,children:[R.jsxDEV("text",{...B6(Z,$.field,"cloneParent"),children:J("newTask.field.parentDir")},void 0,!1,void 0,this),R.jsxDEV("input",{value:$.cloneParent,placeholder:"~/",focused:$.field==="cloneParent",onMouseUp:()=>$.setField("cloneParent"),onInput:(z)=>$.setCloneParentText(z),onSubmit:()=>$.onCloneParentSubmit()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$.field==="cloneParent"?R.jsxDEV("box",{paddingLeft:2,children:R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:J("newTask.hint.remembered")},void 0,!1,void 0,this)},void 0,!1,void 0,this):null,$.field==="cloneParent"&&$.cloneParentFiltered.length>0&&!$.cloneParentPicked?R.jsxDEV(C9,{window:$.cloneParentWindow,cursor:$.cloneParentCursor,rows:X,onPick:$.selectCloneParentAt},void 0,!1,void 0,this):null,R.jsxDEV("box",{gap:0,children:[R.jsxDEV("text",{...B6(Z,$.field,"cloneFolder"),children:J("newTask.field.folderName")},void 0,!1,void 0,this),R.jsxDEV("input",{value:$.cloneFolder,placeholder:J("newTask.placeholder.folderName"),focused:$.field==="cloneFolder",onMouseUp:()=>$.setField("cloneFolder"),onInput:(z)=>$.setCloneFolderText(z),onSubmit:()=>$.setField("cloneBaseRef")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{gap:0,children:[R.jsxDEV("text",{...B6(Z,$.field,"cloneBaseRef"),children:J("newTask.field.baseBranch")},void 0,!1,void 0,this),R.jsxDEV("input",{value:$.cloneBaseRef,placeholder:l8,focused:$.field==="cloneBaseRef",onMouseUp:()=>$.setField("cloneBaseRef"),onInput:(z)=>$.setCloneBaseRefText(z),onSubmit:()=>void $.commitClone()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$.cloneInFlight?R.jsxDEV("box",{gap:0,paddingLeft:2,children:R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:$.cloneProgress||J("newTask.clone.progressFallback")},void 0,!1,void 0,this)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}var Me=d(async()=>{sQ();X$();a0();await J$([Z$(),UX()])});function Le({vm:$}){let{theme:Z}=d0(),J=e0(),X=$.activeWindow.items.map((G,W)=>{let H=$.mode==="saved"&&G===$.defaultRepo,U=$.mode==="browse"?"/":"",B=H?` ${J("newTask.hint.currentDir")}`:"";return{key:`${$.activeWindow.start+W}:${G}`,body:`${G}${U}${B}`,accent:$.mode==="saved"&&$.repo.trim()===G}}),z=$.branchWindow.items.map((G,W)=>({key:`${$.branchWindow.start+W}:${G}`,body:G,accent:$.baseRef.trim()===G}));return R.jsxDEV(R.Fragment,{children:[R.jsxDEV("box",{gap:0,children:[R.jsxDEV("text",{...B6(Z,$.field,"repo"),children:J("newTask.field.repo")},void 0,!1,void 0,this),R.jsxDEV("input",{value:$.repo,placeholder:$.defaultRepo,focused:$.field==="repo",onMouseUp:()=>$.setField("repo"),onInput:(G)=>$.setRepoText(G),onSubmit:()=>$.onRepoSubmit()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$.field==="repo"&&$.activeList.length>0&&!$.repoPicked?R.jsxDEV(C9,{window:$.activeWindow,cursor:$.repoCursor,rows:X,onPick:$.selectRepoAt},void 0,!1,void 0,this):null,R.jsxDEV("box",{gap:0,children:[R.jsxDEV("text",{...B6(Z,$.field,"baseRef"),children:J("newTask.field.fromBranch")},void 0,!1,void 0,this),R.jsxDEV("input",{value:$.baseRef,placeholder:l8,focused:$.field==="baseRef",onMouseUp:()=>$.setField("baseRef"),onInput:(G)=>$.setBaseRefText(G),onSubmit:()=>$.onBaseRefSubmit()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$.field==="baseRef"&&$.branchFiltered.length===0&&$.submitError==null?R.jsxDEV("box",{gap:0,paddingLeft:2,paddingBottom:1,children:R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"none",children:$.branches.length===0?J("newTask.hint.noBranchesFound"):J("newTask.hint.noMatchBranch")},void 0,!1,void 0,this)},void 0,!1,void 0,this):null,$.field==="baseRef"&&$.branchFiltered.length>0?R.jsxDEV(C9,{window:$.branchWindow,cursor:$.branchCursor,rows:z,onPick:$.pickBranchAt,paddingBottom:1},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}var Ne=d(async()=>{sQ();X$();a0();await J$([Z$(),UX()])});function pw($){return $&&$.length>0?$:m8}function Oe($,Z){let J=Z??"claude";return $.includes(J)?J:$[0]??"claude"}function je($,Z){let J=new Set($);if(J.has(Z))J.delete(Z);else J.add(Z);return J}function Ve($,Z){if(Z.length===0)return $;return Z.every((X)=>$.has(X))?new Set:new Set(Z)}var nw=d(()=>{P7()});function _e($){let[Z,J]=o8.useState(""),[X,z]=o8.useState(0),[G,W]=o8.useState(new Set),[H,U]=o8.useState(void 0),[B,M]=o8.useState(!1),O=o8.useMemo(()=>Mn(H??[],Z),[H,Z]),L=L9(O.map((m)=>m.path),X),j=O.slice(L.start,L.start+L.items.length),A=(H??[]).length,{active:C,expandedRepo:_,discoverAdoptable:b}=$;o8.useEffect(()=>{if(!C)return;let m=!1;return M(!0),(async()=>{let t=[];try{t=b?await b(_):[]}catch{t=[]}if(m)return;U(t),M(!1)})(),()=>{m=!0}},[C,_,b]),o8.useEffect(()=>{z((m)=>w4(m,O.length))},[O]);let E=o8.useRef(void 0);o8.useEffect(()=>{if(E.current!==void 0&&E.current!==_)W(new Set),z(0);E.current=_},[_]);function I(m){J(r5(m))}function T(m){W((t)=>je(t,m))}function w(){let m=O[X];if(m)T(m.path)}function y(m){let t=O[m];if(!t)return;z(m),T(t.path)}function f(){W((m)=>Ve(m,O.map((t)=>t.path)))}function h(m){if(O.length===0)return;z((t)=>w4(t+m,O.length))}function p(){if(O.length===0){$.setSubmitError(W$("newTask.error.noAdoptable"));return}let m=G.size>0?O.filter((t)=>G.has(t.path)):O.slice(X,X+1);if(m.length===0)return;$.onSubmit({mode:"adopt",repo:_,vendor:$.vendor,adopt:m.map((t)=>({worktreePath:t.path,branch:t.branch}))}),$.clearDialog()}return{adoptFilter:Z,adoptLoading:B,adoptDiscoveredCount:A,adoptList:O,adoptWindow:L,adoptVisible:j,adoptCursor:X,adoptSelected:G,setAdoptFilterText:I,toggleAdoptCursor:w,pickAdoptAt:y,adoptSelectAll:f,moveAdoptCursor:h,commitAdopt:p}}var o8;var Ce=d(()=>{p8();X$();nw();o8=z1(q1(),1)});import{spawn as kM0}from"child_process";import*as DG from"fs";import*as qM from"path";function De($){let Z=$.trim().replace(/\/+$/,"");if(!Z)return"";let J=Z.lastIndexOf("/"),X=Z.lastIndexOf(":"),z=Math.max(J,X);return(z>=0?Z.slice(z+1):Z).replace(/\.git$/i,"")}function Ae($){let Z=$.trim();if(!Z)return W$("newTask.error.gitUrlRequired");let J=Z.includes("://"),X=Z.includes("@")&&Z.includes(":"),z=Z.includes("/");if(!J&&!X&&!z)return W$("newTask.error.gitUrlInvalid",{url:Z});return null}function iw($,Z){let J=Z.trim();if(!J)return W$("newTask.error.folderRequired");if(J.includes("/")||J.includes("\\"))return W$("newTask.error.folderHasSeparator");let X=$.trim();if(!X)return W$("newTask.error.parentRequired");let z=IZ(X),G;try{G=DG.statSync(z)}catch{return W$("newTask.error.parentNotFound",{path:z})}if(!G.isDirectory())return W$("newTask.error.parentNotDir",{path:z});let W=qM.join(z,J);if(DG.existsSync(W))return W$("newTask.error.targetExists",{path:W});return null}function Pe($,Z){return qM.join(IZ($.trim()),Z.trim())}function Re($,Z){let J=Z.trim();if(!J)return Z;let X=IZ($.trim());if(!X)return Z;try{if(!DG.statSync(X).isDirectory())return Z}catch{return Z}if(!DG.existsSync(qM.join(X,J)))return J;for(let z=2;z<1000;z++){let G=`${J}-${z}`;if(!DG.existsSync(qM.join(X,G)))return G}return J}function Te($,Z,J){return new Promise((X)=>{let z="";try{let G=kM0("git",["clone","--progress",$,Z],{stdio:["ignore","ignore","pipe"],env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_ASKPASS:""}});G.stderr?.setEncoding("utf-8"),G.stderr?.on("data",(W)=>{if(z+=W,J){let H=W.split(/[\r\n]+/).filter((B)=>B.trim().length>0),U=H[H.length-1];if(U)J(U)}}),G.on("error",(W)=>{X({ok:!1,error:W.message})}),G.on("close",(W)=>{if(W===0){X({ok:!0,path:Z});return}let H=z.split(/[\r\n]+/).filter((U)=>U.trim().length>0).pop()??`git clone exited with ${W}`;X({ok:!1,error:H})})}catch(G){X({ok:!1,error:M1(G)})}})}var Se=d(()=>{RZ();UG()});function qC($){let Z=ow.useMemo(()=>Jo($),[$]),J=ow.useMemo(()=>Qo(Xo(Z.base),Z.filter),[Z]);return{split:Z,filtered:J}}var ow;var aw=d(()=>{UG();ow=z1(q1(),1)});function Ie($){let[Z,J]=L6.useState(""),[X,z]=L6.useState($.defaultCloneParent?.trim()?$.defaultCloneParent:"~/"),[G,W]=L6.useState(""),[H,U]=L6.useState(!1),[B,M]=L6.useState(l8),[O,L]=L6.useState(!1),[j,A]=L6.useState(""),[C,_]=L6.useState(0),[b,E]=L6.useState(!1),{split:I,filtered:T}=qC(X),w=L9(T,C);L6.useEffect(()=>{if(H)return;W(Re(X,De(Z)))},[Z,X,H]);function y(U0){J(r5(U0))}function f(U0){E(!1),z(r5(U0)),_(0)}function h(U0){U(!0),W(r5(U0))}function p(U0){M(r5(U0))}function m(){let U0=T[C];if(U0)z(vq(X,I.base,U0)),_(0),E(!0);$.setField("cloneFolder")}function t(U0){let F0=T[U0];if(!F0)return;z(vq(X,I.base,F0)),_(U0),E(!0),$.setField("cloneFolder")}function s(U0){if(T.length===0)return;_((F0)=>w4(F0+U0,T.length))}async function G0(){if(O)return;let U0=Ae(Z);if(U0){$.setSubmitError(U0),$.setField("cloneUrl");return}let F0=iw(X,G);if(F0){$.setSubmitError(F0);let i=G.trim(),n=!(!i||i.includes("/")||i.includes("\\"))&&iw(X,"__kobe_probe__")!=null;$.setField(n?"cloneParent":"cloneFolder");return}let B0=Pe(X,G);L(!0),A(W$("newTask.clone.progressInto",{target:B0}));let W0=await Te(Z.trim(),B0,(i)=>A(i));if(L(!1),!W0.ok){$.setSubmitError(W$("newTask.error.cloneFailed",{error:W0.error})),$.setField("cloneUrl");return}let k=B.trim()||l8;$.onSubmit({repo:W0.path,baseRef:k,vendor:$.vendor,cloned:{parentDir:IZ(X.trim())}}),$.clearDialog()}return{cloneUrl:Z,cloneParent:X,cloneFolder:G,cloneBaseRef:B,cloneInFlight:O,cloneProgress:j,cloneParentFiltered:T,cloneParentWindow:w,cloneParentCursor:C,cloneParentPicked:b,setCloneUrlText:y,setCloneParentText:f,setCloneFolderText:h,setCloneBaseRefText:p,onCloneParentSubmit:m,selectCloneParentAt:t,moveParentCursor:s,commitClone:G0}}var L6;var Ee=d(()=>{Se();p8();sQ();UG();X$();aw();L6=z1(q1(),1)});function we($){let Z=o$(),[J,X]=f7.useState("existing"),z=pw($.availableVendors),[G,W]=f7.useState(()=>Oe(pw($.availableVendors),$.defaultVendor)),[H,U]=f7.useState("tabs"),[B,M]=f7.useState($.defaultRepo),[O,L]=f7.useState(()=>Eq(IZ($.defaultRepo.trim()))??l8),[j,A]=f7.useState(!1),[C,_]=f7.useState(0),[b,E]=f7.useState(!1),[I,T]=f7.useState(0),[w,y]=f7.useState(null),f=f7.useMemo(()=>Ln($.defaultRepo,$.savedRepos),[$.defaultRepo,$.savedRepos]),h=Fn(B,f),{split:p,filtered:m}=qC(B),t=f7.useMemo(()=>Nn(f,B),[f,B]),s=h==="browse"?m:t,G0=L9(s,C),U0=IZ(B.trim()),F0=f7.useMemo(()=>mV(U0),[U0]),B0=f7.useMemo(()=>hV(F0,O),[F0,O]),W0=L9(B0,I),k=Ie({defaultCloneParent:$.defaultCloneParent,vendor:G,onSubmit:$.onSubmit,clearDialog:()=>Z.clear(),setField:U,setSubmitError:y}),i=_e({active:J==="adopt",expandedRepo:U0,vendor:G,discoverAdoptable:$.discoverAdoptable,onSubmit:$.onSubmit,clearDialog:()=>Z.clear(),setSubmitError:y});f7.useEffect(()=>{if(!U0||j)return;let j0=Eq(U0);if(j0)L(j0)},[U0,j]),f7.useEffect(()=>{y(null)},[B,k.cloneUrl,k.cloneParent,k.cloneFolder,i.adoptFilter]);function l(j0){E(!1),M(r5(j0)),_(0),T(0)}function n(j0){A(!0),L(r5(j0)),T(0)}function Y0(){let j0=U0;if(!j0)return;let l0=Kn(j0);if(l0){y(l0),U("repo");return}let W1=O.trim()||l8;$.onSubmit({repo:j0,baseRef:W1,vendor:G}),Z.clear()}function Z0(){if(J==="clone"){k.commitClone();return}if(J==="adopt"){i.commitAdopt();return}Y0()}function a(j0){if(k.cloneInFlight||j0===J)return;X(j0),U(aI(j0)),y(null)}function $0(j0){if(k.cloneInFlight)return;let l0=j0===1?nI(J):iI(J);if(l0===J)return;X(l0),y(null),U("tabs")}function O0(j0){W((l0)=>j0===1?IH(z,l0):Vg(z,l0))}function Q0(){if(!B.trim()&&h==="saved"){let l0=s[0];if(l0){M(l0),U("baseRef");return}}if(h==="browse"){let l0=m[C];if(l0)M(vq(B,p.base,l0)),_(0),E(!0);U("baseRef");return}let j0=s[C];if(j0)M(j0);U("baseRef")}function w0(j0){let l0=s[j0];if(!l0)return;if(h==="browse")M(vq(B,p.base,l0)),E(!0);else M(l0);_(j0),U("baseRef")}function b0(j0){let l0=B0[j0];if(!l0)return;L(l0),A(!0),T(j0),U("confirm")}function D0(){L(uV(O,B0,I)),A(!0),Y0()}function u0(j0){if(k.cloneInFlight)return;if(J==="existing"&&H==="repo"&&s.length>0){_((l0)=>w4(l0+j0,s.length));return}if(J==="existing"&&H==="baseRef"&&B0.length>0){T((l0)=>w4(l0+j0,B0.length));return}if(J==="clone"&&H==="cloneParent"){k.moveParentCursor(j0);return}if(J==="adopt")i.moveAdoptCursor(j0)}return b1(()=>({bindings:[{key:"tab",cmd:()=>U((j0)=>oI(j0,J))},{key:"ctrl+]",cmd:()=>a(nI(J))},{key:"ctrl+[",cmd:()=>a(iI(J))},{key:"ctrl+e",cmd:()=>O0(1)},{key:"up",cmd:()=>u0(-1)},{key:"down",cmd:()=>u0(1)},...H==="tabs"||H==="engine"?[{key:"left",cmd:()=>H==="tabs"?$0(-1):O0(-1)},{key:"right",cmd:()=>H==="tabs"?$0(1):O0(1)},{key:"return",cmd:()=>U((j0)=>oI(j0,J))}]:[],...J==="adopt"?[{key:"ctrl+a",cmd:i.adoptSelectAll}]:[]]})),b1(()=>({enabled:H==="confirm"&&!k.cloneInFlight,bindings:[{key:"return",cmd:()=>Z0()}]})),{...k,...i,defaultRepo:$.defaultRepo,tab:J,vendors:z,vendor:G,setVendor:W,field:H,setField:U,repo:B,mode:h,activeList:s,activeWindow:G0,repoCursor:C,repoPicked:b,expandedRepo:U0,baseRef:O,branches:F0,branchFiltered:B0,branchWindow:W0,branchCursor:I,submitError:w,setRepoText:l,setBaseRefText:n,onRepoSubmit:Q0,selectRepoAt:w0,pickBranchAt:b0,onBaseRefSubmit:D0,switchToTab:a,commit:Z0,commitExisting:Y0}}var f7;var xe=d(async()=>{P7();p8();sQ();UG();nw();Ce();Ee();aw();await J$([D4(),C5()]);f7=z1(q1(),1)});import{TextAttributes as UM}from"@opentui/core";function fe($){let{theme:Z}=d0(),J=e0(),X=M7(),z=we($),G={existing:J("newTask.tabs.existing"),clone:J("newTask.tabs.clone"),adopt:J("newTask.tabs.adopt")},W=z.field==="tabs",H=(U,B)=>U?B?UM.BOLD|UM.UNDERLINE:UM.BOLD:void 0;return R.jsxDEV("box",{paddingLeft:X,paddingRight:X,gap:0,children:[R.jsxDEV("box",{flexDirection:"row",children:R.jsxDEV("text",{attributes:UM.BOLD,fg:Z.text,children:J("newTask.title")},void 0,!1,void 0,this)},void 0,!1,void 0,this),R.jsxDEV("box",{gap:1,paddingTop:1,paddingBottom:1,children:[R.jsxDEV("box",{flexDirection:"row",gap:2,children:mM0.map((U)=>{let B=z.tab===U;return R.jsxDEV("text",{fg:B?Z.primary:Z.textMuted,attributes:H(B,W),onMouseUp:()=>z.switchToTab(U),children:B?`\u25B8 ${G[U]}`:` ${G[U]}`},U,!1,void 0,this)})},void 0,!1,void 0,this),R.jsxDEV("box",{gap:0,children:[R.jsxDEV("text",{...B6(Z,z.field,"engine"),children:J("newTask.field.engine")},void 0,!1,void 0,this),R.jsxDEV($U,{choices:z.vendors,selected:z.vendor,onPick:(U)=>{z.setVendor(U),z.setField("engine")},children:[R.jsxDEV("box",{flexGrow:1},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,children:J("newTask.hint.engineCycle")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z.tab==="existing"?R.jsxDEV(Le,{vm:z},void 0,!1,void 0,this):null,z.tab==="clone"?R.jsxDEV(Fe,{vm:z},void 0,!1,void 0,this):null,z.tab==="adopt"?R.jsxDEV(Be,{vm:z},void 0,!1,void 0,this):null,z.submitError?R.jsxDEV("text",{fg:Z.error,wrapMode:"word",children:["\u203B ",z.submitError]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this),R.jsxDEV("box",{flexDirection:"row",justifyContent:"flex-end",alignItems:"center",paddingTop:1,paddingBottom:1,children:R.jsxDEV("text",{fg:z.field==="confirm"?Z.primary:Z.text,attributes:z.field==="confirm"?UM.BOLD:void 0,onMouseUp:()=>z.commit(),children:z.cloneInFlight?J("newTask.button.cloning"):z.field==="confirm"?J("newTask.button.createFocused"):J("newTask.button.create")},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var mM0;var ye=d(async()=>{X$();a0();await J$([Z$(),C5(),UX(),Ke(),Me(),Ne(),xe()]);mM0=["existing","clone","adopt"]});function hM0($,Z,J,X){return k2($,(z)=>R.jsxDEV(fe,{defaultRepo:Z,savedRepos:J,defaultCloneParent:X?.defaultCloneParent,defaultVendor:X?.defaultVendor,availableVendors:X?.availableVendors,discoverAdoptable:X?.discoverAdoptable,onSubmit:(G)=>z(G),onCancel:()=>z(void 0)},void 0,!1,void 0,this),{size:"medium"})}var ge;var be=d(async()=>{p8();a0();await J$([C5(),ye()]);ge={show:hM0}});function uM0($){return{confirm:async(Z)=>await O4.show($,Z.title,Z.body,Z.cancelLabel,Z.confirmLabel)===!0,promptText:(Z,J)=>g5.show($,Z,J),promptNewTask:(Z,J,X)=>ge.show($,Z,J,X)}}function rw($){return(Z,J)=>{if($.selectedId()!==Z)return;let X=$.tasks();$.setSelectedId(J?.id??(X.find((z)=>!z.archived)??X[0])?.id??null)}}function ve($){return{orch:$.orch,tasks:()=>$.tasks(),...uM0($.dialog),...cM0,logger:console,logPrefix:$.logPrefix,notifyError:$.notifyError,notifyInfo:$.notifyInfo,updateActiveTask:!0,onTaskDeleted:rw($),cursorRepo:()=>{let Z=$.tasks();return(Z.find((J)=>J.id===$.selectedId())??Z[0])?.repo},selectTask:(Z)=>$.setSelectedId(Z),enterTask:(Z)=>$.enterTask(Z)}}var cM0;var ke=d(async()=>{yJ();await J$([be(),QX(),TZ()]);cM0={lastVendor:($)=>BZ($),rememberVendor:($,Z)=>fJ($,Z)}});function me($){let{orchestrator:Z,tasks:J,dialog:X,notifyError:z}=$,G={...ve({orch:Z,tasks:J,dialog:X,notifyError:z,notifyInfo:$.notifyInfo,selectedId:$.selectedId,setSelectedId:$.setSelectedId,logPrefix:"[rove workspace]",enterTask:$.activateTask}),onTaskDeleted:(()=>{let B=rw({tasks:J,selectedId:$.selectedId,setSelectedId:$.setSelectedId});return(M,O)=>{$.forgetTaskTabs(M),B(M,O)}})()};async function W(B){let M=J().find((O)=>O.id===B);if(!M)return;await Z.setPinned(B,!M.pinned).catch((O)=>{z(`Couldn't pin: ${M1(O)}`)})}async function H(B,M){await Z.moveTask(B,M).catch((O)=>{z(`Couldn't move: ${M1(O)}`)})}async function U(B){let M=J().find((L)=>L.id===B);if(!M||M.kind==="main")return;let O=await qe.show(X,{currentBranch:M.branch,repo:M.repo});if(!O)return;await Z.setBranch(B,O).catch((L)=>{z(`Couldn't rename branch: ${M1(L)}`)})}return{createTask:()=>We(G),archiveTask:(B)=>Qe(G,B),deleteTask:(B)=>ze(G,B),renameTask:(B)=>Ye(G,B),renameBranch:U,cycleVendor:(B)=>Ge(G,B),togglePin:W,moveTask:H}}var he=d(async()=>{lw();He();await J$([Ue(),ke()])});import{spawn as dM0}from"child_process";import{existsSync as lM0}from"fs";import{basename as pM0,delimiter as nM0,isAbsolute as iM0,join as oM0}from"path";function sw($,Z,J){if(iM0($))return J($);let X=Z.PATH??"";for(let z of X.split(nM0)){if(!z)continue;if(J(oM0(z,$)))return!0}return!1}function sM0($){let Z=pM0($);if(Z==="code")return"VS Code";if(Z==="cursor")return"Cursor";if(Z==="windsurf")return"Windsurf";if(Z==="zed")return"Zed";return Z||$}function ue($={}){let Z=$.env??process.env,J=$.platform??process.platform,X=$.exists??lM0,z=O$("OPEN_EDITOR",Z)?.trim();if(z)return{id:"env",label:sM0(z),command:z,args:[]};for(let G of aM0)if(sw(G.command,Z,X))return{id:G.id,label:G.label,command:G.command,args:[]};if(J==="darwin"&&sw("open",Z,X)){for(let G of rM0)if(G.paths.some((W)=>X(W)))return{id:G.id,label:G.label,command:"open",args:["-a",G.appName]};return{id:"mac-open",label:"Finder",command:"open",args:[]}}if(J==="linux"&&sw("xdg-open",Z,X))return{id:"xdg-open",label:"Open",command:"xdg-open",args:[]};return null}function tM0($,Z){return[Z.command,[...Z.args,$]]}function ce($,Z,J={}){if(!$)return!1;let X=J.spawn??dM0,[z,G]=tM0($,Z);try{let W=X(z,G,{detached:!0,stdio:"ignore"});if(W.pid===void 0)return!1;return W.unref(),!0}catch{return!1}}var aM0,rM0;var de=d(()=>{aM0=[{id:"code",label:"VS Code",command:"code"},{id:"cursor",label:"Cursor",command:"cursor"},{id:"windsurf",label:"Windsurf",command:"windsurf"},{id:"zed",label:"Zed",command:"zed"}],rM0=[{id:"vscode.app",label:"VS Code",appName:"Visual Studio Code",paths:["/Applications/Visual Studio Code.app"]},{id:"cursor.app",label:"Cursor",appName:"Cursor",paths:["/Applications/Cursor.app","/System/Applications/Cursor.app"]},{id:"windsurf.app",label:"Windsurf",appName:"Windsurf",paths:["/Applications/Windsurf.app"]},{id:"zed.app",label:"Zed",appName:"Zed",paths:["/Applications/Zed.app"]}]});import{existsSync as le}from"fs";async function eM0($,Z){let J=Z.taskPath;if(!J||!le(J))try{J=await Z.ensureWorktree($)}catch(z){let G=z instanceof Error?z.message:String(z);Z.notifyError(`Couldn't create worktree: ${G}`);return}if(!J||!le(J))return;let X=ue();if(!X){Z.notifyError(Z.noEditorMessage);return}if(!ce(J,X))Z.notifyError(Z.openFailedMessage(X.label))}function pe($,Z){eM0($,{taskPath:Z.tasks.find((J)=>J.id===$)?.worktreePath,ensureWorktree:Z.ensureWorktree,notifyError:Z.notifyError,noEditorMessage:W$("tasks.toast.noEditor"),openFailedMessage:(J)=>W$("tasks.toast.openWorktreeFailed",{label:J})})}var ne=d(()=>{RZ();de()});import{randomUUID as $L0}from"crypto";function ZL0($){let Z=$.body.replace(/\\/g,"\\\\").replace(/"/g,"\\\"").replace(/\r/g,"\\r").replace(/\n/g,"\\n"),J=$.startLine!==void 0&&$.startLine!==$.line?`Lines: ${$.startLine}-${$.line}`:`Line: ${$.line}`;return[`File: ${$.filePath}`,J,`User comment: "${Z}"`].join(`
|
|
754
754
|
`)}function JL0($){return $.map(ZL0).join(`
|