@sma1lboy/kobe 0.8.198 → 0.8.199

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.
Files changed (25) hide show
  1. package/dist/cli/index.js +2 -2
  2. package/dist/cli/kobe-run.js +2 -2
  3. package/dist/cli/rove-run.js +2 -2
  4. package/dist/web-ui/assets/{AppShell-CmceqjY-.js → AppShell-TzCpzcDS.js} +1 -1
  5. package/dist/web-ui/assets/{Board-DBuYe1Q2.js → Board-72QPdwHn.js} +1 -1
  6. package/dist/web-ui/assets/{ConfirmDialog-C9xYoPEx.js → ConfirmDialog-CBqd0wMR.js} +1 -1
  7. package/dist/web-ui/assets/{IssuesPage-D0aXMK3K.js → IssuesPage-BlWjFWpu.js} +1 -1
  8. package/dist/web-ui/assets/{SettingsPage-GfBeP2sy.js → SettingsPage-DovXUI00.js} +1 -1
  9. package/dist/web-ui/assets/{ViewToggle-C6Kw_T1E.js → ViewToggle-Bvvh1yLG.js} +1 -1
  10. package/dist/web-ui/assets/board-BnvucJGQ.js +1 -0
  11. package/dist/web-ui/assets/{columns-3-Dzac_n1b.js → columns-3-xX5P4LBE.js} +1 -1
  12. package/dist/web-ui/assets/{desktop-BerzaX7n.js → desktop-CB2NHSKZ.js} +2 -2
  13. package/dist/web-ui/assets/{index-DEdAoep_.js → index-BccGl3xk.js} +3 -3
  14. package/dist/web-ui/assets/issues-CduWI37C.js +1 -0
  15. package/dist/web-ui/assets/routes-bdJ1BCG5.js +1 -0
  16. package/dist/web-ui/assets/{task._taskId-BOaY4DV_.js → task._taskId-561S2TB3.js} +1 -1
  17. package/dist/web-ui/assets/{task._taskId-BpThmZkz.js → task._taskId-CXiB2eGU.js} +2 -2
  18. package/dist/web-ui/assets/{toast-B7pad_QC.js → toast-2mA6GzBq.js} +1 -1
  19. package/dist/web-ui/assets/{triage-DP1bTLMs.js → triage-DjBy6dI9.js} +1 -1
  20. package/dist/web-ui/assets/{worktrees-bs_8ANrl.js → worktrees-qGA9B-VY.js} +1 -1
  21. package/dist/web-ui/index.html +6 -6
  22. package/package.json +1 -1
  23. package/dist/web-ui/assets/board-CH4KUmnb.js +0 -1
  24. package/dist/web-ui/assets/issues-DHu-h5EM.js +0 -1
  25. package/dist/web-ui/assets/routes-BZCFfJIJ.js +0 -1
@@ -79,7 +79,7 @@ You were spawned by Rove task ${J}. When the work is finished, send your outcome
79
79
  `).split(`
80
80
  `).map((z)=>(z.split("\r").pop()??"").slice(0,Xq0));while(J.length>0&&(J[J.length-1]??"").trim()==="")J.pop();return J.slice(-Zq0)}function QK(Z=nG()){try{let X=JSON.parse(s$0(Z,"utf8"));if(X===null||typeof X!=="object"||Array.isArray(X))return{};return X}catch{return{}}}function rC(Z,X=nG()){if(Z.key.startsWith("::"))return;if(Z.exit.code===0&&Z.exit.signal===null)return;let J=QK(X);J[Z.key]={key:Z.key,pid:Z.pid,code:Z.exit.code,signal:Z.exit.signal,at:Z.exit.at,tail:Vh(Z.tail)};let z=Object.values(J).sort((Q,Y)=>Q.at<Y.at?1:-1).slice(0,e$0);o$0(t$0(X),{recursive:!0}),r$0(X,JSON.stringify(Object.fromEntries(z.map((Q)=>[Q.key,Q])),null,2),"utf8")}var e$0=50,Zq0=40,Xq0=500,Jq0;var YK=h(()=>{W7();Jq0=/\x1b\[[0-9;?]*[ -/]*[@-~]|\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)?|\x1b[@-_]/g});var Nh={};t1(Nh,{setRepoLastActiveVendor:()=>gZ,setGlobalDefaultVendor:()=>ZE,resolvePreferredVendor:()=>P6,getRepoLastActiveVendor:()=>Mh,getGlobalDefaultVendor:()=>kD});function eC(Z,X){let J=Z?.trim();if(!J)return;if(G7(J)||X.includes(J))return J;return}function Mh(Z){return eC(y5(Bh+Z),A8())}function gZ(Z,X){P3(Bh+Z,X)}function kD(){let Z=A8();return eC(y5("defaultVendor"),Z)??eC(y5("lastSelectedVendor"),Z)}function ZE(Z){P3("defaultVendor",Z)}function P6(Z){return(Z?Mh(Z):void 0)??kD()??w4}var Bh="lastActiveVendor.";var I9=h(()=>{P7();i5();a4()});function n8(Z=process.env){return{...Z,...XE}}var XE;var mZ=h(()=>{XE={GIT_OPTIONAL_LOCKS:"0"}});function Dh(Z){return Z>="0"&&Z<="7"}function jh(Z,X){let J=[],z="",Q=()=>{if(z.length>0){for(let G of zq0.encode(z))J.push(G);z=""}},Y=X+1;while(Y<Z.length){let G=Z[Y];if(G==='"'){Y++;break}if(G==="\\"){let $=Z[Y+1];if($===void 0){z+="\\",Y++;continue}switch($){case"a":Q(),J.push(7),Y+=2;break;case"b":Q(),J.push(8),Y+=2;break;case"t":Q(),J.push(9),Y+=2;break;case"n":Q(),J.push(10),Y+=2;break;case"v":Q(),J.push(11),Y+=2;break;case"f":Q(),J.push(12),Y+=2;break;case"r":Q(),J.push(13),Y+=2;break;case'"':z+='"',Y+=2;break;case"\\":z+="\\",Y+=2;break;default:if(Dh($)){let H="",K=Y+1;while(K<Z.length&&H.length<3&&Dh(Z[K]))H+=Z[K],K++;Q(),J.push(Number.parseInt(H,8)&255),Y=K}else z+=$,Y+=2;break}}else z+=G,Y++}return Q(),{value:Qq0.decode(new Uint8Array(J)),end:Y}}function x9(Z){if(Z.length===0||Z[0]!=='"')return Z;return jh(Z,0).value}function Fh(Z,X){if(Z[0]==='"'){let z=jh(Z,0);if(Z.startsWith(X,z.end))return{orig:z.value,neu:x9(Z.slice(z.end+X.length))};return null}let J=Z.indexOf(X);if(J<0)return null;return{orig:Z.slice(0,J),neu:x9(Z.slice(J+X.length))}}function Wh(Z,X,J){if(X.length===0&&Z.endsWith("/")&&J.startsWith("/"))return Z+J.slice(1);return Z+X+J}function Yq0(Z){let X=Z.indexOf("{");if(X>=0){let z=Z.indexOf("}",X),Q=Z.indexOf(" => ",X);if(z>X&&Q>=0&&Q<z){let Y=Z.slice(0,X),G=Z.slice(X+1,Q),$=Z.slice(Q+4,z),H=Z.slice(z+1);return{path:Wh(Y,$,H),origPath:Wh(Y,G,H)}}}let J=Fh(Z," => ");if(J)return{path:J.neu,origPath:J.orig};return{path:x9(Z)}}function hD(Z){let X=[];for(let J of Z.split(`
81
81
  `)){let z=J.replace(/\r$/,"");if(z.length<4)continue;if(z.startsWith("##"))continue;let Q=z[0],Y=z[1];if(z[2]!==" ")continue;let G=z.slice(3);if(Q==="R"||Q==="C"||Y==="R"||Y==="C"){let $=Fh(G," -> ");if($){X.push({x:Q,y:Y,path:$.neu,origPath:$.orig});continue}}X.push({x:Q,y:Y,path:x9(G)})}return X}function Oh(Z){if(Z==="-")return null;let X=Number.parseInt(Z,10);return Number.isNaN(X)?null:X}function _h(Z){let X=[];for(let J of Z.split(`
82
- `)){let z=J.replace(/\r$/,"");if(z.length===0)continue;let Q=z.indexOf("\t");if(Q<0)continue;let Y=z.indexOf("\t",Q+1);if(Y<0)continue;let G=z.slice(Y+1);if(G.length===0)continue;let $=Yq0(G);if($.path.length===0)continue;X.push({path:$.path,...$.origPath!==void 0?{origPath:$.origPath}:{},added:Oh(z.slice(0,Q)),deleted:Oh(z.slice(Q+1,Y))})}return X}var zq0,Qq0;var uD=h(()=>{zq0=new TextEncoder,Qq0=new TextDecoder});var Lh={};t1(Lh,{sameWorktreeChanges:()=>GK,readWorktreeChanges:()=>$q0,pickPushedChanges:()=>JE,parsePorcelain:()=>V$});import{spawnSync as Gq0}from"child_process";function GK(Z,X){return Z.added===X.added&&Z.deleted===X.deleted}function JE(Z,X){if(!Z)return null;return Z.get(X)??cD}function $q0(Z){if(!Z)return cD;try{let X=Gq0("git",["status","--porcelain=v1"],{cwd:Z,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:n8()});if(X.status!==0||!X.stdout)return cD;return V$(X.stdout)}catch{return cD}}function V$(Z){let X=0,J=0;for(let{x:z,y:Q}of hD(Z))if(z==="D"||Q==="D")J+=1;else X+=1;return{added:X,deleted:J}}var cD;var B$=h(()=>{mZ();uD();cD={added:0,deleted:0}});var Rh={};t1(Rh,{resolveBaseRef:()=>Ch,readBranchSignals:()=>Uq0,parseShortstat:()=>Eh});import{spawnSync as qq0}from"child_process";function lD(Z,X){try{let J=qq0("git",[...X],{cwd:Z,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:n8()});return J.status===0?J.stdout.trim():null}catch{return null}}function Ch(Z){let X=lD(Z,["symbolic-ref","--short","refs/remotes/origin/HEAD"]);if(X)return X;for(let J of["origin/main","origin/master","main","master"])if(lD(Z,["rev-parse","--verify","--quiet",J])!==null)return J;return null}function Eh(Z){let X=(J)=>{let z=Z.match(J);return z?Number.parseInt(z[1]??"0",10):0};return{files:X(/(\d+) files? changed/),insertions:X(/(\d+) insertions?\(\+\)/),deletions:X(/(\d+) deletions?\(-\)/)}}function Uq0(Z){if(!Z)return Ah;let X=Ch(Z);if(!X)return Ah;let J=lD(Z,["rev-list","--count",`${X}..HEAD`]),z=J===null?null:Number.parseInt(J,10),Q=lD(Z,["diff","--shortstat",`${X}...HEAD`]),Y=Q===null?null:Eh(Q);return{baseRef:X,ahead:z!==null&&Number.isNaN(z)?null:z,diff:Y}}var Ah;var Th=h(()=>{mZ();Ah={baseRef:null,ahead:null,diff:null}});async function Hq0(Z,X,J){let z;try{z=await EC()}catch(Q){throw new t0(`failed to start PTY host for ${Z.id}: ${Q instanceof Error?Q.message:String(Q)}`,"SESSION_FAILED")}try{if(Z.tab&&Z.tab!=="new"){let W=G8({command:Z.command,vendor:Z.vendor,effort:Z.modelEffort})[0];return await SC(z.rpc,Z.id,Z.tab,X,J,{engineBin:W})}let Q=Z.tab==="new"?Kh(Z.id,Z.tabVendor,Z.tabCommand):void 0,Y=Z.tabVendor??Z.vendor,G=Z.tabCommand??(Z.tabVendor?void 0:Z.command),{argv:$,sessionId:H}=_J(G8({command:G,vendor:Y,effort:Z.modelEffort}),Y);Q$(Y,X);let K=z$({task:{id:Z.id,kind:Z.kind,vendor:Y,repo:Z.repo},worktreePath:X,shell:process.env.SHELL?.trim()||"/bin/zsh",argv:$,promptIntent:Z.newTask?{kind:"new-task",prompt:J,spawnerTaskId:(await Z$())?.taskId}:{kind:"explicit",prompt:J},tabId:Q}),M=await TC(z.rpc,{id:Z.id,engineBin:$[0]},X,J,K,{forceNew:Q!==void 0});if(M.started&&!M.engineReady)throw new t0(`failed to start hosted engine session for ${Z.id}`,"SESSION_FAILED");if(M.started&&H)if(Q)Hh(Z.id,Q,H);else oC(Z.id,H);else if(!Q)oC(Z.id);return M}catch(Q){if(Q instanceof t0)throw Q;throw new t0(`hosted engine session failed for ${Z.id}: ${Q instanceof Error?Q.message:String(Q)}`,"SESSION_FAILED")}finally{z.close()}}async function zE(Z,X,J,z=Kq0){let Q=X.worktreePath;if(!Q)Q=(await Z.request("task.ensureWorktree",{taskId:X.id})).worktreePath;if(!Q)throw new t0(`task ${X.id} has no worktree`,"NO_WORKTREE");let Y=await z.deliverHosted(X,Q,J);if(!Y)throw new t0(`failed to start hosted engine session for ${X.id}`,"SESSION_FAILED");return Y}var Kq0,$K;var qK=h(()=>{w3();$7();AD();CD();RD();oH();HD();sC();c8();Kq0={deliverHosted:Hq0};$K={isTaskRunning:async(Z)=>(await $K.taskTabs(Z)).running,taskTabs:async(Z)=>{let X=[],J=await tG();if(J)try{X=await eG(J.rpc)}finally{J.close()}let z;try{let{foregroundEngineIn:G,parsePsSnapshot:$,psSnapshot:H}=await Promise.resolve().then(() => (A9(),sN)),K=X.filter((M)=>M.alive&&typeof M.pid==="number"&&M.pid>0);if(K.length>0){let M=$(await H());z=new Map(K.map((W)=>[W.key,G(M,W.pid)?.vendor??null]))}}catch{}let Q={};try{Q=(await Promise.resolve().then(() => (YK(),tC))).readPtyExitRecords()}catch{}let Y=Gh(Z);return{tabs:qh(Y,Z,X,Q,z),running:Uh(Y,Z,X)}},deliverPrompt:(Z,X,J)=>zE(Z,X,J),resolveRepoRoot:async(Z)=>(await Promise.resolve().then(() => (a4(),yG))).resolveMainRepoRoot(Z),defaultVendor:async(Z)=>{let{getGlobalDefaultVendor:X,getRepoLastActiveVendor:J}=await Promise.resolve().then(() => (I9(),Nh));return(Z?J(Z):void 0)??X()},readWorktreeChanges:async(Z)=>(await Promise.resolve().then(() => (B$(),Lh))).readWorktreeChanges(Z),readBranchSignals:async(Z)=>(await Promise.resolve().then(() => (Th(),Rh))).readBranchSignals(Z),tearDownSession:async(Z)=>{let X=await tG();if(X)try{await PC(X.rpc,CC(await eG(X.rpc),Z))}catch{}finally{X.close()}}}});var pD;var Sh=h(()=>{pD={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/rove",version:"0.8.198",description:"Rove \u2014 the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.",keywords:["terminal","tui","cli","multiplexer","ai-agents","coding-agent","ai-coding-assistant","agentic-ai","parallel-agents","git-worktree","claude-code","codex","llm","developer-tools"],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://rove.run",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","plugin-sandbox":"bun run scripts/plugin-sandbox.ts"},"//":"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.16","@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 Ih={};t1(Ih,{repoSlug:()=>EQ,releasePageUrl:()=>UE,recommendedGlobalInstallCommand:()=>GE,isNewerSemver:()=>QE,fetchReleaseSummaries:()=>HK,fetchReleaseNotesRange:()=>qE,fetchReleaseNotes:()=>$E,compareSemver:()=>t2,checkLatestVersion:()=>RQ,breakingVersionsCrossed:()=>UK,UPDATE_SCRIPT_URL:()=>dD,UPDATE_COMMAND:()=>y9,PACKAGE_NAME:()=>YE,CURRENT_VERSION:()=>e1,BREAKING_VERSIONS:()=>kZ});function EQ(){let Z=pD.repository?.url;if(!Z)return null;let X=Z.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!X||!X[1]||!X[2])return null;return`${X[1]}/${X[2]}`}function GE(){return`npm install -g ${YE}@latest`}function UK(Z,X,J=kZ){let[z,Q]=t2(Z,X)<=0?[Z,X]:[X,Z];return J.filter((Y)=>t2(Y,z)>0&&t2(Y,Q)<=0)}async function Bq0(Z){let X=new AbortController,J=setTimeout(()=>X.abort(),iD);try{let z=Z.replace("/","%2F"),Q=await fetch(`https://registry.npmjs.org/${z}/latest`,{signal:X.signal,headers:{accept:"application/json"}});if(!Q.ok)return null;let Y=await Q.json();if(typeof Y.version!=="string")return null;return Y.version}catch{return null}finally{clearTimeout(J)}}function QE(Z,X){return t2(Z,X)>0}function t2(Z,X){let J=(Y)=>Y.split("-")[0]??Y,z=J(Z).split(".").map((Y)=>Number.parseInt(Y,10)),Q=J(X).split(".").map((Y)=>Number.parseInt(Y,10));for(let Y=0;Y<3;Y++){let G=z[Y]??0,$=Q[Y]??0;if(Number.isNaN(G)||Number.isNaN($))return 0;if(G>$)return 1;if(G<$)return-1}return 0}async function RQ(Z={}){let X=process.env.KOBE_FAKE_UPDATE;if(X)return{current:e1,latest:X,hasUpdate:QE(X,e1)};if(TG()&&!Z.force)return null;let J=await Bq0(YE);if(!J)return null;return{current:e1,latest:J,hasUpdate:QE(J,e1)}}function Ph(Z){if(typeof Z!=="string")return null;return Z.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function $E(Z){let X=EQ();if(!X)return null;let J=`v${Z}`,z=new AbortController,Q=setTimeout(()=>z.abort(),iD);try{let Y=await fetch(`https://api.github.com/repos/${X}/releases/tags/${J}`,{signal:z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Y.ok)return null;let G=await Y.json();if(typeof G.body!=="string"||typeof G.html_url!=="string")return null;return{body:G.body,url:G.html_url,version:Z}}catch{return null}finally{clearTimeout(Q)}}async function qE(Z){let X=EQ();if(!X)return[];let J=Z.limit??100,z=new AbortController,Q=setTimeout(()=>z.abort(),iD);try{let Y=await fetch(`https://api.github.com/repos/${X}/releases?per_page=${J}`,{signal:z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Y.ok)return[];let G=await Y.json();if(!Array.isArray(G))return[];return G.map(($)=>{let H=Ph($.tag_name);if(!H||typeof $.html_url!=="string"||typeof $.body!=="string")return null;if(t2(H,Z.current)<=0)return null;if(t2(H,Z.latest)>0)return null;return{version:H,url:$.html_url,body:$.body}}).filter(($)=>$!==null)}catch{return[]}finally{clearTimeout(Q)}}async function HK(Z=12){let X=EQ();if(!X)return[];let J=new AbortController,z=setTimeout(()=>J.abort(),iD);try{let Q=await fetch(`https://api.github.com/repos/${X}/releases?per_page=${Z}`,{signal:J.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Q.ok)return[];let Y=await Q.json();if(!Array.isArray(Y))return[];return Y.map((G)=>{let $=Ph(G.tag_name);if(!$||typeof G.html_url!=="string")return null;return{version:$,url:G.html_url}}).filter((G)=>G!==null)}catch{return[]}finally{clearTimeout(z)}}function UE(Z){let X=EQ();if(!X)return null;return`https://github.com/${X}/releases/tag/v${Z}`}var e1,YE,dD="https://raw.githubusercontent.com/Sma1lboy/rove/main/scripts/update.sh",y9,kZ,iD=3000;var R2=h(()=>{Sh();E5();e1=pD.version,YE=pD.name;y9=`curl -fsSL ${dD} | sh`;kZ=[]});var Mq0,CJ;var HE=h(()=>{/*!
82
+ `)){let z=J.replace(/\r$/,"");if(z.length===0)continue;let Q=z.indexOf("\t");if(Q<0)continue;let Y=z.indexOf("\t",Q+1);if(Y<0)continue;let G=z.slice(Y+1);if(G.length===0)continue;let $=Yq0(G);if($.path.length===0)continue;X.push({path:$.path,...$.origPath!==void 0?{origPath:$.origPath}:{},added:Oh(z.slice(0,Q)),deleted:Oh(z.slice(Q+1,Y))})}return X}var zq0,Qq0;var uD=h(()=>{zq0=new TextEncoder,Qq0=new TextDecoder});var Lh={};t1(Lh,{sameWorktreeChanges:()=>GK,readWorktreeChanges:()=>$q0,pickPushedChanges:()=>JE,parsePorcelain:()=>V$});import{spawnSync as Gq0}from"child_process";function GK(Z,X){return Z.added===X.added&&Z.deleted===X.deleted}function JE(Z,X){if(!Z)return null;return Z.get(X)??cD}function $q0(Z){if(!Z)return cD;try{let X=Gq0("git",["status","--porcelain=v1"],{cwd:Z,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:n8()});if(X.status!==0||!X.stdout)return cD;return V$(X.stdout)}catch{return cD}}function V$(Z){let X=0,J=0;for(let{x:z,y:Q}of hD(Z))if(z==="D"||Q==="D")J+=1;else X+=1;return{added:X,deleted:J}}var cD;var B$=h(()=>{mZ();uD();cD={added:0,deleted:0}});var Rh={};t1(Rh,{resolveBaseRef:()=>Ch,readBranchSignals:()=>Uq0,parseShortstat:()=>Eh});import{spawnSync as qq0}from"child_process";function lD(Z,X){try{let J=qq0("git",[...X],{cwd:Z,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:n8()});return J.status===0?J.stdout.trim():null}catch{return null}}function Ch(Z){let X=lD(Z,["symbolic-ref","--short","refs/remotes/origin/HEAD"]);if(X)return X;for(let J of["origin/main","origin/master","main","master"])if(lD(Z,["rev-parse","--verify","--quiet",J])!==null)return J;return null}function Eh(Z){let X=(J)=>{let z=Z.match(J);return z?Number.parseInt(z[1]??"0",10):0};return{files:X(/(\d+) files? changed/),insertions:X(/(\d+) insertions?\(\+\)/),deletions:X(/(\d+) deletions?\(-\)/)}}function Uq0(Z){if(!Z)return Ah;let X=Ch(Z);if(!X)return Ah;let J=lD(Z,["rev-list","--count",`${X}..HEAD`]),z=J===null?null:Number.parseInt(J,10),Q=lD(Z,["diff","--shortstat",`${X}...HEAD`]),Y=Q===null?null:Eh(Q);return{baseRef:X,ahead:z!==null&&Number.isNaN(z)?null:z,diff:Y}}var Ah;var Th=h(()=>{mZ();Ah={baseRef:null,ahead:null,diff:null}});async function Hq0(Z,X,J){let z;try{z=await EC()}catch(Q){throw new t0(`failed to start PTY host for ${Z.id}: ${Q instanceof Error?Q.message:String(Q)}`,"SESSION_FAILED")}try{if(Z.tab&&Z.tab!=="new"){let W=G8({command:Z.command,vendor:Z.vendor,effort:Z.modelEffort})[0];return await SC(z.rpc,Z.id,Z.tab,X,J,{engineBin:W})}let Q=Z.tab==="new"?Kh(Z.id,Z.tabVendor,Z.tabCommand):void 0,Y=Z.tabVendor??Z.vendor,G=Z.tabCommand??(Z.tabVendor?void 0:Z.command),{argv:$,sessionId:H}=_J(G8({command:G,vendor:Y,effort:Z.modelEffort}),Y);Q$(Y,X);let K=z$({task:{id:Z.id,kind:Z.kind,vendor:Y,repo:Z.repo},worktreePath:X,shell:process.env.SHELL?.trim()||"/bin/zsh",argv:$,promptIntent:Z.newTask?{kind:"new-task",prompt:J,spawnerTaskId:(await Z$())?.taskId}:{kind:"explicit",prompt:J},tabId:Q}),M=await TC(z.rpc,{id:Z.id,engineBin:$[0]},X,J,K,{forceNew:Q!==void 0});if(M.started&&!M.engineReady)throw new t0(`failed to start hosted engine session for ${Z.id}`,"SESSION_FAILED");if(M.started&&H)if(Q)Hh(Z.id,Q,H);else oC(Z.id,H);else if(!Q)oC(Z.id);return M}catch(Q){if(Q instanceof t0)throw Q;throw new t0(`hosted engine session failed for ${Z.id}: ${Q instanceof Error?Q.message:String(Q)}`,"SESSION_FAILED")}finally{z.close()}}async function zE(Z,X,J,z=Kq0){let Q=X.worktreePath;if(!Q)Q=(await Z.request("task.ensureWorktree",{taskId:X.id})).worktreePath;if(!Q)throw new t0(`task ${X.id} has no worktree`,"NO_WORKTREE");let Y=await z.deliverHosted(X,Q,J);if(!Y)throw new t0(`failed to start hosted engine session for ${X.id}`,"SESSION_FAILED");return Y}var Kq0,$K;var qK=h(()=>{w3();$7();AD();CD();RD();oH();HD();sC();c8();Kq0={deliverHosted:Hq0};$K={isTaskRunning:async(Z)=>(await $K.taskTabs(Z)).running,taskTabs:async(Z)=>{let X=[],J=await tG();if(J)try{X=await eG(J.rpc)}finally{J.close()}let z;try{let{foregroundEngineIn:G,parsePsSnapshot:$,psSnapshot:H}=await Promise.resolve().then(() => (A9(),sN)),K=X.filter((M)=>M.alive&&typeof M.pid==="number"&&M.pid>0);if(K.length>0){let M=$(await H());z=new Map(K.map((W)=>[W.key,G(M,W.pid)?.vendor??null]))}}catch{}let Q={};try{Q=(await Promise.resolve().then(() => (YK(),tC))).readPtyExitRecords()}catch{}let Y=Gh(Z);return{tabs:qh(Y,Z,X,Q,z),running:Uh(Y,Z,X)}},deliverPrompt:(Z,X,J)=>zE(Z,X,J),resolveRepoRoot:async(Z)=>(await Promise.resolve().then(() => (a4(),yG))).resolveMainRepoRoot(Z),defaultVendor:async(Z)=>{let{getGlobalDefaultVendor:X,getRepoLastActiveVendor:J}=await Promise.resolve().then(() => (I9(),Nh));return(Z?J(Z):void 0)??X()},readWorktreeChanges:async(Z)=>(await Promise.resolve().then(() => (B$(),Lh))).readWorktreeChanges(Z),readBranchSignals:async(Z)=>(await Promise.resolve().then(() => (Th(),Rh))).readBranchSignals(Z),tearDownSession:async(Z)=>{let X=await tG();if(X)try{await PC(X.rpc,CC(await eG(X.rpc),Z))}catch{}finally{X.close()}}}});var pD;var Sh=h(()=>{pD={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/rove",version:"0.8.199",description:"Rove \u2014 the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.",keywords:["terminal","tui","cli","multiplexer","ai-agents","coding-agent","ai-coding-assistant","agentic-ai","parallel-agents","git-worktree","claude-code","codex","llm","developer-tools"],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://rove.run",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","plugin-sandbox":"bun run scripts/plugin-sandbox.ts"},"//":"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.16","@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 Ih={};t1(Ih,{repoSlug:()=>EQ,releasePageUrl:()=>UE,recommendedGlobalInstallCommand:()=>GE,isNewerSemver:()=>QE,fetchReleaseSummaries:()=>HK,fetchReleaseNotesRange:()=>qE,fetchReleaseNotes:()=>$E,compareSemver:()=>t2,checkLatestVersion:()=>RQ,breakingVersionsCrossed:()=>UK,UPDATE_SCRIPT_URL:()=>dD,UPDATE_COMMAND:()=>y9,PACKAGE_NAME:()=>YE,CURRENT_VERSION:()=>e1,BREAKING_VERSIONS:()=>kZ});function EQ(){let Z=pD.repository?.url;if(!Z)return null;let X=Z.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!X||!X[1]||!X[2])return null;return`${X[1]}/${X[2]}`}function GE(){return`npm install -g ${YE}@latest`}function UK(Z,X,J=kZ){let[z,Q]=t2(Z,X)<=0?[Z,X]:[X,Z];return J.filter((Y)=>t2(Y,z)>0&&t2(Y,Q)<=0)}async function Bq0(Z){let X=new AbortController,J=setTimeout(()=>X.abort(),iD);try{let z=Z.replace("/","%2F"),Q=await fetch(`https://registry.npmjs.org/${z}/latest`,{signal:X.signal,headers:{accept:"application/json"}});if(!Q.ok)return null;let Y=await Q.json();if(typeof Y.version!=="string")return null;return Y.version}catch{return null}finally{clearTimeout(J)}}function QE(Z,X){return t2(Z,X)>0}function t2(Z,X){let J=(Y)=>Y.split("-")[0]??Y,z=J(Z).split(".").map((Y)=>Number.parseInt(Y,10)),Q=J(X).split(".").map((Y)=>Number.parseInt(Y,10));for(let Y=0;Y<3;Y++){let G=z[Y]??0,$=Q[Y]??0;if(Number.isNaN(G)||Number.isNaN($))return 0;if(G>$)return 1;if(G<$)return-1}return 0}async function RQ(Z={}){let X=process.env.KOBE_FAKE_UPDATE;if(X)return{current:e1,latest:X,hasUpdate:QE(X,e1)};if(TG()&&!Z.force)return null;let J=await Bq0(YE);if(!J)return null;return{current:e1,latest:J,hasUpdate:QE(J,e1)}}function Ph(Z){if(typeof Z!=="string")return null;return Z.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function $E(Z){let X=EQ();if(!X)return null;let J=`v${Z}`,z=new AbortController,Q=setTimeout(()=>z.abort(),iD);try{let Y=await fetch(`https://api.github.com/repos/${X}/releases/tags/${J}`,{signal:z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Y.ok)return null;let G=await Y.json();if(typeof G.body!=="string"||typeof G.html_url!=="string")return null;return{body:G.body,url:G.html_url,version:Z}}catch{return null}finally{clearTimeout(Q)}}async function qE(Z){let X=EQ();if(!X)return[];let J=Z.limit??100,z=new AbortController,Q=setTimeout(()=>z.abort(),iD);try{let Y=await fetch(`https://api.github.com/repos/${X}/releases?per_page=${J}`,{signal:z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Y.ok)return[];let G=await Y.json();if(!Array.isArray(G))return[];return G.map(($)=>{let H=Ph($.tag_name);if(!H||typeof $.html_url!=="string"||typeof $.body!=="string")return null;if(t2(H,Z.current)<=0)return null;if(t2(H,Z.latest)>0)return null;return{version:H,url:$.html_url,body:$.body}}).filter(($)=>$!==null)}catch{return[]}finally{clearTimeout(Q)}}async function HK(Z=12){let X=EQ();if(!X)return[];let J=new AbortController,z=setTimeout(()=>J.abort(),iD);try{let Q=await fetch(`https://api.github.com/repos/${X}/releases?per_page=${Z}`,{signal:J.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Q.ok)return[];let Y=await Q.json();if(!Array.isArray(Y))return[];return Y.map((G)=>{let $=Ph(G.tag_name);if(!$||typeof G.html_url!=="string")return null;return{version:$,url:G.html_url}}).filter((G)=>G!==null)}catch{return[]}finally{clearTimeout(z)}}function UE(Z){let X=EQ();if(!X)return null;return`https://github.com/${X}/releases/tag/v${Z}`}var e1,YE,dD="https://raw.githubusercontent.com/Sma1lboy/rove/main/scripts/update.sh",y9,kZ,iD=3000;var R2=h(()=>{Sh();E5();e1=pD.version,YE=pD.name;y9=`curl -fsSL ${dD} | sh`;kZ=[]});var Mq0,CJ;var HE=h(()=>{/*!
83
83
  * Copyright (c) Squirrel Chat et al., All rights reserved.
