@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.
- package/dist/cli/index.js +2 -2
- package/dist/cli/kobe-run.js +2 -2
- package/dist/cli/rove-run.js +2 -2
- package/dist/web-ui/assets/{AppShell-CmceqjY-.js → AppShell-TzCpzcDS.js} +1 -1
- package/dist/web-ui/assets/{Board-DBuYe1Q2.js → Board-72QPdwHn.js} +1 -1
- package/dist/web-ui/assets/{ConfirmDialog-C9xYoPEx.js → ConfirmDialog-CBqd0wMR.js} +1 -1
- package/dist/web-ui/assets/{IssuesPage-D0aXMK3K.js → IssuesPage-BlWjFWpu.js} +1 -1
- package/dist/web-ui/assets/{SettingsPage-GfBeP2sy.js → SettingsPage-DovXUI00.js} +1 -1
- package/dist/web-ui/assets/{ViewToggle-C6Kw_T1E.js → ViewToggle-Bvvh1yLG.js} +1 -1
- package/dist/web-ui/assets/board-BnvucJGQ.js +1 -0
- package/dist/web-ui/assets/{columns-3-Dzac_n1b.js → columns-3-xX5P4LBE.js} +1 -1
- package/dist/web-ui/assets/{desktop-BerzaX7n.js → desktop-CB2NHSKZ.js} +2 -2
- package/dist/web-ui/assets/{index-DEdAoep_.js → index-BccGl3xk.js} +3 -3
- package/dist/web-ui/assets/issues-CduWI37C.js +1 -0
- package/dist/web-ui/assets/routes-bdJ1BCG5.js +1 -0
- package/dist/web-ui/assets/{task._taskId-BOaY4DV_.js → task._taskId-561S2TB3.js} +1 -1
- package/dist/web-ui/assets/{task._taskId-BpThmZkz.js → task._taskId-CXiB2eGU.js} +2 -2
- package/dist/web-ui/assets/{toast-B7pad_QC.js → toast-2mA6GzBq.js} +1 -1
- package/dist/web-ui/assets/{triage-DP1bTLMs.js → triage-DjBy6dI9.js} +1 -1
- package/dist/web-ui/assets/{worktrees-bs_8ANrl.js → worktrees-qGA9B-VY.js} +1 -1
- package/dist/web-ui/index.html +6 -6
- package/package.json +1 -1
- package/dist/web-ui/assets/board-CH4KUmnb.js +0 -1
- package/dist/web-ui/assets/issues-DHu-h5EM.js +0 -1
- package/dist/web-ui/assets/routes-BZCFfJIJ.js +0 -1
package/dist/cli/index.js
CHANGED
|
@@ -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,t$0));while(J.length>0&&(J[J.length-1]??"").trim()==="")J.pop();return J.slice(-r$0)}function QK(Z=nG()){try{let X=JSON.parse(n$0(Z,"utf8"));if(X===null||typeof X!=="object"||Array.isArray(X))return{};return X}catch{return{}}}function sC(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:Hh(Z.tail)};let z=Object.values(J).sort((Q,Y)=>Q.at<Y.at?1:-1).slice(0,s$0);i$0(o$0(X),{recursive:!0}),a$0(X,JSON.stringify(Object.fromEntries(z.map((Q)=>[Q.key,Q])),null,2),"utf8")}var s$0=50,r$0=40,t$0=500,e$0;var YK=h(()=>{W7();e$0=/\x1b\[[0-9;?]*[ -/]*[@-~]|\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)?|\x1b[@-_]/g});var Bh={};t1(Bh,{setRepoLastActiveVendor:()=>gZ,setGlobalDefaultVendor:()=>eC,resolvePreferredVendor:()=>P6,getRepoLastActiveVendor:()=>Vh,getGlobalDefaultVendor:()=>mD});function tC(Z,X){let J=Z?.trim();if(!J)return;if(G7(J)||X.includes(J))return J;return}function Vh(Z){return tC(y5(Kh+Z),A8())}function gZ(Z,X){P3(Kh+Z,X)}function mD(){let Z=A8();return tC(y5("defaultVendor"),Z)??tC(y5("lastSelectedVendor"),Z)}function eC(Z){P3("defaultVendor",Z)}function P6(Z){return(Z?Vh(Z):void 0)??mD()??w4}var Kh="lastActiveVendor.";var I9=h(()=>{P7();i5();a4()});function n8(Z=process.env){return{...Z,...ZE}}var ZE;var mZ=h(()=>{ZE={GIT_OPTIONAL_LOCKS:"0"}});function Mh(Z){return Z>="0"&&Z<="7"}function Wh(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(Mh($)){let H="",K=Y+1;while(K<Z.length&&H.length<3&&Mh(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:Xq0.decode(new Uint8Array(J)),end:Y}}function x9(Z){if(Z.length===0||Z[0]!=='"')return Z;return Wh(Z,0).value}function Oh(Z,X){if(Z[0]==='"'){let z=Wh(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 Nh(Z,X,J){if(X.length===0&&Z.endsWith("/")&&J.startsWith("/"))return Z+J.slice(1);return Z+X+J}function Jq0(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:Nh(Y,$,H),origPath:Nh(Y,G,H)}}}let J=Oh(Z," => ");if(J)return{path:J.neu,origPath:J.orig};return{path:x9(Z)}}function kD(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 $=Oh(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 Dh(Z){if(Z==="-")return null;let X=Number.parseInt(Z,10);return Number.isNaN(X)?null:X}function jh(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 $=Jq0(G);if($.path.length===0)continue;X.push({path:$.path,...$.origPath!==void 0?{origPath:$.origPath}:{},added:Dh(z.slice(0,Q)),deleted:Dh(z.slice(Q+1,Y))})}return X}var Zq0,Xq0;var hD=h(()=>{Zq0=new TextEncoder,Xq0=new TextDecoder});var Fh={};t1(Fh,{sameWorktreeChanges:()=>GK,readWorktreeChanges:()=>Qq0,pickPushedChanges:()=>XE,parsePorcelain:()=>V$});import{spawnSync as zq0}from"child_process";function GK(Z,X){return Z.added===X.added&&Z.deleted===X.deleted}function XE(Z,X){if(!Z)return null;return Z.get(X)??uD}function Qq0(Z){if(!Z)return uD;try{let X=zq0("git",["status","--porcelain=v1"],{cwd:Z,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:n8()});if(X.status!==0||!X.stdout)return uD;return V$(X.stdout)}catch{return uD}}function V$(Z){let X=0,J=0;for(let{x:z,y:Q}of kD(Z))if(z==="D"||Q==="D")J+=1;else X+=1;return{added:X,deleted:J}}var uD;var B$=h(()=>{mZ();hD();uD={added:0,deleted:0}});var Ch={};t1(Ch,{resolveBaseRef:()=>Lh,readBranchSignals:()=>Gq0,parseShortstat:()=>Ah});import{spawnSync as Yq0}from"child_process";function cD(Z,X){try{let J=Yq0("git",[...X],{cwd:Z,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:n8()});return J.status===0?J.stdout.trim():null}catch{return null}}function Lh(Z){let X=cD(Z,["symbolic-ref","--short","refs/remotes/origin/HEAD"]);if(X)return X;for(let J of["origin/main","origin/master","main","master"])if(cD(Z,["rev-parse","--verify","--quiet",J])!==null)return J;return null}function Ah(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 Gq0(Z){if(!Z)return _h;let X=Lh(Z);if(!X)return _h;let J=cD(Z,["rev-list","--count",`${X}..HEAD`]),z=J===null?null:Number.parseInt(J,10),Q=cD(Z,["diff","--shortstat",`${X}...HEAD`]),Y=Q===null?null:Ah(Q);return{baseRef:X,ahead:z!==null&&Number.isNaN(z)?null:z,diff:Y}}var _h;var Eh=h(()=>{mZ();_h={baseRef:null,ahead:null,diff:null}});async function $q0(Z,X,J){let z;try{z=await CC()}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 TC(z.rpc,Z.id,Z.tab,X,J,{engineBin:W})}let Q=Z.tab==="new"?Uh(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 RC(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)qh(Z.id,Q,H);else aC(Z.id,H);else if(!Q)aC(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 JE(Z,X,J,z=qq0){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 qq0,$K;var qK=h(()=>{w3();$7();LD();AD();ED();oH();UD();oC();c8();qq0={deliverHosted:$q0};$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(),oN)),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(),rC))).readPtyExitRecords()}catch{}let Y=Qh(Z);return{tabs:Gh(Y,Z,X,Q,z),running:$h(Y,Z,X)}},deliverPrompt:(Z,X,J)=>JE(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(),Bh));return(Z?J(Z):void 0)??X()},readWorktreeChanges:async(Z)=>(await Promise.resolve().then(() => (B$(),Fh))).readWorktreeChanges(Z),readBranchSignals:async(Z)=>(await Promise.resolve().then(() => (Eh(),Ch))).readBranchSignals(Z),tearDownSession:async(Z)=>{let X=await tG();if(X)try{await SC(X.rpc,AC(await eG(X.rpc),Z))}catch{}finally{X.close()}}}});var lD;var Rh=h(()=>{lD={$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 Sh={};t1(Sh,{repoSlug:()=>EQ,releasePageUrl:()=>qE,recommendedGlobalInstallCommand:()=>YE,isNewerSemver:()=>zE,fetchReleaseSummaries:()=>HK,fetchReleaseNotesRange:()=>$E,fetchReleaseNotes:()=>GE,compareSemver:()=>t2,checkLatestVersion:()=>RQ,breakingVersionsCrossed:()=>UK,UPDATE_SCRIPT_URL:()=>pD,UPDATE_COMMAND:()=>y9,PACKAGE_NAME:()=>QE,CURRENT_VERSION:()=>e1,BREAKING_VERSIONS:()=>kZ});function EQ(){let Z=lD.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 YE(){return`npm install -g ${QE}@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 Hq0(Z){let X=new AbortController,J=setTimeout(()=>X.abort(),dD);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 zE(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:zE(X,e1)};if(TG()&&!Z.force)return null;let J=await Hq0(QE);if(!J)return null;return{current:e1,latest:J,hasUpdate:zE(J,e1)}}function Th(Z){if(typeof Z!=="string")return null;return Z.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function GE(Z){let X=EQ();if(!X)return null;let J=`v${Z}`,z=new AbortController,Q=setTimeout(()=>z.abort(),dD);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 $E(Z){let X=EQ();if(!X)return[];let J=Z.limit??100,z=new AbortController,Q=setTimeout(()=>z.abort(),dD);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=Th($.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(),dD);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 $=Th(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 qE(Z){let X=EQ();if(!X)return null;return`https://github.com/${X}/releases/tag/v${Z}`}var e1,QE,pD="https://raw.githubusercontent.com/Sma1lboy/rove/main/scripts/update.sh",y9,kZ,dD=3000;var R2=h(()=>{Rh();E5();e1=lD.version,QE=lD.name;y9=`curl -fsSL ${pD} | sh`;kZ=[]});var Kq0,CJ;var UE=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 $=Jq0(G);if($.path.length===0)continue;X.push({path:$.path,...$.origPath!==void 0?{origPath:$.origPath}:{},added:Dh(z.slice(0,Q)),deleted:Dh(z.slice(Q+1,Y))})}return X}var Zq0,Xq0;var hD=h(()=>{Zq0=new TextEncoder,Xq0=new TextDecoder});var Fh={};t1(Fh,{sameWorktreeChanges:()=>GK,readWorktreeChanges:()=>Qq0,pickPushedChanges:()=>XE,parsePorcelain:()=>V$});import{spawnSync as zq0}from"child_process";function GK(Z,X){return Z.added===X.added&&Z.deleted===X.deleted}function XE(Z,X){if(!Z)return null;return Z.get(X)??uD}function Qq0(Z){if(!Z)return uD;try{let X=zq0("git",["status","--porcelain=v1"],{cwd:Z,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:n8()});if(X.status!==0||!X.stdout)return uD;return V$(X.stdout)}catch{return uD}}function V$(Z){let X=0,J=0;for(let{x:z,y:Q}of kD(Z))if(z==="D"||Q==="D")J+=1;else X+=1;return{added:X,deleted:J}}var uD;var B$=h(()=>{mZ();hD();uD={added:0,deleted:0}});var Ch={};t1(Ch,{resolveBaseRef:()=>Lh,readBranchSignals:()=>Gq0,parseShortstat:()=>Ah});import{spawnSync as Yq0}from"child_process";function cD(Z,X){try{let J=Yq0("git",[...X],{cwd:Z,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:n8()});return J.status===0?J.stdout.trim():null}catch{return null}}function Lh(Z){let X=cD(Z,["symbolic-ref","--short","refs/remotes/origin/HEAD"]);if(X)return X;for(let J of["origin/main","origin/master","main","master"])if(cD(Z,["rev-parse","--verify","--quiet",J])!==null)return J;return null}function Ah(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 Gq0(Z){if(!Z)return _h;let X=Lh(Z);if(!X)return _h;let J=cD(Z,["rev-list","--count",`${X}..HEAD`]),z=J===null?null:Number.parseInt(J,10),Q=cD(Z,["diff","--shortstat",`${X}...HEAD`]),Y=Q===null?null:Ah(Q);return{baseRef:X,ahead:z!==null&&Number.isNaN(z)?null:z,diff:Y}}var _h;var Eh=h(()=>{mZ();_h={baseRef:null,ahead:null,diff:null}});async function $q0(Z,X,J){let z;try{z=await CC()}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 TC(z.rpc,Z.id,Z.tab,X,J,{engineBin:W})}let Q=Z.tab==="new"?Uh(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 RC(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)qh(Z.id,Q,H);else aC(Z.id,H);else if(!Q)aC(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 JE(Z,X,J,z=qq0){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 qq0,$K;var qK=h(()=>{w3();$7();LD();AD();ED();oH();UD();oC();c8();qq0={deliverHosted:$q0};$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(),oN)),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(),rC))).readPtyExitRecords()}catch{}let Y=Qh(Z);return{tabs:Gh(Y,Z,X,Q,z),running:$h(Y,Z,X)}},deliverPrompt:(Z,X,J)=>JE(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(),Bh));return(Z?J(Z):void 0)??X()},readWorktreeChanges:async(Z)=>(await Promise.resolve().then(() => (B$(),Fh))).readWorktreeChanges(Z),readBranchSignals:async(Z)=>(await Promise.resolve().then(() => (Eh(),Ch))).readBranchSignals(Z),tearDownSession:async(Z)=>{let X=await tG();if(X)try{await SC(X.rpc,AC(await eG(X.rpc),Z))}catch{}finally{X.close()}}}});var lD;var Rh=h(()=>{lD={$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 Sh={};t1(Sh,{repoSlug:()=>EQ,releasePageUrl:()=>qE,recommendedGlobalInstallCommand:()=>YE,isNewerSemver:()=>zE,fetchReleaseSummaries:()=>HK,fetchReleaseNotesRange:()=>$E,fetchReleaseNotes:()=>GE,compareSemver:()=>t2,checkLatestVersion:()=>RQ,breakingVersionsCrossed:()=>UK,UPDATE_SCRIPT_URL:()=>pD,UPDATE_COMMAND:()=>y9,PACKAGE_NAME:()=>QE,CURRENT_VERSION:()=>e1,BREAKING_VERSIONS:()=>kZ});function EQ(){let Z=lD.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 YE(){return`npm install -g ${QE}@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 Hq0(Z){let X=new AbortController,J=setTimeout(()=>X.abort(),dD);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 zE(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:zE(X,e1)};if(TG()&&!Z.force)return null;let J=await Hq0(QE);if(!J)return null;return{current:e1,latest:J,hasUpdate:zE(J,e1)}}function Th(Z){if(typeof Z!=="string")return null;return Z.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function GE(Z){let X=EQ();if(!X)return null;let J=`v${Z}`,z=new AbortController,Q=setTimeout(()=>z.abort(),dD);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 $E(Z){let X=EQ();if(!X)return[];let J=Z.limit??100,z=new AbortController,Q=setTimeout(()=>z.abort(),dD);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=Th($.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(),dD);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 $=Th(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 qE(Z){let X=EQ();if(!X)return null;return`https://github.com/${X}/releases/tag/v${Z}`}var e1,QE,pD="https://raw.githubusercontent.com/Sma1lboy/rove/main/scripts/update.sh",y9,kZ,dD=3000;var R2=h(()=>{Rh();E5();e1=lD.version,QE=lD.name;y9=`curl -fsSL ${pD} | sh`;kZ=[]});var Kq0,CJ;var UE=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);MA0(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 DA0(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 q10(Z){return Z.status==="?"&&Z.path.endsWith("/")}function MA0(Z,X){for(let J of Z){if(!q10(J))continue;J.children=X.filter((z)=>z.startsWith(J.path)).map((z)=>({path:z,status:"?"}))}}async function U10(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 H10(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(vI(Y).map((H)=>[H.path,{added:H.added,deleted:H.deleted}])),$=[];for(let{status:H,path:K}of NA0(Q)){let M=G.get(K);$.push({path:K,status:H,added:M?.added,deleted:M?.deleted})}return $}function NA0(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 DA0(Z,X,J){if(J?.aborted)return null;let z=await IO(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 vI(Z){return jh(Z).map((X)=>({path:X.path,added:X.added,deleted:X.deleted}))}function WA0(Z){let X=[];for(let J of kD(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 K10=h(()=>{hD();tK()});function V10(Z){switch(Z){case"all":return"files.tabs.all";case"changes":return"files.tabs.changes"}}function B10(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 fI=h(()=>{iZ();qq=["all","changes"]});import{spawn as OA0}from"child_process";import{existsSync as jA0}from"fs";import{platform as FA0}from"os";function vj(Z){if(!Z)return;let X=FA0();if(X==="linux"){if(jA0("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){BV("wslview",[Z],()=>{let J=OA0("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 bI=h(()=>{gK()});import{watch as _A0}from"fs";function M10(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 N10(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 D10(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 W10(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 gI(Z,X,J){let z=J==="-"?"\u2212":J;return Z==null?" ".repeat(X):`${z}${Z}`.padStart(X)}function mI(Z,X){let J=new Set(Z);if(J.has(X))J.delete(X);else J.add(X);return J}function O10(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 j10(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 fj(Z,X,J){if(X<=0)return null;if(J<Z)return J;if(J>=Z+X)return J-X+1;return null}function LA0(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 F10(Z,X,J=500){let z=null,Q=null;try{Q=_A0(Z,{recursive:!0},(Y,G)=>{if(G==null)return;if(!LA0(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 bj=()=>{};function kI(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 hI(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)hI(Q,X,J+1,z)}else z.push({kind:"file",path:Q.path,name:Q.name,depth:J})}function _10(Z,X){return Gj(Z,X)}function L10(Z,X=AA0){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 CA0(Z){return`${Z.kind}\x00${Z.path}`}function EA0(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 A10(Z,X){return kI(Z,X,CA0,EA0)}function C10(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 E10(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 AA0;var uI=h(()=>{AA0=new Set});function R10(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 T10(X),X}function T10(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)T10(X)}function gj(Z,X){if(Z.includes("/"))return Z.split("/").map((Q)=>gj(Q,X)).join("/");let J=Z.toLowerCase();if(J==="tab")return"tab";let z=TA0[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):gj($,!0)}`}let Q=J.split("+");if(Q.length===1)return gj(Q[0]??"",!1);let Y=Q[Q.length-1]??"";return`${Q.slice(0,-1).map(($)=>RA0[$.toLowerCase().trim()]??$).join("")} ${gj(Y,!0)}`}var RA0,TA0;var Uq=h(()=>{RA0={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},TA0={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 SA0(Z){return Z.hint?.keys??Z.keys[0]}function x2(Z){let X=vJ(Z);if(!X)return null;let J=SA0(X);return J&&J.length>0?J:null}function PA0(Z){if(Z.keys.length>0)return Z.hint?.keys??Z.keys[0]??null;return Z.prefixKeys?.length?null:Z.hint?.keys??null}function IA0(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 S10(Z,X,J,z){let Q=[],Y=[],G=[],$=new Map;for(let K of Z){let M=PA0(K),W=IA0(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 mj(Z){return Kq(Z.get(Hq,!0))}function kj(Z){let X=!mj(Z);if(Z.set(Hq,X),X)for(let J of Object.values(NV))Z.set(J,!1)}function P10(Z,X){return Kq(Z)&&X!==!0}function I10(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 x10(Z,X){return xA0[Z].flatMap((J)=>{if(X==="always"&&J.always!==!0)return[];let z=x2(J.id);return z?[{cap:z,msg:J.msg}]:[]})}function y10(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,xA0;var DV=h(()=>{Uq();MV();NV={sidebar:"hints.sidebar.used",files:"hints.files.used"};xA0={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 w10.useSyncExternalStore(zT,JT,JT)}var w10;var g6=h(()=>{iZ();iZ();w10=p0(o0(),1)});import{TextAttributes as v10}from"@opentui/core";function cI(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 f10(Z){return Z.split(" + ").map((X)=>H7(X)).join(" + ")}function yA0(Z,X){if(Z.kind==="here")return X("help.here",{surface:bZ("category",cI(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",cI(Z.scope))})}function Vq(Z){let X=B4(),{theme:J}=x0(),z=h0(),Q=F7(),Y=rQ(),G=T2(),$=hj.useMemo(()=>S10(o8,Z.currentScope??null,G.key,Z.reachability),[Y,Z.currentScope,Z.reachability,G.key]),H=()=>Z.onClose?Z.onClose():X.clear(),K=hj.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:v10.BOLD,fg:J.text,children:z("help.title")}),y("text",{fg:J.textMuted,children:Z.currentScope?z("help.focused",{surface:bZ("category",cI(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:v10.BOLD,children:yA0(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:f10(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(f10).join(", ")})`})}):null]},`${D.kind}-${C.binding.id}`)})]},`${D.kind}-${D.scope??j}`))})})]})}var hj;var lI=h(async()=>{Uq();MV();k3();g6();x1();w0();await w1([P1(),p4(),R5()]);hj=p0(o0(),1);Vq.show=(Z,X)=>{let J=aW(),z=J.inputPassthrough?"terminal":X;Z.replace(()=>y(Vq,{currentScope:z,reachability:J}))}});function pI(Z){let X=h0(),J=u3(),z=Ed(),Q=Zi();rQ(),od();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?I10(aW(),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 nd(),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 b10(Z){let{theme:X}=x0(),J=pI({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 uj(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 cj(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=x10(Z.pane,P10(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(),lI()]);Bq=p0(o0(),1)});import{TextAttributes as dI}from"@opentui/core";function g10(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:dI.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:dI.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?dI.BOLD:void 0,wrapMode:"none",onMouseUp:()=>Z.onSelectTab(Y),children:J(V10(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 m10=h(async()=>{Uq();k3();fI();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 wA0}from"@opentui/core";var k10,h10;var u10=h(async()=>{bj();uI();w0();await P1();k10=p0(o0(),1),h10=k10.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:wA0.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=M10(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}${_10(G.path,W)}${K}`}),X.statWidths.added>0?y("text",{fg:J.success,wrapMode:"none",children:gI(G.added,X.statWidths.added,"+")}):null,X.statWidths.deleted>0?y("text",{fg:J.error,wrapMode:"none",children:gI(G.deleted,X.statWidths.deleted,"-")}):null]})]})})});function c10(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 G10(g0,m0);if(m0?.aborted||f0!==B0.current||m.current!==g0)return;w((K1)=>C10(K1,r0)?K1:r0)}else if(L0==="changes"){let r0=n.current==="branch"&&Q0.current!=null,K1=r0?await H10(g0,Q0.current,m0):await $10(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)=>E10($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 U10(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 F10(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:R10(A),[A]),i=v4.useRef([]),t=v4.useMemo(()=>{let L0=[];if(Q==="all"){if(u!=null)hI(u,x,0,L0)}else if(Q==="changes"){if(T!=null)L0.push(...L10(T,x))}let g0=A10(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(()=>D10(t),[t]),U0=Z.paneWidth??z.width,e=v4.useMemo(()=>W10(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)=>mI(g0,L0.path))}let r=v4.useCallback((L0)=>{if(L0.kind==="dir"||L0.path.endsWith("/"))v((g0)=>mI(g0,L0.path));else O0.current(L0.path)},[]),D0=v4.useCallback((L0,g0)=>{j(g0),r(L0)},[r]),z0=uj("files");N1(()=>({enabled:Z.focused??!0,bindings:B10({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;vj(`${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(O10(t,D)),collapseOrParent:()=>{if(Q!=="all")return;o(j10(t,D))}})}));let j0=v4.useRef(null);v4.useEffect(()=>{let L0=j0.current;if(!L0||t.length===0)return;let g0=fj(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(g10,{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:N10(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(h10,{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(cj,{pane:"files"})}):null]})}var v4;var l10=h(async()=>{K10();fI();bI();bj();uI();x1();x7();w0();await w1([t4(),WV(),P1(),p4(),m10(),u10()]);v4=p0(o0(),1)});function d10(Z){let{theme:X,transparentBackground:J}=x0(),z=uW(),Q=q5(),Y=J?X.border:X.borderSubtle,G=Math.max(p10,Q.width-JX),$=Math.max(p10,Math.min(vA0,Math.floor(G/3)));return y("box",{width:$,flexShrink:0,borderColor:z.focused==="files"?X.focusAccent:Y,onMouseUp:()=>z.setFocused("files"),children:y(c10,{worktreePath:Z.worktree,paneWidth:$-2,prBaseRef:Z.prBaseRef,focused:Z.focused,onOpenFile:Z.onOpenFile,onOpenDiff:Z.onOpenDiff,onZenToggle:Z.onZenToggle,onCreatePR:Z.onCreatePR})})}var p10=22,vA0=34;var i10=h(async()=>{rJ();w0();await w1([t4(),vK(),P1(),l10()])});function n10(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?fA0[Q]??"":"";return`${"\u2588".repeat(z)}${Y}`.padEnd(X,"\u2591")}var fA0;var iI=h(()=>{fA0=["","\u258F","\u258E","\u258D","\u258C","\u258B","\u258A","\u2589"]});function aI(Z,X){if(Z==null||Z<=X)return"";let J=new Date(Z),z=`${a10(J.getHours())}:${a10(J.getMinutes())}`;if(Z-X<86400000)return`\u2192 ${z}`;return`\u2192 ${J.getMonth()+1}/${J.getDate()} ${z}`}function o10(Z,X){return Z.windows.map((J)=>({label:J.label,percentText:`${J.percent}%`,resetText:aI(J.resetsAt,X),tone:nI(J.percent)}))}function s10(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:aI(J.resetsAt,X),tone:nI(J.percent)}}function r10(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:n10(z.percent/100,bA0),percentText:`${String(z.percent).padStart(3)}%`,resetText:aI(z.resetsAt,X),tone:nI(z.percent)}))}var bA0=10,nI=(Z)=>Z>=95?"crit":Z>=75?"warn":"ok",a10=(Z)=>String(Z).padStart(2,"0");var oI=h(()=>{iI()});function gA0(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 $=s10(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()}),o10(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 t10(Z){let{theme:X}=x0(),J=q5(),z=X3(J.width),Q=F4(Z.orchestrator.usageSnapshotSignal()),Y=pI({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(gA0,{orchestrator:Z.orchestrator,narrow:z})}),y(b10,{onOpenSettings:z?void 0:Z.onOpenSettings,compact:z})]}):null]})}var e10=h(async()=>{$7();oI();x6();w0();await w1([t4(),WV(),P1()])});import{TextAttributes as mA0}from"@opentui/core";function kA0(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]=Z40.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:mA0.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:kA0($==="cancel"?Z.label??z("common.cancel"):Z.confirmLabel??z("common.confirm"))})},$))})]})}var Z40;var p9=h(async()=>{x1();w0();await w1([P1(),p4(),R5()]);Z40=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 X40(Z){return!Z.dialogOpen&&!Z.settingsOpen&&!Z.worktreesOpen&&!Z.updateOpen}function J40(Z){return Z.settingsOpen&&!Z.dialogOpen}function z40(Z,X,J){let z=hA0.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 hA0;var Q40=h(()=>{hA0=["sidebar","workspace","files"]});function uA0(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 Y40(Z){N1(()=>({enabled:Z,bindings:Gd().map((X)=>({key:X.chord,cmd:()=>uA0(X)}))}))}var G40=h(async()=>{hG();gK();wK();await p4()});function $40(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=z40(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=X40(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:J40(H),bindings:u7(Z.pages.closeSettings)})),Y40(K)}var q40=h(async()=>{g6();x1();Q40();await w1([t4(),lI(),p4(),p9(),G40()])});function H40(Z){return Z==="terminal"?"sidebar":"workspace"}var U40;var sI=h(()=>{U40=[{nav:"kanban",labelKey:"tasks.nav.kanban"},{nav:"automations",labelKey:"tasks.nav.automations"}]});function lj(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=pj.indexOf(Z);if(J<0)return"name";let z=(J+X+pj.length)%pj.length;return pj[z]}function V40(Z){return Z.name.trim().length>0&&Z.repo.trim().length>0&&Z.prompt.trim().length>0&&m$(Z.schedule.trim())}function B40(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 M40(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:cA0(z-X),absolute:dA0(z,X)}}function cA0(Z){let{minutes:X,hours:J,days:z}=lj(Z);if(X<60)return`in ${Math.max(1,X)}m`;if(J<24)return`in ${J}h`;return`in ${z}d`}function dA0(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=lA0[J.getDay()]??"";if(Z-X<518400000)return`${G} ${z}`;return`${G} ${pA0[J.getMonth()]??""} ${J.getDate()}, ${z}`}var pj,K40,lA0,pA0;var N40=h(()=>{hK();pj=["name","repo","prompt","schedule","confirm"];K40={name:"",repo:"",prompt:"",schedule:"0 9 * * MON-FRI"};lA0=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],pA0=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function dj(Z){let X=Z.trim().split(/\s+/).filter(Boolean);return VX.map((J,z)=>X[z]??"*")}function D40(Z){return VX.map((X,J)=>Z[J]??"*").join(" ")}function rI(Z,X){let J=[];for(let z=Z;z<=X;z++)J.push(String(z));return J}function tI(Z,X,J){let z=tA0[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 eI(Z,X){return Math.min(Math.max(Z+X,0),VX.length-1)}function Zx(Z,X,J){let z=dj(Z);if(X<0||X>=VX.length)return D40(z);return z[X]=J,D40(z)}function Xx(Z){let[X,J,z,Q,Y]=dj(Z);if(Q!=="*"||z!=="*")return null;if(X===void 0||J===void 0||Y===void 0)return null;let G=eA0(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 $=rA0[Y.toUpperCase()];if($)return`${$} ${G}`;return null}function eA0(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,iA0,nA0,aA0,oA0,sA0,rA0,tA0;var W40=h(()=>{VX=["minute","hour","dayOfMonth","month","dayOfWeek"];iA0=["*","*/5","*/10","*/15","*/30",...rI(0,59)],nA0=["*","*/2","*/3","*/4","*/6","*/12",...rI(0,23)],aA0=["*",...rI(1,31)],oA0=["*","JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"],sA0=["*","MON-FRI","SAT,SUN","MON","TUE","WED","THU","FRI","SAT","SUN"],rA0={MON:"Mondays",TUE:"Tuesdays",WED:"Wednesdays",THU:"Thursdays",FRI:"Fridays",SAT:"Saturdays",SUN:"Sundays"};tA0={minute:iA0,hour:nA0,dayOfMonth:aA0,month:oA0,dayOfWeek:sA0}});function Jx(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 j40(Z,X){let J=X==="archived";return Z.filter((z)=>z.archived===J)}function F40(Z,X){let J=O40(X)-O40(Z);if(J!==0)return J;return String(X.id).localeCompare(String(Z.id))}function O40(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 ij}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:$?ij.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:ij.BOLD|ij.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?ij.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(()=>({...K40,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),_=dj(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[e4(d,Z.repos.length)];if(!k)return;M(e4(d,Z.repos.length)),T({repo:k})};function E(){if(V40(Y)){Z.onSubmit({name:Y.name.trim(),repo:Y.repo.trim(),prompt:Y.prompt.trim(),schedule:Y.schedule.trim()}),J.clear();return}let d=B40(Y);if(d)H(d),D(z(`automations.missing.${d}`))}let S=M40(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)=>eI(d,-1))},{key:"right",cmd:()=>C((d)=>eI(d,1))},{key:"up",cmd:()=>{let d=VX[j];if(!d)return;T({schedule:Zx(Y.schedule,j,tI(d,_[j]??"*",1))})}},{key:"down",cmd:()=>{let d=VX[j];if(!d)return;T({schedule:Zx(Y.schedule,j,tI(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:`${Xx(Y.schedule)??""}${Xx(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,_40;var L40=h(async()=>{N40();W40();I2();y2();x1();w0();await w1([P1(),p4(),R5(),BX()]);Dq=p0(o0(),1);_40={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 nj}from"@opentui/core";function A40(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}=lj(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 zC0(Z){return Z.split("/").filter(Boolean).pop()??Z}function C40(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,XC0);return()=>{k=!0,clearInterval(Q0)}},[Z.orchestrator,M]);let w=Q??[],[T,R]=n3.useState(0);n3.useEffect(()=>{R((k)=>e4(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 _40.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)=>e4(k+1,w.length))},{key:"down",cmd:()=>R((k)=>e4(k+1,w.length))},{key:"k",cmd:()=>R((k)=>e4(k-1,w.length))},{key:"up",cmd:()=>R((k)=>e4(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:nj.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?nj.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:`${zC0(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:A40(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:nj.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:nj.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=JC0[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}`:""} ${A40(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,XC0=5000,JC0;var E40=h(async()=>{I2();x1();w0();await w1([P1(),p4(),R5(),p9(),L40()]);n3=p0(o0(),1),JC0={dispatched:"success",skipped_precheck:"muted",skipped_missed:"warning",skipped_unavailable:"warning",dispatch_failed:"error"}});function R40(Z){return QC0[Z]??"parked"}var QC0;var T40=h(()=>{QC0={backlog:"active",in_progress:"active",in_review:"parked",error:"parked",done:"terminal",canceled:"terminal",open:"active",doing:"active",hold:"parked"}});function S40(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 GC0(Z){let X=R40(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 Qx(Z){return Z!==void 0&&$C0.includes(Z)}function P40(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!==""&&Qx(X($.taskId)))Y.push($);else G.push($);return J=Y.length,Y.length===0?Q:{...Q,issues:[...Y,...G]}}),attentionCount:J}}function qC0(Z,X){if(Z.created!==X.created)return Z.created<X.created?1:-1;return X.id-Z.id}function I40(Z){let X={backlog:[],in_progress:[],parked:[],done:[]};for(let J of Z)X[GC0(J)].push(J);return YC0.map((J)=>{let z=J==="done"||J==="parked",Q=X[J].sort(qC0);if(!z||Q.length<=zx)return{key:J,issues:Q,hiddenCount:0};return{key:J,issues:Q.slice(0,zx),hiddenCount:Q.length-zx}})}var YC0,zx=20,$C0;var Yx=h(()=>{T40();YC0=["backlog","in_progress","parked","done"];$C0=["permission_needed","rate_limited","error"]});import{randomBytes as w40}from"crypto";import{existsSync as Gx,mkdirSync as UC0,writeFileSync as HC0}from"fs";import{isAbsolute as KC0,join as VC0}from"path";function NC0(Z){if(Z.startsWith('"')&&Z.endsWith('"')||Z.startsWith("'")&&Z.endsWith("'"))return Z.slice(1,-1);return Z}function DC0(Z){let J=`__DOUBLE_BACKSLASH_${w40(8).toString("hex")}__`;return Z.replace(/\\\\/g,J).replace(/\\(.)/g,"$1").replaceAll(J,"\\")}function v40(Z,X=Gx){let J=DC0(NC0(Z.trim()));if(!BC0.test(J))return null;if(!KC0(J))return null;return X(J)?J:null}function Wq(Z,X=Gx){let J=Z.split(`
|
|
702
|
+
`))Q++;return Q}function vI(Z){return jh(Z).map((X)=>({path:X.path,added:X.added,deleted:X.deleted}))}function WA0(Z){let X=[];for(let J of kD(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 K10=h(()=>{hD();tK()});function V10(Z){switch(Z){case"all":return"files.tabs.all";case"changes":return"files.tabs.changes"}}function B10(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 fI=h(()=>{iZ();qq=["all","changes"]});import{spawn as OA0}from"child_process";import{existsSync as jA0}from"fs";import{platform as FA0}from"os";function vj(Z){if(!Z)return;let X=FA0();if(X==="linux"){if(jA0("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){BV("wslview",[Z],()=>{let J=OA0("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 bI=h(()=>{gK()});import{watch as _A0}from"fs";function M10(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 N10(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 D10(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 W10(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 gI(Z,X,J){let z=J==="-"?"\u2212":J;return Z==null?" ".repeat(X):`${z}${Z}`.padStart(X)}function mI(Z,X){let J=new Set(Z);if(J.has(X))J.delete(X);else J.add(X);return J}function O10(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 j10(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 fj(Z,X,J){if(X<=0)return null;if(J<Z)return J;if(J>=Z+X)return J-X+1;return null}function LA0(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 F10(Z,X,J=500){let z=null,Q=null;try{Q=_A0(Z,{recursive:!0},(Y,G)=>{if(G==null)return;if(!LA0(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 bj=()=>{};function kI(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 hI(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)hI(Q,X,J+1,z)}else z.push({kind:"file",path:Q.path,name:Q.name,depth:J})}function _10(Z,X){return Gj(Z,X)}function L10(Z,X=AA0){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 CA0(Z){return`${Z.kind}\x00${Z.path}`}function EA0(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 A10(Z,X){return kI(Z,X,CA0,EA0)}function C10(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 E10(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 AA0;var uI=h(()=>{AA0=new Set});function R10(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 T10(X),X}function T10(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)T10(X)}function gj(Z,X){if(Z.includes("/"))return Z.split("/").map((Q)=>gj(Q,X)).join("/");let J=Z.toLowerCase();if(J==="tab")return"tab";let z=TA0[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):gj($,!0)}`}let Q=J.split("+");if(Q.length===1)return gj(Q[0]??"",!1);let Y=Q[Q.length-1]??"";return`${Q.slice(0,-1).map(($)=>RA0[$.toLowerCase().trim()]??$).join("")} ${gj(Y,!0)}`}var RA0,TA0;var Uq=h(()=>{RA0={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},TA0={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 SA0(Z){return Z.hint?.keys??Z.keys[0]}function x2(Z){let X=vJ(Z);if(!X)return null;let J=SA0(X);return J&&J.length>0?J:null}function PA0(Z){if(Z.keys.length>0)return Z.hint?.keys??Z.keys[0]??null;return Z.prefixKeys?.length?null:Z.hint?.keys??null}function IA0(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 S10(Z,X,J,z){let Q=[],Y=[],G=[],$=new Map;for(let K of Z){let M=PA0(K),W=IA0(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 mj(Z){return Kq(Z.get(Hq,!0))}function kj(Z){let X=!mj(Z);if(Z.set(Hq,X),X)for(let J of Object.values(NV))Z.set(J,!1)}function P10(Z,X){return Kq(Z)&&X!==!0}function I10(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 x10(Z,X){return xA0[Z].flatMap((J)=>{if(X==="always"&&J.always!==!0)return[];let z=x2(J.id);return z?[{cap:z,msg:J.msg}]:[]})}function y10(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,xA0;var DV=h(()=>{Uq();MV();NV={sidebar:"hints.sidebar.used",files:"hints.files.used"};xA0={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 w10.useSyncExternalStore(zT,JT,JT)}var w10;var g6=h(()=>{iZ();iZ();w10=p0(o0(),1)});import{TextAttributes as v10}from"@opentui/core";function cI(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 f10(Z){return Z.split(" + ").map((X)=>H7(X)).join(" + ")}function yA0(Z,X){if(Z.kind==="here")return X("help.here",{surface:bZ("category",cI(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",cI(Z.scope))})}function Vq(Z){let X=B4(),{theme:J}=x0(),z=h0(),Q=F7(),Y=rQ(),G=T2(),$=hj.useMemo(()=>S10(o8,Z.currentScope??null,G.key,Z.reachability),[Y,Z.currentScope,Z.reachability,G.key]),H=()=>Z.onClose?Z.onClose():X.clear(),K=hj.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:v10.BOLD,fg:J.text,children:z("help.title")}),y("text",{fg:J.textMuted,children:Z.currentScope?z("help.focused",{surface:bZ("category",cI(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:v10.BOLD,children:yA0(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:f10(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(f10).join(", ")})`})}):null]},`${D.kind}-${C.binding.id}`)})]},`${D.kind}-${D.scope??j}`))})})]})}var hj;var lI=h(async()=>{Uq();MV();k3();g6();x1();w0();await w1([P1(),p4(),R5()]);hj=p0(o0(),1);Vq.show=(Z,X)=>{let J=aW(),z=J.inputPassthrough?"terminal":X;Z.replace(()=>y(Vq,{currentScope:z,reachability:J}))}});function pI(Z){let X=h0(),J=u3(),z=Ed(),Q=Zi();rQ(),od();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?I10(aW(),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 nd(),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 b10(Z){let{theme:X}=x0(),J=pI({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 uj(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 cj(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=x10(Z.pane,P10(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(),lI()]);Bq=p0(o0(),1)});import{TextAttributes as dI}from"@opentui/core";function g10(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:dI.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:dI.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?dI.BOLD:void 0,wrapMode:"none",onMouseUp:()=>Z.onSelectTab(Y),children:J(V10(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 m10=h(async()=>{Uq();k3();fI();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 wA0}from"@opentui/core";var k10,h10;var u10=h(async()=>{bj();uI();w0();await P1();k10=p0(o0(),1),h10=k10.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:wA0.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=M10(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}${_10(G.path,W)}${K}`}),X.statWidths.added>0?y("text",{fg:J.success,wrapMode:"none",children:gI(G.added,X.statWidths.added,"+")}):null,X.statWidths.deleted>0?y("text",{fg:J.error,wrapMode:"none",children:gI(G.deleted,X.statWidths.deleted,"-")}):null]})]})})});function c10(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 G10(g0,m0);if(m0?.aborted||f0!==B0.current||m.current!==g0)return;w((K1)=>C10(K1,r0)?K1:r0)}else if(L0==="changes"){let r0=n.current==="branch"&&Q0.current!=null,K1=r0?await H10(g0,Q0.current,m0):await $10(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)=>E10($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 U10(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 F10(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:R10(A),[A]),i=v4.useRef([]),t=v4.useMemo(()=>{let L0=[];if(Q==="all"){if(u!=null)hI(u,x,0,L0)}else if(Q==="changes"){if(T!=null)L0.push(...L10(T,x))}let g0=A10(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(()=>D10(t),[t]),U0=Z.paneWidth??z.width,e=v4.useMemo(()=>W10(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)=>mI(g0,L0.path))}let r=v4.useCallback((L0)=>{if(L0.kind==="dir"||L0.path.endsWith("/"))v((g0)=>mI(g0,L0.path));else O0.current(L0.path)},[]),D0=v4.useCallback((L0,g0)=>{j(g0),r(L0)},[r]),z0=uj("files");N1(()=>({enabled:Z.focused??!0,bindings:B10({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;vj(`${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(O10(t,D)),collapseOrParent:()=>{if(Q!=="all")return;o(j10(t,D))}})}));let j0=v4.useRef(null);v4.useEffect(()=>{let L0=j0.current;if(!L0||t.length===0)return;let g0=fj(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(g10,{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:N10(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(h10,{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(cj,{pane:"files"})}):null]})}var v4;var l10=h(async()=>{K10();fI();bI();bj();uI();x1();x7();w0();await w1([t4(),WV(),P1(),p4(),m10(),u10()]);v4=p0(o0(),1)});function d10(Z){let{theme:X,transparentBackground:J}=x0(),z=uW(),Q=q5(),Y=J?X.border:X.borderSubtle,G=Math.max(p10,Q.width-JX),$=Math.max(p10,Math.min(vA0,Math.floor(G/3)));return y("box",{width:$,flexShrink:0,borderColor:z.focused==="files"?X.focusAccent:Y,onMouseUp:()=>z.setFocused("files"),children:y(c10,{worktreePath:Z.worktree,paneWidth:$-2,prBaseRef:Z.prBaseRef,focused:Z.focused,onOpenFile:Z.onOpenFile,onOpenDiff:Z.onOpenDiff,onZenToggle:Z.onZenToggle,onCreatePR:Z.onCreatePR})})}var p10=22,vA0=34;var i10=h(async()=>{rJ();w0();await w1([t4(),vK(),P1(),l10()])});function n10(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?fA0[Q]??"":"";return`${"\u2588".repeat(z)}${Y}`.padEnd(X,"\u2591")}var fA0;var iI=h(()=>{fA0=["","\u258F","\u258E","\u258D","\u258C","\u258B","\u258A","\u2589"]});function aI(Z,X){if(Z==null||Z<=X)return"";let J=new Date(Z),z=`${a10(J.getHours())}:${a10(J.getMinutes())}`;if(Z-X<86400000)return`\u2192 ${z}`;return`\u2192 ${J.getMonth()+1}/${J.getDate()} ${z}`}function o10(Z,X){return Z.windows.map((J)=>({label:J.label,percentText:`${J.percent}%`,resetText:aI(J.resetsAt,X),tone:nI(J.percent)}))}function s10(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:aI(J.resetsAt,X),tone:nI(J.percent)}}function r10(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:n10(z.percent/100,bA0),percentText:`${String(z.percent).padStart(3)}%`,resetText:aI(z.resetsAt,X),tone:nI(z.percent)}))}var bA0=10,nI=(Z)=>Z>=95?"crit":Z>=75?"warn":"ok",a10=(Z)=>String(Z).padStart(2,"0");var oI=h(()=>{iI()});function gA0(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 $=s10(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()}),o10(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 t10(Z){let{theme:X}=x0(),J=q5(),z=X3(J.width),Q=F4(Z.orchestrator.usageSnapshotSignal()),Y=pI({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(gA0,{orchestrator:Z.orchestrator,narrow:z})}),y(b10,{onOpenSettings:z?void 0:Z.onOpenSettings,compact:z})]}):null]})}var e10=h(async()=>{$7();oI();x6();w0();await w1([t4(),WV(),P1()])});import{TextAttributes as mA0}from"@opentui/core";function kA0(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]=Z40.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:mA0.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:kA0($==="cancel"?Z.label??z("common.cancel"):Z.confirmLabel??z("common.confirm"))})},$))})]})}var Z40;var p9=h(async()=>{x1();w0();await w1([P1(),p4(),R5()]);Z40=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 X40(Z){return!Z.dialogOpen&&!Z.settingsOpen&&!Z.worktreesOpen&&!Z.updateOpen}function J40(Z){return Z.settingsOpen&&!Z.dialogOpen}function z40(Z,X,J){let z=hA0.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 hA0;var Q40=h(()=>{hA0=["sidebar","workspace","files"]});function uA0(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 Y40(Z){N1(()=>({enabled:Z,bindings:Gd().map((X)=>({key:X.chord,cmd:()=>uA0(X)}))}))}var G40=h(async()=>{hG();gK();wK();await p4()});function $40(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=z40(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=X40(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:J40(H),bindings:u7(Z.pages.closeSettings)})),Y40(K)}var q40=h(async()=>{g6();x1();Q40();await w1([t4(),lI(),p4(),p9(),G40()])});function H40(Z){return Z==="terminal"?"sidebar":"workspace"}var U40;var sI=h(()=>{U40=[{nav:"kanban",labelKey:"tasks.nav.kanban"},{nav:"automations",labelKey:"tasks.nav.automations"}]});function lj(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=pj.indexOf(Z);if(J<0)return"name";let z=(J+X+pj.length)%pj.length;return pj[z]}function V40(Z){return Z.name.trim().length>0&&Z.repo.trim().length>0&&Z.prompt.trim().length>0&&m$(Z.schedule.trim())}function B40(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 M40(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:cA0(z-X),absolute:dA0(z,X)}}function cA0(Z){let{minutes:X,hours:J,days:z}=lj(Z);if(X<60)return`in ${Math.max(1,X)}m`;if(J<24)return`in ${J}h`;return`in ${z}d`}function dA0(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=lA0[J.getDay()]??"";if(Z-X<518400000)return`${G} ${z}`;return`${G} ${pA0[J.getMonth()]??""} ${J.getDate()}, ${z}`}var pj,K40,lA0,pA0;var N40=h(()=>{hK();pj=["name","repo","prompt","schedule","confirm"];K40={name:"",repo:"",prompt:"",schedule:"0 9 * * MON-FRI"};lA0=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],pA0=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function dj(Z){let X=Z.trim().split(/\s+/).filter(Boolean);return VX.map((J,z)=>X[z]??"*")}function D40(Z){return VX.map((X,J)=>Z[J]??"*").join(" ")}function rI(Z,X){let J=[];for(let z=Z;z<=X;z++)J.push(String(z));return J}function tI(Z,X,J){let z=tA0[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 eI(Z,X){return Math.min(Math.max(Z+X,0),VX.length-1)}function Zx(Z,X,J){let z=dj(Z);if(X<0||X>=VX.length)return D40(z);return z[X]=J,D40(z)}function Xx(Z){let[X,J,z,Q,Y]=dj(Z);if(Q!=="*"||z!=="*")return null;if(X===void 0||J===void 0||Y===void 0)return null;let G=eA0(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 $=rA0[Y.toUpperCase()];if($)return`${$} ${G}`;return null}function eA0(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,iA0,nA0,aA0,oA0,sA0,rA0,tA0;var W40=h(()=>{VX=["minute","hour","dayOfMonth","month","dayOfWeek"];iA0=["*","*/5","*/10","*/15","*/30",...rI(0,59)],nA0=["*","*/2","*/3","*/4","*/6","*/12",...rI(0,23)],aA0=["*",...rI(1,31)],oA0=["*","JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"],sA0=["*","MON-FRI","SAT,SUN","MON","TUE","WED","THU","FRI","SAT","SUN"],rA0={MON:"Mondays",TUE:"Tuesdays",WED:"Wednesdays",THU:"Thursdays",FRI:"Fridays",SAT:"Saturdays",SUN:"Sundays"};tA0={minute:iA0,hour:nA0,dayOfMonth:aA0,month:oA0,dayOfWeek:sA0}});function Jx(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 j40(Z,X){let J=X==="archived";return Z.filter((z)=>z.archived===J)}function F40(Z,X){let J=O40(X)-O40(Z);if(J!==0)return J;return String(X.id).localeCompare(String(Z.id))}function O40(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 ij}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:$?ij.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:ij.BOLD|ij.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?ij.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(()=>({...K40,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),_=dj(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[e4(d,Z.repos.length)];if(!k)return;M(e4(d,Z.repos.length)),T({repo:k})};function E(){if(V40(Y)){Z.onSubmit({name:Y.name.trim(),repo:Y.repo.trim(),prompt:Y.prompt.trim(),schedule:Y.schedule.trim()}),J.clear();return}let d=B40(Y);if(d)H(d),D(z(`automations.missing.${d}`))}let S=M40(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)=>eI(d,-1))},{key:"right",cmd:()=>C((d)=>eI(d,1))},{key:"up",cmd:()=>{let d=VX[j];if(!d)return;T({schedule:Zx(Y.schedule,j,tI(d,_[j]??"*",1))})}},{key:"down",cmd:()=>{let d=VX[j];if(!d)return;T({schedule:Zx(Y.schedule,j,tI(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:`${Xx(Y.schedule)??""}${Xx(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,_40;var L40=h(async()=>{N40();W40();I2();y2();x1();w0();await w1([P1(),p4(),R5(),BX()]);Dq=p0(o0(),1);_40={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 nj}from"@opentui/core";function A40(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}=lj(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 zC0(Z){return Z.split("/").filter(Boolean).pop()??Z}function C40(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,XC0);return()=>{k=!0,clearInterval(Q0)}},[Z.orchestrator,M]);let w=Q??[],[T,R]=n3.useState(0);n3.useEffect(()=>{R((k)=>e4(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 _40.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)=>e4(k+1,w.length))},{key:"down",cmd:()=>R((k)=>e4(k+1,w.length))},{key:"k",cmd:()=>R((k)=>e4(k-1,w.length))},{key:"up",cmd:()=>R((k)=>e4(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:nj.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?nj.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:`${zC0(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:A40(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:nj.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:nj.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=JC0[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}`:""} ${A40(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,XC0=5000,JC0;var E40=h(async()=>{I2();x1();w0();await w1([P1(),p4(),R5(),p9(),L40()]);n3=p0(o0(),1),JC0={dispatched:"success",skipped_precheck:"muted",skipped_missed:"warning",skipped_unavailable:"warning",dispatch_failed:"error"}});function R40(Z){return QC0[Z]??"parked"}var QC0;var T40=h(()=>{QC0={backlog:"active",in_progress:"active",in_review:"parked",error:"parked",done:"terminal",canceled:"terminal",open:"active",doing:"active",hold:"parked"}});function S40(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 GC0(Z){let X=R40(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 Qx(Z){return Z!==void 0&&$C0.includes(Z)}function P40(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!==""&&Qx(X($.taskId)))Y.push($);else G.push($);return J=Y.length,Y.length===0?Q:{...Q,issues:[...Y,...G]}}),attentionCount:J}}function qC0(Z,X){if(Z.created!==X.created)return Z.created<X.created?1:-1;return X.id-Z.id}function I40(Z){let X={backlog:[],in_progress:[],parked:[],done:[]};for(let J of Z)X[GC0(J)].push(J);return YC0.map((J)=>{let z=J==="done"||J==="parked",Q=X[J].sort(qC0);if(!z||Q.length<=zx)return{key:J,issues:Q,hiddenCount:0};return{key:J,issues:Q.slice(0,zx),hiddenCount:Q.length-zx}})}var YC0,zx=20,$C0;var Yx=h(()=>{T40();YC0=["backlog","in_progress","parked","done"];$C0=["permission_needed","rate_limited","error"]});import{randomBytes as w40}from"crypto";import{existsSync as Gx,mkdirSync as UC0,writeFileSync as HC0}from"fs";import{isAbsolute as KC0,join as VC0}from"path";function NC0(Z){if(Z.startsWith('"')&&Z.endsWith('"')||Z.startsWith("'")&&Z.endsWith("'"))return Z.slice(1,-1);return Z}function DC0(Z){let J=`__DOUBLE_BACKSLASH_${w40(8).toString("hex")}__`;return Z.replace(/\\\\/g,J).replace(/\\(.)/g,"$1").replaceAll(J,"\\")}function v40(Z,X=Gx){let J=DC0(NC0(Z.trim()));if(!BC0.test(J))return null;if(!KC0(J))return null;return X(J)?J:null}function Wq(Z,X=Gx){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=v40(Q,X);if(!Y)return null;z.push(Y)}return z}function jV(Z,X){return MC0.test(Z)?`pdf[${X}]`:`images[${X}]`}function f40(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
|
|