84
84
  * SPDX-License-Identifier: BSD-3-Clause
85
85
  *
@@ -699,7 +699,7 @@ ${i.join(`
699
699
  `).filter((H)=>H.length>0);WA0(Y,$)}catch{}let G=[];for(let $ of Y){if($.status!=="?")continue;if($.children)G.push(...$.children);else if($.added==null&&!$.path.endsWith("/"))G.push($)}if(G.length>0)await Promise.all(G.map(async($)=>{let H=await jA0(Z,$.path,X);if(H!=null)$.added=H,$.deleted=0}));for(let $ of Y){if(!$.children)continue;let H=0,K=!1;for(let M of $.children)if(M.added!=null)H+=M.added,K=!0;if(K)$.added=H,$.deleted=0}return Y}function H10(Z){return Z.status==="?"&&Z.path.endsWith("/")}function WA0(Z,X){for(let J of Z){if(!H10(J))continue;J.children=X.filter((z)=>z.startsWith(J.path)).map((z)=>({path:z,status:"?"}))}}async function K10(Z,X,J){if(X&&X.trim().length>0)return X.trim();try{let z=(await HX(["symbolic-ref","--short","refs/remotes/origin/HEAD"],Z,J)).trim();if(z.length>0)return z}catch{}for(let z of["origin/main","origin/master"])try{return await HX(["rev-parse","--verify","--quiet",z],Z,J),z}catch{}return null}async function V10(Z,X,J){let z=`${X}...HEAD`,[Q,Y]=await Promise.all([HX(["diff","--no-color","--name-status",z],Z,J),HX(["diff","--no-color","--numstat",z],Z,J)]),G=new Map(fI(Y).map((H)=>[H.path,{added:H.added,deleted:H.deleted}])),$=[];for(let{status:H,path:K}of OA0(Q)){let M=G.get(K);$.push({path:K,status:H,added:M?.added,deleted:M?.deleted})}return $}function OA0(Z){let X=[];for(let J of Z.split(`
700
700
  `)){let z=J.replace(/\r$/,"");if(z.length===0)continue;let Q=z.indexOf("\t");if(Q<0)continue;let Y=z[0],G;if(Y==="R"||Y==="C"){let H=z.indexOf("\t",Q+1);G=x9(H<0?z.slice(Q+1):z.slice(H+1))}else G=x9(z.slice(Q+1));if(G.length===0||G.endsWith("/"))continue;let $=Y==="M"||Y==="A"||Y==="D"||Y==="T"?Y:Y==="R"?"R":Y==="C"?"C":null;if($)X.push({status:$,path:G})}return X}async function jA0(Z,X,J){if(J?.aborted)return null;let z=await xO(Z,X);if(z==null)return null;if(z.includes("\x00"))return null;if(z.length===0)return 0;let Q=0;for(let Y=0;Y<z.length;Y++)if(z[Y]===`
701
701
  `)Q++;if(!z.endsWith(`
702
- `))Q++;return Q}function fI(Z){return _h(Z).map((X)=>({path:X.path,added:X.added,deleted:X.deleted}))}function FA0(Z){let X=[];for(let J of hD(Z)){let z;if(J.x==="?"&&J.y==="?")z="?";else{let Y=J.y!==" "?J.y:J.x;if(Y==="M"||Y==="A"||Y==="D"||Y==="R"||Y==="C"||Y==="U"||Y==="T")z=Y;else continue}let Q=J.path;if(Q.length===0)continue;if(Q.endsWith("/")&&z!=="?")continue;X.push({path:Q,status:z})}return X}var B10=h(()=>{uD();tK()});function M10(Z){switch(Z){case"all":return"files.tabs.all";case"changes":return"files.tabs.changes"}}function N10(Z){return O5({"files.nav":(X,J)=>{if((J??0)%2===0)Z.moveDown();else Z.moveUp()},"files.hierarchy":(X,J)=>{if((J??0)%2===0)Z.collapseOrParent();else Z.expandOrDescend()},"files.tab":(X,J)=>{let z=Z.currentTab(),Q=qq.indexOf(z);if(Q<0)return;let Y=(J??0)%2===0?-1:1,G=qq[(Q+Y+qq.length)%qq.length];if(G)Z.setTab(G)},"files.open":()=>Z.openCurrent(),"files.mention":()=>Z.mentionCurrent?.(),"files.openExternal":()=>Z.openExternal(),"files.refresh":()=>Z.refresh(),"files.scope":()=>Z.toggleScope?.(),"files.diff":()=>Z.openDiff?.()})}var qq;var bI=h(()=>{iZ();qq=["all","changes"]});import{spawn as _A0}from"child_process";import{existsSync as LA0}from"fs";import{platform as AA0}from"os";function fj(Z){if(!Z)return;let X=AA0();if(X==="linux"){if(LA0("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){BV("wslview",[Z],()=>{let J=_A0("wslpath",["-w",Z],{stdio:["ignore","pipe","ignore"]}),z="";J.stdout?.on("data",(Q)=>{z+=Q.toString()}),J.on("close",(Q)=>{if(Q===0)BV("explorer.exe",[z.trim()])})});return}BV("xdg-open",[Z]);return}if(X==="darwin"){BV("open",[Z]);return}if(X==="win32"){BV("cmd.exe",["/c","start","",Z]);return}}function BV(Z,X,J){hJ(Z,X,{onError:J?()=>J():void 0})}var gI=h(()=>{gK()});import{watch as CA0}from"fs";function D10(Z){switch(Z){case"M":return"warning";case"A":return"success";case"D":return"error";case"?":return"textMuted";case"R":case"C":case"U":case"T":return"info"}}function W10(Z,X){let J=Z.toLowerCase();if(J.includes("not a git repository"))return X("files.error.notGitRepo");if(J.includes("does not exist")||J.includes("enoent"))return X("files.error.pathMissing");if(J.includes("permission denied")||J.includes("eacces"))return X("files.error.permissionDenied");if(J.includes("git: not found")||J.includes("command not found"))return X("files.error.gitNotInstalled");let z=Z.indexOf(": ");if(z>=0&&Z.startsWith("git "))return Z.slice(z+2).trim()||X("files.error.gitFailed");return Z.trim()||X("files.error.gitFailed")}function O10(Z){let X=0,J=0;for(let z of Z){if(z.kind!=="status")continue;if(z.added!=null)X=Math.max(X,String(z.added).length+1);if(z.deleted!=null)J=Math.max(J,String(z.deleted).length+1)}return{added:X,deleted:J}}function j10(Z,X){let J=(X.added>0?X.added+1:0)+(X.deleted>0?X.deleted+1:0);return Math.max(8,Z-6-J)}function mI(Z,X,J){let z=J==="-"?"\u2212":J;return Z==null?" ".repeat(X):`${z}${Z}`.padStart(X)}function kI(Z,X){let J=new Set(Z);if(J.has(X))J.delete(X);else J.add(X);return J}function F10(Z,X){let J=Z[X];if(!J||J.kind!=="dir")return null;if(!J.expanded&&J.hasChildren)return{type:"expand",path:J.path};if(J.expanded&&X+1<Z.length)return{type:"cursor",index:X+1};return null}function _10(Z,X){let J=Z[X];if(!J)return null;if(J.kind==="dir"&&J.expanded)return{type:"collapse",path:J.path};if(J.kind!=="dir"&&J.kind!=="file")return null;let z=J.depth-1;if(z<0)return null;for(let Q=X-1;Q>=0;Q--){let Y=Z[Q];if(!Y)continue;if(Y.kind==="dir"&&Y.depth===z)return{type:"cursor",index:Q}}return null}function bj(Z,X,J){if(X<=0)return null;if(J<Z)return J;if(J>=Z+X)return J-X+1;return null}function EA0(Z){if(Z===".git"||Z.startsWith(".git/")||Z.startsWith(".git\\"))return!1;if(Z.startsWith("node_modules/")||Z.startsWith("node_modules\\"))return!1;return!0}function L10(Z,X,J=500){let z=null,Q=null;try{Q=CA0(Z,{recursive:!0},(Y,G)=>{if(G==null)return;if(!EA0(G.toString()))return;if(z!=null)clearTimeout(z);z=setTimeout(()=>{z=null,X()},J)}),Q.on("error",()=>{})}catch{}return()=>{if(z!=null)clearTimeout(z);if(Q!=null)Q.close()}}var gj=()=>{};function hI(Z,X,J,z,Q={}){if(Z.length===0)return X;let Y=new Map;for(let H of Z)Y.set(J(H),H);let G=Z.length===X.length,$=Array(X.length);for(let H=0;H<X.length;H++){let K=X[H],M=Y.get(J(K));if(M&&z(M,K)&&(!Q.samePosition||Z[H]===M)){if($[H]=M,G&&Z[H]!==M)G=!1}else $[H]=K,G=!1}return G?Z:$}function uI(Z,X,J,z){for(let Q of Z.children)if(Q.isDir){let Y=X.has(Q.path);if(z.push({kind:"dir",path:Q.path,name:Q.name,depth:J,expanded:Y,hasChildren:Q.children.length>0}),Y)uI(Q,X,J+1,z)}else z.push({kind:"file",path:Q.path,name:Q.name,depth:J})}function A10(Z,X){return $j(Z,X)}function C10(Z,X=RA0){let J=[];for(let z of Z){if(z.children==null){J.push({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted});continue}let Q=X.has(z.path);if(J.push({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted,fileCount:z.children.length,expanded:Q}),Q)for(let Y of z.children)J.push({kind:"status",path:Y.path,status:Y.status,added:Y.added,deleted:Y.deleted,child:!0})}return J}function TA0(Z){return`${Z.kind}\x00${Z.path}`}function SA0(Z,X){if(Z.kind!==X.kind||Z.path!==X.path)return!1;switch(Z.kind){case"file":{let J=X;return Z.name===J.name&&Z.depth===J.depth}case"dir":{let J=X;return Z.name===J.name&&Z.depth===J.depth&&Z.expanded===J.expanded&&Z.hasChildren===J.hasChildren}case"status":{let J=X;return Z.status===J.status&&Z.added===J.added&&Z.deleted===J.deleted&&Z.fileCount===J.fileCount&&Z.expanded===J.expanded&&Z.child===J.child}}}function E10(Z,X){return hI(Z,X,TA0,SA0)}function R10(Z,X){if(Z===X)return!0;if(Z==null||X==null)return!1;if(Z.length!==X.length)return!1;for(let J=0;J<Z.length;J++)if(Z[J]!==X[J])return!1;return!0}function T10(Z,X){if(Z===X)return!0;if(Z==null||X==null)return!1;if(Z.length!==X.length)return!1;for(let J=0;J<Z.length;J++){let z=Z[J],Q=X[J];if(z.path!==Q.path||z.status!==Q.status||z.added!==Q.added||z.deleted!==Q.deleted)return!1;let Y=z.children,G=Q.children;if(Y==null!==(G==null))return!1;if(Y&&G){if(Y.length!==G.length)return!1;for(let $=0;$<Y.length;$++){let H=Y[$],K=G[$];if(H.path!==K.path||H.status!==K.status||H.added!==K.added||H.deleted!==K.deleted)return!1}}}return!0}var RA0;var cI=h(()=>{RA0=new Set});function S10(Z){let X={name:"",path:"",isDir:!0,children:[]};for(let J of Z){if(!J)continue;let z=J.split("/").filter((Y)=>Y.length>0);if(z.length===0)continue;let Q=X;for(let Y=0;Y<z.length;Y++){let G=z[Y],H=Y!==z.length-1,K=Q.children.find((M)=>M.name===G&&M.isDir===H);if(!K)K={name:G,path:z.slice(0,Y+1).join("/"),isDir:H,children:[]},Q.children.push(K);Q=K}}return P10(X),X}function P10(Z){Z.children.sort((X,J)=>{if(X.isDir!==J.isDir)return X.isDir?-1:1;return X.name.localeCompare(J.name)});for(let X of Z.children)P10(X)}function mj(Z,X){if(Z.includes("/"))return Z.split("/").map((Q)=>mj(Q,X)).join("/");let J=Z.toLowerCase();if(J==="tab")return"tab";let z=IA0[J];if(z)return z;if(/^f\d{1,2}$/.test(J))return J.toUpperCase();if(!X)return Z;if(/^[a-z]$/.test(J))return Z.toUpperCase();return Z.replace(/[a-z]+/gi,(Q)=>Q.toUpperCase())}function H7(Z,X="\u2303A"){let J=Z.trim();if(!J)return J;let z=/^prefix\s+(.+)$/i.exec(J);if(z){let $=z[1]??"";return`${X} ${$.includes("+")?H7($,X):mj($,!0)}`}let Q=J.split("+");if(Q.length===1)return mj(Q[0]??"",!1);let Y=Q[Q.length-1]??"";return`${Q.slice(0,-1).map(($)=>PA0[$.toLowerCase().trim()]??$).join("")} ${mj(Y,!0)}`}var PA0,IA0;var Uq=h(()=>{PA0={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},IA0={enter:"\u23CE",return:"\u23CE",esc:"\u238B",escape:"\u238B",space:"\u2423",up:"\u2191",down:"\u2193",left:"\u2190",right:"\u2192",backspace:"\u232B",delete:"\u2326",del:"\u2326",pgup:"\u21DE",pageup:"\u21DE",pgdn:"\u21DF",pagedown:"\u21DF",home:"\u2196",end:"\u2198"}});function xA0(Z){return Z.hint?.keys??Z.keys[0]}function x2(Z){let X=vJ(Z);if(!X)return null;let J=xA0(X);return J&&J.length>0?J:null}function yA0(Z){if(Z.keys.length>0)return Z.hint?.keys??Z.keys[0]??null;return Z.prefixKeys?.length?null:Z.hint?.keys??null}function wA0(Z,X){if(Z.scope==="global")return!0;if(X===null)return!1;if(Z.scope===X)return!0;return X==="terminal"&&Z.scope==="workspace"}function I10(Z,X,J,z){let Q=[],Y=[],G=[],$=new Map;for(let K of Z){let M=yA0(K),W=wA0(K,X),D=z?z.direct.has(K.id):W,j=z?z.prefix.has(K.id):W;if(M){let C={binding:K,primary:M,aliases:K.keys.filter((A)=>A!==M)},_=K.keys.length===0&&!K.prefixKeys?.length&&W;if(D&&(W||K.presentation==="onePress")||_)if(K.presentation==="onePress")Y.push(C);else Q.push(C);else if(!W&&K.scope!=="global"){let A=$.get(K.scope);if(A)A.push(C);else $.set(K.scope,[C])}}if(J&&j&&K.prefixKeys?.length)G.push({binding:K,primary:`${J} + ${K.prefixKeys[0]}`,aliases:K.prefixKeys.slice(1).map((C)=>`${J} + ${C}`)})}let H=[];if(Q.length)H.push({kind:"here",scope:X??void 0,rows:Q});if(Y.length)H.push({kind:"direct",rows:Y});if(G.length)H.push({kind:"prefix",rows:G});for(let[K,M]of $)H.push({kind:"other",scope:K,rows:M});return H}var MV=h(()=>{iZ()});function Kq(Z){return Z!==!1}function kj(Z){return Kq(Z.get(Hq,!0))}function hj(Z){let X=!kj(Z);if(Z.set(Hq,X),X)for(let J of Object.values(NV))Z.set(J,!1)}function x10(Z,X){return Kq(Z)&&X!==!0}function y10(Z,X){let J=[];if(X!==null&&Z.prefix.size>0)J.push({chord:X,msg:"commands"});else if(Z.inputPassthrough){let z=Z.direct.has("focus.sidebar")?x2("focus.sidebar"):null;if(z)J.push({chord:z,msg:"sidebar"})}if(Z.direct.has("help.open")){let z=x2("help.open");if(z)J.push({chord:z,msg:"help"})}return J}function w10(Z,X){return vA0[Z].flatMap((J)=>{if(X==="always"&&J.always!==!0)return[];let z=x2(J.id);return z?[{cap:z,msg:J.msg}]:[]})}function v10(Z){let X=[],J=x2("sidebar.nav"),z=x2("sidebar.select");if(J&&z)X.push({msg:"keysBare",params:{nav:H7(J),open:H7(z)}});let Q=x2("chat.tab.new"),Y=x2("focus.next");if(Q&&Y)X.push({msg:"keysOnePress",params:{newTab:H7(Q),focusNext:H7(Y)}});if(Z!==null)X.push({msg:"keysPrefix",params:{prefix:H7(Z)}});let G=x2("help.open");if(G)X.push({msg:"keysHelp",params:{help:H7(G)}});return X}var Hq="hints.keyboard.enabled",NV,vA0;var DV=h(()=>{Uq();MV();NV={sidebar:"hints.sidebar.used",files:"hints.files.used"};vA0={sidebar:[{id:"sidebar.nav",msg:"move"},{id:"sidebar.select",msg:"open"}],files:[{id:"files.nav",msg:"move"},{id:"files.hierarchy",msg:"fold"},{id:"files.open",msg:"open",always:!0},{id:"files.diff",msg:"diff",always:!0}]}});function rQ(){return f10.useSyncExternalStore(QT,zT,zT)}var f10;var g6=h(()=>{iZ();iZ();f10=p0(o0(),1)});import{TextAttributes as b10}from"@opentui/core";function lI(Z){if(!Z)return"Global";if(Z==="sidebar")return"Sidebar";if(Z==="workspace")return"Workspace";if(Z==="files")return"Files";if(Z==="terminal")return"Terminal";return"Dialog"}function g10(Z){return Z.split(" + ").map((X)=>H7(X)).join(" + ")}function fA0(Z,X){if(Z.kind==="here")return X("help.here",{surface:bZ("category",lI(Z.scope))});if(Z.kind==="direct")return X("help.direct");if(Z.kind==="prefix")return X("help.afterPrefix");return X("help.otherPane",{surface:bZ("category",lI(Z.scope))})}function Vq(Z){let X=B4(),{theme:J}=x0(),z=h0(),Q=F7(),Y=rQ(),G=T2(),$=uj.useMemo(()=>I10(o8,Z.currentScope??null,G.key,Z.reachability),[Y,Z.currentScope,Z.reachability,G.key]),H=()=>Z.onClose?Z.onClose():X.clear(),K=uj.useRef(null),M=(D)=>{let j=K.current;if(!j)return;j.scrollTo({x:0,y:Math.max(0,j.scrollTop+D)})},W=(D)=>{let j=K.current;if(!j)return;j.scrollTo({x:0,y:D==="top"?0:Number.MAX_SAFE_INTEGER})};return N1(()=>({bindings:[{key:"?",cmd:H},{key:"up",cmd:()=>M(-1)},{key:"down",cmd:()=>M(1)},{key:"pageup",cmd:()=>M(-(K.current?.viewport.height??10))},{key:"pagedown",cmd:()=>M(K.current?.viewport.height??10)},{key:"home",cmd:()=>W("top")},{key:"end",cmd:()=>W("bottom")}]})),q0("box",{paddingLeft:Q,paddingRight:Q,gap:1,flexShrink:1,children:[q0("box",{flexDirection:"row",justifyContent:"space-between",flexShrink:0,children:[q0("box",{flexDirection:"column",gap:0,children:[y("text",{attributes:b10.BOLD,fg:J.text,children:z("help.title")}),y("text",{fg:J.textMuted,children:Z.currentScope?z("help.focused",{surface:bZ("category",lI(Z.currentScope))}):z("help.allBindings")}),y("text",{fg:J.textMuted,children:z("help.grammar",{prefix:G.key?H7(G.key):z("help.disabled")})})]}),y("text",{fg:J.textMuted,onMouseUp:H,children:z("help.esc")})]}),y("scrollbox",{ref:(D)=>{K.current=D},flexShrink:1,flexGrow:1,stickyScroll:!1,verticalScrollbarOptions:{trackOptions:{backgroundColor:J.backgroundDialog,foregroundColor:J.borderActive}},children:y("box",{paddingBottom:1,gap:1,paddingRight:1,children:$.map((D,j)=>q0("box",{gap:0,children:[y("text",{fg:J.accent,attributes:b10.BOLD,children:fA0(D,z)}),D.rows.map((C)=>{return q0("box",{flexDirection:"row",gap:2,paddingLeft:1,children:[y("box",{width:18,children:y("text",{fg:J.primary,children:g10(C.primary)})}),y("box",{flexGrow:1,children:y("text",{fg:J.text,children:bZ("desc",C.binding.id)})}),C.aliases.length>0?y("box",{children:y("text",{fg:J.textMuted,children:`(${C.aliases.map(g10).join(", ")})`})}):null]},`${D.kind}-${C.binding.id}`)})]},`${D.kind}-${D.scope??j}`))})})]})}var uj;var pI=h(async()=>{Uq();MV();k3();g6();x1();w0();await w1([P1(),p4(),R5()]);uj=p0(o0(),1);Vq.show=(Z,X)=>{let J=oW(),z=J.inputPassthrough?"terminal":X;Z.replace(()=>y(Vq,{currentScope:z,reachability:J}))}});function dI(Z){let X=h0(),J=u3(),z=Td(),Q=Ji();rQ(),rd();let[Y,G]=Bq.useState({tokens:[],modal:!1});Bq.useEffect(()=>{let K=Kq(J?.get(Hq,!0)),M=bQ()||(Q?.stack.length??0)>0,W=K&&!M?y10(oW(),T2().key):null;G((D)=>{let j=W??(K?D.tokens:[]);return D.modal===M&&D.tokens.length===j.length&&D.tokens.every((C,_)=>C.chord===j[_]?.chord&&C.msg===j[_]?.msg)?D:{tokens:j,modal:M}})});let $=Y.modal?{commands:void 0,sidebar:void 0,help:void 0}:{commands:()=>void od(),sidebar:z?()=>z.setFocused("sidebar"):void 0,help:Q?()=>Vq.show(Q,z?.focused??"sidebar"):void 0},H=Y.tokens.map((K)=>({text:Z?.compact?H7(K.chord):X(`hints.status.${K.msg}`,{key:H7(K.chord)}),onPress:$[K.msg]}));if(Z?.onOpenSettings&&!Z.compact&&Kq(J?.get(Hq,!0)))H.push({text:`[${X("hints.status.settings")}]`,onPress:Y.modal?void 0:Z.onOpenSettings});return H}function m10(Z){let{theme:X}=x0(),J=dI({onOpenSettings:Z.onOpenSettings,compact:Z.compact});if(J.length===0)return null;return y("box",{flexDirection:"row",flexShrink:0,children:J.flatMap((z,Q)=>[Q>0?y("text",{fg:X.textMuted,wrapMode:"none",children:" \xB7 "},`sep-${z.text}`):null,y("box",{onMouseUp:z.onPress,children:y("text",{fg:X.textMuted,wrapMode:"none",children:z.text})},z.text)])})}function cj(Z){let X=u3();return Bq.useCallback(()=>{if(!X)return;if(X.get(NV[Z],!1)!==!0)X.set(NV[Z],!0)},[X,Z])}function lj(Z){let X=h0(),{theme:J}=x0(),z=u3();rQ();let Q=z?.get(Hq,!0),Y=z?.get(NV[Z.pane],!1);if(!Kq(Q))return null;let G=w10(Z.pane,x10(Q,Y)?"firstUse":"always");if(G.length===0)return null;return y("text",{fg:J.textMuted,wrapMode:"none",children:G.map(($)=>`${H7($.cap)} ${X(`hints.pane.${$.msg}`)}`).join(" \xB7 ")})}var Bq;var WV=h(async()=>{Uq();DV();k3();g6();s8();x1();w0();await w1([vK(),P1(),p4(),R5(),pI()]);Bq=p0(o0(),1)});import{TextAttributes as iI}from"@opentui/core";function k10(Z){let{theme:X}=x0(),J=h0(),z=T2().key,Q=z?`[${H7(z)} P]`:null;return q0(a5,{children:[Z.onZenToggle||Z.onCreatePR?q0("box",{flexDirection:"row",flexWrap:"wrap",justifyContent:"flex-end",gap:2,paddingBottom:1,flexShrink:0,children:[Z.onZenToggle?q0("box",{flexDirection:"row",gap:1,flexShrink:0,onMouseUp:(Y)=>{Y.stopPropagation(),Z.onZenToggle?.()},children:[y("text",{fg:X.accent,attributes:iI.BOLD,wrapMode:"none",children:"[~]"}),y("text",{fg:X.text,wrapMode:"none",children:J("files.actions.zen")})]}):null,Z.onCreatePR?q0("box",{flexDirection:"row",gap:1,flexShrink:0,onMouseUp:(Y)=>{Y.stopPropagation(),Z.onCreatePR?.()},children:[Q?y("text",{fg:X.accent,attributes:iI.BOLD,wrapMode:"none",children:Q}):null,y("text",{fg:X.text,wrapMode:"none",children:J("files.actions.createPR")})]}):null]}):null,y("box",{flexDirection:"row",paddingBottom:0,flexShrink:0,gap:2,children:qq.map((Y)=>{let G=Z.tab===Y;return y("text",{fg:G?X.primary:X.textMuted,attributes:G?iI.BOLD:void 0,wrapMode:"none",onMouseUp:()=>Z.onSelectTab(Y),children:J(M10(Y))},Y)})}),Z.tab==="changes"?q0("box",{flexDirection:"column",paddingBottom:1,flexShrink:0,gap:0,children:[q0("text",{fg:X.textMuted,wrapMode:"none",children:[Z.scope==="branch"&&Z.base!=null?J("files.scope.branch",{base:Z.base}):J("files.scope.working"),Z.base!=null?` ${J("files.scope.toggleHint")}`:""]}),y("text",{fg:X.textMuted,wrapMode:"none",children:J("files.legend.changes")})]}):y("box",{flexDirection:"row",paddingBottom:1,flexShrink:0})]})}var h10=h(async()=>{Uq();k3();bI();x1();w0();await P1()});function KX(Z,X){let J=Z.background.a===0;if(X.cursor){if(J)return{marker:"\u258C",markerColor:Z.focusAccent??Z.primary,backgroundColor:void 0};return{marker:"\u258C",markerColor:Z.text,backgroundColor:Z.backgroundElement}}if(X.selected)return{marker:"\u258C",markerColor:Z.borderActive,backgroundColor:J?void 0:Z.background};return{marker:" ",markerColor:void 0,backgroundColor:void 0}}import{TextAttributes as bA0}from"@opentui/core";var u10,c10;var l10=h(async()=>{gj();cI();w0();await P1();u10=p0(o0(),1),c10=u10.memo(function(X){let{theme:J}=x0(),z=KX(J,{cursor:X.cursor}),Q=y("text",{fg:z.markerColor,wrapMode:"none",children:z.marker}),Y=z.backgroundColor,G=X.row;if(G.kind==="dir"){let C=" ".repeat(G.depth);return q0("box",{flexDirection:"row",gap:0,backgroundColor:Y,onMouseUp:()=>X.onActivate(X.row,X.index),children:[Q,y("box",{flexGrow:1,paddingRight:1,children:y("text",{fg:J.textMuted,attributes:bA0.BOLD,wrapMode:"none",children:`${C}${G.expanded?"\u25BE":"\u25B8"} ${G.name}/`})})]})}if(G.kind==="file"){let C=" ".repeat(G.depth);return q0("box",{flexDirection:"row",gap:0,backgroundColor:Y,onMouseUp:()=>X.onActivate(X.row,X.index),children:[Q,y("box",{flexGrow:1,paddingRight:1,children:y("text",{fg:J.text,wrapMode:"none",children:`${C} ${G.name}`})})]})}let $=G.fileCount!==void 0,H=$?G.expanded?"\u25BE ":"\u25B8 ":"",K=$?` (${G.fileCount})`:"",M=G.child?" ":"",W=X.pathBudget-H.length-K.length-M.length,D=D10(G.status),j=D==="success"?J.success:D==="warning"?J.warning:D==="error"?J.error:D==="info"?J.info:J.textMuted;return q0("box",{flexDirection:"row",gap:0,backgroundColor:Y,onMouseUp:()=>X.onActivate(X.row,X.index),children:[Q,q0("box",{flexDirection:"row",flexGrow:1,gap:1,paddingRight:1,children:[y("text",{fg:j,wrapMode:"none",children:G.status}),y("text",{fg:$?J.textMuted:J.text,wrapMode:"none",flexGrow:1,children:`${M}${H}${A10(G.path,W)}${K}`}),X.statWidths.added>0?y("text",{fg:J.success,wrapMode:"none",children:mI(G.added,X.statWidths.added,"+")}):null,X.statWidths.deleted>0?y("text",{fg:J.error,wrapMode:"none",children:mI(G.deleted,X.statWidths.deleted,"-")}):null]})]})})});function p10(Z){let{theme:X}=x0(),J=h0(),z=q5(),[Q,Y]=v4.useState("all"),[G,$]=v4.useState("working"),[H,K]=v4.useState(!1),[M,W]=v4.useState(null),[D,j]=v4.useState(0),[C,_]=v4.useState(0),[A,w]=v4.useState(null),[T,R]=v4.useState(null),[E,S]=v4.useState(null),[x,v]=v4.useState(()=>new Set),m=q1(Z.worktreePath),d=q1(Q),k=q1(A),s=q1(T),n=q1(G),Q0=q1(M),K0=q1(H),O0=q1(Z.onOpenFile),B0=v4.useRef(0),H0=v4.useCallback(async(L0,g0,m0)=>{let f0=++B0.current;if(g0==null){w(null),R(null),S(null);return}S(null);try{if(L0==="all"){let r0=await q10(g0,m0);if(m0?.aborted||f0!==B0.current||m.current!==g0)return;w((K1)=>R10(K1,r0)?K1:r0)}else if(L0==="changes"){let r0=n.current==="branch"&&Q0.current!=null,K1=r0?await V10(g0,Q0.current,m0):await U10(g0,m0);if(m0?.aborted||f0!==B0.current||m.current!==g0)return;if(!r0&&K1.length===0&&!K0.current&&Q0.current!=null){$("branch");return}R(($0)=>T10($0,K1)?$0:K1)}}catch(r0){if(m0?.aborted)return;let K1=e0(r0);if(f0===B0.current&&m.current===g0)S(K1)}},[]);v4.useEffect(()=>{w(null),R(null),S(null),j(0),v(new Set),$("working"),K(!1);let L0=new AbortController;return H0(d.current,Z.worktreePath,L0.signal),()=>L0.abort()},[Z.worktreePath,H0]),v4.useEffect(()=>{let L0=Z.worktreePath;if(L0==null){W(null);return}let g0=!1,m0=new AbortController;return K10(L0,Z.prBaseRef,m0.signal).then((f0)=>{if(!g0)W(f0)}).catch(()=>{if(!g0)W(null)}),()=>{g0=!0,m0.abort()}},[Z.worktreePath,Z.prBaseRef]),v4.useEffect(()=>{if(d.current!=="changes")return;let L0=m.current;if(L0==null)return;let g0=new AbortController;return H0("changes",L0,g0.signal),()=>g0.abort()},[G,M,H0]),v4.useEffect(()=>{let L0=Z.worktreePath;if(L0==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;return L10(L0,()=>_((g0)=>g0+1))},[Z.worktreePath]),v4.useEffect(()=>{j(0);let L0=m.current;if(L0==null)return;let g0=new AbortController;if(Q==="all"){if(k.current==null)H0("all",L0,g0.signal)}else if(Q==="changes"){if(s.current==null)H0("changes",L0,g0.signal)}return()=>g0.abort()},[Q,H0]),v4.useEffect(()=>{if(C===0)return;let L0=m.current;if(L0==null)return;let g0=new AbortController;return H0(d.current,L0,g0.signal),()=>g0.abort()},[C,H0]);let u=v4.useMemo(()=>A==null?null:S10(A),[A]),i=v4.useRef([]),t=v4.useMemo(()=>{let L0=[];if(Q==="all"){if(u!=null)uI(u,x,0,L0)}else if(Q==="changes"){if(T!=null)L0.push(...C10(T,x))}let g0=E10(i.current,L0);return i.current=g0,g0},[Q,u,x,T]);v4.useEffect(()=>{if(t.length===0)return;j((L0)=>L0>t.length-1?t.length-1:L0)},[t]);let p=v4.useMemo(()=>O10(t),[t]),U0=Z.paneWidth??z.width,e=v4.useMemo(()=>j10(U0,p),[U0,p]);function o(L0){if(!L0)return;if(L0.type==="cursor")j(L0.index);else if(L0.type==="expand")v((g0)=>new Set(g0).add(L0.path));else v((g0)=>kI(g0,L0.path))}let r=v4.useCallback((L0)=>{if(L0.kind==="dir"||L0.path.endsWith("/"))v((g0)=>kI(g0,L0.path));else O0.current(L0.path)},[]),D0=v4.useCallback((L0,g0)=>{j(g0),r(L0)},[r]),z0=cj("files");N1(()=>({enabled:Z.focused??!0,bindings:N10({moveDown:()=>{if(z0(),t.length===0)return;j((L0)=>Math.min(L0+1,t.length-1))},moveUp:()=>{if(z0(),t.length===0)return;j((L0)=>Math.max(L0-1,0))},setTab:Y,currentTab:()=>Q,openCurrent:()=>{z0();let L0=t[D];if(L0)r(L0)},mentionCurrent:()=>{let L0=t[D];if(!L0||L0.kind==="dir"||L0.path.endsWith("/"))return;Z.onMention?.(L0.path)},openExternal:()=>{let L0=t[D];if(!L0||L0.kind==="dir"||L0.path.endsWith("/"))return;if(!Z.worktreePath)return;fj(`${Z.worktreePath}/${L0.path}`)},refresh:()=>{_((L0)=>L0+1)},toggleScope:()=>{if(Q!=="changes")return;if(M==null)return;K(!0),$((L0)=>L0==="working"?"branch":"working")},openDiff:()=>{let L0=t[D];if(!L0||L0.kind==="dir"||L0.path.endsWith("/"))return;Z.onOpenDiff?.(L0.path,G==="branch"&&M!=null?M:void 0)},expandOrDescend:()=>o(F10(t,D)),collapseOrParent:()=>{if(Q!=="all")return;o(_10(t,D))}})}));let j0=v4.useRef(null);v4.useEffect(()=>{let L0=j0.current;if(!L0||t.length===0)return;let g0=bj(L0.scrollTop,L0.viewport.height,D);if(g0!=null)L0.scrollTo({x:0,y:g0})},[D,t]);let C0=Q==="all"&&A!=null||Q==="changes"&&T!=null;return q0("box",{flexDirection:"column",flexGrow:1,paddingLeft:0,paddingRight:0,children:[y(k10,{tab:Q,scope:G,base:M,onSelectTab:Y,onZenToggle:Z.onZenToggle,onCreatePR:Z.onCreatePR}),y("scrollbox",{ref:(L0)=>{j0.current=L0},flexGrow:1,verticalScrollbarOptions:{trackOptions:{foregroundColor:"transparent"}},children:Z.worktreePath==null?y("box",{paddingTop:1,paddingLeft:1,children:y("text",{fg:X.textMuted,children:J("files.empty.noTask")})}):E!=null?q0("box",{paddingTop:1,paddingLeft:1,flexDirection:"column",gap:0,children:[y("text",{fg:X.error,wrapMode:"word",children:W10(E,J)}),y("text",{fg:X.textMuted,wrapMode:"word",children:J("files.error.retryHint")})]}):t.length===0&&C0?y("box",{paddingTop:1,paddingLeft:1,children:y("text",{fg:X.textMuted,children:Q==="all"?J("files.empty.noFiles"):J("files.empty.noChanges")})}):t.length>0?y("box",{flexShrink:0,gap:0,paddingRight:1,children:t.map((L0,g0)=>y(c10,{row:L0,index:g0,cursor:g0===D,statWidths:p,pathBudget:e,onActivate:D0},`${L0.kind}:${L0.path}`))}):null}),Z.worktreePath!=null?y("box",{flexDirection:"row",justifyContent:"flex-end",paddingTop:1,flexShrink:0,children:y(lj,{pane:"files"})}):null]})}var v4;var d10=h(async()=>{B10();bI();gI();gj();cI();x1();x7();w0();await w1([e4(),WV(),P1(),p4(),h10(),l10()]);v4=p0(o0(),1)});function n10(Z){let{theme:X,transparentBackground:J}=x0(),z=cW(),Q=q5(),Y=J?X.border:X.borderSubtle,G=Math.max(i10,Q.width-JX),$=Math.max(i10,Math.min(gA0,Math.floor(G/3)));return y("box",{width:$,flexShrink:0,borderColor:z.focused==="files"?X.focusAccent:Y,onMouseUp:()=>z.setFocused("files"),children:y(p10,{worktreePath:Z.worktree,paneWidth:$-2,prBaseRef:Z.prBaseRef,focused:Z.focused,onOpenFile:Z.onOpenFile,onOpenDiff:Z.onOpenDiff,onZenToggle:Z.onZenToggle,onCreatePR:Z.onCreatePR})})}var i10=22,gA0=34;var a10=h(async()=>{rJ();w0();await w1([e4(),vK(),P1(),d10()])});function o10(Z,X=8){let J=Math.min(1,Math.max(0,Z))*X,z=Math.floor(J),Q=Math.round((J-z)*8);if(Q===8)z+=1,Q=0;let Y=z<X?mA0[Q]??"":"";return`${"\u2588".repeat(z)}${Y}`.padEnd(X,"\u2591")}var mA0;var nI=h(()=>{mA0=["","\u258F","\u258E","\u258D","\u258C","\u258B","\u258A","\u2589"]});function oI(Z,X){if(Z==null||Z<=X)return"";let J=new Date(Z),z=`${s10(J.getHours())}:${s10(J.getMinutes())}`;if(Z-X<86400000)return`\u2192 ${z}`;return`\u2192 ${J.getMonth()+1}/${J.getDate()} ${z}`}function r10(Z,X){return Z.windows.map((J)=>({label:J.label,percentText:`${J.percent}%`,resetText:oI(J.resetsAt,X),tone:aI(J.percent)}))}function t10(Z,X){let J=Z.windows.find((z)=>z.kind==="session")??Z.windows[0];if(!J)return null;return{label:J.label,percentText:`${J.percent}%`,resetText:oI(J.resetsAt,X),tone:aI(J.percent)}}function e10(Z,X){let J=Math.min(8,Z.windows.reduce((z,Q)=>Math.max(z,Q.label.length),2));return Z.windows.map((z)=>({label:(z.label.length>J?z.label.slice(0,J):z.label).padEnd(J),bar:o10(z.percent/100,kA0),percentText:`${String(z.percent).padStart(3)}%`,resetText:oI(z.resetsAt,X),tone:aI(z.percent)}))}var kA0=10,aI=(Z)=>Z>=95?"crit":Z>=75?"warn":"ok",s10=(Z)=>String(Z).padStart(2,"0");var sI=h(()=>{nI()});function hA0(Z){let{theme:X}=x0(),J=F4(Z.orchestrator.usageSnapshotSignal());if(!J||J.size===0)return null;let z={ok:X.success,warn:X.warning,crit:X.error},Q=Date.now();if(Z.narrow)return y("box",{flexDirection:"row",gap:2,children:[...J.entries()].flatMap(([Y,G])=>{let $=t10(G,Q);if(!$)return[];return[q0("box",{flexDirection:"row",gap:1,children:[y("text",{fg:X.textMuted,wrapMode:"none",children:v5(Y).toUpperCase()}),y("text",{fg:z[$.tone],wrapMode:"none",children:$.percentText})]},Y)]})});return y("box",{flexDirection:"row",gap:2,children:[...J.entries()].map(([Y,G])=>q0("box",{flexDirection:"row",gap:1,children:[y("text",{fg:X.textMuted,wrapMode:"none",children:v5(Y).toUpperCase()}),r10(G,Q).map(($,H)=>q0("box",{flexDirection:"row",gap:1,children:[y("text",{fg:X.textMuted,wrapMode:"none",children:H===0?$.label:`\xB7 ${$.label}`}),y("text",{fg:z[$.tone],wrapMode:"none",children:$.percentText}),$.resetText?y("text",{fg:X.textMuted,wrapMode:"none",children:$.resetText}):null]},$.label))]},Y))})}function Z40(Z){let{theme:X}=x0(),J=q5(),z=X3(J.width),Q=F4(Z.orchestrator.usageSnapshotSignal()),Y=dI({onOpenSettings:Z.onOpenSettings}),G=Q!=null&&Q.size>0||Y.length>0;return q0("box",{flexDirection:"column",flexGrow:1,backgroundColor:X.background,children:[y("box",{flexDirection:"row",flexGrow:1,children:Z.children}),G?q0("box",{flexDirection:"row",flexShrink:0,height:1,paddingLeft:1,paddingRight:1,gap:2,children:[y("box",{flexGrow:1,flexDirection:"row",children:y(hA0,{orchestrator:Z.orchestrator,narrow:z})}),y(m10,{onOpenSettings:z?void 0:Z.onOpenSettings,compact:z})]}):null]})}var X40=h(async()=>{$7();sI();x6();w0();await w1([e4(),WV(),P1()])});import{TextAttributes as uA0}from"@opentui/core";function cA0(Z){if(!Z)return Z;return Z.charAt(0).toUpperCase()+Z.slice(1)}function d4(Z){let X=B4(),{theme:J}=x0(),z=h0(),Q=F7(),[Y,G]=J40.useState(Z.initialActive??"confirm");return N1(()=>({bindings:[{key:"return",cmd:()=>{if(Y==="confirm")Z.onConfirm?.();if(Y==="cancel")Z.onCancel?.();X.clear()}},{key:"left",cmd:()=>G(($)=>$==="confirm"?"cancel":"confirm")},{key:"right",cmd:()=>G(($)=>$==="confirm"?"cancel":"confirm")}]})),q0("box",{paddingLeft:Q,paddingRight:Q,paddingBottom:1,gap:0,children:[q0("box",{flexDirection:"row",justifyContent:"space-between",children:[y("text",{attributes:uA0.BOLD,fg:J.text,children:Z.title}),y("text",{fg:J.textMuted,onMouseUp:()=>X.clear(),children:"esc"})]}),y("text",{fg:J.textMuted,children:Z.message}),y("box",{flexDirection:"row",justifyContent:"flex-end",paddingTop:1,children:["cancel","confirm"].map(($)=>y("box",{paddingLeft:1,paddingRight:1,backgroundColor:$===Y?J.primary:void 0,onMouseUp:()=>{if($==="confirm")Z.onConfirm?.();if($==="cancel")Z.onCancel?.();X.clear()},children:y("text",{fg:$===Y?J.selectedListItemText:J.textMuted,children:cA0($==="cancel"?Z.label??z("common.cancel"):Z.confirmLabel??z("common.confirm"))})},$))})]})}var J40;var p9=h(async()=>{x1();w0();await w1([P1(),p4(),R5()]);J40=p0(o0(),1);d4.show=(Z,X,J,z,Q,Y)=>{return S8(Z,(G)=>y(d4,{title:X,message:J,onConfirm:()=>G(!0),onCancel:()=>G(!1),label:z,confirmLabel:Q,initialActive:Y?.initialActive}),{size:"small"})}});function z40(Z){return!Z.dialogOpen&&!Z.settingsOpen&&!Z.worktreesOpen&&!Z.updateOpen}function Q40(Z){return Z.settingsOpen&&!Z.dialogOpen}function Y40(Z,X,J){let z=lA0.filter((G)=>G!=="files"||J.filesVisible),Q=z.indexOf(Z);if(Q<0)return(X>0?z[z.length-1]:z[0])??null;let Y=Math.min(Math.max(Q+X,0),z.length-1);return Y===Q?null:z[Y]??null}var lA0;var G40=h(()=>{lA0=["sidebar","workspace","files"]});function pA0(Z){let X=Z.kind==="pane"?["plugin","pane","open",Z.target]:["plugin","action","invoke",Z.target],[J,...z]=[...kG(),...X];hJ(J,z,{onError:(Q)=>console.warn(`[rove/plugins] ${Z.target}: ${String(Q)}`)})}function $40(Z){N1(()=>({enabled:Z,bindings:qd().map((X)=>({key:X.chord,cmd:()=>pA0(X)}))}))}var q40=h(async()=>{hG();gK();wK();await p4()});function U40(Z){let{focus:X,dialog:J}=Z,z=h0(),Q=l4();function Y(){try{Q?.destroy()}catch(M){console.error("Rove: renderer.destroy() failed during quit:",M)}process.exit(0)}async function G(){if(await d4.show(J,z("workspace.quit.confirmTitle"),z("workspace.quit.confirmBody"),z("common.cancel"),z("workspace.quit.confirmLabel")))Y()}function $(M){let W=Y40(X.focused,M,{filesVisible:Z.filesPaneVisible!==!1});if(W)X.setFocused(W)}let H={dialogOpen:Z.dialog.stack.length>0,settingsOpen:Z.pages.settingsOpen,worktreesOpen:Z.pages.worktreesOpen,updateOpen:Z.pages.updateOpen,kanbanOpen:Z.pages.kanbanOpen,automationsOpen:Z.pages.automationsOpen,workItemsOpen:Z.pages.workItemsOpen},K=z40(H);N1(()=>({enabled:K,bindings:[...O5({"help.open":()=>Vq.show(J,X.focused),"focus.previous":()=>$(-1),"focus.next":()=>$(1),"workspace.zenToggle":()=>Z.toggleZen(),"attention.next":()=>Z.jumpToNextAttention(),"inbox.show":()=>Z.openInbox(),"kanban.open":()=>Z.pages.openKanban(),"automations.open":()=>Z.pages.openAutomations(),"workItems.open":()=>Z.pages.openWorkItems(),"task.moveMode":()=>Z.enterMoveMode(),"settings.open":()=>Z.pages.openSettings(),"files.createPR":()=>Z.createPR(),"task.openEditor":()=>{if(Z.selectedId)Z.openTaskWorktree(Z.selectedId)}})]})),N1(()=>({enabled:K&&X.focused!=="sidebar",bindings:O5({"focus.sidebar":()=>X.setFocused("sidebar")})})),N1(()=>({enabled:K&&X.focused==="sidebar",bindings:O5({"app.quit":(M,W)=>{if(W===1){Y();return}G()},"settings.open.sidebar":()=>Z.pages.openSettings(),"worktrees.open.sidebar":()=>Z.pages.openWorktrees(),"tasks.update":()=>Z.pages.openUpdate()})})),N1(()=>({enabled:K&&X.focused==="sidebar"&&!Z.searchActive,bindings:O5({"task.new":()=>Z.createTask(),"tasks.openWorktree":()=>{if(Z.selectedId)Z.openTaskWorktree(Z.selectedId)},"tasks.renameBranch":()=>{let M=Z.selectedId;if(M)Z.renameBranch(M)},"tasks.cycleEngine":()=>{let M=Z.selectedId;if(M)Z.cycleVendor(M)},"tasks.focusEngine":()=>X.setFocused("workspace")})})),N1(()=>({enabled:Q40(H),bindings:u7(Z.pages.closeSettings)})),$40(K)}var H40=h(async()=>{g6();x1();G40();await w1([e4(),pI(),p4(),p9(),q40()])});function V40(Z){return Z==="terminal"?"sidebar":"workspace"}var K40;var rI=h(()=>{K40=[{nav:"kanban",labelKey:"tasks.nav.kanban"},{nav:"automations",labelKey:"tasks.nav.automations"}]});function pj(Z){let X=Math.round(Z/60000),J=Math.round(X/60);return{minutes:X,hours:J,days:Math.round(J/24)}}function OV(Z,X=1){let J=dj.indexOf(Z);if(J<0)return"name";let z=(J+X+dj.length)%dj.length;return dj[z]}function M40(Z){return Z.name.trim().length>0&&Z.repo.trim().length>0&&Z.prompt.trim().length>0&&m$(Z.schedule.trim())}function N40(Z){if(Z.name.trim().length===0)return"name";if(Z.repo.trim().length===0)return"repo";if(Z.prompt.trim().length===0)return"prompt";if(!m$(Z.schedule.trim()))return"schedule";return null}function D40(Z,X){let J=Z.trim();if(!m$(J))return{kind:"invalid"};let z;try{z=k$(J,X)}catch{return{kind:"never"}}return{kind:"ok",nextRunMs:z,relative:dA0(z-X),absolute:aA0(z,X)}}function dA0(Z){let{minutes:X,hours:J,days:z}=pj(Z);if(X<60)return`in ${Math.max(1,X)}m`;if(J<24)return`in ${J}h`;return`in ${z}d`}function aA0(Z,X){let J=new Date(Z),z=`${String(J.getHours()).padStart(2,"0")}:${String(J.getMinutes()).padStart(2,"0")}`,Q=new Date(X);if(J.getFullYear()===Q.getFullYear()&&J.getMonth()===Q.getMonth()&&J.getDate()===Q.getDate())return z;let G=iA0[J.getDay()]??"";if(Z-X<518400000)return`${G} ${z}`;return`${G} ${nA0[J.getMonth()]??""} ${J.getDate()}, ${z}`}var dj,B40,iA0,nA0;var W40=h(()=>{hK();dj=["name","repo","prompt","schedule","confirm"];B40={name:"",repo:"",prompt:"",schedule:"0 9 * * MON-FRI"};iA0=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],nA0=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function ij(Z){let X=Z.trim().split(/\s+/).filter(Boolean);return VX.map((J,z)=>X[z]??"*")}function O40(Z){return VX.map((X,J)=>Z[J]??"*").join(" ")}function tI(Z,X){let J=[];for(let z=Z;z<=X;z++)J.push(String(z));return J}function eI(Z,X,J){let z=XC0[Z],Q=z.indexOf(X.trim().toUpperCase());if(Q<0)return(J>0?z[0]:z[z.length-1])??X;let Y=(Q+J+z.length)%z.length;return z[Y]??X}function Zx(Z,X){return Math.min(Math.max(Z+X,0),VX.length-1)}function Xx(Z,X,J){let z=ij(Z);if(X<0||X>=VX.length)return O40(z);return z[X]=J,O40(z)}function Jx(Z){let[X,J,z,Q,Y]=ij(Z);if(Q!=="*"||z!=="*")return null;if(X===void 0||J===void 0||Y===void 0)return null;let G=JC0(X,J);if(!G)return null;if(Y==="*")return`every day ${G}`;if(Y==="MON-FRI")return`weekdays ${G}`;if(Y==="SAT,SUN")return`weekends ${G}`;let $=ZC0[Y.toUpperCase()];if($)return`${$} ${G}`;return null}function JC0(Z,X){if(X==="*"){if(Z==="*")return"every minute";if(Z.startsWith("*/"))return`every ${Z.slice(2)}m`;if(/^\d+$/.test(Z))return`hourly at :${Z.padStart(2,"0")}`;return null}if(X.startsWith("*/")&&Z==="0")return`every ${X.slice(2)}h`;if(/^\d+$/.test(X)&&/^\d+$/.test(Z))return`at ${X.padStart(2,"0")}:${Z.padStart(2,"0")}`;return null}var VX,oA0,sA0,rA0,tA0,eA0,ZC0,XC0;var j40=h(()=>{VX=["minute","hour","dayOfMonth","month","dayOfWeek"];oA0=["*","*/5","*/10","*/15","*/30",...tI(0,59)],sA0=["*","*/2","*/3","*/4","*/6","*/12",...tI(0,23)],rA0=["*",...tI(1,31)],tA0=["*","JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"],eA0=["*","MON-FRI","SAT,SUN","MON","TUE","WED","THU","FRI","SAT","SUN"],ZC0={MON:"Mondays",TUE:"Tuesdays",WED:"Wednesdays",THU:"Thursdays",FRI:"Fridays",SAT:"Saturdays",SUN:"Sundays"};XC0={minute:oA0,hour:sA0,dayOfMonth:rA0,month:tA0,dayOfWeek:eA0}});function zx(Z,X){if(!Z)return!0;let J=Z.toLowerCase(),z=X.toLowerCase(),Q=0;for(let Y=0;Y<z.length&&Q<J.length;Y++)if(z.charCodeAt(Y)===J.charCodeAt(Q))Q++;return Q===J.length}function _40(Z,X){let J=X==="archived";return Z.filter((z)=>z.archived===J)}function L40(Z,X){let J=F40(X)-F40(Z);if(J!==0)return J;return String(X.id).localeCompare(String(Z.id))}function F40(Z){let X=Date.parse(Z.updatedAt||Z.createdAt);return Number.isFinite(X)?X:0}function d3(Z){let X=Z.split("/").filter(Boolean);return X[X.length-1]??Z}function tQ(Z){return Z.trim().replace(/[\\/]+$/,"")||Z}function m6(Z,X){let J=d3(Z);if(!X.some((Q)=>Q!==Z&&d3(Q)===J))return J;return Z.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}var y2=()=>{};import{TextAttributes as nj}from"@opentui/core";function k6(Z){let{theme:X}=x0(),J=h0(),z=Z.window.total-Z.window.start-Z.window.items.length;return q0("box",{gap:0,paddingLeft:2,paddingBottom:Z.paddingBottom,children:[Z.window.start>0?y("text",{fg:X.textMuted,wrapMode:"none",children:J("newTask.picker.moreAbove",{count:Z.window.start})}):null,Z.rows.map((Q,Y)=>{let G=Z.window.start+Y,$=G===Z.cursor;return q0("text",{fg:$?X.primary:Q.accent?X.accent:X.textMuted,attributes:$?nj.BOLD:void 0,wrapMode:"none",onMouseUp:()=>Z.onPick(G),children:[$?"\u25B8 ":" ",Q.body]},Q.key)}),z>0?y("text",{fg:X.textMuted,wrapMode:"none",children:J("newTask.picker.moreBelow",{count:z})}):null,Z.footer]})}function i3(Z,X,J){return X===J?{fg:Z.primary,attributes:nj.BOLD|nj.UNDERLINE}:{fg:Z.textMuted}}function Mq(Z){let{theme:X}=x0(),J=Z.arrow!==!1;return q0("box",{flexDirection:"row",flexWrap:"wrap",gap:2,children:[Z.label,Z.choices.map((z)=>{let Q=Z.selected===z,Y=J?Q?"\u25B8 ":" ":"";return y("text",{fg:Q?X.primary:X.textMuted,attributes:Q?nj.BOLD:void 0,wrapMode:"none",flexShrink:0,onMouseUp:()=>Z.onPick(z),children:Y+(Z.display?Z.display(z):z)},z)}),Z.children]})}var BX=h(async()=>{x1();w0();await P1()});import{TextAttributes as Nq}from"@opentui/core";function zC0(Z){let{theme:X}=x0(),J=B4(),z=h0(),Q=F7(),[Y,G]=Dq.useState(()=>({...B40,repo:Z.defaultRepo??Z.repos[0]??""})),[$,H]=Dq.useState("name"),[K,M]=Dq.useState(()=>{let d=Z.repos.indexOf(Z.defaultRepo??"");return d>=0?d:0}),[W,D]=Dq.useState(null),[j,C]=Dq.useState(0),_=ij(Y.schedule),A=(d)=>{H("schedule"),C(Math.min(Math.max(d,0),VX.length-1))},w=()=>{Z.onCancel(),J.clear()},T=(d)=>{G((k)=>({...k,...d})),D(null)},R=(d)=>{let k=Z.repos[Z5(d,Z.repos.length)];if(!k)return;M(Z5(d,Z.repos.length)),T({repo:k})};function E(){if(M40(Y)){Z.onSubmit({name:Y.name.trim(),repo:Y.repo.trim(),prompt:Y.prompt.trim(),schedule:Y.schedule.trim()}),J.clear();return}let d=N40(Y);if(d)H(d),D(z(`automations.missing.${d}`))}let S=D40(Y.schedule,Date.now()),x=b6(Z.repos,K),v=x.items.map((d,k)=>({key:d,body:m6(d,Z.repos),accent:x.start+k===K}));N1(()=>({bindings:[{key:"tab",cmd:()=>H((d)=>OV(d,1))},{key:"shift+tab",cmd:()=>H((d)=>OV(d,-1))},...$==="repo"?[{key:"up",cmd:()=>R(K-1)},{key:"down",cmd:()=>R(K+1)}]:[],...$==="schedule"?[{key:"left",cmd:()=>C((d)=>Zx(d,-1))},{key:"right",cmd:()=>C((d)=>Zx(d,1))},{key:"up",cmd:()=>{let d=VX[j];if(!d)return;T({schedule:Xx(Y.schedule,j,eI(d,_[j]??"*",1))})}},{key:"down",cmd:()=>{let d=VX[j];if(!d)return;T({schedule:Xx(Y.schedule,j,eI(d,_[j]??"*",-1))})}}]:[],...$==="confirm"?[{key:"return",cmd:()=>E()}]:[]]}));let m=(d,k)=>y("text",{fg:$===d?X.primary:X.textMuted,attributes:$===d?Nq.BOLD|Nq.UNDERLINE:void 0,onMouseUp:()=>H(d),children:k});return q0("box",{paddingLeft:Q,paddingRight:Q,gap:1,children:[q0("box",{flexDirection:"row",justifyContent:"space-between",children:[y("text",{attributes:Nq.BOLD,fg:X.text,children:z("automations.newTitle")}),y("text",{fg:X.textMuted,onMouseUp:()=>w(),children:"esc"})]}),q0("box",{gap:0,children:[m("name",z("automations.fieldName")),y("input",{value:Y.name,placeholder:z("automations.namePlaceholder"),focused:$==="name",onMouseUp:()=>H("name"),onInput:(d)=>T({name:d}),onSubmit:()=>H(OV("name"))})]}),q0("box",{gap:0,children:[m("repo",z("automations.fieldRepo")),Z.repos.length===0?y("text",{fg:X.textMuted,children:z("automations.needRepo")}):y(k6,{window:x,cursor:K,rows:v,onPick:R})]}),q0("box",{gap:0,children:[m("prompt",z("automations.fieldPrompt")),y("input",{value:Y.prompt,placeholder:z("automations.promptPlaceholder"),focused:$==="prompt",onMouseUp:()=>H("prompt"),onInput:(d)=>T({prompt:d}),onSubmit:()=>H(OV("prompt"))})]}),q0("box",{gap:0,children:[m("schedule",z("automations.fieldSchedule")),y("box",{flexDirection:"row",gap:2,paddingLeft:1,children:VX.map((d,k)=>{let s=$==="schedule"&&k===j;return q0("box",{flexDirection:"column",onMouseUp:()=>A(k),children:[y("text",{fg:s?X.primary:X.text,attributes:s?Nq.BOLD|Nq.UNDERLINE:void 0,wrapMode:"none",children:_[k]??"*"}),y("text",{fg:s?X.textMuted:X.borderSubtle,wrapMode:"none",children:z(`automations.cronField.${d}`)})]},d)})}),y("box",{flexDirection:"row",gap:1,paddingLeft:1,children:S.kind==="ok"?y("text",{fg:X.success,wrapMode:"none",children:`${Jx(Y.schedule)??""}${Jx(Y.schedule)?" \xB7 ":""}${S.relative} \xB7 ${S.absolute}`}):y("text",{fg:X.error,wrapMode:"none",children:S.kind==="never"?z("automations.cronNever"):z("automations.cronInvalid")})})]}),W?q0("text",{fg:X.error,wrapMode:"word",children:["\u203B ",W]}):null,y("box",{flexDirection:"row",justifyContent:"flex-end",paddingTop:1,paddingBottom:1,children:y("text",{fg:$==="confirm"?X.primary:X.text,attributes:$==="confirm"?Nq.BOLD:void 0,onMouseUp:()=>E(),children:`[ ${z("common.create")} ]`})})]})}var Dq,A40;var C40=h(async()=>{W40();j40();I2();y2();x1();w0();await w1([P1(),p4(),R5(),BX()]);Dq=p0(o0(),1);A40={show(Z,X){return S8(Z,(J)=>y(zC0,{repos:X.repos,...X.defaultRepo?{defaultRepo:X.defaultRepo}:{},onSubmit:(z)=>J(z),onCancel:()=>J(void 0)}))}}});import{TextAttributes as aj}from"@opentui/core";function E40(Z,X){if(!Z)return"\u2014";let J=Date.parse(Z);if(!Number.isFinite(J))return"\u2014";let z=J-X,{minutes:Q,hours:Y}=pj(Math.abs(z));if(Q<1)return z>=0?"now":"just now";if(Q<60)return z>=0?`in ${Q}m`:`${Q}m ago`;if(Y<24)return z>=0?`in ${Y}h`:`${Y}h ago`;return new Date(J).toLocaleDateString()}function GC0(Z){return Z.split("/").filter(Boolean).pop()??Z}function R40(Z){let{theme:X}=x0(),J=B4(),z=h0(),[Q,Y]=n3.useState(null),[G,$]=n3.useState(!1),[H,K]=n3.useState([]),[M,W]=n3.useState(0),[D,j]=n3.useState(null),[C,_]=n3.useState(null),A=()=>W((k)=>k+1);n3.useEffect(()=>{let k=!1,s=Z.orchestrator;if(!s){Y([]);return}let n=()=>{s.listAutomations().then((K0)=>{if(k)return;Y(K0.automations),$(K0.keepsDaemonAlive)}).catch(()=>{if(!k)Y((K0)=>K0??[])})};n();let Q0=setInterval(n,QC0);return()=>{k=!0,clearInterval(Q0)}},[Z.orchestrator,M]);let w=Q??[],[T,R]=n3.useState(0);n3.useEffect(()=>{R((k)=>Z5(k,w.length))},[w.length]);let E=w[T];n3.useEffect(()=>{let k=!1,s=Z.orchestrator;if(!s||!E){K([]);return}return s.automationRuns(E.id).then((n)=>{if(!k)K(n.runs)}).catch(()=>{if(!k)K([])}),()=>{k=!0}},[Z.orchestrator,E,M]);async function S(){let k=Z.orchestrator;if(!k||!E||D)return;j(E.id);try{await k.setAutomationEnabled(E.id,!E.enabled),A()}catch(s){_(s instanceof Error?s.message:String(s))}finally{j(null)}}async function x(){let k=Z.orchestrator;if(!k||!E||D)return;j(E.id),_(z("automations.running",{name:E.name}));try{let s=await k.runAutomationNow(E.id);_(z("automations.ranWith",{name:E.name,status:s.status})),A()}catch(s){_(s instanceof Error?s.message:String(s))}finally{j(null)}}async function v(){let k=Z.orchestrator;if(!k||D)return;let s=[...new Set(k.listTasks().map((Q0)=>Q0.repo))].filter(Boolean);if(s.length===0){_(z("automations.needRepo"));return}let n=await A40.show(J,{repos:s,...Z.focusRepo?{defaultRepo:Z.focusRepo}:{}});if(!n)return;j("new");try{await k.createAutomation(n),A()}catch(Q0){_(Q0 instanceof Error?Q0.message:String(Q0))}finally{j(null)}}async function m(){let k=Z.orchestrator;if(!k||!E||D)return;if(await d4.show(J,z("automations.deleteTitle"),z("automations.deleteBody",{name:E.name}),z("common.cancel"),z("automations.deleteButton"))!==!0)return;j(E.id);try{await k.deleteAutomation(E.id),A()}catch(n){_(n instanceof Error?n.message:String(n))}finally{j(null)}}N1(()=>({enabled:Z.focused!==!1,bindings:[...u7(Z.onClose),{key:"j",cmd:()=>R((k)=>Z5(k+1,w.length))},{key:"down",cmd:()=>R((k)=>Z5(k+1,w.length))},{key:"k",cmd:()=>R((k)=>Z5(k-1,w.length))},{key:"up",cmd:()=>R((k)=>Z5(k-1,w.length))},{key:"n",cmd:()=>void v()},{key:"r",cmd:()=>A()},{key:"e",cmd:()=>void S()},{key:"s",cmd:()=>void x()},{key:"d",cmd:()=>void m()},{key:"return",cmd:()=>{let k=H.find((s)=>s.taskId)?.taskId;if(k)Z.onOpenTask?.(k)}}]}));let d=Date.now();return q0("box",{flexDirection:"column",flexGrow:1,paddingTop:1,paddingLeft:2,paddingRight:2,children:[q0("box",{flexDirection:"row",gap:1,flexShrink:0,children:[y("text",{attributes:aj.BOLD,fg:X.primary,wrapMode:"none",flexShrink:0,children:z("automations.title")}),y("text",{fg:X.borderSubtle,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:"\u2500".repeat(240)}),y("text",{fg:G?X.success:X.textMuted,wrapMode:"none",flexShrink:0,children:G?z("automations.holdingDaemon"):z("automations.notHolding")})]}),Q===null?y("box",{paddingTop:1,children:y("text",{fg:X.textMuted,children:z("common.loading")})}):w.length===0?q0("box",{flexDirection:"column",paddingTop:1,gap:1,children:[y("text",{fg:X.textMuted,children:z("automations.empty")}),y("text",{fg:X.text,children:z("automations.emptyHint")})]}):y("box",{flexDirection:"column",marginTop:1,flexGrow:1,gap:0,children:w.map((k,s)=>{let n=s===T;return q0("box",{flexDirection:"row",flexShrink:0,border:!0,borderColor:n?X.borderActive:X.borderSubtle,paddingLeft:1,paddingRight:1,gap:1,...n?{backgroundColor:X.backgroundElement}:{},children:[y("text",{fg:k.enabled?X.text:X.textMuted,attributes:n?aj.BOLD:void 0,wrapMode:"none",flexShrink:1,children:k.name}),y("text",{fg:X.borderSubtle,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:"\u2500".repeat(240)}),y("text",{fg:X.textMuted,wrapMode:"none",flexShrink:1,children:`${GC0(k.repo)} \xB7 ${k.schedule}`}),k.enabled?null:y("text",{fg:X.warning,wrapMode:"none",flexShrink:0,children:`${z("automations.paused")} \xB7`}),y("text",{fg:X.textMuted,wrapMode:"none",flexShrink:0,children:E40(k.nextRunAt,d)})]},k.id)})}),y("box",{flexDirection:"column",marginTop:1,border:!0,borderColor:X.border,padding:1,flexShrink:0,children:E?q0(a5,{children:[q0("box",{flexDirection:"row",justifyContent:"space-between",gap:2,children:[y("text",{fg:X.text,wrapMode:"none",flexShrink:1,flexGrow:1,children:E.prompt}),y("text",{fg:D===E.id?X.textMuted:X.primary,attributes:aj.BOLD,wrapMode:"none",flexShrink:0,onMouseUp:()=>void x(),children:z("automations.runNow")})]}),E.precheck?y("text",{fg:X.textMuted,children:z("automations.precheck",{command:E.precheck.command})}):null,y("text",{attributes:aj.BOLD,fg:X.text,children:z("automations.recentRuns")}),H.length===0?y("text",{fg:X.textMuted,children:z("automations.noRuns")}):H.slice(0,5).map((k)=>{let s=YC0[k.status]??"muted",n=s==="success"?X.success:s==="warning"?X.warning:s==="error"?X.error:X.textMuted;return y("text",{fg:n,children:`#${k.runNumber} ${k.status}${k.error?` \u2014 ${k.error}`:""} ${E40(k.at,d)}`},k.id)})]}):y("text",{fg:X.textMuted,children:z("automations.noSelection")})}),C?y("text",{fg:X.textMuted,children:C}):null]})}var n3,QC0=5000,YC0;var T40=h(async()=>{I2();x1();w0();await w1([P1(),p4(),R5(),p9(),C40()]);n3=p0(o0(),1),YC0={dispatched:"success",skipped_precheck:"muted",skipped_missed:"warning",skipped_unavailable:"warning",dispatch_failed:"error"}});function S40(Z){return $C0[Z]??"parked"}var $C0;var P40=h(()=>{$C0={backlog:"active",in_progress:"active",in_review:"parked",error:"parked",done:"terminal",canceled:"terminal",open:"active",doing:"active",hold:"parked"}});function I40(Z,X,J){let z=Z.find(($)=>$.issues.length>0)?.issues[0]?.id??null;if(X==null)return z;let Q=-1,Y=-1;for(let[$,H]of Z.entries()){let K=H.issues.findIndex((M)=>M.id===X);if(K!==-1){Q=$,Y=K;break}}if(Q===-1)return z;if(J==="up"||J==="down"){let $=Z[Q]?.issues??[],H=J==="up"?Y-1:Y+1;return $[Math.max(0,Math.min(H,$.length-1))]?.id??X}let G=J==="left"?-1:1;for(let $=Q+G;$>=0&&$<Z.length;$+=G){let H=Z[$]?.issues??[];if(H.length===0)continue;return H[Math.min(Y,H.length-1)]?.id??X}return X}function UC0(Z){let X=S40(Z.status);if(X==="terminal")return"done";if(X==="parked")return"parked";if(Z.taskId!==void 0&&Z.taskId!=="")return"in_progress";return"backlog"}function Yx(Z){return Z!==void 0&&HC0.includes(Z)}function x40(Z,X){let J=0;return{columns:Z.map((Q)=>{if(Q.key!=="in_progress")return Q;let Y=[],G=[];for(let $ of Q.issues)if($.taskId!==void 0&&$.taskId!==""&&Yx(X($.taskId)))Y.push($);else G.push($);return J=Y.length,Y.length===0?Q:{...Q,issues:[...Y,...G]}}),attentionCount:J}}function KC0(Z,X){if(Z.created!==X.created)return Z.created<X.created?1:-1;return X.id-Z.id}function y40(Z){let X={backlog:[],in_progress:[],parked:[],done:[]};for(let J of Z)X[UC0(J)].push(J);return qC0.map((J)=>{let z=J==="done"||J==="parked",Q=X[J].sort(KC0);if(!z||Q.length<=Qx)return{key:J,issues:Q,hiddenCount:0};return{key:J,issues:Q.slice(0,Qx),hiddenCount:Q.length-Qx}})}var qC0,Qx=20,HC0;var Gx=h(()=>{P40();qC0=["backlog","in_progress","parked","done"];HC0=["permission_needed","rate_limited","error"]});import{randomBytes as f40}from"crypto";import{existsSync as $x,mkdirSync as VC0,writeFileSync as BC0}from"fs";import{isAbsolute as MC0,join as NC0}from"path";function OC0(Z){if(Z.startsWith('"')&&Z.endsWith('"')||Z.startsWith("'")&&Z.endsWith("'"))return Z.slice(1,-1);return Z}function jC0(Z){let J=`__DOUBLE_BACKSLASH_${f40(8).toString("hex")}__`;return Z.replace(/\\\\/g,J).replace(/\\(.)/g,"$1").replaceAll(J,"\\")}function b40(Z,X=$x){let J=jC0(OC0(Z.trim()));if(!DC0.test(J))return null;if(!MC0(J))return null;return X(J)?J:null}function Wq(Z,X=$x){let J=Z.split(`
702
+ `))Q++;return Q}function fI(Z){return _h(Z).map((X)=>({path:X.path,added:X.added,deleted:X.deleted}))}function FA0(Z){let X=[];for(let J of hD(Z)){let z;if(J.x==="?"&&J.y==="?")z="?";else{let Y=J.y!==" "?J.y:J.x;if(Y==="M"||Y==="A"||Y==="D"||Y==="R"||Y==="C"||Y==="U"||Y==="T")z=Y;else continue}let Q=J.path;if(Q.length===0)continue;if(Q.endsWith("/")&&z!=="?")continue;X.push({path:Q,status:z})}return X}var B10=h(()=>{uD();tK()});function M10(Z){switch(Z){case"all":return"files.tabs.all";case"changes":return"files.tabs.changes"}}function N10(Z){return O5({"files.nav":(X,J)=>{if((J??0)%2===0)Z.moveDown();else Z.moveUp()},"files.hierarchy":(X,J)=>{if((J??0)%2===0)Z.collapseOrParent();else Z.expandOrDescend()},"files.tab":(X,J)=>{let z=Z.currentTab(),Q=qq.indexOf(z);if(Q<0)return;let Y=(J??0)%2===0?-1:1,G=qq[(Q+Y+qq.length)%qq.length];if(G)Z.setTab(G)},"files.open":()=>Z.openCurrent(),"files.mention":()=>Z.mentionCurrent?.(),"files.openExternal":()=>Z.openExternal(),"files.refresh":()=>Z.refresh(),"files.scope":()=>Z.toggleScope?.(),"files.diff":()=>Z.openDiff?.()})}var qq;var bI=h(()=>{iZ();qq=["all","changes"]});import{spawn as _A0}from"child_process";import{existsSync as LA0}from"fs";import{platform as AA0}from"os";function fj(Z){if(!Z)return;let X=AA0();if(X==="linux"){if(LA0("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){BV("wslview",[Z],()=>{let J=_A0("wslpath",["-w",Z],{stdio:["ignore","pipe","ignore"]}),z="";J.stdout?.on("data",(Q)=>{z+=Q.toString()}),J.on("close",(Q)=>{if(Q===0)BV("explorer.exe",[z.trim()])})});return}BV("xdg-open",[Z]);return}if(X==="darwin"){BV("open",[Z]);return}if(X==="win32"){BV("cmd.exe",["/c","start","",Z]);return}}function BV(Z,X,J){hJ(Z,X,{onError:J?()=>J():void 0})}var gI=h(()=>{gK()});import{watch as CA0}from"fs";function D10(Z){switch(Z){case"M":return"warning";case"A":return"success";case"D":return"error";case"?":return"textMuted";case"R":case"C":case"U":case"T":return"info"}}function W10(Z,X){let J=Z.toLowerCase();if(J.includes("not a git repository"))return X("files.error.notGitRepo");if(J.includes("does not exist")||J.includes("enoent"))return X("files.error.pathMissing");if(J.includes("permission denied")||J.includes("eacces"))return X("files.error.permissionDenied");if(J.includes("git: not found")||J.includes("command not found"))return X("files.error.gitNotInstalled");let z=Z.indexOf(": ");if(z>=0&&Z.startsWith("git "))return Z.slice(z+2).trim()||X("files.error.gitFailed");return Z.trim()||X("files.error.gitFailed")}function O10(Z){let X=0,J=0;for(let z of Z){if(z.kind!=="status")continue;if(z.added!=null)X=Math.max(X,String(z.added).length+1);if(z.deleted!=null)J=Math.max(J,String(z.deleted).length+1)}return{added:X,deleted:J}}function j10(Z,X){let J=(X.added>0?X.added+1:0)+(X.deleted>0?X.deleted+1:0);return Math.max(8,Z-6-J)}function mI(Z,X,J){let z=J==="-"?"\u2212":J;return Z==null?" ".repeat(X):`${z}${Z}`.padStart(X)}function kI(Z,X){let J=new Set(Z);if(J.has(X))J.delete(X);else J.add(X);return J}function F10(Z,X){let J=Z[X];if(!J||J.kind!=="dir")return null;if(!J.expanded&&J.hasChildren)return{type:"expand",path:J.path};if(J.expanded&&X+1<Z.length)return{type:"cursor",index:X+1};return null}function _10(Z,X){let J=Z[X];if(!J)return null;if(J.kind==="dir"&&J.expanded)return{type:"collapse",path:J.path};if(J.kind!=="dir"&&J.kind!=="file")return null;let z=J.depth-1;if(z<0)return null;for(let Q=X-1;Q>=0;Q--){let Y=Z[Q];if(!Y)continue;if(Y.kind==="dir"&&Y.depth===z)return{type:"cursor",index:Q}}return null}function bj(Z,X,J){if(X<=0)return null;if(J<Z)return J;if(J>=Z+X)return J-X+1;return null}function EA0(Z){if(Z===".git"||Z.startsWith(".git/")||Z.startsWith(".git\\"))return!1;if(Z.startsWith("node_modules/")||Z.startsWith("node_modules\\"))return!1;return!0}function L10(Z,X,J=500){let z=null,Q=null;try{Q=CA0(Z,{recursive:!0},(Y,G)=>{if(G==null)return;if(!EA0(G.toString()))return;if(z!=null)clearTimeout(z);z=setTimeout(()=>{z=null,X()},J)}),Q.on("error",()=>{})}catch{}return()=>{if(z!=null)clearTimeout(z);if(Q!=null)Q.close()}}var gj=()=>{};function hI(Z,X,J,z,Q={}){if(Z.length===0)return X;let Y=new Map;for(let H of Z)Y.set(J(H),H);let G=Z.length===X.length,$=Array(X.length);for(let H=0;H<X.length;H++){let K=X[H],M=Y.get(J(K));if(M&&z(M,K)&&(!Q.samePosition||Z[H]===M)){if($[H]=M,G&&Z[H]!==M)G=!1}else $[H]=K,G=!1}return G?Z:$}function uI(Z,X,J,z){for(let Q of Z.children)if(Q.isDir){let Y=X.has(Q.path);if(z.push({kind:"dir",path:Q.path,name:Q.name,depth:J,expanded:Y,hasChildren:Q.children.length>0}),Y)uI(Q,X,J+1,z)}else z.push({kind:"file",path:Q.path,name:Q.name,depth:J})}function A10(Z,X){return $j(Z,X)}function C10(Z,X=RA0){let J=[];for(let z of Z){if(z.children==null){J.push({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted});continue}let Q=X.has(z.path);if(J.push({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted,fileCount:z.children.length,expanded:Q}),Q)for(let Y of z.children)J.push({kind:"status",path:Y.path,status:Y.status,added:Y.added,deleted:Y.deleted,child:!0})}return J}function TA0(Z){return`${Z.kind}\x00${Z.path}`}function SA0(Z,X){if(Z.kind!==X.kind||Z.path!==X.path)return!1;switch(Z.kind){case"file":{let J=X;return Z.name===J.name&&Z.depth===J.depth}case"dir":{let J=X;return Z.name===J.name&&Z.depth===J.depth&&Z.expanded===J.expanded&&Z.hasChildren===J.hasChildren}case"status":{let J=X;return Z.status===J.status&&Z.added===J.added&&Z.deleted===J.deleted&&Z.fileCount===J.fileCount&&Z.expanded===J.expanded&&Z.child===J.child}}}function E10(Z,X){return hI(Z,X,TA0,SA0)}function R10(Z,X){if(Z===X)return!0;if(Z==null||X==null)return!1;if(Z.length!==X.length)return!1;for(let J=0;J<Z.length;J++)if(Z[J]!==X[J])return!1;return!0}function T10(Z,X){if(Z===X)return!0;if(Z==null||X==null)return!1;if(Z.length!==X.length)return!1;for(let J=0;J<Z.length;J++){let z=Z[J],Q=X[J];if(z.path!==Q.path||z.status!==Q.status||z.added!==Q.added||z.deleted!==Q.deleted)return!1;let Y=z.children,G=Q.children;if(Y==null!==(G==null))return!1;if(Y&&G){if(Y.length!==G.length)return!1;for(let $=0;$<Y.length;$++){let H=Y[$],K=G[$];if(H.path!==K.path||H.status!==K.status||H.added!==K.added||H.deleted!==K.deleted)return!1}}}return!0}var RA0;var cI=h(()=>{RA0=new Set});function S10(Z){let X={name:"",path:"",isDir:!0,children:[]};for(let J of Z){if(!J)continue;let z=J.split("/").filter((Y)=>Y.length>0);if(z.length===0)continue;let Q=X;for(let Y=0;Y<z.length;Y++){let G=z[Y],H=Y!==z.length-1,K=Q.children.find((M)=>M.name===G&&M.isDir===H);if(!K)K={name:G,path:z.slice(0,Y+1).join("/"),isDir:H,children:[]},Q.children.push(K);Q=K}}return P10(X),X}function P10(Z){Z.children.sort((X,J)=>{if(X.isDir!==J.isDir)return X.isDir?-1:1;return X.name.localeCompare(J.name)});for(let X of Z.children)P10(X)}function mj(Z,X){if(Z.includes("/"))return Z.split("/").map((Q)=>mj(Q,X)).join("/");let J=Z.toLowerCase();if(J==="tab")return"tab";let z=IA0[J];if(z)return z;if(/^f\d{1,2}$/.test(J))return J.toUpperCase();if(!X)return Z;if(/^[a-z]$/.test(J))return Z.toUpperCase();return Z.replace(/[a-z]+/gi,(Q)=>Q.toUpperCase())}function H7(Z,X="\u2303A"){let J=Z.trim();if(!J)return J;let z=/^prefix\s+(.+)$/i.exec(J);if(z){let $=z[1]??"";return`${X} ${$.includes("+")?H7($,X):mj($,!0)}`}let Q=J.split("+");if(Q.length===1)return mj(Q[0]??"",!1);let Y=Q[Q.length-1]??"";return`${Q.slice(0,-1).map(($)=>PA0[$.toLowerCase().trim()]??$).join("")} ${mj(Y,!0)}`}var PA0,IA0;var Uq=h(()=>{PA0={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},IA0={enter:"\u23CE",return:"\u23CE",esc:"\u238B",escape:"\u238B",space:"\u2423",up:"\u2191",down:"\u2193",left:"\u2190",right:"\u2192",backspace:"\u232B",delete:"\u2326",del:"\u2326",pgup:"\u21DE",pageup:"\u21DE",pgdn:"\u21DF",pagedown:"\u21DF",home:"\u2196",end:"\u2198"}});function xA0(Z){return Z.hint?.keys??Z.keys[0]}function x2(Z){let X=vJ(Z);if(!X)return null;let J=xA0(X);return J&&J.length>0?J:null}function yA0(Z){if(Z.keys.length>0)return Z.hint?.keys??Z.keys[0]??null;return Z.prefixKeys?.length?null:Z.hint?.keys??null}function wA0(Z,X){if(Z.scope==="global")return!0;if(X===null)return!1;if(Z.scope===X)return!0;return X==="terminal"&&Z.scope==="workspace"}function I10(Z,X,J,z){let Q=[],Y=[],G=[],$=new Map;for(let K of Z){let M=yA0(K),W=wA0(K,X),D=z?z.direct.has(K.id):W,j=z?z.prefix.has(K.id):W;if(M){let C={binding:K,primary:M,aliases:K.keys.filter((A)=>A!==M)},_=K.keys.length===0&&!K.prefixKeys?.length&&W;if(D&&(W||K.presentation==="onePress")||_)if(K.presentation==="onePress")Y.push(C);else Q.push(C);else if(!W&&K.scope!=="global"){let A=$.get(K.scope);if(A)A.push(C);else $.set(K.scope,[C])}}if(J&&j&&K.prefixKeys?.length)G.push({binding:K,primary:`${J} + ${K.prefixKeys[0]}`,aliases:K.prefixKeys.slice(1).map((C)=>`${J} + ${C}`)})}let H=[];if(Q.length)H.push({kind:"here",scope:X??void 0,rows:Q});if(Y.length)H.push({kind:"direct",rows:Y});if(G.length)H.push({kind:"prefix",rows:G});for(let[K,M]of $)H.push({kind:"other",scope:K,rows:M});return H}var MV=h(()=>{iZ()});function Kq(Z){return Z!==!1}function kj(Z){return Kq(Z.get(Hq,!0))}function hj(Z){let X=!kj(Z);if(Z.set(Hq,X),X)for(let J of Object.values(NV))Z.set(J,!1)}function x10(Z,X){return Kq(Z)&&X!==!0}function y10(Z,X){let J=[];if(X!==null&&Z.prefix.size>0)J.push({chord:X,msg:"commands"});else if(Z.inputPassthrough){let z=Z.direct.has("focus.sidebar")?x2("focus.sidebar"):null;if(z)J.push({chord:z,msg:"sidebar"})}if(Z.direct.has("help.open")){let z=x2("help.open");if(z)J.push({chord:z,msg:"help"})}return J}function w10(Z,X){return vA0[Z].flatMap((J)=>{if(X==="always"&&J.always!==!0)return[];let z=x2(J.id);return z?[{cap:z,msg:J.msg}]:[]})}function v10(Z){let X=[],J=x2("sidebar.nav"),z=x2("sidebar.select");if(J&&z)X.push({msg:"keysBare",params:{nav:H7(J),open:H7(z)}});let Q=x2("chat.tab.new"),Y=x2("focus.next");if(Q&&Y)X.push({msg:"keysOnePress",params:{newTab:H7(Q),focusNext:H7(Y)}});if(Z!==null)X.push({msg:"keysPrefix",params:{prefix:H7(Z)}});let G=x2("help.open");if(G)X.push({msg:"keysHelp",params:{help:H7(G)}});return X}var Hq="hints.keyboard.enabled",NV,vA0;var DV=h(()=>{Uq();MV();NV={sidebar:"hints.sidebar.used",files:"hints.files.used"};vA0={sidebar:[{id:"sidebar.nav",msg:"move"},{id:"sidebar.select",msg:"open"}],files:[{id:"files.nav",msg:"move"},{id:"files.hierarchy",msg:"fold"},{id:"files.open",msg:"open",always:!0},{id:"files.diff",msg:"diff",always:!0}]}});function rQ(){return f10.useSyncExternalStore(QT,zT,zT)}var f10;var g6=h(()=>{iZ();iZ();f10=p0(o0(),1)});import{TextAttributes as b10}from"@opentui/core";function lI(Z){if(!Z)return"Global";if(Z==="sidebar")return"Sidebar";if(Z==="workspace")return"Workspace";if(Z==="files")return"Files";if(Z==="terminal")return"Terminal";return"Dialog"}function g10(Z){return Z.split(" + ").map((X)=>H7(X)).join(" + ")}function fA0(Z,X){if(Z.kind==="here")return X("help.here",{surface:bZ("category",lI(Z.scope))});if(Z.kind==="direct")return X("help.direct");if(Z.kind==="prefix")return X("help.afterPrefix");return X("help.otherPane",{surface:bZ("category",lI(Z.scope))})}function Vq(Z){let X=B4(),{theme:J}=x0(),z=h0(),Q=F7(),Y=rQ(),G=T2(),$=uj.useMemo(()=>I10(o8,Z.currentScope??null,G.key,Z.reachability),[Y,Z.currentScope,Z.reachability,G.key]),H=()=>Z.onClose?Z.onClose():X.clear(),K=uj.useRef(null),M=(D)=>{let j=K.current;if(!j)return;j.scrollTo({x:0,y:Math.max(0,j.scrollTop+D)})},W=(D)=>{let j=K.current;if(!j)return;j.scrollTo({x:0,y:D==="top"?0:Number.MAX_SAFE_INTEGER})};return N1(()=>({bindings:[{key:"?",cmd:H},{key:"up",cmd:()=>M(-1)},{key:"down",cmd:()=>M(1)},{key:"pageup",cmd:()=>M(-(K.current?.viewport.height??10))},{key:"pagedown",cmd:()=>M(K.current?.viewport.height??10)},{key:"home",cmd:()=>W("top")},{key:"end",cmd:()=>W("bottom")}]})),q0("box",{paddingLeft:Q,paddingRight:Q,gap:1,flexShrink:1,children:[q0("box",{flexDirection:"row",justifyContent:"space-between",flexShrink:0,children:[q0("box",{flexDirection:"column",gap:0,children:[y("text",{attributes:b10.BOLD,fg:J.text,children:z("help.title")}),y("text",{fg:J.textMuted,children:Z.currentScope?z("help.focused",{surface:bZ("category",lI(Z.currentScope))}):z("help.allBindings")}),y("text",{fg:J.textMuted,children:z("help.grammar",{prefix:G.key?H7(G.key):z("help.disabled")})})]}),y("text",{fg:J.textMuted,onMouseUp:H,children:z("help.esc")})]}),y("scrollbox",{ref:(D)=>{K.current=D},flexShrink:1,flexGrow:1,stickyScroll:!1,verticalScrollbarOptions:{trackOptions:{backgroundColor:J.backgroundDialog,foregroundColor:J.borderActive}},children:y("box",{paddingBottom:1,gap:1,paddingRight:1,children:$.map((D,j)=>q0("box",{gap:0,children:[y("text",{fg:J.accent,attributes:b10.BOLD,children:fA0(D,z)}),D.rows.map((C)=>{return q0("box",{flexDirection:"row",gap:2,paddingLeft:1,children:[y("box",{width:18,children:y("text",{fg:J.primary,children:g10(C.primary)})}),y("box",{flexGrow:1,children:y("text",{fg:J.text,children:bZ("desc",C.binding.id)})}),C.aliases.length>0?y("box",{children:y("text",{fg:J.textMuted,children:`(${C.aliases.map(g10).join(", ")})`})}):null]},`${D.kind}-${C.binding.id}`)})]},`${D.kind}-${D.scope??j}`))})})]})}var uj;var pI=h(async()=>{Uq();MV();k3();g6();x1();w0();await w1([P1(),p4(),R5()]);uj=p0(o0(),1);Vq.show=(Z,X)=>{let J=oW(),z=J.inputPassthrough?"terminal":X;Z.replace(()=>y(Vq,{currentScope:z,reachability:J}))}});function dI(Z){let X=h0(),J=u3(),z=Td(),Q=Ji();rQ(),rd();let[Y,G]=Bq.useState({tokens:[],modal:!1});Bq.useEffect(()=>{let K=Kq(J?.get(Hq,!0)),M=bQ()||(Q?.stack.length??0)>0,W=K&&!M?y10(oW(),T2().key):null;G((D)=>{let j=W??(K?D.tokens:[]);return D.modal===M&&D.tokens.length===j.length&&D.tokens.every((C,_)=>C.chord===j[_]?.chord&&C.msg===j[_]?.msg)?D:{tokens:j,modal:M}})});let $=Y.modal?{commands:void 0,sidebar:void 0,help:void 0}:{commands:()=>void od(),sidebar:z?()=>z.setFocused("sidebar"):void 0,help:Q?()=>Vq.show(Q,z?.focused??"sidebar"):void 0},H=Y.tokens.map((K)=>({text:Z?.compact?H7(K.chord):X(`hints.status.${K.msg}`,{key:H7(K.chord)}),onPress:$[K.msg]}));if(Z?.onOpenSettings&&!Z.compact&&Kq(J?.get(Hq,!0)))H.push({text:`[${X("hints.status.settings")}]`,onPress:Y.modal?void 0:Z.onOpenSettings});return H}function m10(Z){let{theme:X}=x0(),J=dI({onOpenSettings:Z.onOpenSettings,compact:Z.compact});if(J.length===0)return null;return y("box",{flexDirection:"row",flexShrink:0,children:J.flatMap((z,Q)=>[Q>0?y("text",{fg:X.textMuted,wrapMode:"none",children:" \xB7 "},`sep-${z.text}`):null,y("box",{onMouseUp:z.onPress,children:y("text",{fg:X.textMuted,wrapMode:"none",children:z.text})},z.text)])})}function cj(Z){let X=u3();return Bq.useCallback(()=>{if(!X)return;if(X.get(NV[Z],!1)!==!0)X.set(NV[Z],!0)},[X,Z])}function lj(Z){let X=h0(),{theme:J}=x0(),z=u3();rQ();let Q=z?.get(Hq,!0),Y=z?.get(NV[Z.pane],!1);if(!Kq(Q))return null;let G=w10(Z.pane,x10(Q,Y)?"firstUse":"always");if(G.length===0)return null;return y("text",{fg:J.textMuted,wrapMode:"none",children:G.map(($)=>`${H7($.cap)} ${X(`hints.pane.${$.msg}`)}`).join(" \xB7 ")})}var Bq;var WV=h(async()=>{Uq();DV();k3();g6();s8();x1();w0();await w1([vK(),P1(),p4(),R5(),pI()]);Bq=p0(o0(),1)});import{TextAttributes as iI}from"@opentui/core";function k10(Z){let{theme:X}=x0(),J=h0(),z=T2().key,Q=z?`[${H7(z)} P]`:null;return q0(a5,{children:[Z.onZenToggle||Z.onCreatePR?q0("box",{flexDirection:"row",flexWrap:"wrap",justifyContent:"flex-end",gap:2,paddingBottom:1,flexShrink:0,children:[Z.onZenToggle?q0("box",{flexDirection:"row",gap:1,flexShrink:0,onMouseUp:(Y)=>{Y.stopPropagation(),Z.onZenToggle?.()},children:[y("text",{fg:X.accent,attributes:iI.BOLD,wrapMode:"none",children:"[~]"}),y("text",{fg:X.text,wrapMode:"none",children:J("files.actions.zen")})]}):null,Z.onCreatePR?q0("box",{flexDirection:"row",gap:1,flexShrink:0,onMouseUp:(Y)=>{Y.stopPropagation(),Z.onCreatePR?.()},children:[Q?y("text",{fg:X.accent,attributes:iI.BOLD,wrapMode:"none",children:Q}):null,y("text",{fg:X.text,wrapMode:"none",children:J("files.actions.createPR")})]}):null]}):null,y("box",{flexDirection:"row",paddingBottom:0,flexShrink:0,gap:2,children:qq.map((Y)=>{let G=Z.tab===Y;return y("text",{fg:G?X.primary:X.textMuted,attributes:G?iI.BOLD:void 0,wrapMode:"none",onMouseUp:()=>Z.onSelectTab(Y),children:J(M10(Y))},Y)})}),Z.tab==="changes"?q0("box",{flexDirection:"column",paddingBottom:1,flexShrink:0,gap:0,children:[q0("text",{fg:X.textMuted,wrapMode:"none",children:[Z.scope==="branch"&&Z.base!=null?J("files.scope.branch",{base:Z.base}):J("files.scope.working"),Z.base!=null?` ${J("files.scope.toggleHint")}`:""]}),y("text",{fg:X.textMuted,wrapMode:"none",children:J("files.legend.changes")})]}):y("box",{flexDirection:"row",paddingBottom:1,flexShrink:0})]})}var h10=h(async()=>{Uq();k3();bI();x1();w0();await P1()});function KX(Z,X){let J=Z.background.a===0;if(X.cursor){if(J)return{marker:"\u258C",markerColor:Z.focusAccent??Z.primary,backgroundColor:void 0};return{marker:"\u258C",markerColor:Z.text,backgroundColor:Z.backgroundElement}}if(X.selected)return{marker:"\u258C",markerColor:Z.borderActive,backgroundColor:J?void 0:Z.background};return{marker:" ",markerColor:void 0,backgroundColor:void 0}}import{TextAttributes as bA0}from"@opentui/core";var u10,c10;var l10=h(async()=>{gj();cI();w0();await P1();u10=p0(o0(),1),c10=u10.memo(function(X){let{theme:J}=x0(),z=KX(J,{cursor:X.cursor}),Q=y("text",{fg:z.markerColor,wrapMode:"none",children:z.marker}),Y=z.backgroundColor,G=X.row;if(G.kind==="dir"){let C=" ".repeat(G.depth);return q0("box",{flexDirection:"row",gap:0,backgroundColor:Y,onMouseUp:()=>X.onActivate(X.row,X.index),children:[Q,y("box",{flexGrow:1,paddingRight:1,children:y("text",{fg:J.textMuted,attributes:bA0.BOLD,wrapMode:"none",children:`${C}${G.expanded?"\u25BE":"\u25B8"} ${G.name}/`})})]})}if(G.kind==="file"){let C=" ".repeat(G.depth);return q0("box",{flexDirection:"row",gap:0,backgroundColor:Y,onMouseUp:()=>X.onActivate(X.row,X.index),children:[Q,y("box",{flexGrow:1,paddingRight:1,children:y("text",{fg:J.text,wrapMode:"none",children:`${C} ${G.name}`})})]})}let $=G.fileCount!==void 0,H=$?G.expanded?"\u25BE ":"\u25B8 ":"",K=$?` (${G.fileCount})`:"",M=G.child?" ":"",W=X.pathBudget-H.length-K.length-M.length,D=D10(G.status),j=D==="success"?J.success:D==="warning"?J.warning:D==="error"?J.error:D==="info"?J.info:J.textMuted;return q0("box",{flexDirection:"row",gap:0,backgroundColor:Y,onMouseUp:()=>X.onActivate(X.row,X.index),children:[Q,q0("box",{flexDirection:"row",flexGrow:1,gap:1,paddingRight:1,children:[y("text",{fg:j,wrapMode:"none",children:G.status}),y("text",{fg:$?J.textMuted:J.text,wrapMode:"none",flexGrow:1,children:`${M}${H}${A10(G.path,W)}${K}`}),X.statWidths.added>0?y("text",{fg:J.success,wrapMode:"none",children:mI(G.added,X.statWidths.added,"+")}):null,X.statWidths.deleted>0?y("text",{fg:J.error,wrapMode:"none",children:mI(G.deleted,X.statWidths.deleted,"-")}):null]})]})})});function p10(Z){let{theme:X}=x0(),J=h0(),z=q5(),[Q,Y]=v4.useState("all"),[G,$]=v4.useState("working"),[H,K]=v4.useState(!1),[M,W]=v4.useState(null),[D,j]=v4.useState(0),[C,_]=v4.useState(0),[A,w]=v4.useState(null),[T,R]=v4.useState(null),[E,S]=v4.useState(null),[x,v]=v4.useState(()=>new Set),m=q1(Z.worktreePath),d=q1(Q),k=q1(A),s=q1(T),n=q1(G),Q0=q1(M),K0=q1(H),O0=q1(Z.onOpenFile),B0=v4.useRef(0),H0=v4.useCallback(async(L0,g0,m0)=>{let f0=++B0.current;if(g0==null){w(null),R(null),S(null);return}S(null);try{if(L0==="all"){let r0=await q10(g0,m0);if(m0?.aborted||f0!==B0.current||m.current!==g0)return;w((K1)=>R10(K1,r0)?K1:r0)}else if(L0==="changes"){let r0=n.current==="branch"&&Q0.current!=null,K1=r0?await V10(g0,Q0.current,m0):await U10(g0,m0);if(m0?.aborted||f0!==B0.current||m.current!==g0)return;if(!r0&&K1.length===0&&!K0.current&&Q0.current!=null){$("branch");return}R(($0)=>T10($0,K1)?$0:K1)}}catch(r0){if(m0?.aborted)return;let K1=e0(r0);if(f0===B0.current&&m.current===g0)S(K1)}},[]);v4.useEffect(()=>{w(null),R(null),S(null),j(0),v(new Set),$("working"),K(!1);let L0=new AbortController;return H0(d.current,Z.worktreePath,L0.signal),()=>L0.abort()},[Z.worktreePath,H0]),v4.useEffect(()=>{let L0=Z.worktreePath;if(L0==null){W(null);return}let g0=!1,m0=new AbortController;return K10(L0,Z.prBaseRef,m0.signal).then((f0)=>{if(!g0)W(f0)}).catch(()=>{if(!g0)W(null)}),()=>{g0=!0,m0.abort()}},[Z.worktreePath,Z.prBaseRef]),v4.useEffect(()=>{if(d.current!=="changes")return;let L0=m.current;if(L0==null)return;let g0=new AbortController;return H0("changes",L0,g0.signal),()=>g0.abort()},[G,M,H0]),v4.useEffect(()=>{let L0=Z.worktreePath;if(L0==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;return L10(L0,()=>_((g0)=>g0+1))},[Z.worktreePath]),v4.useEffect(()=>{j(0);let L0=m.current;if(L0==null)return;let g0=new AbortController;if(Q==="all"){if(k.current==null)H0("all",L0,g0.signal)}else if(Q==="changes"){if(s.current==null)H0("changes",L0,g0.signal)}return()=>g0.abort()},[Q,H0]),v4.useEffect(()=>{if(C===0)return;let L0=m.current;if(L0==null)return;let g0=new AbortController;return H0(d.current,L0,g0.signal),()=>g0.abort()},[C,H0]);let u=v4.useMemo(()=>A==null?null:S10(A),[A]),i=v4.useRef([]),t=v4.useMemo(()=>{let L0=[];if(Q==="all"){if(u!=null)uI(u,x,0,L0)}else if(Q==="changes"){if(T!=null)L0.push(...C10(T,x))}let g0=E10(i.current,L0);return i.current=g0,g0},[Q,u,x,T]);v4.useEffect(()=>{if(t.length===0)return;j((L0)=>L0>t.length-1?t.length-1:L0)},[t]);let p=v4.useMemo(()=>O10(t),[t]),U0=Z.paneWidth??z.width,e=v4.useMemo(()=>j10(U0,p),[U0,p]);function o(L0){if(!L0)return;if(L0.type==="cursor")j(L0.index);else if(L0.type==="expand")v((g0)=>new Set(g0).add(L0.path));else v((g0)=>kI(g0,L0.path))}let r=v4.useCallback((L0)=>{if(L0.kind==="dir"||L0.path.endsWith("/"))v((g0)=>kI(g0,L0.path));else O0.current(L0.path)},[]),D0=v4.useCallback((L0,g0)=>{j(g0),r(L0)},[r]),z0=cj("files");N1(()=>({enabled:Z.focused??!0,bindings:N10({moveDown:()=>{if(z0(),t.length===0)return;j((L0)=>Math.min(L0+1,t.length-1))},moveUp:()=>{if(z0(),t.length===0)return;j((L0)=>Math.max(L0-1,0))},setTab:Y,currentTab:()=>Q,openCurrent:()=>{z0();let L0=t[D];if(L0)r(L0)},mentionCurrent:()=>{let L0=t[D];if(!L0||L0.kind==="dir"||L0.path.endsWith("/"))return;Z.onMention?.(L0.path)},openExternal:()=>{let L0=t[D];if(!L0||L0.kind==="dir"||L0.path.endsWith("/"))return;if(!Z.worktreePath)return;fj(`${Z.worktreePath}/${L0.path}`)},refresh:()=>{_((L0)=>L0+1)},toggleScope:()=>{if(Q!=="changes")return;if(M==null)return;K(!0),$((L0)=>L0==="working"?"branch":"working")},openDiff:()=>{let L0=t[D];if(!L0||L0.kind==="dir"||L0.path.endsWith("/"))return;Z.onOpenDiff?.(L0.path,G==="branch"&&M!=null?M:void 0)},expandOrDescend:()=>o(F10(t,D)),collapseOrParent:()=>{if(Q!=="all")return;o(_10(t,D))}})}));let j0=v4.useRef(null);v4.useEffect(()=>{let L0=j0.current;if(!L0||t.length===0)return;let g0=bj(L0.scrollTop,L0.viewport.height,D);if(g0!=null)L0.scrollTo({x:0,y:g0})},[D,t]);let C0=Q==="all"&&A!=null||Q==="changes"&&T!=null;return q0("box",{flexDirection:"column",flexGrow:1,paddingLeft:0,paddingRight:0,children:[y(k10,{tab:Q,scope:G,base:M,onSelectTab:Y,onZenToggle:Z.onZenToggle,onCreatePR:Z.onCreatePR}),y("scrollbox",{ref:(L0)=>{j0.current=L0},flexGrow:1,verticalScrollbarOptions:{trackOptions:{foregroundColor:"transparent"}},children:Z.worktreePath==null?y("box",{paddingTop:1,paddingLeft:1,children:y("text",{fg:X.textMuted,children:J("files.empty.noTask")})}):E!=null?q0("box",{paddingTop:1,paddingLeft:1,flexDirection:"column",gap:0,children:[y("text",{fg:X.error,wrapMode:"word",children:W10(E,J)}),y("text",{fg:X.textMuted,wrapMode:"word",children:J("files.error.retryHint")})]}):t.length===0&&C0?y("box",{paddingTop:1,paddingLeft:1,children:y("text",{fg:X.textMuted,children:Q==="all"?J("files.empty.noFiles"):J("files.empty.noChanges")})}):t.length>0?y("box",{flexShrink:0,gap:0,paddingRight:1,children:t.map((L0,g0)=>y(c10,{row:L0,index:g0,cursor:g0===D,statWidths:p,pathBudget:e,onActivate:D0},`${L0.kind}:${L0.path}`))}):null}),Z.worktreePath!=null?y("box",{flexDirection:"row",justifyContent:"flex-end",paddingTop:1,flexShrink:0,children:y(lj,{pane:"files"})}):null]})}var v4;var d10=h(async()=>{B10();bI();gI();gj();cI();x1();x7();w0();await w1([e4(),WV(),P1(),p4(),h10(),l10()]);v4=p0(o0(),1)});function n10(Z){let{theme:X,transparentBackground:J}=x0(),z=cW(),Q=q5(),Y=J?X.border:X.borderSubtle,G=Math.max(i10,Q.width-JX),$=Math.max(i10,Math.min(gA0,Math.floor(G/3)));return y("box",{width:$,flexShrink:0,borderColor:z.focused==="files"?X.focusAccent:Y,onMouseUp:()=>z.setFocused("files"),children:y(p10,{worktreePath:Z.worktree,paneWidth:$-2,prBaseRef:Z.prBaseRef,focused:Z.focused,onOpenFile:Z.onOpenFile,onOpenDiff:Z.onOpenDiff,onZenToggle:Z.onZenToggle,onCreatePR:Z.onCreatePR})})}var i10=22,gA0=34;var a10=h(async()=>{rJ();w0();await w1([e4(),vK(),P1(),d10()])});function o10(Z,X=8){let J=Math.min(1,Math.max(0,Z))*X,z=Math.floor(J),Q=Math.round((J-z)*8);if(Q===8)z+=1,Q=0;let Y=z<X?mA0[Q]??"":"";return`${"\u2588".repeat(z)}${Y}`.padEnd(X,"\u2591")}var mA0;var nI=h(()=>{mA0=["","\u258F","\u258E","\u258D","\u258C","\u258B","\u258A","\u2589"]});function oI(Z,X){if(Z==null||Z<=X)return"";let J=new Date(Z),z=`${s10(J.getHours())}:${s10(J.getMinutes())}`;if(Z-X<86400000)return`\u2192 ${z}`;return`\u2192 ${J.getMonth()+1}/${J.getDate()} ${z}`}function r10(Z,X){return Z.windows.map((J)=>({label:J.label,percentText:`${J.percent}%`,resetText:oI(J.resetsAt,X),tone:aI(J.percent)}))}function t10(Z,X){let J=Z.windows.find((z)=>z.kind==="session")??Z.windows[0];if(!J)return null;return{label:J.label,percentText:`${J.percent}%`,resetText:oI(J.resetsAt,X),tone:aI(J.percent)}}function e10(Z,X){let J=Math.min(8,Z.windows.reduce((z,Q)=>Math.max(z,Q.label.length),2));return Z.windows.map((z)=>({label:(z.label.length>J?z.label.slice(0,J):z.label).padEnd(J),bar:o10(z.percent/100,kA0),percentText:`${String(z.percent).padStart(3)}%`,resetText:oI(z.resetsAt,X),tone:aI(z.percent)}))}var kA0=10,aI=(Z)=>Z>=95?"crit":Z>=75?"warn":"ok",s10=(Z)=>String(Z).padStart(2,"0");var sI=h(()=>{nI()});function hA0(Z){let{theme:X}=x0(),J=F4(Z.orchestrator.usageSnapshotSignal());if(!J||J.size===0)return null;let z={ok:X.success,warn:X.warning,crit:X.error},Q=Date.now();if(Z.narrow)return y("box",{flexDirection:"row",gap:2,children:[...J.entries()].flatMap(([Y,G])=>{let $=t10(G,Q);if(!$)return[];return[q0("box",{flexDirection:"row",gap:1,children:[y("text",{fg:X.textMuted,wrapMode:"none",children:v5(Y).toUpperCase()}),y("text",{fg:z[$.tone],wrapMode:"none",children:$.percentText})]},Y)]})});return y("box",{flexDirection:"row",gap:2,children:[...J.entries()].map(([Y,G])=>q0("box",{flexDirection:"row",gap:1,children:[y("text",{fg:X.textMuted,wrapMode:"none",children:v5(Y).toUpperCase()}),r10(G,Q).map(($,H)=>q0("box",{flexDirection:"row",gap:1,children:[y("text",{fg:X.textMuted,wrapMode:"none",children:H===0?$.label:`\xB7 ${$.label}`}),y("text",{fg:z[$.tone],wrapMode:"none",children:$.percentText}),$.resetText?y("text",{fg:X.textMuted,wrapMode:"none",children:$.resetText}):null]},$.label))]},Y))})}function Z40(Z){let{theme:X}=x0(),J=q5(),z=X3(J.width),Q=F4(Z.orchestrator.usageSnapshotSignal()),Y=dI({onOpenSettings:Z.onOpenSettings}),G=Q!=null&&Q.size>0||Y.length>0;return q0("box",{flexDirection:"column",flexGrow:1,backgroundColor:X.background,children:[y("box",{flexDirection:"row",flexGrow:1,children:Z.children}),G?q0("box",{flexDirection:"row",flexShrink:0,height:1,paddingLeft:1,paddingRight:1,gap:2,children:[y("box",{flexGrow:1,flexDirection:"row",children:y(hA0,{orchestrator:Z.orchestrator,narrow:z})}),y(m10,{onOpenSettings:z?void 0:Z.onOpenSettings,compact:z})]}):null]})}var X40=h(async()=>{$7();sI();x6();w0();await w1([e4(),WV(),P1()])});import{TextAttributes as uA0}from"@opentui/core";function cA0(Z){if(!Z)return Z;return Z.charAt(0).toUpperCase()+Z.slice(1)}function d4(Z){let X=B4(),{theme:J}=x0(),z=h0(),Q=F7(),[Y,G]=J40.useState(Z.initialActive??"confirm");return N1(()=>({bindings:[{key:"return",cmd:()=>{if(Y==="confirm")Z.onConfirm?.();if(Y==="cancel")Z.onCancel?.();X.clear()}},{key:"left",cmd:()=>G(($)=>$==="confirm"?"cancel":"confirm")},{key:"right",cmd:()=>G(($)=>$==="confirm"?"cancel":"confirm")}]})),q0("box",{paddingLeft:Q,paddingRight:Q,paddingBottom:1,gap:0,children:[q0("box",{flexDirection:"row",justifyContent:"space-between",children:[y("text",{attributes:uA0.BOLD,fg:J.text,children:Z.title}),y("text",{fg:J.textMuted,onMouseUp:()=>X.clear(),children:"esc"})]}),y("text",{fg:J.textMuted,children:Z.message}),y("box",{flexDirection:"row",justifyContent:"flex-end",paddingTop:1,children:["cancel","confirm"].map(($)=>y("box",{paddingLeft:1,paddingRight:1,backgroundColor:$===Y?J.primary:void 0,onMouseUp:()=>{if($==="confirm")Z.onConfirm?.();if($==="cancel")Z.onCancel?.();X.clear()},children:y("text",{fg:$===Y?J.selectedListItemText:J.textMuted,children:cA0($==="cancel"?Z.label??z("common.cancel"):Z.confirmLabel??z("common.confirm"))})},$))})]})}var J40;var p9=h(async()=>{x1();w0();await w1([P1(),p4(),R5()]);J40=p0(o0(),1);d4.show=(Z,X,J,z,Q,Y)=>{return S8(Z,(G)=>y(d4,{title:X,message:J,onConfirm:()=>G(!0),onCancel:()=>G(!1),label:z,confirmLabel:Q,initialActive:Y?.initialActive}),{size:"small"})}});function z40(Z){return!Z.dialogOpen&&!Z.settingsOpen&&!Z.worktreesOpen&&!Z.updateOpen}function Q40(Z){return Z.settingsOpen&&!Z.dialogOpen}function Y40(Z,X,J){let z=lA0.filter((G)=>G!=="files"||J.filesVisible),Q=z.indexOf(Z);if(Q<0)return(X>0?z[z.length-1]:z[0])??null;let Y=Math.min(Math.max(Q+X,0),z.length-1);return Y===Q?null:z[Y]??null}var lA0;var G40=h(()=>{lA0=["sidebar","workspace","files"]});function pA0(Z){let X=Z.kind==="pane"?["plugin","pane","open",Z.target]:["plugin","action","invoke",Z.target],[J,...z]=[...kG(),...X];hJ(J,z,{onError:(Q)=>console.warn(`[rove/plugins] ${Z.target}: ${String(Q)}`)})}function $40(Z){N1(()=>({enabled:Z,bindings:qd().map((X)=>({key:X.chord,cmd:()=>pA0(X)}))}))}var q40=h(async()=>{hG();gK();wK();await p4()});function U40(Z){let{focus:X,dialog:J}=Z,z=h0(),Q=l4();function Y(){try{Q?.destroy()}catch(M){console.error("Rove: renderer.destroy() failed during quit:",M)}process.exit(0)}async function G(){if(await d4.show(J,z("workspace.quit.confirmTitle"),z("workspace.quit.confirmBody"),z("common.cancel"),z("workspace.quit.confirmLabel")))Y()}function $(M){let W=Y40(X.focused,M,{filesVisible:Z.filesPaneVisible!==!1});if(W)X.setFocused(W)}let H={dialogOpen:Z.dialog.stack.length>0,settingsOpen:Z.pages.settingsOpen,worktreesOpen:Z.pages.worktreesOpen,updateOpen:Z.pages.updateOpen,kanbanOpen:Z.pages.kanbanOpen,automationsOpen:Z.pages.automationsOpen,workItemsOpen:Z.pages.workItemsOpen},K=z40(H);N1(()=>({enabled:K,bindings:[...O5({"help.open":()=>Vq.show(J,X.focused),"focus.previous":()=>$(-1),"focus.next":()=>$(1),"workspace.zenToggle":()=>Z.toggleZen(),"attention.next":()=>Z.jumpToNextAttention(),"inbox.show":()=>Z.openInbox(),"kanban.open":()=>Z.pages.openKanban(),"automations.open":()=>Z.pages.openAutomations(),"workItems.open":()=>Z.pages.openWorkItems(),"task.moveMode":()=>Z.enterMoveMode(),"settings.open":()=>Z.pages.openSettings(),"files.createPR":()=>Z.createPR(),"task.openEditor":()=>{if(Z.selectedId)Z.openTaskWorktree(Z.selectedId)}})]})),N1(()=>({enabled:K&&X.focused!=="sidebar",bindings:O5({"focus.sidebar":()=>X.setFocused("sidebar")})})),N1(()=>({enabled:K&&X.focused==="sidebar",bindings:O5({"app.quit":(M,W)=>{if(W===1){Y();return}G()},"settings.open.sidebar":()=>Z.pages.openSettings(),"worktrees.open.sidebar":()=>Z.pages.openWorktrees(),"tasks.update":()=>Z.pages.openUpdate()})})),N1(()=>({enabled:K&&X.focused==="sidebar"&&!Z.searchActive,bindings:O5({"task.new":()=>Z.createTask(),"tasks.openWorktree":()=>{if(Z.selectedId)Z.openTaskWorktree(Z.selectedId)},"tasks.renameBranch":()=>{let M=Z.selectedId;if(M)Z.renameBranch(M)},"tasks.cycleEngine":()=>{let M=Z.selectedId;if(M)Z.cycleVendor(M)},"tasks.focusEngine":()=>X.setFocused("workspace")})})),N1(()=>({enabled:Q40(H),bindings:u7(Z.pages.closeSettings)})),$40(K)}var H40=h(async()=>{g6();x1();G40();await w1([e4(),pI(),p4(),p9(),q40()])});function V40(Z){return Z==="terminal"?"sidebar":"workspace"}var K40;var rI=h(()=>{K40=[{nav:"kanban",labelKey:"tasks.nav.kanban"},{nav:"automations",labelKey:"tasks.nav.automations"}]});function pj(Z){let X=Math.round(Z/60000),J=Math.round(X/60);return{minutes:X,hours:J,days:Math.round(J/24)}}function OV(Z,X=1){let J=dj.indexOf(Z);if(J<0)return"name";let z=(J+X+dj.length)%dj.length;return dj[z]}function M40(Z){return Z.name.trim().length>0&&Z.repo.trim().length>0&&Z.prompt.trim().length>0&&m$(Z.schedule.trim())}function N40(Z){if(Z.name.trim().length===0)return"name";if(Z.repo.trim().length===0)return"repo";if(Z.prompt.trim().length===0)return"prompt";if(!m$(Z.schedule.trim()))return"schedule";return null}function D40(Z,X){let J=Z.trim();if(!m$(J))return{kind:"invalid"};let z;try{z=k$(J,X)}catch{return{kind:"never"}}return{kind:"ok",nextRunMs:z,relative:dA0(z-X),absolute:aA0(z,X)}}function dA0(Z){let{minutes:X,hours:J,days:z}=pj(Z);if(X<60)return`in ${Math.max(1,X)}m`;if(J<24)return`in ${J}h`;return`in ${z}d`}function aA0(Z,X){let J=new Date(Z),z=`${String(J.getHours()).padStart(2,"0")}:${String(J.getMinutes()).padStart(2,"0")}`,Q=new Date(X);if(J.getFullYear()===Q.getFullYear()&&J.getMonth()===Q.getMonth()&&J.getDate()===Q.getDate())return z;let G=iA0[J.getDay()]??"";if(Z-X<518400000)return`${G} ${z}`;return`${G} ${nA0[J.getMonth()]??""} ${J.getDate()}, ${z}`}var dj,B40,iA0,nA0;var W40=h(()=>{hK();dj=["name","repo","prompt","schedule","confirm"];B40={name:"",repo:"",prompt:"",schedule:"0 9 * * MON-FRI"};iA0=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],nA0=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function ij(Z){let X=Z.trim().split(/\s+/).filter(Boolean);return VX.map((J,z)=>X[z]??"*")}function O40(Z){return VX.map((X,J)=>Z[J]??"*").join(" ")}function tI(Z,X){let J=[];for(let z=Z;z<=X;z++)J.push(String(z));return J}function eI(Z,X,J){let z=XC0[Z],Q=z.indexOf(X.trim().toUpperCase());if(Q<0)return(J>0?z[0]:z[z.length-1])??X;let Y=(Q+J+z.length)%z.length;return z[Y]??X}function Zx(Z,X){return Math.min(Math.max(Z+X,0),VX.length-1)}function Xx(Z,X,J){let z=ij(Z);if(X<0||X>=VX.length)return O40(z);return z[X]=J,O40(z)}function Jx(Z){let[X,J,z,Q,Y]=ij(Z);if(Q!=="*"||z!=="*")return null;if(X===void 0||J===void 0||Y===void 0)return null;let G=JC0(X,J);if(!G)return null;if(Y==="*")return G.startsWith("every ")?G:`every day ${G}`;if(Y==="MON-FRI")return`weekdays ${G}`;if(Y==="SAT,SUN")return`weekends ${G}`;let $=ZC0[Y.toUpperCase()];if($)return`${$} ${G}`;return null}function JC0(Z,X){if(X==="*"){if(Z==="*")return"every minute";if(Z.startsWith("*/"))return`every ${Z.slice(2)}m`;if(/^\d+$/.test(Z))return`hourly at :${Z.padStart(2,"0")}`;return null}if(X.startsWith("*/")&&Z==="0")return`every ${X.slice(2)}h`;if(/^\d+$/.test(X)&&/^\d+$/.test(Z))return`at ${X.padStart(2,"0")}:${Z.padStart(2,"0")}`;return null}var VX,oA0,sA0,rA0,tA0,eA0,ZC0,XC0;var j40=h(()=>{VX=["minute","hour","dayOfMonth","month","dayOfWeek"];oA0=["*","*/5","*/10","*/15","*/30",...tI(0,59)],sA0=["*","*/2","*/3","*/4","*/6","*/12",...tI(0,23)],rA0=["*",...tI(1,31)],tA0=["*","JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"],eA0=["*","MON-FRI","SAT,SUN","MON","TUE","WED","THU","FRI","SAT","SUN"],ZC0={MON:"Mondays",TUE:"Tuesdays",WED:"Wednesdays",THU:"Thursdays",FRI:"Fridays",SAT:"Saturdays",SUN:"Sundays"};XC0={minute:oA0,hour:sA0,dayOfMonth:rA0,month:tA0,dayOfWeek:eA0}});function zx(Z,X){if(!Z)return!0;let J=Z.toLowerCase(),z=X.toLowerCase(),Q=0;for(let Y=0;Y<z.length&&Q<J.length;Y++)if(z.charCodeAt(Y)===J.charCodeAt(Q))Q++;return Q===J.length}function _40(Z,X){let J=X==="archived";return Z.filter((z)=>z.archived===J)}function L40(Z,X){let J=F40(X)-F40(Z);if(J!==0)return J;return String(X.id).localeCompare(String(Z.id))}function F40(Z){let X=Date.parse(Z.updatedAt||Z.createdAt);return Number.isFinite(X)?X:0}function d3(Z){let X=Z.split("/").filter(Boolean);return X[X.length-1]??Z}function tQ(Z){return Z.trim().replace(/[\\/]+$/,"")||Z}function m6(Z,X){let J=d3(Z);if(!X.some((Q)=>Q!==Z&&d3(Q)===J))return J;return Z.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}var y2=()=>{};import{TextAttributes as nj}from"@opentui/core";function k6(Z){let{theme:X}=x0(),J=h0(),z=Z.window.total-Z.window.start-Z.window.items.length;return q0("box",{gap:0,paddingLeft:2,paddingBottom:Z.paddingBottom,children:[Z.window.start>0?y("text",{fg:X.textMuted,wrapMode:"none",children:J("newTask.picker.moreAbove",{count:Z.window.start})}):null,Z.rows.map((Q,Y)=>{let G=Z.window.start+Y,$=G===Z.cursor;return q0("text",{fg:$?X.primary:Q.accent?X.accent:X.textMuted,attributes:$?nj.BOLD:void 0,wrapMode:"none",onMouseUp:()=>Z.onPick(G),children:[$?"\u25B8 ":" ",Q.body]},Q.key)}),z>0?y("text",{fg:X.textMuted,wrapMode:"none",children:J("newTask.picker.moreBelow",{count:z})}):null,Z.footer]})}function i3(Z,X,J){return X===J?{fg:Z.primary,attributes:nj.BOLD|nj.UNDERLINE}:{fg:Z.textMuted}}function Mq(Z){let{theme:X}=x0(),J=Z.arrow!==!1;return q0("box",{flexDirection:"row",flexWrap:"wrap",gap:2,children:[Z.label,Z.choices.map((z)=>{let Q=Z.selected===z,Y=J?Q?"\u25B8 ":" ":"";return y("text",{fg:Q?X.primary:X.textMuted,attributes:Q?nj.BOLD:void 0,wrapMode:"none",flexShrink:0,onMouseUp:()=>Z.onPick(z),children:Y+(Z.display?Z.display(z):z)},z)}),Z.children]})}var BX=h(async()=>{x1();w0();await P1()});import{TextAttributes as Nq}from"@opentui/core";function zC0(Z){let{theme:X}=x0(),J=B4(),z=h0(),Q=F7(),[Y,G]=Dq.useState(()=>({...B40,repo:Z.defaultRepo??Z.repos[0]??""})),[$,H]=Dq.useState("name"),[K,M]=Dq.useState(()=>{let d=Z.repos.indexOf(Z.defaultRepo??"");return d>=0?d:0}),[W,D]=Dq.useState(null),[j,C]=Dq.useState(0),_=ij(Y.schedule),A=(d)=>{H("schedule"),C(Math.min(Math.max(d,0),VX.length-1))},w=()=>{Z.onCancel(),J.clear()},T=(d)=>{G((k)=>({...k,...d})),D(null)},R=(d)=>{let k=Z.repos[Z5(d,Z.repos.length)];if(!k)return;M(Z5(d,Z.repos.length)),T({repo:k})};function E(){if(M40(Y)){Z.onSubmit({name:Y.name.trim(),repo:Y.repo.trim(),prompt:Y.prompt.trim(),schedule:Y.schedule.trim()}),J.clear();return}let d=N40(Y);if(d)H(d),D(z(`automations.missing.${d}`))}let S=D40(Y.schedule,Date.now()),x=b6(Z.repos,K),v=x.items.map((d,k)=>({key:d,body:m6(d,Z.repos),accent:x.start+k===K}));N1(()=>({bindings:[{key:"tab",cmd:()=>H((d)=>OV(d,1))},{key:"shift+tab",cmd:()=>H((d)=>OV(d,-1))},...$==="repo"?[{key:"up",cmd:()=>R(K-1)},{key:"down",cmd:()=>R(K+1)}]:[],...$==="schedule"?[{key:"left",cmd:()=>C((d)=>Zx(d,-1))},{key:"right",cmd:()=>C((d)=>Zx(d,1))},{key:"up",cmd:()=>{let d=VX[j];if(!d)return;T({schedule:Xx(Y.schedule,j,eI(d,_[j]??"*",1))})}},{key:"down",cmd:()=>{let d=VX[j];if(!d)return;T({schedule:Xx(Y.schedule,j,eI(d,_[j]??"*",-1))})}}]:[],...$==="confirm"?[{key:"return",cmd:()=>E()}]:[]]}));let m=(d,k)=>y("text",{fg:$===d?X.primary:X.textMuted,attributes:$===d?Nq.BOLD|Nq.UNDERLINE:void 0,onMouseUp:()=>H(d),children:k});return q0("box",{paddingLeft:Q,paddingRight:Q,gap:1,children:[q0("box",{flexDirection:"row",justifyContent:"space-between",children:[y("text",{attributes:Nq.BOLD,fg:X.text,children:z("automations.newTitle")}),y("text",{fg:X.textMuted,onMouseUp:()=>w(),children:"esc"})]}),q0("box",{gap:0,children:[m("name",z("automations.fieldName")),y("input",{value:Y.name,placeholder:z("automations.namePlaceholder"),focused:$==="name",onMouseUp:()=>H("name"),onInput:(d)=>T({name:d}),onSubmit:()=>H(OV("name"))})]}),q0("box",{gap:0,children:[m("repo",z("automations.fieldRepo")),Z.repos.length===0?y("text",{fg:X.textMuted,children:z("automations.needRepo")}):y(k6,{window:x,cursor:K,rows:v,onPick:R})]}),q0("box",{gap:0,children:[m("prompt",z("automations.fieldPrompt")),y("input",{value:Y.prompt,placeholder:z("automations.promptPlaceholder"),focused:$==="prompt",onMouseUp:()=>H("prompt"),onInput:(d)=>T({prompt:d}),onSubmit:()=>H(OV("prompt"))})]}),q0("box",{gap:0,children:[m("schedule",z("automations.fieldSchedule")),y("box",{flexDirection:"row",gap:2,paddingLeft:1,children:VX.map((d,k)=>{let s=$==="schedule"&&k===j;return q0("box",{flexDirection:"column",onMouseUp:()=>A(k),children:[y("text",{fg:s?X.primary:X.text,attributes:s?Nq.BOLD|Nq.UNDERLINE:void 0,wrapMode:"none",children:_[k]??"*"}),y("text",{fg:s?X.textMuted:X.borderSubtle,wrapMode:"none",children:z(`automations.cronField.${d}`)})]},d)})}),y("box",{flexDirection:"row",gap:1,paddingLeft:1,children:S.kind==="ok"?y("text",{fg:X.success,wrapMode:"none",children:`${Jx(Y.schedule)??""}${Jx(Y.schedule)?" \xB7 ":""}${S.relative} \xB7 ${S.absolute}`}):y("text",{fg:X.error,wrapMode:"none",children:S.kind==="never"?z("automations.cronNever"):z("automations.cronInvalid")})})]}),W?q0("text",{fg:X.error,wrapMode:"word",children:["\u203B ",W]}):null,y("box",{flexDirection:"row",justifyContent:"flex-end",paddingTop:1,paddingBottom:1,children:y("text",{fg:$==="confirm"?X.primary:X.text,attributes:$==="confirm"?Nq.BOLD:void 0,onMouseUp:()=>E(),children:`[ ${z("common.create")} ]`})})]})}var Dq,A40;var C40=h(async()=>{W40();j40();I2();y2();x1();w0();await w1([P1(),p4(),R5(),BX()]);Dq=p0(o0(),1);A40={show(Z,X){return S8(Z,(J)=>y(zC0,{repos:X.repos,...X.defaultRepo?{defaultRepo:X.defaultRepo}:{},onSubmit:(z)=>J(z),onCancel:()=>J(void 0)}))}}});import{TextAttributes as aj}from"@opentui/core";function E40(Z,X){if(!Z)return"\u2014";let J=Date.parse(Z);if(!Number.isFinite(J))return"\u2014";let z=J-X,{minutes:Q,hours:Y}=pj(Math.abs(z));if(Q<1)return z>=0?"now":"just now";if(Q<60)return z>=0?`in ${Q}m`:`${Q}m ago`;if(Y<24)return z>=0?`in ${Y}h`:`${Y}h ago`;return new Date(J).toLocaleDateString()}function GC0(Z){return Z.split("/").filter(Boolean).pop()??Z}function R40(Z){let{theme:X}=x0(),J=B4(),z=h0(),[Q,Y]=n3.useState(null),[G,$]=n3.useState(!1),[H,K]=n3.useState([]),[M,W]=n3.useState(0),[D,j]=n3.useState(null),[C,_]=n3.useState(null),A=()=>W((k)=>k+1);n3.useEffect(()=>{let k=!1,s=Z.orchestrator;if(!s){Y([]);return}let n=()=>{s.listAutomations().then((K0)=>{if(k)return;Y(K0.automations),$(K0.keepsDaemonAlive)}).catch(()=>{if(!k)Y((K0)=>K0??[])})};n();let Q0=setInterval(n,QC0);return()=>{k=!0,clearInterval(Q0)}},[Z.orchestrator,M]);let w=Q??[],[T,R]=n3.useState(0);n3.useEffect(()=>{R((k)=>Z5(k,w.length))},[w.length]);let E=w[T];n3.useEffect(()=>{let k=!1,s=Z.orchestrator;if(!s||!E){K([]);return}return s.automationRuns(E.id).then((n)=>{if(!k)K(n.runs)}).catch(()=>{if(!k)K([])}),()=>{k=!0}},[Z.orchestrator,E,M]);async function S(){let k=Z.orchestrator;if(!k||!E||D)return;j(E.id);try{await k.setAutomationEnabled(E.id,!E.enabled),A()}catch(s){_(s instanceof Error?s.message:String(s))}finally{j(null)}}async function x(){let k=Z.orchestrator;if(!k||!E||D)return;j(E.id),_(z("automations.running",{name:E.name}));try{let s=await k.runAutomationNow(E.id);_(z("automations.ranWith",{name:E.name,status:s.status})),A()}catch(s){_(s instanceof Error?s.message:String(s))}finally{j(null)}}async function v(){let k=Z.orchestrator;if(!k||D)return;let s=[...new Set(k.listTasks().map((Q0)=>Q0.repo))].filter(Boolean);if(s.length===0){_(z("automations.needRepo"));return}let n=await A40.show(J,{repos:s,...Z.focusRepo?{defaultRepo:Z.focusRepo}:{}});if(!n)return;j("new");try{await k.createAutomation(n),A()}catch(Q0){_(Q0 instanceof Error?Q0.message:String(Q0))}finally{j(null)}}async function m(){let k=Z.orchestrator;if(!k||!E||D)return;if(await d4.show(J,z("automations.deleteTitle"),z("automations.deleteBody",{name:E.name}),z("common.cancel"),z("automations.deleteButton"))!==!0)return;j(E.id);try{await k.deleteAutomation(E.id),A()}catch(n){_(n instanceof Error?n.message:String(n))}finally{j(null)}}N1(()=>({enabled:Z.focused!==!1,bindings:[...u7(Z.onClose),{key:"j",cmd:()=>R((k)=>Z5(k+1,w.length))},{key:"down",cmd:()=>R((k)=>Z5(k+1,w.length))},{key:"k",cmd:()=>R((k)=>Z5(k-1,w.length))},{key:"up",cmd:()=>R((k)=>Z5(k-1,w.length))},{key:"n",cmd:()=>void v()},{key:"r",cmd:()=>A()},{key:"e",cmd:()=>void S()},{key:"s",cmd:()=>void x()},{key:"d",cmd:()=>void m()},{key:"return",cmd:()=>{let k=H.find((s)=>s.taskId)?.taskId;if(k)Z.onOpenTask?.(k)}}]}));let d=Date.now();return q0("box",{flexDirection:"column",flexGrow:1,paddingTop:1,paddingLeft:2,paddingRight:2,children:[q0("box",{flexDirection:"row",gap:1,flexShrink:0,children:[y("text",{attributes:aj.BOLD,fg:X.primary,wrapMode:"none",flexShrink:0,children:z("automations.title")}),y("text",{fg:X.borderSubtle,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:"\u2500".repeat(240)}),y("text",{fg:G?X.success:X.textMuted,wrapMode:"none",flexShrink:0,children:G?z("automations.holdingDaemon"):z("automations.notHolding")})]}),Q===null?y("box",{paddingTop:1,children:y("text",{fg:X.textMuted,children:z("common.loading")})}):w.length===0?q0("box",{flexDirection:"column",paddingTop:1,gap:1,children:[y("text",{fg:X.textMuted,children:z("automations.empty")}),y("text",{fg:X.text,children:z("automations.emptyHint")})]}):y("box",{flexDirection:"column",marginTop:1,flexGrow:1,gap:0,children:w.map((k,s)=>{let n=s===T;return q0("box",{flexDirection:"row",flexShrink:0,border:!0,borderColor:n?X.borderActive:X.borderSubtle,paddingLeft:1,paddingRight:1,gap:1,...n?{backgroundColor:X.backgroundElement}:{},children:[y("text",{fg:k.enabled?X.text:X.textMuted,attributes:n?aj.BOLD:void 0,wrapMode:"none",flexShrink:1,children:k.name}),y("text",{fg:X.borderSubtle,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:"\u2500".repeat(240)}),y("text",{fg:X.textMuted,wrapMode:"none",flexShrink:1,children:`${GC0(k.repo)} \xB7 ${k.schedule}`}),k.enabled?null:y("text",{fg:X.warning,wrapMode:"none",flexShrink:0,children:`${z("automations.paused")} \xB7`}),y("text",{fg:X.textMuted,wrapMode:"none",flexShrink:0,children:E40(k.nextRunAt,d)})]},k.id)})}),y("box",{flexDirection:"column",marginTop:1,border:!0,borderColor:X.border,padding:1,flexShrink:0,children:E?q0(a5,{children:[q0("box",{flexDirection:"row",justifyContent:"space-between",gap:2,children:[y("text",{fg:X.text,wrapMode:"none",flexShrink:1,flexGrow:1,children:E.prompt}),y("text",{fg:D===E.id?X.textMuted:X.primary,attributes:aj.BOLD,wrapMode:"none",flexShrink:0,onMouseUp:()=>void x(),children:z("automations.runNow")})]}),E.precheck?y("text",{fg:X.textMuted,children:z("automations.precheck",{command:E.precheck.command})}):null,y("text",{attributes:aj.BOLD,fg:X.text,children:z("automations.recentRuns")}),H.length===0?y("text",{fg:X.textMuted,children:z("automations.noRuns")}):H.slice(0,5).map((k)=>{let s=YC0[k.status]??"muted",n=s==="success"?X.success:s==="warning"?X.warning:s==="error"?X.error:X.textMuted;return y("text",{fg:n,children:`#${k.runNumber} ${k.status}${k.error?` \u2014 ${k.error}`:""} ${E40(k.at,d)}`},k.id)})]}):y("text",{fg:X.textMuted,children:z("automations.noSelection")})}),C?y("text",{fg:X.textMuted,children:C}):null]})}var n3,QC0=5000,YC0;var T40=h(async()=>{I2();x1();w0();await w1([P1(),p4(),R5(),p9(),C40()]);n3=p0(o0(),1),YC0={dispatched:"success",skipped_precheck:"muted",skipped_missed:"warning",skipped_unavailable:"warning",dispatch_failed:"error"}});function S40(Z){return $C0[Z]??"parked"}var $C0;var P40=h(()=>{$C0={backlog:"active",in_progress:"active",in_review:"parked",error:"parked",done:"terminal",canceled:"terminal",open:"active",doing:"active",hold:"parked"}});function I40(Z,X,J){let z=Z.find(($)=>$.issues.length>0)?.issues[0]?.id??null;if(X==null)return z;let Q=-1,Y=-1;for(let[$,H]of Z.entries()){let K=H.issues.findIndex((M)=>M.id===X);if(K!==-1){Q=$,Y=K;break}}if(Q===-1)return z;if(J==="up"||J==="down"){let $=Z[Q]?.issues??[],H=J==="up"?Y-1:Y+1;return $[Math.max(0,Math.min(H,$.length-1))]?.id??X}let G=J==="left"?-1:1;for(let $=Q+G;$>=0&&$<Z.length;$+=G){let H=Z[$]?.issues??[];if(H.length===0)continue;return H[Math.min(Y,H.length-1)]?.id??X}return X}function UC0(Z){let X=S40(Z.status);if(X==="terminal")return"done";if(X==="parked")return"parked";if(Z.taskId!==void 0&&Z.taskId!=="")return"in_progress";return"backlog"}function Yx(Z){return Z!==void 0&&HC0.includes(Z)}function x40(Z,X){let J=0;return{columns:Z.map((Q)=>{if(Q.key!=="in_progress")return Q;let Y=[],G=[];for(let $ of Q.issues)if($.taskId!==void 0&&$.taskId!==""&&Yx(X($.taskId)))Y.push($);else G.push($);return J=Y.length,Y.length===0?Q:{...Q,issues:[...Y,...G]}}),attentionCount:J}}function KC0(Z,X){if(Z.created!==X.created)return Z.created<X.created?1:-1;return X.id-Z.id}function y40(Z){let X={backlog:[],in_progress:[],parked:[],done:[]};for(let J of Z)X[UC0(J)].push(J);return qC0.map((J)=>{let z=J==="done"||J==="parked",Q=X[J].sort(KC0);if(!z||Q.length<=Qx)return{key:J,issues:Q,hiddenCount:0};return{key:J,issues:Q.slice(0,Qx),hiddenCount:Q.length-Qx}})}var qC0,Qx=20,HC0;var Gx=h(()=>{P40();qC0=["backlog","in_progress","parked","done"];HC0=["permission_needed","rate_limited","error"]});import{randomBytes as f40}from"crypto";import{existsSync as $x,mkdirSync as VC0,writeFileSync as BC0}from"fs";import{isAbsolute as MC0,join as NC0}from"path";function OC0(Z){if(Z.startsWith('"')&&Z.endsWith('"')||Z.startsWith("'")&&Z.endsWith("'"))return Z.slice(1,-1);return Z}function jC0(Z){let J=`__DOUBLE_BACKSLASH_${f40(8).toString("hex")}__`;return Z.replace(/\\\\/g,J).replace(/\\(.)/g,"$1").replaceAll(J,"\\")}function b40(Z,X=$x){let J=jC0(OC0(Z.trim()));if(!DC0.test(J))return null;if(!MC0(J))return null;return X(J)?J:null}function Wq(Z,X=$x){let J=Z.split(`
703
703
  `).map((Q)=>Q.trim()).filter((Q)=>Q.length>0);if(J.length===0)return null;let z=[];for(let Q of J){let Y=b40(Q,X);if(!Y)return null;z.push(Y)}return z}function jV(Z,X){return WC0.test(Z)?`pdf[${X}]`:`images[${X}]`}function g40(Z,X){if(X.length===0)return Z;let J=X.map((z,Q)=>`${jV(z,Q)}: ${z}`).join(`
704
704
  `);return`${Z}
705
705