@sma1lboy/kobe 0.8.198 → 0.8.199

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/dist/cli/index.js +2 -2
  2. package/dist/cli/kobe-run.js +2 -2
  3. package/dist/cli/rove-run.js +2 -2
  4. package/dist/web-ui/assets/{AppShell-CmceqjY-.js → AppShell-TzCpzcDS.js} +1 -1
  5. package/dist/web-ui/assets/{Board-DBuYe1Q2.js → Board-72QPdwHn.js} +1 -1
  6. package/dist/web-ui/assets/{ConfirmDialog-C9xYoPEx.js → ConfirmDialog-CBqd0wMR.js} +1 -1
  7. package/dist/web-ui/assets/{IssuesPage-D0aXMK3K.js → IssuesPage-BlWjFWpu.js} +1 -1
  8. package/dist/web-ui/assets/{SettingsPage-GfBeP2sy.js → SettingsPage-DovXUI00.js} +1 -1
  9. package/dist/web-ui/assets/{ViewToggle-C6Kw_T1E.js → ViewToggle-Bvvh1yLG.js} +1 -1
  10. package/dist/web-ui/assets/board-BnvucJGQ.js +1 -0
  11. package/dist/web-ui/assets/{columns-3-Dzac_n1b.js → columns-3-xX5P4LBE.js} +1 -1
  12. package/dist/web-ui/assets/{desktop-BerzaX7n.js → desktop-CB2NHSKZ.js} +2 -2
  13. package/dist/web-ui/assets/{index-DEdAoep_.js → index-BccGl3xk.js} +3 -3
  14. package/dist/web-ui/assets/issues-CduWI37C.js +1 -0
  15. package/dist/web-ui/assets/routes-bdJ1BCG5.js +1 -0
  16. package/dist/web-ui/assets/{task._taskId-BOaY4DV_.js → task._taskId-561S2TB3.js} +1 -1
  17. package/dist/web-ui/assets/{task._taskId-BpThmZkz.js → task._taskId-CXiB2eGU.js} +2 -2
  18. package/dist/web-ui/assets/{toast-B7pad_QC.js → toast-2mA6GzBq.js} +1 -1
  19. package/dist/web-ui/assets/{triage-DP1bTLMs.js → triage-DjBy6dI9.js} +1 -1
  20. package/dist/web-ui/assets/{worktrees-bs_8ANrl.js → worktrees-qGA9B-VY.js} +1 -1
  21. package/dist/web-ui/index.html +6 -6
  22. package/package.json +1 -1
  23. package/dist/web-ui/assets/board-CH4KUmnb.js +0 -1
  24. package/dist/web-ui/assets/issues-DHu-h5EM.js +0 -1
  25. package/dist/web-ui/assets/routes-BZCFfJIJ.js +0 -1
@@ -79,7 +79,7 @@ You were spawned by Rove task ${J}. When the work is finished, send your outcome
79
79
  `).split(`
80
80
  `).map((z)=>(z.split("\r").pop()??"").slice(0,Xq0));while(J.length>0&&(J[J.length-1]??"").trim()==="")J.pop();return J.slice(-Zq0)}function QK(Z=nG()){try{let X=JSON.parse(s$0(Z,"utf8"));if(X===null||typeof X!=="object"||Array.isArray(X))return{};return X}catch{return{}}}function rC(Z,X=nG()){if(Z.key.startsWith("::"))return;if(Z.exit.code===0&&Z.exit.signal===null)return;let J=QK(X);J[Z.key]={key:Z.key,pid:Z.pid,code:Z.exit.code,signal:Z.exit.signal,at:Z.exit.at,tail:Vh(Z.tail)};let z=Object.values(J).sort((Q,Y)=>Q.at<Y.at?1:-1).slice(0,e$0);o$0(t$0(X),{recursive:!0}),r$0(X,JSON.stringify(Object.fromEntries(z.map((Q)=>[Q.key,Q])),null,2),"utf8")}var e$0=50,Zq0=40,Xq0=500,Jq0;var YK=h(()=>{W7();Jq0=/\x1b\[[0-9;?]*[ -/]*[@-~]|\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)?|\x1b[@-_]/g});var Nh={};t1(Nh,{setRepoLastActiveVendor:()=>gZ,setGlobalDefaultVendor:()=>ZE,resolvePreferredVendor:()=>P6,getRepoLastActiveVendor:()=>Mh,getGlobalDefaultVendor:()=>kD});function eC(Z,X){let J=Z?.trim();if(!J)return;if(G7(J)||X.includes(J))return J;return}function Mh(Z){return eC(y5(Bh+Z),A8())}function gZ(Z,X){P3(Bh+Z,X)}function kD(){let Z=A8();return eC(y5("defaultVendor"),Z)??eC(y5("lastSelectedVendor"),Z)}function ZE(Z){P3("defaultVendor",Z)}function P6(Z){return(Z?Mh(Z):void 0)??kD()??w4}var Bh="lastActiveVendor.";var I9=h(()=>{P7();i5();a4()});function n8(Z=process.env){return{...Z,...XE}}var XE;var mZ=h(()=>{XE={GIT_OPTIONAL_LOCKS:"0"}});function Dh(Z){return Z>="0"&&Z<="7"}function jh(Z,X){let J=[],z="",Q=()=>{if(z.length>0){for(let G of zq0.encode(z))J.push(G);z=""}},Y=X+1;while(Y<Z.length){let G=Z[Y];if(G==='"'){Y++;break}if(G==="\\"){let $=Z[Y+1];if($===void 0){z+="\\",Y++;continue}switch($){case"a":Q(),J.push(7),Y+=2;break;case"b":Q(),J.push(8),Y+=2;break;case"t":Q(),J.push(9),Y+=2;break;case"n":Q(),J.push(10),Y+=2;break;case"v":Q(),J.push(11),Y+=2;break;case"f":Q(),J.push(12),Y+=2;break;case"r":Q(),J.push(13),Y+=2;break;case'"':z+='"',Y+=2;break;case"\\":z+="\\",Y+=2;break;default:if(Dh($)){let H="",K=Y+1;while(K<Z.length&&H.length<3&&Dh(Z[K]))H+=Z[K],K++;Q(),J.push(Number.parseInt(H,8)&255),Y=K}else z+=$,Y+=2;break}}else z+=G,Y++}return Q(),{value:Qq0.decode(new Uint8Array(J)),end:Y}}function x9(Z){if(Z.length===0||Z[0]!=='"')return Z;return jh(Z,0).value}function Fh(Z,X){if(Z[0]==='"'){let z=jh(Z,0);if(Z.startsWith(X,z.end))return{orig:z.value,neu:x9(Z.slice(z.end+X.length))};return null}let J=Z.indexOf(X);if(J<0)return null;return{orig:Z.slice(0,J),neu:x9(Z.slice(J+X.length))}}function Wh(Z,X,J){if(X.length===0&&Z.endsWith("/")&&J.startsWith("/"))return Z+J.slice(1);return Z+X+J}function Yq0(Z){let X=Z.indexOf("{");if(X>=0){let z=Z.indexOf("}",X),Q=Z.indexOf(" => ",X);if(z>X&&Q>=0&&Q<z){let Y=Z.slice(0,X),G=Z.slice(X+1,Q),$=Z.slice(Q+4,z),H=Z.slice(z+1);return{path:Wh(Y,$,H),origPath:Wh(Y,G,H)}}}let J=Fh(Z," => ");if(J)return{path:J.neu,origPath:J.orig};return{path:x9(Z)}}function hD(Z){let X=[];for(let J of Z.split(`
81
81
  `)){let z=J.replace(/\r$/,"");if(z.length<4)continue;if(z.startsWith("##"))continue;let Q=z[0],Y=z[1];if(z[2]!==" ")continue;let G=z.slice(3);if(Q==="R"||Q==="C"||Y==="R"||Y==="C"){let $=Fh(G," -> ");if($){X.push({x:Q,y:Y,path:$.neu,origPath:$.orig});continue}}X.push({x:Q,y:Y,path:x9(G)})}return X}function Oh(Z){if(Z==="-")return null;let X=Number.parseInt(Z,10);return Number.isNaN(X)?null:X}function _h(Z){let X=[];for(let J of Z.split(`
82
- `)){let z=J.replace(/\r$/,"");if(z.length===0)continue;let Q=z.indexOf("\t");if(Q<0)continue;let Y=z.indexOf("\t",Q+1);if(Y<0)continue;let G=z.slice(Y+1);if(G.length===0)continue;let $=Yq0(G);if($.path.length===0)continue;X.push({path:$.path,...$.origPath!==void 0?{origPath:$.origPath}:{},added:Oh(z.slice(0,Q)),deleted:Oh(z.slice(Q+1,Y))})}return X}var zq0,Qq0;var uD=h(()=>{zq0=new TextEncoder,Qq0=new TextDecoder});var Lh={};t1(Lh,{sameWorktreeChanges:()=>GK,readWorktreeChanges:()=>$q0,pickPushedChanges:()=>JE,parsePorcelain:()=>V$});import{spawnSync as Gq0}from"child_process";function GK(Z,X){return Z.added===X.added&&Z.deleted===X.deleted}function JE(Z,X){if(!Z)return null;return Z.get(X)??cD}function $q0(Z){if(!Z)return cD;try{let X=Gq0("git",["status","--porcelain=v1"],{cwd:Z,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:n8()});if(X.status!==0||!X.stdout)return cD;return V$(X.stdout)}catch{return cD}}function V$(Z){let X=0,J=0;for(let{x:z,y:Q}of hD(Z))if(z==="D"||Q==="D")J+=1;else X+=1;return{added:X,deleted:J}}var cD;var B$=h(()=>{mZ();uD();cD={added:0,deleted:0}});var Rh={};t1(Rh,{resolveBaseRef:()=>Ch,readBranchSignals:()=>Uq0,parseShortstat:()=>Eh});import{spawnSync as qq0}from"child_process";function lD(Z,X){try{let J=qq0("git",[...X],{cwd:Z,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:n8()});return J.status===0?J.stdout.trim():null}catch{return null}}function Ch(Z){let X=lD(Z,["symbolic-ref","--short","refs/remotes/origin/HEAD"]);if(X)return X;for(let J of["origin/main","origin/master","main","master"])if(lD(Z,["rev-parse","--verify","--quiet",J])!==null)return J;return null}function Eh(Z){let X=(J)=>{let z=Z.match(J);return z?Number.parseInt(z[1]??"0",10):0};return{files:X(/(\d+) files? changed/),insertions:X(/(\d+) insertions?\(\+\)/),deletions:X(/(\d+) deletions?\(-\)/)}}function Uq0(Z){if(!Z)return Ah;let X=Ch(Z);if(!X)return Ah;let J=lD(Z,["rev-list","--count",`${X}..HEAD`]),z=J===null?null:Number.parseInt(J,10),Q=lD(Z,["diff","--shortstat",`${X}...HEAD`]),Y=Q===null?null:Eh(Q);return{baseRef:X,ahead:z!==null&&Number.isNaN(z)?null:z,diff:Y}}var Ah;var Th=h(()=>{mZ();Ah={baseRef:null,ahead:null,diff:null}});async function Hq0(Z,X,J){let z;try{z=await EC()}catch(Q){throw new t0(`failed to start PTY host for ${Z.id}: ${Q instanceof Error?Q.message:String(Q)}`,"SESSION_FAILED")}try{if(Z.tab&&Z.tab!=="new"){let W=G8({command:Z.command,vendor:Z.vendor,effort:Z.modelEffort})[0];return await SC(z.rpc,Z.id,Z.tab,X,J,{engineBin:W})}let Q=Z.tab==="new"?Kh(Z.id,Z.tabVendor,Z.tabCommand):void 0,Y=Z.tabVendor??Z.vendor,G=Z.tabCommand??(Z.tabVendor?void 0:Z.command),{argv:$,sessionId:H}=_J(G8({command:G,vendor:Y,effort:Z.modelEffort}),Y);Q$(Y,X);let K=z$({task:{id:Z.id,kind:Z.kind,vendor:Y,repo:Z.repo},worktreePath:X,shell:process.env.SHELL?.trim()||"/bin/zsh",argv:$,promptIntent:Z.newTask?{kind:"new-task",prompt:J,spawnerTaskId:(await Z$())?.taskId}:{kind:"explicit",prompt:J},tabId:Q}),M=await TC(z.rpc,{id:Z.id,engineBin:$[0]},X,J,K,{forceNew:Q!==void 0});if(M.started&&!M.engineReady)throw new t0(`failed to start hosted engine session for ${Z.id}`,"SESSION_FAILED");if(M.started&&H)if(Q)Hh(Z.id,Q,H);else oC(Z.id,H);else if(!Q)oC(Z.id);return M}catch(Q){if(Q instanceof t0)throw Q;throw new t0(`hosted engine session failed for ${Z.id}: ${Q instanceof Error?Q.message:String(Q)}`,"SESSION_FAILED")}finally{z.close()}}async function zE(Z,X,J,z=Kq0){let Q=X.worktreePath;if(!Q)Q=(await Z.request("task.ensureWorktree",{taskId:X.id})).worktreePath;if(!Q)throw new t0(`task ${X.id} has no worktree`,"NO_WORKTREE");let Y=await z.deliverHosted(X,Q,J);if(!Y)throw new t0(`failed to start hosted engine session for ${X.id}`,"SESSION_FAILED");return Y}var Kq0,$K;var qK=h(()=>{w3();$7();AD();CD();RD();oH();HD();sC();c8();Kq0={deliverHosted:Hq0};$K={isTaskRunning:async(Z)=>(await $K.taskTabs(Z)).running,taskTabs:async(Z)=>{let X=[],J=await tG();if(J)try{X=await eG(J.rpc)}finally{J.close()}let z;try{let{foregroundEngineIn:G,parsePsSnapshot:$,psSnapshot:H}=await Promise.resolve().then(() => (A9(),sN)),K=X.filter((M)=>M.alive&&typeof M.pid==="number"&&M.pid>0);if(K.length>0){let M=$(await H());z=new Map(K.map((W)=>[W.key,G(M,W.pid)?.vendor??null]))}}catch{}let Q={};try{Q=(await Promise.resolve().then(() => (YK(),tC))).readPtyExitRecords()}catch{}let Y=Gh(Z);return{tabs:qh(Y,Z,X,Q,z),running:Uh(Y,Z,X)}},deliverPrompt:(Z,X,J)=>zE(Z,X,J),resolveRepoRoot:async(Z)=>(await Promise.resolve().then(() => (a4(),yG))).resolveMainRepoRoot(Z),defaultVendor:async(Z)=>{let{getGlobalDefaultVendor:X,getRepoLastActiveVendor:J}=await Promise.resolve().then(() => (I9(),Nh));return(Z?J(Z):void 0)??X()},readWorktreeChanges:async(Z)=>(await Promise.resolve().then(() => (B$(),Lh))).readWorktreeChanges(Z),readBranchSignals:async(Z)=>(await Promise.resolve().then(() => (Th(),Rh))).readBranchSignals(Z),tearDownSession:async(Z)=>{let X=await tG();if(X)try{await PC(X.rpc,CC(await eG(X.rpc),Z))}catch{}finally{X.close()}}}});var pD;var Sh=h(()=>{pD={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/rove",version:"0.8.198",description:"Rove \u2014 the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.",keywords:["terminal","tui","cli","multiplexer","ai-agents","coding-agent","ai-coding-assistant","agentic-ai","parallel-agents","git-worktree","claude-code","codex","llm","developer-tools"],type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/kobe.js",rove:"dist/cli/rove.js"},files:["dist/cli","dist/web-ui","dist/skills","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/rove.git"},homepage:"https://rove.run",bugs:{url:"https://github.com/Sma1lboy/rove/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"ROVE_DEV=1 bun --conditions=browser ./src/cli/rove.ts","dev:kobe":"KOBE_DEV=1 bun --conditions=browser ./src/cli/kobe.ts","dev:mock":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:mock-react":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:mock-react-task-dialogs":"KOBE_DEV=1 bun ./src/tui-react/component/mock-dialogs-host.tsx","dev:mock-react-filetree":"KOBE_DEV=1 bun ./src/tui-react/panes/filetree/mock-host.tsx","dev:mock-react-sidebar":"KOBE_DEV=1 bun ./src/tui-react/panes/sidebar/mock-host.tsx","dev:mock-react-terminal":"KOBE_DEV=1 bun ./src/tui-react/panes/terminal/mock-host.tsx","dev:mock-react-dialogs":"KOBE_DEV=1 bun ./src/tui-react/mock/dialogs-host.tsx","dev:mock-react-workspace":"KOBE_DEV=1 bun ./src/tui-react/workspace/mock-host.tsx","dev:sandbox":"bun run scripts/dev-sandbox.ts run","dev:sandbox:reset":"bun run scripts/dev-sandbox.ts reset",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","perf:golden":"bun scripts/perf-golden.ts","pty:soak":"bun scripts/pty-soak.ts","test:fast":"vitest run --passWithNoTests --minWorkers=1 --maxWorkers=8","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:socket:coverage":"KOBE_INCLUDE_SOCKET=1 KOBE_COVERAGE_DAEMON=1 vitest run test/daemon --coverage --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --pool forks --minWorkers=1 --maxWorkers=1 --retry=2 --passWithNoTests","test:render":"bun test test/render --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage-render",coverage:"vitest run --coverage --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build","plugin-sandbox":"bun run scripts/plugin-sandbox.ts"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.4.3","@opentui/react":"0.4.3","@xterm/addon-serialize":"^0.14.0","@xterm/addon-unicode11":"^0.9.0","@xterm/headless":"^6.0.0","node-pty":"^1.1.0",react:"^19.2.8",ws:"^8.18.0"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.16","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2","@types/react":"^19.2.0","@vitest/coverage-v8":"2.1.9",knip:"^6.14.2","kobe-web":"workspace:*","react-devtools-core":"^7.0.1",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});var Ih={};t1(Ih,{repoSlug:()=>EQ,releasePageUrl:()=>UE,recommendedGlobalInstallCommand:()=>GE,isNewerSemver:()=>QE,fetchReleaseSummaries:()=>HK,fetchReleaseNotesRange:()=>qE,fetchReleaseNotes:()=>$E,compareSemver:()=>t2,checkLatestVersion:()=>RQ,breakingVersionsCrossed:()=>UK,UPDATE_SCRIPT_URL:()=>dD,UPDATE_COMMAND:()=>y9,PACKAGE_NAME:()=>YE,CURRENT_VERSION:()=>e1,BREAKING_VERSIONS:()=>kZ});function EQ(){let Z=pD.repository?.url;if(!Z)return null;let X=Z.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!X||!X[1]||!X[2])return null;return`${X[1]}/${X[2]}`}function GE(){return`npm install -g ${YE}@latest`}function UK(Z,X,J=kZ){let[z,Q]=t2(Z,X)<=0?[Z,X]:[X,Z];return J.filter((Y)=>t2(Y,z)>0&&t2(Y,Q)<=0)}async function Bq0(Z){let X=new AbortController,J=setTimeout(()=>X.abort(),iD);try{let z=Z.replace("/","%2F"),Q=await fetch(`https://registry.npmjs.org/${z}/latest`,{signal:X.signal,headers:{accept:"application/json"}});if(!Q.ok)return null;let Y=await Q.json();if(typeof Y.version!=="string")return null;return Y.version}catch{return null}finally{clearTimeout(J)}}function QE(Z,X){return t2(Z,X)>0}function t2(Z,X){let J=(Y)=>Y.split("-")[0]??Y,z=J(Z).split(".").map((Y)=>Number.parseInt(Y,10)),Q=J(X).split(".").map((Y)=>Number.parseInt(Y,10));for(let Y=0;Y<3;Y++){let G=z[Y]??0,$=Q[Y]??0;if(Number.isNaN(G)||Number.isNaN($))return 0;if(G>$)return 1;if(G<$)return-1}return 0}async function RQ(Z={}){let X=process.env.KOBE_FAKE_UPDATE;if(X)return{current:e1,latest:X,hasUpdate:QE(X,e1)};if(TG()&&!Z.force)return null;let J=await Bq0(YE);if(!J)return null;return{current:e1,latest:J,hasUpdate:QE(J,e1)}}function Ph(Z){if(typeof Z!=="string")return null;return Z.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function $E(Z){let X=EQ();if(!X)return null;let J=`v${Z}`,z=new AbortController,Q=setTimeout(()=>z.abort(),iD);try{let Y=await fetch(`https://api.github.com/repos/${X}/releases/tags/${J}`,{signal:z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Y.ok)return null;let G=await Y.json();if(typeof G.body!=="string"||typeof G.html_url!=="string")return null;return{body:G.body,url:G.html_url,version:Z}}catch{return null}finally{clearTimeout(Q)}}async function qE(Z){let X=EQ();if(!X)return[];let J=Z.limit??100,z=new AbortController,Q=setTimeout(()=>z.abort(),iD);try{let Y=await fetch(`https://api.github.com/repos/${X}/releases?per_page=${J}`,{signal:z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Y.ok)return[];let G=await Y.json();if(!Array.isArray(G))return[];return G.map(($)=>{let H=Ph($.tag_name);if(!H||typeof $.html_url!=="string"||typeof $.body!=="string")return null;if(t2(H,Z.current)<=0)return null;if(t2(H,Z.latest)>0)return null;return{version:H,url:$.html_url,body:$.body}}).filter(($)=>$!==null)}catch{return[]}finally{clearTimeout(Q)}}async function HK(Z=12){let X=EQ();if(!X)return[];let J=new AbortController,z=setTimeout(()=>J.abort(),iD);try{let Q=await fetch(`https://api.github.com/repos/${X}/releases?per_page=${Z}`,{signal:J.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Q.ok)return[];let Y=await Q.json();if(!Array.isArray(Y))return[];return Y.map((G)=>{let $=Ph(G.tag_name);if(!$||typeof G.html_url!=="string")return null;return{version:$,url:G.html_url}}).filter((G)=>G!==null)}catch{return[]}finally{clearTimeout(z)}}function UE(Z){let X=EQ();if(!X)return null;return`https://github.com/${X}/releases/tag/v${Z}`}var e1,YE,dD="https://raw.githubusercontent.com/Sma1lboy/rove/main/scripts/update.sh",y9,kZ,iD=3000;var R2=h(()=>{Sh();E5();e1=pD.version,YE=pD.name;y9=`curl -fsSL ${dD} | sh`;kZ=[]});var Mq0,CJ;var HE=h(()=>{/*!
82
+ `)){let z=J.replace(/\r$/,"");if(z.length===0)continue;let Q=z.indexOf("\t");if(Q<0)continue;let Y=z.indexOf("\t",Q+1);if(Y<0)continue;let G=z.slice(Y+1);if(G.length===0)continue;let $=Yq0(G);if($.path.length===0)continue;X.push({path:$.path,...$.origPath!==void 0?{origPath:$.origPath}:{},added:Oh(z.slice(0,Q)),deleted:Oh(z.slice(Q+1,Y))})}return X}var zq0,Qq0;var uD=h(()=>{zq0=new TextEncoder,Qq0=new TextDecoder});var Lh={};t1(Lh,{sameWorktreeChanges:()=>GK,readWorktreeChanges:()=>$q0,pickPushedChanges:()=>JE,parsePorcelain:()=>V$});import{spawnSync as Gq0}from"child_process";function GK(Z,X){return Z.added===X.added&&Z.deleted===X.deleted}function JE(Z,X){if(!Z)return null;return Z.get(X)??cD}function $q0(Z){if(!Z)return cD;try{let X=Gq0("git",["status","--porcelain=v1"],{cwd:Z,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:n8()});if(X.status!==0||!X.stdout)return cD;return V$(X.stdout)}catch{return cD}}function V$(Z){let X=0,J=0;for(let{x:z,y:Q}of hD(Z))if(z==="D"||Q==="D")J+=1;else X+=1;return{added:X,deleted:J}}var cD;var B$=h(()=>{mZ();uD();cD={added:0,deleted:0}});var Rh={};t1(Rh,{resolveBaseRef:()=>Ch,readBranchSignals:()=>Uq0,parseShortstat:()=>Eh});import{spawnSync as qq0}from"child_process";function lD(Z,X){try{let J=qq0("git",[...X],{cwd:Z,encoding:"utf8",stdio:["ignore","pipe","pipe"],env:n8()});return J.status===0?J.stdout.trim():null}catch{return null}}function Ch(Z){let X=lD(Z,["symbolic-ref","--short","refs/remotes/origin/HEAD"]);if(X)return X;for(let J of["origin/main","origin/master","main","master"])if(lD(Z,["rev-parse","--verify","--quiet",J])!==null)return J;return null}function Eh(Z){let X=(J)=>{let z=Z.match(J);return z?Number.parseInt(z[1]??"0",10):0};return{files:X(/(\d+) files? changed/),insertions:X(/(\d+) insertions?\(\+\)/),deletions:X(/(\d+) deletions?\(-\)/)}}function Uq0(Z){if(!Z)return Ah;let X=Ch(Z);if(!X)return Ah;let J=lD(Z,["rev-list","--count",`${X}..HEAD`]),z=J===null?null:Number.parseInt(J,10),Q=lD(Z,["diff","--shortstat",`${X}...HEAD`]),Y=Q===null?null:Eh(Q);return{baseRef:X,ahead:z!==null&&Number.isNaN(z)?null:z,diff:Y}}var Ah;var Th=h(()=>{mZ();Ah={baseRef:null,ahead:null,diff:null}});async function Hq0(Z,X,J){let z;try{z=await EC()}catch(Q){throw new t0(`failed to start PTY host for ${Z.id}: ${Q instanceof Error?Q.message:String(Q)}`,"SESSION_FAILED")}try{if(Z.tab&&Z.tab!=="new"){let W=G8({command:Z.command,vendor:Z.vendor,effort:Z.modelEffort})[0];return await SC(z.rpc,Z.id,Z.tab,X,J,{engineBin:W})}let Q=Z.tab==="new"?Kh(Z.id,Z.tabVendor,Z.tabCommand):void 0,Y=Z.tabVendor??Z.vendor,G=Z.tabCommand??(Z.tabVendor?void 0:Z.command),{argv:$,sessionId:H}=_J(G8({command:G,vendor:Y,effort:Z.modelEffort}),Y);Q$(Y,X);let K=z$({task:{id:Z.id,kind:Z.kind,vendor:Y,repo:Z.repo},worktreePath:X,shell:process.env.SHELL?.trim()||"/bin/zsh",argv:$,promptIntent:Z.newTask?{kind:"new-task",prompt:J,spawnerTaskId:(await Z$())?.taskId}:{kind:"explicit",prompt:J},tabId:Q}),M=await TC(z.rpc,{id:Z.id,engineBin:$[0]},X,J,K,{forceNew:Q!==void 0});if(M.started&&!M.engineReady)throw new t0(`failed to start hosted engine session for ${Z.id}`,"SESSION_FAILED");if(M.started&&H)if(Q)Hh(Z.id,Q,H);else oC(Z.id,H);else if(!Q)oC(Z.id);return M}catch(Q){if(Q instanceof t0)throw Q;throw new t0(`hosted engine session failed for ${Z.id}: ${Q instanceof Error?Q.message:String(Q)}`,"SESSION_FAILED")}finally{z.close()}}async function zE(Z,X,J,z=Kq0){let Q=X.worktreePath;if(!Q)Q=(await Z.request("task.ensureWorktree",{taskId:X.id})).worktreePath;if(!Q)throw new t0(`task ${X.id} has no worktree`,"NO_WORKTREE");let Y=await z.deliverHosted(X,Q,J);if(!Y)throw new t0(`failed to start hosted engine session for ${X.id}`,"SESSION_FAILED");return Y}var Kq0,$K;var qK=h(()=>{w3();$7();AD();CD();RD();oH();HD();sC();c8();Kq0={deliverHosted:Hq0};$K={isTaskRunning:async(Z)=>(await $K.taskTabs(Z)).running,taskTabs:async(Z)=>{let X=[],J=await tG();if(J)try{X=await eG(J.rpc)}finally{J.close()}let z;try{let{foregroundEngineIn:G,parsePsSnapshot:$,psSnapshot:H}=await Promise.resolve().then(() => (A9(),sN)),K=X.filter((M)=>M.alive&&typeof M.pid==="number"&&M.pid>0);if(K.length>0){let M=$(await H());z=new Map(K.map((W)=>[W.key,G(M,W.pid)?.vendor??null]))}}catch{}let Q={};try{Q=(await Promise.resolve().then(() => (YK(),tC))).readPtyExitRecords()}catch{}let Y=Gh(Z);return{tabs:qh(Y,Z,X,Q,z),running:Uh(Y,Z,X)}},deliverPrompt:(Z,X,J)=>zE(Z,X,J),resolveRepoRoot:async(Z)=>(await Promise.resolve().then(() => (a4(),yG))).resolveMainRepoRoot(Z),defaultVendor:async(Z)=>{let{getGlobalDefaultVendor:X,getRepoLastActiveVendor:J}=await Promise.resolve().then(() => (I9(),Nh));return(Z?J(Z):void 0)??X()},readWorktreeChanges:async(Z)=>(await Promise.resolve().then(() => (B$(),Lh))).readWorktreeChanges(Z),readBranchSignals:async(Z)=>(await Promise.resolve().then(() => (Th(),Rh))).readBranchSignals(Z),tearDownSession:async(Z)=>{let X=await tG();if(X)try{await PC(X.rpc,CC(await eG(X.rpc),Z))}catch{}finally{X.close()}}}});var pD;var Sh=h(()=>{pD={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/rove",version:"0.8.199",description:"Rove \u2014 the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.",keywords:["terminal","tui","cli","multiplexer","ai-agents","coding-agent","ai-coding-assistant","agentic-ai","parallel-agents","git-worktree","claude-code","codex","llm","developer-tools"],type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/kobe.js",rove:"dist/cli/rove.js"},files:["dist/cli","dist/web-ui","dist/skills","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/rove.git"},homepage:"https://rove.run",bugs:{url:"https://github.com/Sma1lboy/rove/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"ROVE_DEV=1 bun --conditions=browser ./src/cli/rove.ts","dev:kobe":"KOBE_DEV=1 bun --conditions=browser ./src/cli/kobe.ts","dev:mock":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:mock-react":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:mock-react-task-dialogs":"KOBE_DEV=1 bun ./src/tui-react/component/mock-dialogs-host.tsx","dev:mock-react-filetree":"KOBE_DEV=1 bun ./src/tui-react/panes/filetree/mock-host.tsx","dev:mock-react-sidebar":"KOBE_DEV=1 bun ./src/tui-react/panes/sidebar/mock-host.tsx","dev:mock-react-terminal":"KOBE_DEV=1 bun ./src/tui-react/panes/terminal/mock-host.tsx","dev:mock-react-dialogs":"KOBE_DEV=1 bun ./src/tui-react/mock/dialogs-host.tsx","dev:mock-react-workspace":"KOBE_DEV=1 bun ./src/tui-react/workspace/mock-host.tsx","dev:sandbox":"bun run scripts/dev-sandbox.ts run","dev:sandbox:reset":"bun run scripts/dev-sandbox.ts reset",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","perf:golden":"bun scripts/perf-golden.ts","pty:soak":"bun scripts/pty-soak.ts","test:fast":"vitest run --passWithNoTests --minWorkers=1 --maxWorkers=8","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:socket:coverage":"KOBE_INCLUDE_SOCKET=1 KOBE_COVERAGE_DAEMON=1 vitest run test/daemon --coverage --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --pool forks --minWorkers=1 --maxWorkers=1 --retry=2 --passWithNoTests","test:render":"bun test test/render --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage-render",coverage:"vitest run --coverage --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build","plugin-sandbox":"bun run scripts/plugin-sandbox.ts"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.4.3","@opentui/react":"0.4.3","@xterm/addon-serialize":"^0.14.0","@xterm/addon-unicode11":"^0.9.0","@xterm/headless":"^6.0.0","node-pty":"^1.1.0",react:"^19.2.8",ws:"^8.18.0"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.16","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2","@types/react":"^19.2.0","@vitest/coverage-v8":"2.1.9",knip:"^6.14.2","kobe-web":"workspace:*","react-devtools-core":"^7.0.1",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});var Ih={};t1(Ih,{repoSlug:()=>EQ,releasePageUrl:()=>UE,recommendedGlobalInstallCommand:()=>GE,isNewerSemver:()=>QE,fetchReleaseSummaries:()=>HK,fetchReleaseNotesRange:()=>qE,fetchReleaseNotes:()=>$E,compareSemver:()=>t2,checkLatestVersion:()=>RQ,breakingVersionsCrossed:()=>UK,UPDATE_SCRIPT_URL:()=>dD,UPDATE_COMMAND:()=>y9,PACKAGE_NAME:()=>YE,CURRENT_VERSION:()=>e1,BREAKING_VERSIONS:()=>kZ});function EQ(){let Z=pD.repository?.url;if(!Z)return null;let X=Z.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!X||!X[1]||!X[2])return null;return`${X[1]}/${X[2]}`}function GE(){return`npm install -g ${YE}@latest`}function UK(Z,X,J=kZ){let[z,Q]=t2(Z,X)<=0?[Z,X]:[X,Z];return J.filter((Y)=>t2(Y,z)>0&&t2(Y,Q)<=0)}async function Bq0(Z){let X=new AbortController,J=setTimeout(()=>X.abort(),iD);try{let z=Z.replace("/","%2F"),Q=await fetch(`https://registry.npmjs.org/${z}/latest`,{signal:X.signal,headers:{accept:"application/json"}});if(!Q.ok)return null;let Y=await Q.json();if(typeof Y.version!=="string")return null;return Y.version}catch{return null}finally{clearTimeout(J)}}function QE(Z,X){return t2(Z,X)>0}function t2(Z,X){let J=(Y)=>Y.split("-")[0]??Y,z=J(Z).split(".").map((Y)=>Number.parseInt(Y,10)),Q=J(X).split(".").map((Y)=>Number.parseInt(Y,10));for(let Y=0;Y<3;Y++){let G=z[Y]??0,$=Q[Y]??0;if(Number.isNaN(G)||Number.isNaN($))return 0;if(G>$)return 1;if(G<$)return-1}return 0}async function RQ(Z={}){let X=process.env.KOBE_FAKE_UPDATE;if(X)return{current:e1,latest:X,hasUpdate:QE(X,e1)};if(TG()&&!Z.force)return null;let J=await Bq0(YE);if(!J)return null;return{current:e1,latest:J,hasUpdate:QE(J,e1)}}function Ph(Z){if(typeof Z!=="string")return null;return Z.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function $E(Z){let X=EQ();if(!X)return null;let J=`v${Z}`,z=new AbortController,Q=setTimeout(()=>z.abort(),iD);try{let Y=await fetch(`https://api.github.com/repos/${X}/releases/tags/${J}`,{signal:z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Y.ok)return null;let G=await Y.json();if(typeof G.body!=="string"||typeof G.html_url!=="string")return null;return{body:G.body,url:G.html_url,version:Z}}catch{return null}finally{clearTimeout(Q)}}async function qE(Z){let X=EQ();if(!X)return[];let J=Z.limit??100,z=new AbortController,Q=setTimeout(()=>z.abort(),iD);try{let Y=await fetch(`https://api.github.com/repos/${X}/releases?per_page=${J}`,{signal:z.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Y.ok)return[];let G=await Y.json();if(!Array.isArray(G))return[];return G.map(($)=>{let H=Ph($.tag_name);if(!H||typeof $.html_url!=="string"||typeof $.body!=="string")return null;if(t2(H,Z.current)<=0)return null;if(t2(H,Z.latest)>0)return null;return{version:H,url:$.html_url,body:$.body}}).filter(($)=>$!==null)}catch{return[]}finally{clearTimeout(Q)}}async function HK(Z=12){let X=EQ();if(!X)return[];let J=new AbortController,z=setTimeout(()=>J.abort(),iD);try{let Q=await fetch(`https://api.github.com/repos/${X}/releases?per_page=${Z}`,{signal:J.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!Q.ok)return[];let Y=await Q.json();if(!Array.isArray(Y))return[];return Y.map((G)=>{let $=Ph(G.tag_name);if(!$||typeof G.html_url!=="string")return null;return{version:$,url:G.html_url}}).filter((G)=>G!==null)}catch{return[]}finally{clearTimeout(z)}}function UE(Z){let X=EQ();if(!X)return null;return`https://github.com/${X}/releases/tag/v${Z}`}var e1,YE,dD="https://raw.githubusercontent.com/Sma1lboy/rove/main/scripts/update.sh",y9,kZ,iD=3000;var R2=h(()=>{Sh();E5();e1=pD.version,YE=pD.name;y9=`curl -fsSL ${dD} | sh`;kZ=[]});var Mq0,CJ;var HE=h(()=>{/*!
83
83
  * Copyright (c) Squirrel Chat et al., All rights reserved.
84
84
  * SPDX-License-Identifier: BSD-3-Clause
85
85
  *
@@ -699,7 +699,7 @@ ${i.join(`
699
699
  `).filter((H)=>H.length>0);WA0(Y,$)}catch{}let G=[];for(let $ of Y){if($.status!=="?")continue;if($.children)G.push(...$.children);else if($.added==null&&!$.path.endsWith("/"))G.push($)}if(G.length>0)await Promise.all(G.map(async($)=>{let H=await jA0(Z,$.path,X);if(H!=null)$.added=H,$.deleted=0}));for(let $ of Y){if(!$.children)continue;let H=0,K=!1;for(let M of $.children)if(M.added!=null)H+=M.added,K=!0;if(K)$.added=H,$.deleted=0}return Y}function H10(Z){return Z.status==="?"&&Z.path.endsWith("/")}function WA0(Z,X){for(let J of Z){if(!H10(J))continue;J.children=X.filter((z)=>z.startsWith(J.path)).map((z)=>({path:z,status:"?"}))}}async function K10(Z,X,J){if(X&&X.trim().length>0)return X.trim();try{let z=(await HX(["symbolic-ref","--short","refs/remotes/origin/HEAD"],Z,J)).trim();if(z.length>0)return z}catch{}for(let z of["origin/main","origin/master"])try{return await HX(["rev-parse","--verify","--quiet",z],Z,J),z}catch{}return null}async function V10(Z,X,J){let z=`${X}...HEAD`,[Q,Y]=await Promise.all([HX(["diff","--no-color","--name-status",z],Z,J),HX(["diff","--no-color","--numstat",z],Z,J)]),G=new Map(fI(Y).map((H)=>[H.path,{added:H.added,deleted:H.deleted}])),$=[];for(let{status:H,path:K}of OA0(Q)){let M=G.get(K);$.push({path:K,status:H,added:M?.added,deleted:M?.deleted})}return $}function OA0(Z){let X=[];for(let J of Z.split(`
700
700
  `)){let z=J.replace(/\r$/,"");if(z.length===0)continue;let Q=z.indexOf("\t");if(Q<0)continue;let Y=z[0],G;if(Y==="R"||Y==="C"){let H=z.indexOf("\t",Q+1);G=x9(H<0?z.slice(Q+1):z.slice(H+1))}else G=x9(z.slice(Q+1));if(G.length===0||G.endsWith("/"))continue;let $=Y==="M"||Y==="A"||Y==="D"||Y==="T"?Y:Y==="R"?"R":Y==="C"?"C":null;if($)X.push({status:$,path:G})}return X}async function jA0(Z,X,J){if(J?.aborted)return null;let z=await xO(Z,X);if(z==null)return null;if(z.includes("\x00"))return null;if(z.length===0)return 0;let Q=0;for(let Y=0;Y<z.length;Y++)if(z[Y]===`
701
701
  `)Q++;if(!z.endsWith(`
702
- `))Q++;return Q}function fI(Z){return _h(Z).map((X)=>({path:X.path,added:X.added,deleted:X.deleted}))}function FA0(Z){let X=[];for(let J of hD(Z)){let z;if(J.x==="?"&&J.y==="?")z="?";else{let Y=J.y!==" "?J.y:J.x;if(Y==="M"||Y==="A"||Y==="D"||Y==="R"||Y==="C"||Y==="U"||Y==="T")z=Y;else continue}let Q=J.path;if(Q.length===0)continue;if(Q.endsWith("/")&&z!=="?")continue;X.push({path:Q,status:z})}return X}var B10=h(()=>{uD();tK()});function M10(Z){switch(Z){case"all":return"files.tabs.all";case"changes":return"files.tabs.changes"}}function N10(Z){return O5({"files.nav":(X,J)=>{if((J??0)%2===0)Z.moveDown();else Z.moveUp()},"files.hierarchy":(X,J)=>{if((J??0)%2===0)Z.collapseOrParent();else Z.expandOrDescend()},"files.tab":(X,J)=>{let z=Z.currentTab(),Q=qq.indexOf(z);if(Q<0)return;let Y=(J??0)%2===0?-1:1,G=qq[(Q+Y+qq.length)%qq.length];if(G)Z.setTab(G)},"files.open":()=>Z.openCurrent(),"files.mention":()=>Z.mentionCurrent?.(),"files.openExternal":()=>Z.openExternal(),"files.refresh":()=>Z.refresh(),"files.scope":()=>Z.toggleScope?.(),"files.diff":()=>Z.openDiff?.()})}var qq;var bI=h(()=>{iZ();qq=["all","changes"]});import{spawn as _A0}from"child_process";import{existsSync as LA0}from"fs";import{platform as AA0}from"os";function fj(Z){if(!Z)return;let X=AA0();if(X==="linux"){if(LA0("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){BV("wslview",[Z],()=>{let J=_A0("wslpath",["-w",Z],{stdio:["ignore","pipe","ignore"]}),z="";J.stdout?.on("data",(Q)=>{z+=Q.toString()}),J.on("close",(Q)=>{if(Q===0)BV("explorer.exe",[z.trim()])})});return}BV("xdg-open",[Z]);return}if(X==="darwin"){BV("open",[Z]);return}if(X==="win32"){BV("cmd.exe",["/c","start","",Z]);return}}function BV(Z,X,J){hJ(Z,X,{onError:J?()=>J():void 0})}var gI=h(()=>{gK()});import{watch as CA0}from"fs";function D10(Z){switch(Z){case"M":return"warning";case"A":return"success";case"D":return"error";case"?":return"textMuted";case"R":case"C":case"U":case"T":return"info"}}function W10(Z,X){let J=Z.toLowerCase();if(J.includes("not a git repository"))return X("files.error.notGitRepo");if(J.includes("does not exist")||J.includes("enoent"))return X("files.error.pathMissing");if(J.includes("permission denied")||J.includes("eacces"))return X("files.error.permissionDenied");if(J.includes("git: not found")||J.includes("command not found"))return X("files.error.gitNotInstalled");let z=Z.indexOf(": ");if(z>=0&&Z.startsWith("git "))return Z.slice(z+2).trim()||X("files.error.gitFailed");return Z.trim()||X("files.error.gitFailed")}function O10(Z){let X=0,J=0;for(let z of Z){if(z.kind!=="status")continue;if(z.added!=null)X=Math.max(X,String(z.added).length+1);if(z.deleted!=null)J=Math.max(J,String(z.deleted).length+1)}return{added:X,deleted:J}}function j10(Z,X){let J=(X.added>0?X.added+1:0)+(X.deleted>0?X.deleted+1:0);return Math.max(8,Z-6-J)}function mI(Z,X,J){let z=J==="-"?"\u2212":J;return Z==null?" ".repeat(X):`${z}${Z}`.padStart(X)}function kI(Z,X){let J=new Set(Z);if(J.has(X))J.delete(X);else J.add(X);return J}function F10(Z,X){let J=Z[X];if(!J||J.kind!=="dir")return null;if(!J.expanded&&J.hasChildren)return{type:"expand",path:J.path};if(J.expanded&&X+1<Z.length)return{type:"cursor",index:X+1};return null}function _10(Z,X){let J=Z[X];if(!J)return null;if(J.kind==="dir"&&J.expanded)return{type:"collapse",path:J.path};if(J.kind!=="dir"&&J.kind!=="file")return null;let z=J.depth-1;if(z<0)return null;for(let Q=X-1;Q>=0;Q--){let Y=Z[Q];if(!Y)continue;if(Y.kind==="dir"&&Y.depth===z)return{type:"cursor",index:Q}}return null}function bj(Z,X,J){if(X<=0)return null;if(J<Z)return J;if(J>=Z+X)return J-X+1;return null}function EA0(Z){if(Z===".git"||Z.startsWith(".git/")||Z.startsWith(".git\\"))return!1;if(Z.startsWith("node_modules/")||Z.startsWith("node_modules\\"))return!1;return!0}function L10(Z,X,J=500){let z=null,Q=null;try{Q=CA0(Z,{recursive:!0},(Y,G)=>{if(G==null)return;if(!EA0(G.toString()))return;if(z!=null)clearTimeout(z);z=setTimeout(()=>{z=null,X()},J)}),Q.on("error",()=>{})}catch{}return()=>{if(z!=null)clearTimeout(z);if(Q!=null)Q.close()}}var gj=()=>{};function hI(Z,X,J,z,Q={}){if(Z.length===0)return X;let Y=new Map;for(let H of Z)Y.set(J(H),H);let G=Z.length===X.length,$=Array(X.length);for(let H=0;H<X.length;H++){let K=X[H],M=Y.get(J(K));if(M&&z(M,K)&&(!Q.samePosition||Z[H]===M)){if($[H]=M,G&&Z[H]!==M)G=!1}else $[H]=K,G=!1}return G?Z:$}function uI(Z,X,J,z){for(let Q of Z.children)if(Q.isDir){let Y=X.has(Q.path);if(z.push({kind:"dir",path:Q.path,name:Q.name,depth:J,expanded:Y,hasChildren:Q.children.length>0}),Y)uI(Q,X,J+1,z)}else z.push({kind:"file",path:Q.path,name:Q.name,depth:J})}function A10(Z,X){return $j(Z,X)}function C10(Z,X=RA0){let J=[];for(let z of Z){if(z.children==null){J.push({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted});continue}let Q=X.has(z.path);if(J.push({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted,fileCount:z.children.length,expanded:Q}),Q)for(let Y of z.children)J.push({kind:"status",path:Y.path,status:Y.status,added:Y.added,deleted:Y.deleted,child:!0})}return J}function TA0(Z){return`${Z.kind}\x00${Z.path}`}function SA0(Z,X){if(Z.kind!==X.kind||Z.path!==X.path)return!1;switch(Z.kind){case"file":{let J=X;return Z.name===J.name&&Z.depth===J.depth}case"dir":{let J=X;return Z.name===J.name&&Z.depth===J.depth&&Z.expanded===J.expanded&&Z.hasChildren===J.hasChildren}case"status":{let J=X;return Z.status===J.status&&Z.added===J.added&&Z.deleted===J.deleted&&Z.fileCount===J.fileCount&&Z.expanded===J.expanded&&Z.child===J.child}}}function E10(Z,X){return hI(Z,X,TA0,SA0)}function R10(Z,X){if(Z===X)return!0;if(Z==null||X==null)return!1;if(Z.length!==X.length)return!1;for(let J=0;J<Z.length;J++)if(Z[J]!==X[J])return!1;return!0}function T10(Z,X){if(Z===X)return!0;if(Z==null||X==null)return!1;if(Z.length!==X.length)return!1;for(let J=0;J<Z.length;J++){let z=Z[J],Q=X[J];if(z.path!==Q.path||z.status!==Q.status||z.added!==Q.added||z.deleted!==Q.deleted)return!1;let Y=z.children,G=Q.children;if(Y==null!==(G==null))return!1;if(Y&&G){if(Y.length!==G.length)return!1;for(let $=0;$<Y.length;$++){let H=Y[$],K=G[$];if(H.path!==K.path||H.status!==K.status||H.added!==K.added||H.deleted!==K.deleted)return!1}}}return!0}var RA0;var cI=h(()=>{RA0=new Set});function S10(Z){let X={name:"",path:"",isDir:!0,children:[]};for(let J of Z){if(!J)continue;let z=J.split("/").filter((Y)=>Y.length>0);if(z.length===0)continue;let Q=X;for(let Y=0;Y<z.length;Y++){let G=z[Y],H=Y!==z.length-1,K=Q.children.find((M)=>M.name===G&&M.isDir===H);if(!K)K={name:G,path:z.slice(0,Y+1).join("/"),isDir:H,children:[]},Q.children.push(K);Q=K}}return P10(X),X}function P10(Z){Z.children.sort((X,J)=>{if(X.isDir!==J.isDir)return X.isDir?-1:1;return X.name.localeCompare(J.name)});for(let X of Z.children)P10(X)}function mj(Z,X){if(Z.includes("/"))return Z.split("/").map((Q)=>mj(Q,X)).join("/");let J=Z.toLowerCase();if(J==="tab")return"tab";let z=IA0[J];if(z)return z;if(/^f\d{1,2}$/.test(J))return J.toUpperCase();if(!X)return Z;if(/^[a-z]$/.test(J))return Z.toUpperCase();return Z.replace(/[a-z]+/gi,(Q)=>Q.toUpperCase())}function H7(Z,X="\u2303A"){let J=Z.trim();if(!J)return J;let z=/^prefix\s+(.+)$/i.exec(J);if(z){let $=z[1]??"";return`${X} ${$.includes("+")?H7($,X):mj($,!0)}`}let Q=J.split("+");if(Q.length===1)return mj(Q[0]??"",!1);let Y=Q[Q.length-1]??"";return`${Q.slice(0,-1).map(($)=>PA0[$.toLowerCase().trim()]??$).join("")} ${mj(Y,!0)}`}var PA0,IA0;var Uq=h(()=>{PA0={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},IA0={enter:"\u23CE",return:"\u23CE",esc:"\u238B",escape:"\u238B",space:"\u2423",up:"\u2191",down:"\u2193",left:"\u2190",right:"\u2192",backspace:"\u232B",delete:"\u2326",del:"\u2326",pgup:"\u21DE",pageup:"\u21DE",pgdn:"\u21DF",pagedown:"\u21DF",home:"\u2196",end:"\u2198"}});function xA0(Z){return Z.hint?.keys??Z.keys[0]}function x2(Z){let X=vJ(Z);if(!X)return null;let J=xA0(X);return J&&J.length>0?J:null}function yA0(Z){if(Z.keys.length>0)return Z.hint?.keys??Z.keys[0]??null;return Z.prefixKeys?.length?null:Z.hint?.keys??null}function wA0(Z,X){if(Z.scope==="global")return!0;if(X===null)return!1;if(Z.scope===X)return!0;return X==="terminal"&&Z.scope==="workspace"}function I10(Z,X,J,z){let Q=[],Y=[],G=[],$=new Map;for(let K of Z){let M=yA0(K),W=wA0(K,X),D=z?z.direct.has(K.id):W,j=z?z.prefix.has(K.id):W;if(M){let C={binding:K,primary:M,aliases:K.keys.filter((A)=>A!==M)},_=K.keys.length===0&&!K.prefixKeys?.length&&W;if(D&&(W||K.presentation==="onePress")||_)if(K.presentation==="onePress")Y.push(C);else Q.push(C);else if(!W&&K.scope!=="global"){let A=$.get(K.scope);if(A)A.push(C);else $.set(K.scope,[C])}}if(J&&j&&K.prefixKeys?.length)G.push({binding:K,primary:`${J} + ${K.prefixKeys[0]}`,aliases:K.prefixKeys.slice(1).map((C)=>`${J} + ${C}`)})}let H=[];if(Q.length)H.push({kind:"here",scope:X??void 0,rows:Q});if(Y.length)H.push({kind:"direct",rows:Y});if(G.length)H.push({kind:"prefix",rows:G});for(let[K,M]of $)H.push({kind:"other",scope:K,rows:M});return H}var MV=h(()=>{iZ()});function Kq(Z){return Z!==!1}function kj(Z){return Kq(Z.get(Hq,!0))}function hj(Z){let X=!kj(Z);if(Z.set(Hq,X),X)for(let J of Object.values(NV))Z.set(J,!1)}function x10(Z,X){return Kq(Z)&&X!==!0}function y10(Z,X){let J=[];if(X!==null&&Z.prefix.size>0)J.push({chord:X,msg:"commands"});else if(Z.inputPassthrough){let z=Z.direct.has("focus.sidebar")?x2("focus.sidebar"):null;if(z)J.push({chord:z,msg:"sidebar"})}if(Z.direct.has("help.open")){let z=x2("help.open");if(z)J.push({chord:z,msg:"help"})}return J}function w10(Z,X){return vA0[Z].flatMap((J)=>{if(X==="always"&&J.always!==!0)return[];let z=x2(J.id);return z?[{cap:z,msg:J.msg}]:[]})}function v10(Z){let X=[],J=x2("sidebar.nav"),z=x2("sidebar.select");if(J&&z)X.push({msg:"keysBare",params:{nav:H7(J),open:H7(z)}});let Q=x2("chat.tab.new"),Y=x2("focus.next");if(Q&&Y)X.push({msg:"keysOnePress",params:{newTab:H7(Q),focusNext:H7(Y)}});if(Z!==null)X.push({msg:"keysPrefix",params:{prefix:H7(Z)}});let G=x2("help.open");if(G)X.push({msg:"keysHelp",params:{help:H7(G)}});return X}var Hq="hints.keyboard.enabled",NV,vA0;var DV=h(()=>{Uq();MV();NV={sidebar:"hints.sidebar.used",files:"hints.files.used"};vA0={sidebar:[{id:"sidebar.nav",msg:"move"},{id:"sidebar.select",msg:"open"}],files:[{id:"files.nav",msg:"move"},{id:"files.hierarchy",msg:"fold"},{id:"files.open",msg:"open",always:!0},{id:"files.diff",msg:"diff",always:!0}]}});function rQ(){return f10.useSyncExternalStore(QT,zT,zT)}var f10;var g6=h(()=>{iZ();iZ();f10=p0(o0(),1)});import{TextAttributes as b10}from"@opentui/core";function lI(Z){if(!Z)return"Global";if(Z==="sidebar")return"Sidebar";if(Z==="workspace")return"Workspace";if(Z==="files")return"Files";if(Z==="terminal")return"Terminal";return"Dialog"}function g10(Z){return Z.split(" + ").map((X)=>H7(X)).join(" + ")}function fA0(Z,X){if(Z.kind==="here")return X("help.here",{surface:bZ("category",lI(Z.scope))});if(Z.kind==="direct")return X("help.direct");if(Z.kind==="prefix")return X("help.afterPrefix");return X("help.otherPane",{surface:bZ("category",lI(Z.scope))})}function Vq(Z){let X=B4(),{theme:J}=x0(),z=h0(),Q=F7(),Y=rQ(),G=T2(),$=uj.useMemo(()=>I10(o8,Z.currentScope??null,G.key,Z.reachability),[Y,Z.currentScope,Z.reachability,G.key]),H=()=>Z.onClose?Z.onClose():X.clear(),K=uj.useRef(null),M=(D)=>{let j=K.current;if(!j)return;j.scrollTo({x:0,y:Math.max(0,j.scrollTop+D)})},W=(D)=>{let j=K.current;if(!j)return;j.scrollTo({x:0,y:D==="top"?0:Number.MAX_SAFE_INTEGER})};return N1(()=>({bindings:[{key:"?",cmd:H},{key:"up",cmd:()=>M(-1)},{key:"down",cmd:()=>M(1)},{key:"pageup",cmd:()=>M(-(K.current?.viewport.height??10))},{key:"pagedown",cmd:()=>M(K.current?.viewport.height??10)},{key:"home",cmd:()=>W("top")},{key:"end",cmd:()=>W("bottom")}]})),q0("box",{paddingLeft:Q,paddingRight:Q,gap:1,flexShrink:1,children:[q0("box",{flexDirection:"row",justifyContent:"space-between",flexShrink:0,children:[q0("box",{flexDirection:"column",gap:0,children:[y("text",{attributes:b10.BOLD,fg:J.text,children:z("help.title")}),y("text",{fg:J.textMuted,children:Z.currentScope?z("help.focused",{surface:bZ("category",lI(Z.currentScope))}):z("help.allBindings")}),y("text",{fg:J.textMuted,children:z("help.grammar",{prefix:G.key?H7(G.key):z("help.disabled")})})]}),y("text",{fg:J.textMuted,onMouseUp:H,children:z("help.esc")})]}),y("scrollbox",{ref:(D)=>{K.current=D},flexShrink:1,flexGrow:1,stickyScroll:!1,verticalScrollbarOptions:{trackOptions:{backgroundColor:J.backgroundDialog,foregroundColor:J.borderActive}},children:y("box",{paddingBottom:1,gap:1,paddingRight:1,children:$.map((D,j)=>q0("box",{gap:0,children:[y("text",{fg:J.accent,attributes:b10.BOLD,children:fA0(D,z)}),D.rows.map((C)=>{return q0("box",{flexDirection:"row",gap:2,paddingLeft:1,children:[y("box",{width:18,children:y("text",{fg:J.primary,children:g10(C.primary)})}),y("box",{flexGrow:1,children:y("text",{fg:J.text,children:bZ("desc",C.binding.id)})}),C.aliases.length>0?y("box",{children:y("text",{fg:J.textMuted,children:`(${C.aliases.map(g10).join(", ")})`})}):null]},`${D.kind}-${C.binding.id}`)})]},`${D.kind}-${D.scope??j}`))})})]})}var uj;var pI=h(async()=>{Uq();MV();k3();g6();x1();w0();await w1([P1(),p4(),R5()]);uj=p0(o0(),1);Vq.show=(Z,X)=>{let J=oW(),z=J.inputPassthrough?"terminal":X;Z.replace(()=>y(Vq,{currentScope:z,reachability:J}))}});function dI(Z){let X=h0(),J=u3(),z=Td(),Q=Ji();rQ(),rd();let[Y,G]=Bq.useState({tokens:[],modal:!1});Bq.useEffect(()=>{let K=Kq(J?.get(Hq,!0)),M=bQ()||(Q?.stack.length??0)>0,W=K&&!M?y10(oW(),T2().key):null;G((D)=>{let j=W??(K?D.tokens:[]);return D.modal===M&&D.tokens.length===j.length&&D.tokens.every((C,_)=>C.chord===j[_]?.chord&&C.msg===j[_]?.msg)?D:{tokens:j,modal:M}})});let $=Y.modal?{commands:void 0,sidebar:void 0,help:void 0}:{commands:()=>void od(),sidebar:z?()=>z.setFocused("sidebar"):void 0,help:Q?()=>Vq.show(Q,z?.focused??"sidebar"):void 0},H=Y.tokens.map((K)=>({text:Z?.compact?H7(K.chord):X(`hints.status.${K.msg}`,{key:H7(K.chord)}),onPress:$[K.msg]}));if(Z?.onOpenSettings&&!Z.compact&&Kq(J?.get(Hq,!0)))H.push({text:`[${X("hints.status.settings")}]`,onPress:Y.modal?void 0:Z.onOpenSettings});return H}function m10(Z){let{theme:X}=x0(),J=dI({onOpenSettings:Z.onOpenSettings,compact:Z.compact});if(J.length===0)return null;return y("box",{flexDirection:"row",flexShrink:0,children:J.flatMap((z,Q)=>[Q>0?y("text",{fg:X.textMuted,wrapMode:"none",children:" \xB7 "},`sep-${z.text}`):null,y("box",{onMouseUp:z.onPress,children:y("text",{fg:X.textMuted,wrapMode:"none",children:z.text})},z.text)])})}function cj(Z){let X=u3();return Bq.useCallback(()=>{if(!X)return;if(X.get(NV[Z],!1)!==!0)X.set(NV[Z],!0)},[X,Z])}function lj(Z){let X=h0(),{theme:J}=x0(),z=u3();rQ();let Q=z?.get(Hq,!0),Y=z?.get(NV[Z.pane],!1);if(!Kq(Q))return null;let G=w10(Z.pane,x10(Q,Y)?"firstUse":"always");if(G.length===0)return null;return y("text",{fg:J.textMuted,wrapMode:"none",children:G.map(($)=>`${H7($.cap)} ${X(`hints.pane.${$.msg}`)}`).join(" \xB7 ")})}var Bq;var WV=h(async()=>{Uq();DV();k3();g6();s8();x1();w0();await w1([vK(),P1(),p4(),R5(),pI()]);Bq=p0(o0(),1)});import{TextAttributes as iI}from"@opentui/core";function k10(Z){let{theme:X}=x0(),J=h0(),z=T2().key,Q=z?`[${H7(z)} P]`:null;return q0(a5,{children:[Z.onZenToggle||Z.onCreatePR?q0("box",{flexDirection:"row",flexWrap:"wrap",justifyContent:"flex-end",gap:2,paddingBottom:1,flexShrink:0,children:[Z.onZenToggle?q0("box",{flexDirection:"row",gap:1,flexShrink:0,onMouseUp:(Y)=>{Y.stopPropagation(),Z.onZenToggle?.()},children:[y("text",{fg:X.accent,attributes:iI.BOLD,wrapMode:"none",children:"[~]"}),y("text",{fg:X.text,wrapMode:"none",children:J("files.actions.zen")})]}):null,Z.onCreatePR?q0("box",{flexDirection:"row",gap:1,flexShrink:0,onMouseUp:(Y)=>{Y.stopPropagation(),Z.onCreatePR?.()},children:[Q?y("text",{fg:X.accent,attributes:iI.BOLD,wrapMode:"none",children:Q}):null,y("text",{fg:X.text,wrapMode:"none",children:J("files.actions.createPR")})]}):null]}):null,y("box",{flexDirection:"row",paddingBottom:0,flexShrink:0,gap:2,children:qq.map((Y)=>{let G=Z.tab===Y;return y("text",{fg:G?X.primary:X.textMuted,attributes:G?iI.BOLD:void 0,wrapMode:"none",onMouseUp:()=>Z.onSelectTab(Y),children:J(M10(Y))},Y)})}),Z.tab==="changes"?q0("box",{flexDirection:"column",paddingBottom:1,flexShrink:0,gap:0,children:[q0("text",{fg:X.textMuted,wrapMode:"none",children:[Z.scope==="branch"&&Z.base!=null?J("files.scope.branch",{base:Z.base}):J("files.scope.working"),Z.base!=null?` ${J("files.scope.toggleHint")}`:""]}),y("text",{fg:X.textMuted,wrapMode:"none",children:J("files.legend.changes")})]}):y("box",{flexDirection:"row",paddingBottom:1,flexShrink:0})]})}var h10=h(async()=>{Uq();k3();bI();x1();w0();await P1()});function KX(Z,X){let J=Z.background.a===0;if(X.cursor){if(J)return{marker:"\u258C",markerColor:Z.focusAccent??Z.primary,backgroundColor:void 0};return{marker:"\u258C",markerColor:Z.text,backgroundColor:Z.backgroundElement}}if(X.selected)return{marker:"\u258C",markerColor:Z.borderActive,backgroundColor:J?void 0:Z.background};return{marker:" ",markerColor:void 0,backgroundColor:void 0}}import{TextAttributes as bA0}from"@opentui/core";var u10,c10;var l10=h(async()=>{gj();cI();w0();await P1();u10=p0(o0(),1),c10=u10.memo(function(X){let{theme:J}=x0(),z=KX(J,{cursor:X.cursor}),Q=y("text",{fg:z.markerColor,wrapMode:"none",children:z.marker}),Y=z.backgroundColor,G=X.row;if(G.kind==="dir"){let C=" ".repeat(G.depth);return q0("box",{flexDirection:"row",gap:0,backgroundColor:Y,onMouseUp:()=>X.onActivate(X.row,X.index),children:[Q,y("box",{flexGrow:1,paddingRight:1,children:y("text",{fg:J.textMuted,attributes:bA0.BOLD,wrapMode:"none",children:`${C}${G.expanded?"\u25BE":"\u25B8"} ${G.name}/`})})]})}if(G.kind==="file"){let C=" ".repeat(G.depth);return q0("box",{flexDirection:"row",gap:0,backgroundColor:Y,onMouseUp:()=>X.onActivate(X.row,X.index),children:[Q,y("box",{flexGrow:1,paddingRight:1,children:y("text",{fg:J.text,wrapMode:"none",children:`${C} ${G.name}`})})]})}let $=G.fileCount!==void 0,H=$?G.expanded?"\u25BE ":"\u25B8 ":"",K=$?` (${G.fileCount})`:"",M=G.child?" ":"",W=X.pathBudget-H.length-K.length-M.length,D=D10(G.status),j=D==="success"?J.success:D==="warning"?J.warning:D==="error"?J.error:D==="info"?J.info:J.textMuted;return q0("box",{flexDirection:"row",gap:0,backgroundColor:Y,onMouseUp:()=>X.onActivate(X.row,X.index),children:[Q,q0("box",{flexDirection:"row",flexGrow:1,gap:1,paddingRight:1,children:[y("text",{fg:j,wrapMode:"none",children:G.status}),y("text",{fg:$?J.textMuted:J.text,wrapMode:"none",flexGrow:1,children:`${M}${H}${A10(G.path,W)}${K}`}),X.statWidths.added>0?y("text",{fg:J.success,wrapMode:"none",children:mI(G.added,X.statWidths.added,"+")}):null,X.statWidths.deleted>0?y("text",{fg:J.error,wrapMode:"none",children:mI(G.deleted,X.statWidths.deleted,"-")}):null]})]})})});function p10(Z){let{theme:X}=x0(),J=h0(),z=q5(),[Q,Y]=v4.useState("all"),[G,$]=v4.useState("working"),[H,K]=v4.useState(!1),[M,W]=v4.useState(null),[D,j]=v4.useState(0),[C,_]=v4.useState(0),[A,w]=v4.useState(null),[T,R]=v4.useState(null),[E,S]=v4.useState(null),[x,v]=v4.useState(()=>new Set),m=q1(Z.worktreePath),d=q1(Q),k=q1(A),s=q1(T),n=q1(G),Q0=q1(M),K0=q1(H),O0=q1(Z.onOpenFile),B0=v4.useRef(0),H0=v4.useCallback(async(L0,g0,m0)=>{let f0=++B0.current;if(g0==null){w(null),R(null),S(null);return}S(null);try{if(L0==="all"){let r0=await q10(g0,m0);if(m0?.aborted||f0!==B0.current||m.current!==g0)return;w((K1)=>R10(K1,r0)?K1:r0)}else if(L0==="changes"){let r0=n.current==="branch"&&Q0.current!=null,K1=r0?await V10(g0,Q0.current,m0):await U10(g0,m0);if(m0?.aborted||f0!==B0.current||m.current!==g0)return;if(!r0&&K1.length===0&&!K0.current&&Q0.current!=null){$("branch");return}R(($0)=>T10($0,K1)?$0:K1)}}catch(r0){if(m0?.aborted)return;let K1=e0(r0);if(f0===B0.current&&m.current===g0)S(K1)}},[]);v4.useEffect(()=>{w(null),R(null),S(null),j(0),v(new Set),$("working"),K(!1);let L0=new AbortController;return H0(d.current,Z.worktreePath,L0.signal),()=>L0.abort()},[Z.worktreePath,H0]),v4.useEffect(()=>{let L0=Z.worktreePath;if(L0==null){W(null);return}let g0=!1,m0=new AbortController;return K10(L0,Z.prBaseRef,m0.signal).then((f0)=>{if(!g0)W(f0)}).catch(()=>{if(!g0)W(null)}),()=>{g0=!0,m0.abort()}},[Z.worktreePath,Z.prBaseRef]),v4.useEffect(()=>{if(d.current!=="changes")return;let L0=m.current;if(L0==null)return;let g0=new AbortController;return H0("changes",L0,g0.signal),()=>g0.abort()},[G,M,H0]),v4.useEffect(()=>{let L0=Z.worktreePath;if(L0==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;return L10(L0,()=>_((g0)=>g0+1))},[Z.worktreePath]),v4.useEffect(()=>{j(0);let L0=m.current;if(L0==null)return;let g0=new AbortController;if(Q==="all"){if(k.current==null)H0("all",L0,g0.signal)}else if(Q==="changes"){if(s.current==null)H0("changes",L0,g0.signal)}return()=>g0.abort()},[Q,H0]),v4.useEffect(()=>{if(C===0)return;let L0=m.current;if(L0==null)return;let g0=new AbortController;return H0(d.current,L0,g0.signal),()=>g0.abort()},[C,H0]);let u=v4.useMemo(()=>A==null?null:S10(A),[A]),i=v4.useRef([]),t=v4.useMemo(()=>{let L0=[];if(Q==="all"){if(u!=null)uI(u,x,0,L0)}else if(Q==="changes"){if(T!=null)L0.push(...C10(T,x))}let g0=E10(i.current,L0);return i.current=g0,g0},[Q,u,x,T]);v4.useEffect(()=>{if(t.length===0)return;j((L0)=>L0>t.length-1?t.length-1:L0)},[t]);let p=v4.useMemo(()=>O10(t),[t]),U0=Z.paneWidth??z.width,e=v4.useMemo(()=>j10(U0,p),[U0,p]);function o(L0){if(!L0)return;if(L0.type==="cursor")j(L0.index);else if(L0.type==="expand")v((g0)=>new Set(g0).add(L0.path));else v((g0)=>kI(g0,L0.path))}let r=v4.useCallback((L0)=>{if(L0.kind==="dir"||L0.path.endsWith("/"))v((g0)=>kI(g0,L0.path));else O0.current(L0.path)},[]),D0=v4.useCallback((L0,g0)=>{j(g0),r(L0)},[r]),z0=cj("files");N1(()=>({enabled:Z.focused??!0,bindings:N10({moveDown:()=>{if(z0(),t.length===0)return;j((L0)=>Math.min(L0+1,t.length-1))},moveUp:()=>{if(z0(),t.length===0)return;j((L0)=>Math.max(L0-1,0))},setTab:Y,currentTab:()=>Q,openCurrent:()=>{z0();let L0=t[D];if(L0)r(L0)},mentionCurrent:()=>{let L0=t[D];if(!L0||L0.kind==="dir"||L0.path.endsWith("/"))return;Z.onMention?.(L0.path)},openExternal:()=>{let L0=t[D];if(!L0||L0.kind==="dir"||L0.path.endsWith("/"))return;if(!Z.worktreePath)return;fj(`${Z.worktreePath}/${L0.path}`)},refresh:()=>{_((L0)=>L0+1)},toggleScope:()=>{if(Q!=="changes")return;if(M==null)return;K(!0),$((L0)=>L0==="working"?"branch":"working")},openDiff:()=>{let L0=t[D];if(!L0||L0.kind==="dir"||L0.path.endsWith("/"))return;Z.onOpenDiff?.(L0.path,G==="branch"&&M!=null?M:void 0)},expandOrDescend:()=>o(F10(t,D)),collapseOrParent:()=>{if(Q!=="all")return;o(_10(t,D))}})}));let j0=v4.useRef(null);v4.useEffect(()=>{let L0=j0.current;if(!L0||t.length===0)return;let g0=bj(L0.scrollTop,L0.viewport.height,D);if(g0!=null)L0.scrollTo({x:0,y:g0})},[D,t]);let C0=Q==="all"&&A!=null||Q==="changes"&&T!=null;return q0("box",{flexDirection:"column",flexGrow:1,paddingLeft:0,paddingRight:0,children:[y(k10,{tab:Q,scope:G,base:M,onSelectTab:Y,onZenToggle:Z.onZenToggle,onCreatePR:Z.onCreatePR}),y("scrollbox",{ref:(L0)=>{j0.current=L0},flexGrow:1,verticalScrollbarOptions:{trackOptions:{foregroundColor:"transparent"}},children:Z.worktreePath==null?y("box",{paddingTop:1,paddingLeft:1,children:y("text",{fg:X.textMuted,children:J("files.empty.noTask")})}):E!=null?q0("box",{paddingTop:1,paddingLeft:1,flexDirection:"column",gap:0,children:[y("text",{fg:X.error,wrapMode:"word",children:W10(E,J)}),y("text",{fg:X.textMuted,wrapMode:"word",children:J("files.error.retryHint")})]}):t.length===0&&C0?y("box",{paddingTop:1,paddingLeft:1,children:y("text",{fg:X.textMuted,children:Q==="all"?J("files.empty.noFiles"):J("files.empty.noChanges")})}):t.length>0?y("box",{flexShrink:0,gap:0,paddingRight:1,children:t.map((L0,g0)=>y(c10,{row:L0,index:g0,cursor:g0===D,statWidths:p,pathBudget:e,onActivate:D0},`${L0.kind}:${L0.path}`))}):null}),Z.worktreePath!=null?y("box",{flexDirection:"row",justifyContent:"flex-end",paddingTop:1,flexShrink:0,children:y(lj,{pane:"files"})}):null]})}var v4;var d10=h(async()=>{B10();bI();gI();gj();cI();x1();x7();w0();await w1([e4(),WV(),P1(),p4(),h10(),l10()]);v4=p0(o0(),1)});function n10(Z){let{theme:X,transparentBackground:J}=x0(),z=cW(),Q=q5(),Y=J?X.border:X.borderSubtle,G=Math.max(i10,Q.width-JX),$=Math.max(i10,Math.min(gA0,Math.floor(G/3)));return y("box",{width:$,flexShrink:0,borderColor:z.focused==="files"?X.focusAccent:Y,onMouseUp:()=>z.setFocused("files"),children:y(p10,{worktreePath:Z.worktree,paneWidth:$-2,prBaseRef:Z.prBaseRef,focused:Z.focused,onOpenFile:Z.onOpenFile,onOpenDiff:Z.onOpenDiff,onZenToggle:Z.onZenToggle,onCreatePR:Z.onCreatePR})})}var i10=22,gA0=34;var a10=h(async()=>{rJ();w0();await w1([e4(),vK(),P1(),d10()])});function o10(Z,X=8){let J=Math.min(1,Math.max(0,Z))*X,z=Math.floor(J),Q=Math.round((J-z)*8);if(Q===8)z+=1,Q=0;let Y=z<X?mA0[Q]??"":"";return`${"\u2588".repeat(z)}${Y}`.padEnd(X,"\u2591")}var mA0;var nI=h(()=>{mA0=["","\u258F","\u258E","\u258D","\u258C","\u258B","\u258A","\u2589"]});function oI(Z,X){if(Z==null||Z<=X)return"";let J=new Date(Z),z=`${s10(J.getHours())}:${s10(J.getMinutes())}`;if(Z-X<86400000)return`\u2192 ${z}`;return`\u2192 ${J.getMonth()+1}/${J.getDate()} ${z}`}function r10(Z,X){return Z.windows.map((J)=>({label:J.label,percentText:`${J.percent}%`,resetText:oI(J.resetsAt,X),tone:aI(J.percent)}))}function t10(Z,X){let J=Z.windows.find((z)=>z.kind==="session")??Z.windows[0];if(!J)return null;return{label:J.label,percentText:`${J.percent}%`,resetText:oI(J.resetsAt,X),tone:aI(J.percent)}}function e10(Z,X){let J=Math.min(8,Z.windows.reduce((z,Q)=>Math.max(z,Q.label.length),2));return Z.windows.map((z)=>({label:(z.label.length>J?z.label.slice(0,J):z.label).padEnd(J),bar:o10(z.percent/100,kA0),percentText:`${String(z.percent).padStart(3)}%`,resetText:oI(z.resetsAt,X),tone:aI(z.percent)}))}var kA0=10,aI=(Z)=>Z>=95?"crit":Z>=75?"warn":"ok",s10=(Z)=>String(Z).padStart(2,"0");var sI=h(()=>{nI()});function hA0(Z){let{theme:X}=x0(),J=F4(Z.orchestrator.usageSnapshotSignal());if(!J||J.size===0)return null;let z={ok:X.success,warn:X.warning,crit:X.error},Q=Date.now();if(Z.narrow)return y("box",{flexDirection:"row",gap:2,children:[...J.entries()].flatMap(([Y,G])=>{let $=t10(G,Q);if(!$)return[];return[q0("box",{flexDirection:"row",gap:1,children:[y("text",{fg:X.textMuted,wrapMode:"none",children:v5(Y).toUpperCase()}),y("text",{fg:z[$.tone],wrapMode:"none",children:$.percentText})]},Y)]})});return y("box",{flexDirection:"row",gap:2,children:[...J.entries()].map(([Y,G])=>q0("box",{flexDirection:"row",gap:1,children:[y("text",{fg:X.textMuted,wrapMode:"none",children:v5(Y).toUpperCase()}),r10(G,Q).map(($,H)=>q0("box",{flexDirection:"row",gap:1,children:[y("text",{fg:X.textMuted,wrapMode:"none",children:H===0?$.label:`\xB7 ${$.label}`}),y("text",{fg:z[$.tone],wrapMode:"none",children:$.percentText}),$.resetText?y("text",{fg:X.textMuted,wrapMode:"none",children:$.resetText}):null]},$.label))]},Y))})}function Z40(Z){let{theme:X}=x0(),J=q5(),z=X3(J.width),Q=F4(Z.orchestrator.usageSnapshotSignal()),Y=dI({onOpenSettings:Z.onOpenSettings}),G=Q!=null&&Q.size>0||Y.length>0;return q0("box",{flexDirection:"column",flexGrow:1,backgroundColor:X.background,children:[y("box",{flexDirection:"row",flexGrow:1,children:Z.children}),G?q0("box",{flexDirection:"row",flexShrink:0,height:1,paddingLeft:1,paddingRight:1,gap:2,children:[y("box",{flexGrow:1,flexDirection:"row",children:y(hA0,{orchestrator:Z.orchestrator,narrow:z})}),y(m10,{onOpenSettings:z?void 0:Z.onOpenSettings,compact:z})]}):null]})}var X40=h(async()=>{$7();sI();x6();w0();await w1([e4(),WV(),P1()])});import{TextAttributes as uA0}from"@opentui/core";function cA0(Z){if(!Z)return Z;return Z.charAt(0).toUpperCase()+Z.slice(1)}function d4(Z){let X=B4(),{theme:J}=x0(),z=h0(),Q=F7(),[Y,G]=J40.useState(Z.initialActive??"confirm");return N1(()=>({bindings:[{key:"return",cmd:()=>{if(Y==="confirm")Z.onConfirm?.();if(Y==="cancel")Z.onCancel?.();X.clear()}},{key:"left",cmd:()=>G(($)=>$==="confirm"?"cancel":"confirm")},{key:"right",cmd:()=>G(($)=>$==="confirm"?"cancel":"confirm")}]})),q0("box",{paddingLeft:Q,paddingRight:Q,paddingBottom:1,gap:0,children:[q0("box",{flexDirection:"row",justifyContent:"space-between",children:[y("text",{attributes:uA0.BOLD,fg:J.text,children:Z.title}),y("text",{fg:J.textMuted,onMouseUp:()=>X.clear(),children:"esc"})]}),y("text",{fg:J.textMuted,children:Z.message}),y("box",{flexDirection:"row",justifyContent:"flex-end",paddingTop:1,children:["cancel","confirm"].map(($)=>y("box",{paddingLeft:1,paddingRight:1,backgroundColor:$===Y?J.primary:void 0,onMouseUp:()=>{if($==="confirm")Z.onConfirm?.();if($==="cancel")Z.onCancel?.();X.clear()},children:y("text",{fg:$===Y?J.selectedListItemText:J.textMuted,children:cA0($==="cancel"?Z.label??z("common.cancel"):Z.confirmLabel??z("common.confirm"))})},$))})]})}var J40;var p9=h(async()=>{x1();w0();await w1([P1(),p4(),R5()]);J40=p0(o0(),1);d4.show=(Z,X,J,z,Q,Y)=>{return S8(Z,(G)=>y(d4,{title:X,message:J,onConfirm:()=>G(!0),onCancel:()=>G(!1),label:z,confirmLabel:Q,initialActive:Y?.initialActive}),{size:"small"})}});function z40(Z){return!Z.dialogOpen&&!Z.settingsOpen&&!Z.worktreesOpen&&!Z.updateOpen}function Q40(Z){return Z.settingsOpen&&!Z.dialogOpen}function Y40(Z,X,J){let z=lA0.filter((G)=>G!=="files"||J.filesVisible),Q=z.indexOf(Z);if(Q<0)return(X>0?z[z.length-1]:z[0])??null;let Y=Math.min(Math.max(Q+X,0),z.length-1);return Y===Q?null:z[Y]??null}var lA0;var G40=h(()=>{lA0=["sidebar","workspace","files"]});function pA0(Z){let X=Z.kind==="pane"?["plugin","pane","open",Z.target]:["plugin","action","invoke",Z.target],[J,...z]=[...kG(),...X];hJ(J,z,{onError:(Q)=>console.warn(`[rove/plugins] ${Z.target}: ${String(Q)}`)})}function $40(Z){N1(()=>({enabled:Z,bindings:qd().map((X)=>({key:X.chord,cmd:()=>pA0(X)}))}))}var q40=h(async()=>{hG();gK();wK();await p4()});function U40(Z){let{focus:X,dialog:J}=Z,z=h0(),Q=l4();function Y(){try{Q?.destroy()}catch(M){console.error("Rove: renderer.destroy() failed during quit:",M)}process.exit(0)}async function G(){if(await d4.show(J,z("workspace.quit.confirmTitle"),z("workspace.quit.confirmBody"),z("common.cancel"),z("workspace.quit.confirmLabel")))Y()}function $(M){let W=Y40(X.focused,M,{filesVisible:Z.filesPaneVisible!==!1});if(W)X.setFocused(W)}let H={dialogOpen:Z.dialog.stack.length>0,settingsOpen:Z.pages.settingsOpen,worktreesOpen:Z.pages.worktreesOpen,updateOpen:Z.pages.updateOpen,kanbanOpen:Z.pages.kanbanOpen,automationsOpen:Z.pages.automationsOpen,workItemsOpen:Z.pages.workItemsOpen},K=z40(H);N1(()=>({enabled:K,bindings:[...O5({"help.open":()=>Vq.show(J,X.focused),"focus.previous":()=>$(-1),"focus.next":()=>$(1),"workspace.zenToggle":()=>Z.toggleZen(),"attention.next":()=>Z.jumpToNextAttention(),"inbox.show":()=>Z.openInbox(),"kanban.open":()=>Z.pages.openKanban(),"automations.open":()=>Z.pages.openAutomations(),"workItems.open":()=>Z.pages.openWorkItems(),"task.moveMode":()=>Z.enterMoveMode(),"settings.open":()=>Z.pages.openSettings(),"files.createPR":()=>Z.createPR(),"task.openEditor":()=>{if(Z.selectedId)Z.openTaskWorktree(Z.selectedId)}})]})),N1(()=>({enabled:K&&X.focused!=="sidebar",bindings:O5({"focus.sidebar":()=>X.setFocused("sidebar")})})),N1(()=>({enabled:K&&X.focused==="sidebar",bindings:O5({"app.quit":(M,W)=>{if(W===1){Y();return}G()},"settings.open.sidebar":()=>Z.pages.openSettings(),"worktrees.open.sidebar":()=>Z.pages.openWorktrees(),"tasks.update":()=>Z.pages.openUpdate()})})),N1(()=>({enabled:K&&X.focused==="sidebar"&&!Z.searchActive,bindings:O5({"task.new":()=>Z.createTask(),"tasks.openWorktree":()=>{if(Z.selectedId)Z.openTaskWorktree(Z.selectedId)},"tasks.renameBranch":()=>{let M=Z.selectedId;if(M)Z.renameBranch(M)},"tasks.cycleEngine":()=>{let M=Z.selectedId;if(M)Z.cycleVendor(M)},"tasks.focusEngine":()=>X.setFocused("workspace")})})),N1(()=>({enabled:Q40(H),bindings:u7(Z.pages.closeSettings)})),$40(K)}var H40=h(async()=>{g6();x1();G40();await w1([e4(),pI(),p4(),p9(),q40()])});function V40(Z){return Z==="terminal"?"sidebar":"workspace"}var K40;var rI=h(()=>{K40=[{nav:"kanban",labelKey:"tasks.nav.kanban"},{nav:"automations",labelKey:"tasks.nav.automations"}]});function pj(Z){let X=Math.round(Z/60000),J=Math.round(X/60);return{minutes:X,hours:J,days:Math.round(J/24)}}function OV(Z,X=1){let J=dj.indexOf(Z);if(J<0)return"name";let z=(J+X+dj.length)%dj.length;return dj[z]}function M40(Z){return Z.name.trim().length>0&&Z.repo.trim().length>0&&Z.prompt.trim().length>0&&m$(Z.schedule.trim())}function N40(Z){if(Z.name.trim().length===0)return"name";if(Z.repo.trim().length===0)return"repo";if(Z.prompt.trim().length===0)return"prompt";if(!m$(Z.schedule.trim()))return"schedule";return null}function D40(Z,X){let J=Z.trim();if(!m$(J))return{kind:"invalid"};let z;try{z=k$(J,X)}catch{return{kind:"never"}}return{kind:"ok",nextRunMs:z,relative:dA0(z-X),absolute:aA0(z,X)}}function dA0(Z){let{minutes:X,hours:J,days:z}=pj(Z);if(X<60)return`in ${Math.max(1,X)}m`;if(J<24)return`in ${J}h`;return`in ${z}d`}function aA0(Z,X){let J=new Date(Z),z=`${String(J.getHours()).padStart(2,"0")}:${String(J.getMinutes()).padStart(2,"0")}`,Q=new Date(X);if(J.getFullYear()===Q.getFullYear()&&J.getMonth()===Q.getMonth()&&J.getDate()===Q.getDate())return z;let G=iA0[J.getDay()]??"";if(Z-X<518400000)return`${G} ${z}`;return`${G} ${nA0[J.getMonth()]??""} ${J.getDate()}, ${z}`}var dj,B40,iA0,nA0;var W40=h(()=>{hK();dj=["name","repo","prompt","schedule","confirm"];B40={name:"",repo:"",prompt:"",schedule:"0 9 * * MON-FRI"};iA0=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],nA0=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function ij(Z){let X=Z.trim().split(/\s+/).filter(Boolean);return VX.map((J,z)=>X[z]??"*")}function O40(Z){return VX.map((X,J)=>Z[J]??"*").join(" ")}function tI(Z,X){let J=[];for(let z=Z;z<=X;z++)J.push(String(z));return J}function eI(Z,X,J){let z=XC0[Z],Q=z.indexOf(X.trim().toUpperCase());if(Q<0)return(J>0?z[0]:z[z.length-1])??X;let Y=(Q+J+z.length)%z.length;return z[Y]??X}function Zx(Z,X){return Math.min(Math.max(Z+X,0),VX.length-1)}function Xx(Z,X,J){let z=ij(Z);if(X<0||X>=VX.length)return O40(z);return z[X]=J,O40(z)}function Jx(Z){let[X,J,z,Q,Y]=ij(Z);if(Q!=="*"||z!=="*")return null;if(X===void 0||J===void 0||Y===void 0)return null;let G=JC0(X,J);if(!G)return null;if(Y==="*")return`every day ${G}`;if(Y==="MON-FRI")return`weekdays ${G}`;if(Y==="SAT,SUN")return`weekends ${G}`;let $=ZC0[Y.toUpperCase()];if($)return`${$} ${G}`;return null}function JC0(Z,X){if(X==="*"){if(Z==="*")return"every minute";if(Z.startsWith("*/"))return`every ${Z.slice(2)}m`;if(/^\d+$/.test(Z))return`hourly at :${Z.padStart(2,"0")}`;return null}if(X.startsWith("*/")&&Z==="0")return`every ${X.slice(2)}h`;if(/^\d+$/.test(X)&&/^\d+$/.test(Z))return`at ${X.padStart(2,"0")}:${Z.padStart(2,"0")}`;return null}var VX,oA0,sA0,rA0,tA0,eA0,ZC0,XC0;var j40=h(()=>{VX=["minute","hour","dayOfMonth","month","dayOfWeek"];oA0=["*","*/5","*/10","*/15","*/30",...tI(0,59)],sA0=["*","*/2","*/3","*/4","*/6","*/12",...tI(0,23)],rA0=["*",...tI(1,31)],tA0=["*","JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"],eA0=["*","MON-FRI","SAT,SUN","MON","TUE","WED","THU","FRI","SAT","SUN"],ZC0={MON:"Mondays",TUE:"Tuesdays",WED:"Wednesdays",THU:"Thursdays",FRI:"Fridays",SAT:"Saturdays",SUN:"Sundays"};XC0={minute:oA0,hour:sA0,dayOfMonth:rA0,month:tA0,dayOfWeek:eA0}});function zx(Z,X){if(!Z)return!0;let J=Z.toLowerCase(),z=X.toLowerCase(),Q=0;for(let Y=0;Y<z.length&&Q<J.length;Y++)if(z.charCodeAt(Y)===J.charCodeAt(Q))Q++;return Q===J.length}function _40(Z,X){let J=X==="archived";return Z.filter((z)=>z.archived===J)}function L40(Z,X){let J=F40(X)-F40(Z);if(J!==0)return J;return String(X.id).localeCompare(String(Z.id))}function F40(Z){let X=Date.parse(Z.updatedAt||Z.createdAt);return Number.isFinite(X)?X:0}function d3(Z){let X=Z.split("/").filter(Boolean);return X[X.length-1]??Z}function tQ(Z){return Z.trim().replace(/[\\/]+$/,"")||Z}function m6(Z,X){let J=d3(Z);if(!X.some((Q)=>Q!==Z&&d3(Q)===J))return J;return Z.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}var y2=()=>{};import{TextAttributes as nj}from"@opentui/core";function k6(Z){let{theme:X}=x0(),J=h0(),z=Z.window.total-Z.window.start-Z.window.items.length;return q0("box",{gap:0,paddingLeft:2,paddingBottom:Z.paddingBottom,children:[Z.window.start>0?y("text",{fg:X.textMuted,wrapMode:"none",children:J("newTask.picker.moreAbove",{count:Z.window.start})}):null,Z.rows.map((Q,Y)=>{let G=Z.window.start+Y,$=G===Z.cursor;return q0("text",{fg:$?X.primary:Q.accent?X.accent:X.textMuted,attributes:$?nj.BOLD:void 0,wrapMode:"none",onMouseUp:()=>Z.onPick(G),children:[$?"\u25B8 ":" ",Q.body]},Q.key)}),z>0?y("text",{fg:X.textMuted,wrapMode:"none",children:J("newTask.picker.moreBelow",{count:z})}):null,Z.footer]})}function i3(Z,X,J){return X===J?{fg:Z.primary,attributes:nj.BOLD|nj.UNDERLINE}:{fg:Z.textMuted}}function Mq(Z){let{theme:X}=x0(),J=Z.arrow!==!1;return q0("box",{flexDirection:"row",flexWrap:"wrap",gap:2,children:[Z.label,Z.choices.map((z)=>{let Q=Z.selected===z,Y=J?Q?"\u25B8 ":" ":"";return y("text",{fg:Q?X.primary:X.textMuted,attributes:Q?nj.BOLD:void 0,wrapMode:"none",flexShrink:0,onMouseUp:()=>Z.onPick(z),children:Y+(Z.display?Z.display(z):z)},z)}),Z.children]})}var BX=h(async()=>{x1();w0();await P1()});import{TextAttributes as Nq}from"@opentui/core";function zC0(Z){let{theme:X}=x0(),J=B4(),z=h0(),Q=F7(),[Y,G]=Dq.useState(()=>({...B40,repo:Z.defaultRepo??Z.repos[0]??""})),[$,H]=Dq.useState("name"),[K,M]=Dq.useState(()=>{let d=Z.repos.indexOf(Z.defaultRepo??"");return d>=0?d:0}),[W,D]=Dq.useState(null),[j,C]=Dq.useState(0),_=ij(Y.schedule),A=(d)=>{H("schedule"),C(Math.min(Math.max(d,0),VX.length-1))},w=()=>{Z.onCancel(),J.clear()},T=(d)=>{G((k)=>({...k,...d})),D(null)},R=(d)=>{let k=Z.repos[Z5(d,Z.repos.length)];if(!k)return;M(Z5(d,Z.repos.length)),T({repo:k})};function E(){if(M40(Y)){Z.onSubmit({name:Y.name.trim(),repo:Y.repo.trim(),prompt:Y.prompt.trim(),schedule:Y.schedule.trim()}),J.clear();return}let d=N40(Y);if(d)H(d),D(z(`automations.missing.${d}`))}let S=D40(Y.schedule,Date.now()),x=b6(Z.repos,K),v=x.items.map((d,k)=>({key:d,body:m6(d,Z.repos),accent:x.start+k===K}));N1(()=>({bindings:[{key:"tab",cmd:()=>H((d)=>OV(d,1))},{key:"shift+tab",cmd:()=>H((d)=>OV(d,-1))},...$==="repo"?[{key:"up",cmd:()=>R(K-1)},{key:"down",cmd:()=>R(K+1)}]:[],...$==="schedule"?[{key:"left",cmd:()=>C((d)=>Zx(d,-1))},{key:"right",cmd:()=>C((d)=>Zx(d,1))},{key:"up",cmd:()=>{let d=VX[j];if(!d)return;T({schedule:Xx(Y.schedule,j,eI(d,_[j]??"*",1))})}},{key:"down",cmd:()=>{let d=VX[j];if(!d)return;T({schedule:Xx(Y.schedule,j,eI(d,_[j]??"*",-1))})}}]:[],...$==="confirm"?[{key:"return",cmd:()=>E()}]:[]]}));let m=(d,k)=>y("text",{fg:$===d?X.primary:X.textMuted,attributes:$===d?Nq.BOLD|Nq.UNDERLINE:void 0,onMouseUp:()=>H(d),children:k});return q0("box",{paddingLeft:Q,paddingRight:Q,gap:1,children:[q0("box",{flexDirection:"row",justifyContent:"space-between",children:[y("text",{attributes:Nq.BOLD,fg:X.text,children:z("automations.newTitle")}),y("text",{fg:X.textMuted,onMouseUp:()=>w(),children:"esc"})]}),q0("box",{gap:0,children:[m("name",z("automations.fieldName")),y("input",{value:Y.name,placeholder:z("automations.namePlaceholder"),focused:$==="name",onMouseUp:()=>H("name"),onInput:(d)=>T({name:d}),onSubmit:()=>H(OV("name"))})]}),q0("box",{gap:0,children:[m("repo",z("automations.fieldRepo")),Z.repos.length===0?y("text",{fg:X.textMuted,children:z("automations.needRepo")}):y(k6,{window:x,cursor:K,rows:v,onPick:R})]}),q0("box",{gap:0,children:[m("prompt",z("automations.fieldPrompt")),y("input",{value:Y.prompt,placeholder:z("automations.promptPlaceholder"),focused:$==="prompt",onMouseUp:()=>H("prompt"),onInput:(d)=>T({prompt:d}),onSubmit:()=>H(OV("prompt"))})]}),q0("box",{gap:0,children:[m("schedule",z("automations.fieldSchedule")),y("box",{flexDirection:"row",gap:2,paddingLeft:1,children:VX.map((d,k)=>{let s=$==="schedule"&&k===j;return q0("box",{flexDirection:"column",onMouseUp:()=>A(k),children:[y("text",{fg:s?X.primary:X.text,attributes:s?Nq.BOLD|Nq.UNDERLINE:void 0,wrapMode:"none",children:_[k]??"*"}),y("text",{fg:s?X.textMuted:X.borderSubtle,wrapMode:"none",children:z(`automations.cronField.${d}`)})]},d)})}),y("box",{flexDirection:"row",gap:1,paddingLeft:1,children:S.kind==="ok"?y("text",{fg:X.success,wrapMode:"none",children:`${Jx(Y.schedule)??""}${Jx(Y.schedule)?" \xB7 ":""}${S.relative} \xB7 ${S.absolute}`}):y("text",{fg:X.error,wrapMode:"none",children:S.kind==="never"?z("automations.cronNever"):z("automations.cronInvalid")})})]}),W?q0("text",{fg:X.error,wrapMode:"word",children:["\u203B ",W]}):null,y("box",{flexDirection:"row",justifyContent:"flex-end",paddingTop:1,paddingBottom:1,children:y("text",{fg:$==="confirm"?X.primary:X.text,attributes:$==="confirm"?Nq.BOLD:void 0,onMouseUp:()=>E(),children:`[ ${z("common.create")} ]`})})]})}var Dq,A40;var C40=h(async()=>{W40();j40();I2();y2();x1();w0();await w1([P1(),p4(),R5(),BX()]);Dq=p0(o0(),1);A40={show(Z,X){return S8(Z,(J)=>y(zC0,{repos:X.repos,...X.defaultRepo?{defaultRepo:X.defaultRepo}:{},onSubmit:(z)=>J(z),onCancel:()=>J(void 0)}))}}});import{TextAttributes as aj}from"@opentui/core";function E40(Z,X){if(!Z)return"\u2014";let J=Date.parse(Z);if(!Number.isFinite(J))return"\u2014";let z=J-X,{minutes:Q,hours:Y}=pj(Math.abs(z));if(Q<1)return z>=0?"now":"just now";if(Q<60)return z>=0?`in ${Q}m`:`${Q}m ago`;if(Y<24)return z>=0?`in ${Y}h`:`${Y}h ago`;return new Date(J).toLocaleDateString()}function GC0(Z){return Z.split("/").filter(Boolean).pop()??Z}function R40(Z){let{theme:X}=x0(),J=B4(),z=h0(),[Q,Y]=n3.useState(null),[G,$]=n3.useState(!1),[H,K]=n3.useState([]),[M,W]=n3.useState(0),[D,j]=n3.useState(null),[C,_]=n3.useState(null),A=()=>W((k)=>k+1);n3.useEffect(()=>{let k=!1,s=Z.orchestrator;if(!s){Y([]);return}let n=()=>{s.listAutomations().then((K0)=>{if(k)return;Y(K0.automations),$(K0.keepsDaemonAlive)}).catch(()=>{if(!k)Y((K0)=>K0??[])})};n();let Q0=setInterval(n,QC0);return()=>{k=!0,clearInterval(Q0)}},[Z.orchestrator,M]);let w=Q??[],[T,R]=n3.useState(0);n3.useEffect(()=>{R((k)=>Z5(k,w.length))},[w.length]);let E=w[T];n3.useEffect(()=>{let k=!1,s=Z.orchestrator;if(!s||!E){K([]);return}return s.automationRuns(E.id).then((n)=>{if(!k)K(n.runs)}).catch(()=>{if(!k)K([])}),()=>{k=!0}},[Z.orchestrator,E,M]);async function S(){let k=Z.orchestrator;if(!k||!E||D)return;j(E.id);try{await k.setAutomationEnabled(E.id,!E.enabled),A()}catch(s){_(s instanceof Error?s.message:String(s))}finally{j(null)}}async function x(){let k=Z.orchestrator;if(!k||!E||D)return;j(E.id),_(z("automations.running",{name:E.name}));try{let s=await k.runAutomationNow(E.id);_(z("automations.ranWith",{name:E.name,status:s.status})),A()}catch(s){_(s instanceof Error?s.message:String(s))}finally{j(null)}}async function v(){let k=Z.orchestrator;if(!k||D)return;let s=[...new Set(k.listTasks().map((Q0)=>Q0.repo))].filter(Boolean);if(s.length===0){_(z("automations.needRepo"));return}let n=await A40.show(J,{repos:s,...Z.focusRepo?{defaultRepo:Z.focusRepo}:{}});if(!n)return;j("new");try{await k.createAutomation(n),A()}catch(Q0){_(Q0 instanceof Error?Q0.message:String(Q0))}finally{j(null)}}async function m(){let k=Z.orchestrator;if(!k||!E||D)return;if(await d4.show(J,z("automations.deleteTitle"),z("automations.deleteBody",{name:E.name}),z("common.cancel"),z("automations.deleteButton"))!==!0)return;j(E.id);try{await k.deleteAutomation(E.id),A()}catch(n){_(n instanceof Error?n.message:String(n))}finally{j(null)}}N1(()=>({enabled:Z.focused!==!1,bindings:[...u7(Z.onClose),{key:"j",cmd:()=>R((k)=>Z5(k+1,w.length))},{key:"down",cmd:()=>R((k)=>Z5(k+1,w.length))},{key:"k",cmd:()=>R((k)=>Z5(k-1,w.length))},{key:"up",cmd:()=>R((k)=>Z5(k-1,w.length))},{key:"n",cmd:()=>void v()},{key:"r",cmd:()=>A()},{key:"e",cmd:()=>void S()},{key:"s",cmd:()=>void x()},{key:"d",cmd:()=>void m()},{key:"return",cmd:()=>{let k=H.find((s)=>s.taskId)?.taskId;if(k)Z.onOpenTask?.(k)}}]}));let d=Date.now();return q0("box",{flexDirection:"column",flexGrow:1,paddingTop:1,paddingLeft:2,paddingRight:2,children:[q0("box",{flexDirection:"row",gap:1,flexShrink:0,children:[y("text",{attributes:aj.BOLD,fg:X.primary,wrapMode:"none",flexShrink:0,children:z("automations.title")}),y("text",{fg:X.borderSubtle,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:"\u2500".repeat(240)}),y("text",{fg:G?X.success:X.textMuted,wrapMode:"none",flexShrink:0,children:G?z("automations.holdingDaemon"):z("automations.notHolding")})]}),Q===null?y("box",{paddingTop:1,children:y("text",{fg:X.textMuted,children:z("common.loading")})}):w.length===0?q0("box",{flexDirection:"column",paddingTop:1,gap:1,children:[y("text",{fg:X.textMuted,children:z("automations.empty")}),y("text",{fg:X.text,children:z("automations.emptyHint")})]}):y("box",{flexDirection:"column",marginTop:1,flexGrow:1,gap:0,children:w.map((k,s)=>{let n=s===T;return q0("box",{flexDirection:"row",flexShrink:0,border:!0,borderColor:n?X.borderActive:X.borderSubtle,paddingLeft:1,paddingRight:1,gap:1,...n?{backgroundColor:X.backgroundElement}:{},children:[y("text",{fg:k.enabled?X.text:X.textMuted,attributes:n?aj.BOLD:void 0,wrapMode:"none",flexShrink:1,children:k.name}),y("text",{fg:X.borderSubtle,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:"\u2500".repeat(240)}),y("text",{fg:X.textMuted,wrapMode:"none",flexShrink:1,children:`${GC0(k.repo)} \xB7 ${k.schedule}`}),k.enabled?null:y("text",{fg:X.warning,wrapMode:"none",flexShrink:0,children:`${z("automations.paused")} \xB7`}),y("text",{fg:X.textMuted,wrapMode:"none",flexShrink:0,children:E40(k.nextRunAt,d)})]},k.id)})}),y("box",{flexDirection:"column",marginTop:1,border:!0,borderColor:X.border,padding:1,flexShrink:0,children:E?q0(a5,{children:[q0("box",{flexDirection:"row",justifyContent:"space-between",gap:2,children:[y("text",{fg:X.text,wrapMode:"none",flexShrink:1,flexGrow:1,children:E.prompt}),y("text",{fg:D===E.id?X.textMuted:X.primary,attributes:aj.BOLD,wrapMode:"none",flexShrink:0,onMouseUp:()=>void x(),children:z("automations.runNow")})]}),E.precheck?y("text",{fg:X.textMuted,children:z("automations.precheck",{command:E.precheck.command})}):null,y("text",{attributes:aj.BOLD,fg:X.text,children:z("automations.recentRuns")}),H.length===0?y("text",{fg:X.textMuted,children:z("automations.noRuns")}):H.slice(0,5).map((k)=>{let s=YC0[k.status]??"muted",n=s==="success"?X.success:s==="warning"?X.warning:s==="error"?X.error:X.textMuted;return y("text",{fg:n,children:`#${k.runNumber} ${k.status}${k.error?` \u2014 ${k.error}`:""} ${E40(k.at,d)}`},k.id)})]}):y("text",{fg:X.textMuted,children:z("automations.noSelection")})}),C?y("text",{fg:X.textMuted,children:C}):null]})}var n3,QC0=5000,YC0;var T40=h(async()=>{I2();x1();w0();await w1([P1(),p4(),R5(),p9(),C40()]);n3=p0(o0(),1),YC0={dispatched:"success",skipped_precheck:"muted",skipped_missed:"warning",skipped_unavailable:"warning",dispatch_failed:"error"}});function S40(Z){return $C0[Z]??"parked"}var $C0;var P40=h(()=>{$C0={backlog:"active",in_progress:"active",in_review:"parked",error:"parked",done:"terminal",canceled:"terminal",open:"active",doing:"active",hold:"parked"}});function I40(Z,X,J){let z=Z.find(($)=>$.issues.length>0)?.issues[0]?.id??null;if(X==null)return z;let Q=-1,Y=-1;for(let[$,H]of Z.entries()){let K=H.issues.findIndex((M)=>M.id===X);if(K!==-1){Q=$,Y=K;break}}if(Q===-1)return z;if(J==="up"||J==="down"){let $=Z[Q]?.issues??[],H=J==="up"?Y-1:Y+1;return $[Math.max(0,Math.min(H,$.length-1))]?.id??X}let G=J==="left"?-1:1;for(let $=Q+G;$>=0&&$<Z.length;$+=G){let H=Z[$]?.issues??[];if(H.length===0)continue;return H[Math.min(Y,H.length-1)]?.id??X}return X}function UC0(Z){let X=S40(Z.status);if(X==="terminal")return"done";if(X==="parked")return"parked";if(Z.taskId!==void 0&&Z.taskId!=="")return"in_progress";return"backlog"}function Yx(Z){return Z!==void 0&&HC0.includes(Z)}function x40(Z,X){let J=0;return{columns:Z.map((Q)=>{if(Q.key!=="in_progress")return Q;let Y=[],G=[];for(let $ of Q.issues)if($.taskId!==void 0&&$.taskId!==""&&Yx(X($.taskId)))Y.push($);else G.push($);return J=Y.length,Y.length===0?Q:{...Q,issues:[...Y,...G]}}),attentionCount:J}}function KC0(Z,X){if(Z.created!==X.created)return Z.created<X.created?1:-1;return X.id-Z.id}function y40(Z){let X={backlog:[],in_progress:[],parked:[],done:[]};for(let J of Z)X[UC0(J)].push(J);return qC0.map((J)=>{let z=J==="done"||J==="parked",Q=X[J].sort(KC0);if(!z||Q.length<=Qx)return{key:J,issues:Q,hiddenCount:0};return{key:J,issues:Q.slice(0,Qx),hiddenCount:Q.length-Qx}})}var qC0,Qx=20,HC0;var Gx=h(()=>{P40();qC0=["backlog","in_progress","parked","done"];HC0=["permission_needed","rate_limited","error"]});import{randomBytes as f40}from"crypto";import{existsSync as $x,mkdirSync as VC0,writeFileSync as BC0}from"fs";import{isAbsolute as MC0,join as NC0}from"path";function OC0(Z){if(Z.startsWith('"')&&Z.endsWith('"')||Z.startsWith("'")&&Z.endsWith("'"))return Z.slice(1,-1);return Z}function jC0(Z){let J=`__DOUBLE_BACKSLASH_${f40(8).toString("hex")}__`;return Z.replace(/\\\\/g,J).replace(/\\(.)/g,"$1").replaceAll(J,"\\")}function b40(Z,X=$x){let J=jC0(OC0(Z.trim()));if(!DC0.test(J))return null;if(!MC0(J))return null;return X(J)?J:null}function Wq(Z,X=$x){let J=Z.split(`
702
+ `))Q++;return Q}function fI(Z){return _h(Z).map((X)=>({path:X.path,added:X.added,deleted:X.deleted}))}function FA0(Z){let X=[];for(let J of hD(Z)){let z;if(J.x==="?"&&J.y==="?")z="?";else{let Y=J.y!==" "?J.y:J.x;if(Y==="M"||Y==="A"||Y==="D"||Y==="R"||Y==="C"||Y==="U"||Y==="T")z=Y;else continue}let Q=J.path;if(Q.length===0)continue;if(Q.endsWith("/")&&z!=="?")continue;X.push({path:Q,status:z})}return X}var B10=h(()=>{uD();tK()});function M10(Z){switch(Z){case"all":return"files.tabs.all";case"changes":return"files.tabs.changes"}}function N10(Z){return O5({"files.nav":(X,J)=>{if((J??0)%2===0)Z.moveDown();else Z.moveUp()},"files.hierarchy":(X,J)=>{if((J??0)%2===0)Z.collapseOrParent();else Z.expandOrDescend()},"files.tab":(X,J)=>{let z=Z.currentTab(),Q=qq.indexOf(z);if(Q<0)return;let Y=(J??0)%2===0?-1:1,G=qq[(Q+Y+qq.length)%qq.length];if(G)Z.setTab(G)},"files.open":()=>Z.openCurrent(),"files.mention":()=>Z.mentionCurrent?.(),"files.openExternal":()=>Z.openExternal(),"files.refresh":()=>Z.refresh(),"files.scope":()=>Z.toggleScope?.(),"files.diff":()=>Z.openDiff?.()})}var qq;var bI=h(()=>{iZ();qq=["all","changes"]});import{spawn as _A0}from"child_process";import{existsSync as LA0}from"fs";import{platform as AA0}from"os";function fj(Z){if(!Z)return;let X=AA0();if(X==="linux"){if(LA0("/proc/sys/fs/binfmt_misc/WSLInterop")||process.env.WSL_DISTRO_NAME){BV("wslview",[Z],()=>{let J=_A0("wslpath",["-w",Z],{stdio:["ignore","pipe","ignore"]}),z="";J.stdout?.on("data",(Q)=>{z+=Q.toString()}),J.on("close",(Q)=>{if(Q===0)BV("explorer.exe",[z.trim()])})});return}BV("xdg-open",[Z]);return}if(X==="darwin"){BV("open",[Z]);return}if(X==="win32"){BV("cmd.exe",["/c","start","",Z]);return}}function BV(Z,X,J){hJ(Z,X,{onError:J?()=>J():void 0})}var gI=h(()=>{gK()});import{watch as CA0}from"fs";function D10(Z){switch(Z){case"M":return"warning";case"A":return"success";case"D":return"error";case"?":return"textMuted";case"R":case"C":case"U":case"T":return"info"}}function W10(Z,X){let J=Z.toLowerCase();if(J.includes("not a git repository"))return X("files.error.notGitRepo");if(J.includes("does not exist")||J.includes("enoent"))return X("files.error.pathMissing");if(J.includes("permission denied")||J.includes("eacces"))return X("files.error.permissionDenied");if(J.includes("git: not found")||J.includes("command not found"))return X("files.error.gitNotInstalled");let z=Z.indexOf(": ");if(z>=0&&Z.startsWith("git "))return Z.slice(z+2).trim()||X("files.error.gitFailed");return Z.trim()||X("files.error.gitFailed")}function O10(Z){let X=0,J=0;for(let z of Z){if(z.kind!=="status")continue;if(z.added!=null)X=Math.max(X,String(z.added).length+1);if(z.deleted!=null)J=Math.max(J,String(z.deleted).length+1)}return{added:X,deleted:J}}function j10(Z,X){let J=(X.added>0?X.added+1:0)+(X.deleted>0?X.deleted+1:0);return Math.max(8,Z-6-J)}function mI(Z,X,J){let z=J==="-"?"\u2212":J;return Z==null?" ".repeat(X):`${z}${Z}`.padStart(X)}function kI(Z,X){let J=new Set(Z);if(J.has(X))J.delete(X);else J.add(X);return J}function F10(Z,X){let J=Z[X];if(!J||J.kind!=="dir")return null;if(!J.expanded&&J.hasChildren)return{type:"expand",path:J.path};if(J.expanded&&X+1<Z.length)return{type:"cursor",index:X+1};return null}function _10(Z,X){let J=Z[X];if(!J)return null;if(J.kind==="dir"&&J.expanded)return{type:"collapse",path:J.path};if(J.kind!=="dir"&&J.kind!=="file")return null;let z=J.depth-1;if(z<0)return null;for(let Q=X-1;Q>=0;Q--){let Y=Z[Q];if(!Y)continue;if(Y.kind==="dir"&&Y.depth===z)return{type:"cursor",index:Q}}return null}function bj(Z,X,J){if(X<=0)return null;if(J<Z)return J;if(J>=Z+X)return J-X+1;return null}function EA0(Z){if(Z===".git"||Z.startsWith(".git/")||Z.startsWith(".git\\"))return!1;if(Z.startsWith("node_modules/")||Z.startsWith("node_modules\\"))return!1;return!0}function L10(Z,X,J=500){let z=null,Q=null;try{Q=CA0(Z,{recursive:!0},(Y,G)=>{if(G==null)return;if(!EA0(G.toString()))return;if(z!=null)clearTimeout(z);z=setTimeout(()=>{z=null,X()},J)}),Q.on("error",()=>{})}catch{}return()=>{if(z!=null)clearTimeout(z);if(Q!=null)Q.close()}}var gj=()=>{};function hI(Z,X,J,z,Q={}){if(Z.length===0)return X;let Y=new Map;for(let H of Z)Y.set(J(H),H);let G=Z.length===X.length,$=Array(X.length);for(let H=0;H<X.length;H++){let K=X[H],M=Y.get(J(K));if(M&&z(M,K)&&(!Q.samePosition||Z[H]===M)){if($[H]=M,G&&Z[H]!==M)G=!1}else $[H]=K,G=!1}return G?Z:$}function uI(Z,X,J,z){for(let Q of Z.children)if(Q.isDir){let Y=X.has(Q.path);if(z.push({kind:"dir",path:Q.path,name:Q.name,depth:J,expanded:Y,hasChildren:Q.children.length>0}),Y)uI(Q,X,J+1,z)}else z.push({kind:"file",path:Q.path,name:Q.name,depth:J})}function A10(Z,X){return $j(Z,X)}function C10(Z,X=RA0){let J=[];for(let z of Z){if(z.children==null){J.push({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted});continue}let Q=X.has(z.path);if(J.push({kind:"status",path:z.path,status:z.status,added:z.added,deleted:z.deleted,fileCount:z.children.length,expanded:Q}),Q)for(let Y of z.children)J.push({kind:"status",path:Y.path,status:Y.status,added:Y.added,deleted:Y.deleted,child:!0})}return J}function TA0(Z){return`${Z.kind}\x00${Z.path}`}function SA0(Z,X){if(Z.kind!==X.kind||Z.path!==X.path)return!1;switch(Z.kind){case"file":{let J=X;return Z.name===J.name&&Z.depth===J.depth}case"dir":{let J=X;return Z.name===J.name&&Z.depth===J.depth&&Z.expanded===J.expanded&&Z.hasChildren===J.hasChildren}case"status":{let J=X;return Z.status===J.status&&Z.added===J.added&&Z.deleted===J.deleted&&Z.fileCount===J.fileCount&&Z.expanded===J.expanded&&Z.child===J.child}}}function E10(Z,X){return hI(Z,X,TA0,SA0)}function R10(Z,X){if(Z===X)return!0;if(Z==null||X==null)return!1;if(Z.length!==X.length)return!1;for(let J=0;J<Z.length;J++)if(Z[J]!==X[J])return!1;return!0}function T10(Z,X){if(Z===X)return!0;if(Z==null||X==null)return!1;if(Z.length!==X.length)return!1;for(let J=0;J<Z.length;J++){let z=Z[J],Q=X[J];if(z.path!==Q.path||z.status!==Q.status||z.added!==Q.added||z.deleted!==Q.deleted)return!1;let Y=z.children,G=Q.children;if(Y==null!==(G==null))return!1;if(Y&&G){if(Y.length!==G.length)return!1;for(let $=0;$<Y.length;$++){let H=Y[$],K=G[$];if(H.path!==K.path||H.status!==K.status||H.added!==K.added||H.deleted!==K.deleted)return!1}}}return!0}var RA0;var cI=h(()=>{RA0=new Set});function S10(Z){let X={name:"",path:"",isDir:!0,children:[]};for(let J of Z){if(!J)continue;let z=J.split("/").filter((Y)=>Y.length>0);if(z.length===0)continue;let Q=X;for(let Y=0;Y<z.length;Y++){let G=z[Y],H=Y!==z.length-1,K=Q.children.find((M)=>M.name===G&&M.isDir===H);if(!K)K={name:G,path:z.slice(0,Y+1).join("/"),isDir:H,children:[]},Q.children.push(K);Q=K}}return P10(X),X}function P10(Z){Z.children.sort((X,J)=>{if(X.isDir!==J.isDir)return X.isDir?-1:1;return X.name.localeCompare(J.name)});for(let X of Z.children)P10(X)}function mj(Z,X){if(Z.includes("/"))return Z.split("/").map((Q)=>mj(Q,X)).join("/");let J=Z.toLowerCase();if(J==="tab")return"tab";let z=IA0[J];if(z)return z;if(/^f\d{1,2}$/.test(J))return J.toUpperCase();if(!X)return Z;if(/^[a-z]$/.test(J))return Z.toUpperCase();return Z.replace(/[a-z]+/gi,(Q)=>Q.toUpperCase())}function H7(Z,X="\u2303A"){let J=Z.trim();if(!J)return J;let z=/^prefix\s+(.+)$/i.exec(J);if(z){let $=z[1]??"";return`${X} ${$.includes("+")?H7($,X):mj($,!0)}`}let Q=J.split("+");if(Q.length===1)return mj(Q[0]??"",!1);let Y=Q[Q.length-1]??"";return`${Q.slice(0,-1).map(($)=>PA0[$.toLowerCase().trim()]??$).join("")} ${mj(Y,!0)}`}var PA0,IA0;var Uq=h(()=>{PA0={ctrl:"\u2303",control:"\u2303",alt:"\u2325",opt:"\u2325",option:"\u2325",shift:"\u21E7",cmd:"\u2318",command:"\u2318",meta:"\u2318",super:"\u2318"},IA0={enter:"\u23CE",return:"\u23CE",esc:"\u238B",escape:"\u238B",space:"\u2423",up:"\u2191",down:"\u2193",left:"\u2190",right:"\u2192",backspace:"\u232B",delete:"\u2326",del:"\u2326",pgup:"\u21DE",pageup:"\u21DE",pgdn:"\u21DF",pagedown:"\u21DF",home:"\u2196",end:"\u2198"}});function xA0(Z){return Z.hint?.keys??Z.keys[0]}function x2(Z){let X=vJ(Z);if(!X)return null;let J=xA0(X);return J&&J.length>0?J:null}function yA0(Z){if(Z.keys.length>0)return Z.hint?.keys??Z.keys[0]??null;return Z.prefixKeys?.length?null:Z.hint?.keys??null}function wA0(Z,X){if(Z.scope==="global")return!0;if(X===null)return!1;if(Z.scope===X)return!0;return X==="terminal"&&Z.scope==="workspace"}function I10(Z,X,J,z){let Q=[],Y=[],G=[],$=new Map;for(let K of Z){let M=yA0(K),W=wA0(K,X),D=z?z.direct.has(K.id):W,j=z?z.prefix.has(K.id):W;if(M){let C={binding:K,primary:M,aliases:K.keys.filter((A)=>A!==M)},_=K.keys.length===0&&!K.prefixKeys?.length&&W;if(D&&(W||K.presentation==="onePress")||_)if(K.presentation==="onePress")Y.push(C);else Q.push(C);else if(!W&&K.scope!=="global"){let A=$.get(K.scope);if(A)A.push(C);else $.set(K.scope,[C])}}if(J&&j&&K.prefixKeys?.length)G.push({binding:K,primary:`${J} + ${K.prefixKeys[0]}`,aliases:K.prefixKeys.slice(1).map((C)=>`${J} + ${C}`)})}let H=[];if(Q.length)H.push({kind:"here",scope:X??void 0,rows:Q});if(Y.length)H.push({kind:"direct",rows:Y});if(G.length)H.push({kind:"prefix",rows:G});for(let[K,M]of $)H.push({kind:"other",scope:K,rows:M});return H}var MV=h(()=>{iZ()});function Kq(Z){return Z!==!1}function kj(Z){return Kq(Z.get(Hq,!0))}function hj(Z){let X=!kj(Z);if(Z.set(Hq,X),X)for(let J of Object.values(NV))Z.set(J,!1)}function x10(Z,X){return Kq(Z)&&X!==!0}function y10(Z,X){let J=[];if(X!==null&&Z.prefix.size>0)J.push({chord:X,msg:"commands"});else if(Z.inputPassthrough){let z=Z.direct.has("focus.sidebar")?x2("focus.sidebar"):null;if(z)J.push({chord:z,msg:"sidebar"})}if(Z.direct.has("help.open")){let z=x2("help.open");if(z)J.push({chord:z,msg:"help"})}return J}function w10(Z,X){return vA0[Z].flatMap((J)=>{if(X==="always"&&J.always!==!0)return[];let z=x2(J.id);return z?[{cap:z,msg:J.msg}]:[]})}function v10(Z){let X=[],J=x2("sidebar.nav"),z=x2("sidebar.select");if(J&&z)X.push({msg:"keysBare",params:{nav:H7(J),open:H7(z)}});let Q=x2("chat.tab.new"),Y=x2("focus.next");if(Q&&Y)X.push({msg:"keysOnePress",params:{newTab:H7(Q),focusNext:H7(Y)}});if(Z!==null)X.push({msg:"keysPrefix",params:{prefix:H7(Z)}});let G=x2("help.open");if(G)X.push({msg:"keysHelp",params:{help:H7(G)}});return X}var Hq="hints.keyboard.enabled",NV,vA0;var DV=h(()=>{Uq();MV();NV={sidebar:"hints.sidebar.used",files:"hints.files.used"};vA0={sidebar:[{id:"sidebar.nav",msg:"move"},{id:"sidebar.select",msg:"open"}],files:[{id:"files.nav",msg:"move"},{id:"files.hierarchy",msg:"fold"},{id:"files.open",msg:"open",always:!0},{id:"files.diff",msg:"diff",always:!0}]}});function rQ(){return f10.useSyncExternalStore(QT,zT,zT)}var f10;var g6=h(()=>{iZ();iZ();f10=p0(o0(),1)});import{TextAttributes as b10}from"@opentui/core";function lI(Z){if(!Z)return"Global";if(Z==="sidebar")return"Sidebar";if(Z==="workspace")return"Workspace";if(Z==="files")return"Files";if(Z==="terminal")return"Terminal";return"Dialog"}function g10(Z){return Z.split(" + ").map((X)=>H7(X)).join(" + ")}function fA0(Z,X){if(Z.kind==="here")return X("help.here",{surface:bZ("category",lI(Z.scope))});if(Z.kind==="direct")return X("help.direct");if(Z.kind==="prefix")return X("help.afterPrefix");return X("help.otherPane",{surface:bZ("category",lI(Z.scope))})}function Vq(Z){let X=B4(),{theme:J}=x0(),z=h0(),Q=F7(),Y=rQ(),G=T2(),$=uj.useMemo(()=>I10(o8,Z.currentScope??null,G.key,Z.reachability),[Y,Z.currentScope,Z.reachability,G.key]),H=()=>Z.onClose?Z.onClose():X.clear(),K=uj.useRef(null),M=(D)=>{let j=K.current;if(!j)return;j.scrollTo({x:0,y:Math.max(0,j.scrollTop+D)})},W=(D)=>{let j=K.current;if(!j)return;j.scrollTo({x:0,y:D==="top"?0:Number.MAX_SAFE_INTEGER})};return N1(()=>({bindings:[{key:"?",cmd:H},{key:"up",cmd:()=>M(-1)},{key:"down",cmd:()=>M(1)},{key:"pageup",cmd:()=>M(-(K.current?.viewport.height??10))},{key:"pagedown",cmd:()=>M(K.current?.viewport.height??10)},{key:"home",cmd:()=>W("top")},{key:"end",cmd:()=>W("bottom")}]})),q0("box",{paddingLeft:Q,paddingRight:Q,gap:1,flexShrink:1,children:[q0("box",{flexDirection:"row",justifyContent:"space-between",flexShrink:0,children:[q0("box",{flexDirection:"column",gap:0,children:[y("text",{attributes:b10.BOLD,fg:J.text,children:z("help.title")}),y("text",{fg:J.textMuted,children:Z.currentScope?z("help.focused",{surface:bZ("category",lI(Z.currentScope))}):z("help.allBindings")}),y("text",{fg:J.textMuted,children:z("help.grammar",{prefix:G.key?H7(G.key):z("help.disabled")})})]}),y("text",{fg:J.textMuted,onMouseUp:H,children:z("help.esc")})]}),y("scrollbox",{ref:(D)=>{K.current=D},flexShrink:1,flexGrow:1,stickyScroll:!1,verticalScrollbarOptions:{trackOptions:{backgroundColor:J.backgroundDialog,foregroundColor:J.borderActive}},children:y("box",{paddingBottom:1,gap:1,paddingRight:1,children:$.map((D,j)=>q0("box",{gap:0,children:[y("text",{fg:J.accent,attributes:b10.BOLD,children:fA0(D,z)}),D.rows.map((C)=>{return q0("box",{flexDirection:"row",gap:2,paddingLeft:1,children:[y("box",{width:18,children:y("text",{fg:J.primary,children:g10(C.primary)})}),y("box",{flexGrow:1,children:y("text",{fg:J.text,children:bZ("desc",C.binding.id)})}),C.aliases.length>0?y("box",{children:y("text",{fg:J.textMuted,children:`(${C.aliases.map(g10).join(", ")})`})}):null]},`${D.kind}-${C.binding.id}`)})]},`${D.kind}-${D.scope??j}`))})})]})}var uj;var pI=h(async()=>{Uq();MV();k3();g6();x1();w0();await w1([P1(),p4(),R5()]);uj=p0(o0(),1);Vq.show=(Z,X)=>{let J=oW(),z=J.inputPassthrough?"terminal":X;Z.replace(()=>y(Vq,{currentScope:z,reachability:J}))}});function dI(Z){let X=h0(),J=u3(),z=Td(),Q=Ji();rQ(),rd();let[Y,G]=Bq.useState({tokens:[],modal:!1});Bq.useEffect(()=>{let K=Kq(J?.get(Hq,!0)),M=bQ()||(Q?.stack.length??0)>0,W=K&&!M?y10(oW(),T2().key):null;G((D)=>{let j=W??(K?D.tokens:[]);return D.modal===M&&D.tokens.length===j.length&&D.tokens.every((C,_)=>C.chord===j[_]?.chord&&C.msg===j[_]?.msg)?D:{tokens:j,modal:M}})});let $=Y.modal?{commands:void 0,sidebar:void 0,help:void 0}:{commands:()=>void od(),sidebar:z?()=>z.setFocused("sidebar"):void 0,help:Q?()=>Vq.show(Q,z?.focused??"sidebar"):void 0},H=Y.tokens.map((K)=>({text:Z?.compact?H7(K.chord):X(`hints.status.${K.msg}`,{key:H7(K.chord)}),onPress:$[K.msg]}));if(Z?.onOpenSettings&&!Z.compact&&Kq(J?.get(Hq,!0)))H.push({text:`[${X("hints.status.settings")}]`,onPress:Y.modal?void 0:Z.onOpenSettings});return H}function m10(Z){let{theme:X}=x0(),J=dI({onOpenSettings:Z.onOpenSettings,compact:Z.compact});if(J.length===0)return null;return y("box",{flexDirection:"row",flexShrink:0,children:J.flatMap((z,Q)=>[Q>0?y("text",{fg:X.textMuted,wrapMode:"none",children:" \xB7 "},`sep-${z.text}`):null,y("box",{onMouseUp:z.onPress,children:y("text",{fg:X.textMuted,wrapMode:"none",children:z.text})},z.text)])})}function cj(Z){let X=u3();return Bq.useCallback(()=>{if(!X)return;if(X.get(NV[Z],!1)!==!0)X.set(NV[Z],!0)},[X,Z])}function lj(Z){let X=h0(),{theme:J}=x0(),z=u3();rQ();let Q=z?.get(Hq,!0),Y=z?.get(NV[Z.pane],!1);if(!Kq(Q))return null;let G=w10(Z.pane,x10(Q,Y)?"firstUse":"always");if(G.length===0)return null;return y("text",{fg:J.textMuted,wrapMode:"none",children:G.map(($)=>`${H7($.cap)} ${X(`hints.pane.${$.msg}`)}`).join(" \xB7 ")})}var Bq;var WV=h(async()=>{Uq();DV();k3();g6();s8();x1();w0();await w1([vK(),P1(),p4(),R5(),pI()]);Bq=p0(o0(),1)});import{TextAttributes as iI}from"@opentui/core";function k10(Z){let{theme:X}=x0(),J=h0(),z=T2().key,Q=z?`[${H7(z)} P]`:null;return q0(a5,{children:[Z.onZenToggle||Z.onCreatePR?q0("box",{flexDirection:"row",flexWrap:"wrap",justifyContent:"flex-end",gap:2,paddingBottom:1,flexShrink:0,children:[Z.onZenToggle?q0("box",{flexDirection:"row",gap:1,flexShrink:0,onMouseUp:(Y)=>{Y.stopPropagation(),Z.onZenToggle?.()},children:[y("text",{fg:X.accent,attributes:iI.BOLD,wrapMode:"none",children:"[~]"}),y("text",{fg:X.text,wrapMode:"none",children:J("files.actions.zen")})]}):null,Z.onCreatePR?q0("box",{flexDirection:"row",gap:1,flexShrink:0,onMouseUp:(Y)=>{Y.stopPropagation(),Z.onCreatePR?.()},children:[Q?y("text",{fg:X.accent,attributes:iI.BOLD,wrapMode:"none",children:Q}):null,y("text",{fg:X.text,wrapMode:"none",children:J("files.actions.createPR")})]}):null]}):null,y("box",{flexDirection:"row",paddingBottom:0,flexShrink:0,gap:2,children:qq.map((Y)=>{let G=Z.tab===Y;return y("text",{fg:G?X.primary:X.textMuted,attributes:G?iI.BOLD:void 0,wrapMode:"none",onMouseUp:()=>Z.onSelectTab(Y),children:J(M10(Y))},Y)})}),Z.tab==="changes"?q0("box",{flexDirection:"column",paddingBottom:1,flexShrink:0,gap:0,children:[q0("text",{fg:X.textMuted,wrapMode:"none",children:[Z.scope==="branch"&&Z.base!=null?J("files.scope.branch",{base:Z.base}):J("files.scope.working"),Z.base!=null?` ${J("files.scope.toggleHint")}`:""]}),y("text",{fg:X.textMuted,wrapMode:"none",children:J("files.legend.changes")})]}):y("box",{flexDirection:"row",paddingBottom:1,flexShrink:0})]})}var h10=h(async()=>{Uq();k3();bI();x1();w0();await P1()});function KX(Z,X){let J=Z.background.a===0;if(X.cursor){if(J)return{marker:"\u258C",markerColor:Z.focusAccent??Z.primary,backgroundColor:void 0};return{marker:"\u258C",markerColor:Z.text,backgroundColor:Z.backgroundElement}}if(X.selected)return{marker:"\u258C",markerColor:Z.borderActive,backgroundColor:J?void 0:Z.background};return{marker:" ",markerColor:void 0,backgroundColor:void 0}}import{TextAttributes as bA0}from"@opentui/core";var u10,c10;var l10=h(async()=>{gj();cI();w0();await P1();u10=p0(o0(),1),c10=u10.memo(function(X){let{theme:J}=x0(),z=KX(J,{cursor:X.cursor}),Q=y("text",{fg:z.markerColor,wrapMode:"none",children:z.marker}),Y=z.backgroundColor,G=X.row;if(G.kind==="dir"){let C=" ".repeat(G.depth);return q0("box",{flexDirection:"row",gap:0,backgroundColor:Y,onMouseUp:()=>X.onActivate(X.row,X.index),children:[Q,y("box",{flexGrow:1,paddingRight:1,children:y("text",{fg:J.textMuted,attributes:bA0.BOLD,wrapMode:"none",children:`${C}${G.expanded?"\u25BE":"\u25B8"} ${G.name}/`})})]})}if(G.kind==="file"){let C=" ".repeat(G.depth);return q0("box",{flexDirection:"row",gap:0,backgroundColor:Y,onMouseUp:()=>X.onActivate(X.row,X.index),children:[Q,y("box",{flexGrow:1,paddingRight:1,children:y("text",{fg:J.text,wrapMode:"none",children:`${C} ${G.name}`})})]})}let $=G.fileCount!==void 0,H=$?G.expanded?"\u25BE ":"\u25B8 ":"",K=$?` (${G.fileCount})`:"",M=G.child?" ":"",W=X.pathBudget-H.length-K.length-M.length,D=D10(G.status),j=D==="success"?J.success:D==="warning"?J.warning:D==="error"?J.error:D==="info"?J.info:J.textMuted;return q0("box",{flexDirection:"row",gap:0,backgroundColor:Y,onMouseUp:()=>X.onActivate(X.row,X.index),children:[Q,q0("box",{flexDirection:"row",flexGrow:1,gap:1,paddingRight:1,children:[y("text",{fg:j,wrapMode:"none",children:G.status}),y("text",{fg:$?J.textMuted:J.text,wrapMode:"none",flexGrow:1,children:`${M}${H}${A10(G.path,W)}${K}`}),X.statWidths.added>0?y("text",{fg:J.success,wrapMode:"none",children:mI(G.added,X.statWidths.added,"+")}):null,X.statWidths.deleted>0?y("text",{fg:J.error,wrapMode:"none",children:mI(G.deleted,X.statWidths.deleted,"-")}):null]})]})})});function p10(Z){let{theme:X}=x0(),J=h0(),z=q5(),[Q,Y]=v4.useState("all"),[G,$]=v4.useState("working"),[H,K]=v4.useState(!1),[M,W]=v4.useState(null),[D,j]=v4.useState(0),[C,_]=v4.useState(0),[A,w]=v4.useState(null),[T,R]=v4.useState(null),[E,S]=v4.useState(null),[x,v]=v4.useState(()=>new Set),m=q1(Z.worktreePath),d=q1(Q),k=q1(A),s=q1(T),n=q1(G),Q0=q1(M),K0=q1(H),O0=q1(Z.onOpenFile),B0=v4.useRef(0),H0=v4.useCallback(async(L0,g0,m0)=>{let f0=++B0.current;if(g0==null){w(null),R(null),S(null);return}S(null);try{if(L0==="all"){let r0=await q10(g0,m0);if(m0?.aborted||f0!==B0.current||m.current!==g0)return;w((K1)=>R10(K1,r0)?K1:r0)}else if(L0==="changes"){let r0=n.current==="branch"&&Q0.current!=null,K1=r0?await V10(g0,Q0.current,m0):await U10(g0,m0);if(m0?.aborted||f0!==B0.current||m.current!==g0)return;if(!r0&&K1.length===0&&!K0.current&&Q0.current!=null){$("branch");return}R(($0)=>T10($0,K1)?$0:K1)}}catch(r0){if(m0?.aborted)return;let K1=e0(r0);if(f0===B0.current&&m.current===g0)S(K1)}},[]);v4.useEffect(()=>{w(null),R(null),S(null),j(0),v(new Set),$("working"),K(!1);let L0=new AbortController;return H0(d.current,Z.worktreePath,L0.signal),()=>L0.abort()},[Z.worktreePath,H0]),v4.useEffect(()=>{let L0=Z.worktreePath;if(L0==null){W(null);return}let g0=!1,m0=new AbortController;return K10(L0,Z.prBaseRef,m0.signal).then((f0)=>{if(!g0)W(f0)}).catch(()=>{if(!g0)W(null)}),()=>{g0=!0,m0.abort()}},[Z.worktreePath,Z.prBaseRef]),v4.useEffect(()=>{if(d.current!=="changes")return;let L0=m.current;if(L0==null)return;let g0=new AbortController;return H0("changes",L0,g0.signal),()=>g0.abort()},[G,M,H0]),v4.useEffect(()=>{let L0=Z.worktreePath;if(L0==null)return;if(process.env.KOBE_FILETREE_WATCH!=="1")return;return L10(L0,()=>_((g0)=>g0+1))},[Z.worktreePath]),v4.useEffect(()=>{j(0);let L0=m.current;if(L0==null)return;let g0=new AbortController;if(Q==="all"){if(k.current==null)H0("all",L0,g0.signal)}else if(Q==="changes"){if(s.current==null)H0("changes",L0,g0.signal)}return()=>g0.abort()},[Q,H0]),v4.useEffect(()=>{if(C===0)return;let L0=m.current;if(L0==null)return;let g0=new AbortController;return H0(d.current,L0,g0.signal),()=>g0.abort()},[C,H0]);let u=v4.useMemo(()=>A==null?null:S10(A),[A]),i=v4.useRef([]),t=v4.useMemo(()=>{let L0=[];if(Q==="all"){if(u!=null)uI(u,x,0,L0)}else if(Q==="changes"){if(T!=null)L0.push(...C10(T,x))}let g0=E10(i.current,L0);return i.current=g0,g0},[Q,u,x,T]);v4.useEffect(()=>{if(t.length===0)return;j((L0)=>L0>t.length-1?t.length-1:L0)},[t]);let p=v4.useMemo(()=>O10(t),[t]),U0=Z.paneWidth??z.width,e=v4.useMemo(()=>j10(U0,p),[U0,p]);function o(L0){if(!L0)return;if(L0.type==="cursor")j(L0.index);else if(L0.type==="expand")v((g0)=>new Set(g0).add(L0.path));else v((g0)=>kI(g0,L0.path))}let r=v4.useCallback((L0)=>{if(L0.kind==="dir"||L0.path.endsWith("/"))v((g0)=>kI(g0,L0.path));else O0.current(L0.path)},[]),D0=v4.useCallback((L0,g0)=>{j(g0),r(L0)},[r]),z0=cj("files");N1(()=>({enabled:Z.focused??!0,bindings:N10({moveDown:()=>{if(z0(),t.length===0)return;j((L0)=>Math.min(L0+1,t.length-1))},moveUp:()=>{if(z0(),t.length===0)return;j((L0)=>Math.max(L0-1,0))},setTab:Y,currentTab:()=>Q,openCurrent:()=>{z0();let L0=t[D];if(L0)r(L0)},mentionCurrent:()=>{let L0=t[D];if(!L0||L0.kind==="dir"||L0.path.endsWith("/"))return;Z.onMention?.(L0.path)},openExternal:()=>{let L0=t[D];if(!L0||L0.kind==="dir"||L0.path.endsWith("/"))return;if(!Z.worktreePath)return;fj(`${Z.worktreePath}/${L0.path}`)},refresh:()=>{_((L0)=>L0+1)},toggleScope:()=>{if(Q!=="changes")return;if(M==null)return;K(!0),$((L0)=>L0==="working"?"branch":"working")},openDiff:()=>{let L0=t[D];if(!L0||L0.kind==="dir"||L0.path.endsWith("/"))return;Z.onOpenDiff?.(L0.path,G==="branch"&&M!=null?M:void 0)},expandOrDescend:()=>o(F10(t,D)),collapseOrParent:()=>{if(Q!=="all")return;o(_10(t,D))}})}));let j0=v4.useRef(null);v4.useEffect(()=>{let L0=j0.current;if(!L0||t.length===0)return;let g0=bj(L0.scrollTop,L0.viewport.height,D);if(g0!=null)L0.scrollTo({x:0,y:g0})},[D,t]);let C0=Q==="all"&&A!=null||Q==="changes"&&T!=null;return q0("box",{flexDirection:"column",flexGrow:1,paddingLeft:0,paddingRight:0,children:[y(k10,{tab:Q,scope:G,base:M,onSelectTab:Y,onZenToggle:Z.onZenToggle,onCreatePR:Z.onCreatePR}),y("scrollbox",{ref:(L0)=>{j0.current=L0},flexGrow:1,verticalScrollbarOptions:{trackOptions:{foregroundColor:"transparent"}},children:Z.worktreePath==null?y("box",{paddingTop:1,paddingLeft:1,children:y("text",{fg:X.textMuted,children:J("files.empty.noTask")})}):E!=null?q0("box",{paddingTop:1,paddingLeft:1,flexDirection:"column",gap:0,children:[y("text",{fg:X.error,wrapMode:"word",children:W10(E,J)}),y("text",{fg:X.textMuted,wrapMode:"word",children:J("files.error.retryHint")})]}):t.length===0&&C0?y("box",{paddingTop:1,paddingLeft:1,children:y("text",{fg:X.textMuted,children:Q==="all"?J("files.empty.noFiles"):J("files.empty.noChanges")})}):t.length>0?y("box",{flexShrink:0,gap:0,paddingRight:1,children:t.map((L0,g0)=>y(c10,{row:L0,index:g0,cursor:g0===D,statWidths:p,pathBudget:e,onActivate:D0},`${L0.kind}:${L0.path}`))}):null}),Z.worktreePath!=null?y("box",{flexDirection:"row",justifyContent:"flex-end",paddingTop:1,flexShrink:0,children:y(lj,{pane:"files"})}):null]})}var v4;var d10=h(async()=>{B10();bI();gI();gj();cI();x1();x7();w0();await w1([e4(),WV(),P1(),p4(),h10(),l10()]);v4=p0(o0(),1)});function n10(Z){let{theme:X,transparentBackground:J}=x0(),z=cW(),Q=q5(),Y=J?X.border:X.borderSubtle,G=Math.max(i10,Q.width-JX),$=Math.max(i10,Math.min(gA0,Math.floor(G/3)));return y("box",{width:$,flexShrink:0,borderColor:z.focused==="files"?X.focusAccent:Y,onMouseUp:()=>z.setFocused("files"),children:y(p10,{worktreePath:Z.worktree,paneWidth:$-2,prBaseRef:Z.prBaseRef,focused:Z.focused,onOpenFile:Z.onOpenFile,onOpenDiff:Z.onOpenDiff,onZenToggle:Z.onZenToggle,onCreatePR:Z.onCreatePR})})}var i10=22,gA0=34;var a10=h(async()=>{rJ();w0();await w1([e4(),vK(),P1(),d10()])});function o10(Z,X=8){let J=Math.min(1,Math.max(0,Z))*X,z=Math.floor(J),Q=Math.round((J-z)*8);if(Q===8)z+=1,Q=0;let Y=z<X?mA0[Q]??"":"";return`${"\u2588".repeat(z)}${Y}`.padEnd(X,"\u2591")}var mA0;var nI=h(()=>{mA0=["","\u258F","\u258E","\u258D","\u258C","\u258B","\u258A","\u2589"]});function oI(Z,X){if(Z==null||Z<=X)return"";let J=new Date(Z),z=`${s10(J.getHours())}:${s10(J.getMinutes())}`;if(Z-X<86400000)return`\u2192 ${z}`;return`\u2192 ${J.getMonth()+1}/${J.getDate()} ${z}`}function r10(Z,X){return Z.windows.map((J)=>({label:J.label,percentText:`${J.percent}%`,resetText:oI(J.resetsAt,X),tone:aI(J.percent)}))}function t10(Z,X){let J=Z.windows.find((z)=>z.kind==="session")??Z.windows[0];if(!J)return null;return{label:J.label,percentText:`${J.percent}%`,resetText:oI(J.resetsAt,X),tone:aI(J.percent)}}function e10(Z,X){let J=Math.min(8,Z.windows.reduce((z,Q)=>Math.max(z,Q.label.length),2));return Z.windows.map((z)=>({label:(z.label.length>J?z.label.slice(0,J):z.label).padEnd(J),bar:o10(z.percent/100,kA0),percentText:`${String(z.percent).padStart(3)}%`,resetText:oI(z.resetsAt,X),tone:aI(z.percent)}))}var kA0=10,aI=(Z)=>Z>=95?"crit":Z>=75?"warn":"ok",s10=(Z)=>String(Z).padStart(2,"0");var sI=h(()=>{nI()});function hA0(Z){let{theme:X}=x0(),J=F4(Z.orchestrator.usageSnapshotSignal());if(!J||J.size===0)return null;let z={ok:X.success,warn:X.warning,crit:X.error},Q=Date.now();if(Z.narrow)return y("box",{flexDirection:"row",gap:2,children:[...J.entries()].flatMap(([Y,G])=>{let $=t10(G,Q);if(!$)return[];return[q0("box",{flexDirection:"row",gap:1,children:[y("text",{fg:X.textMuted,wrapMode:"none",children:v5(Y).toUpperCase()}),y("text",{fg:z[$.tone],wrapMode:"none",children:$.percentText})]},Y)]})});return y("box",{flexDirection:"row",gap:2,children:[...J.entries()].map(([Y,G])=>q0("box",{flexDirection:"row",gap:1,children:[y("text",{fg:X.textMuted,wrapMode:"none",children:v5(Y).toUpperCase()}),r10(G,Q).map(($,H)=>q0("box",{flexDirection:"row",gap:1,children:[y("text",{fg:X.textMuted,wrapMode:"none",children:H===0?$.label:`\xB7 ${$.label}`}),y("text",{fg:z[$.tone],wrapMode:"none",children:$.percentText}),$.resetText?y("text",{fg:X.textMuted,wrapMode:"none",children:$.resetText}):null]},$.label))]},Y))})}function Z40(Z){let{theme:X}=x0(),J=q5(),z=X3(J.width),Q=F4(Z.orchestrator.usageSnapshotSignal()),Y=dI({onOpenSettings:Z.onOpenSettings}),G=Q!=null&&Q.size>0||Y.length>0;return q0("box",{flexDirection:"column",flexGrow:1,backgroundColor:X.background,children:[y("box",{flexDirection:"row",flexGrow:1,children:Z.children}),G?q0("box",{flexDirection:"row",flexShrink:0,height:1,paddingLeft:1,paddingRight:1,gap:2,children:[y("box",{flexGrow:1,flexDirection:"row",children:y(hA0,{orchestrator:Z.orchestrator,narrow:z})}),y(m10,{onOpenSettings:z?void 0:Z.onOpenSettings,compact:z})]}):null]})}var X40=h(async()=>{$7();sI();x6();w0();await w1([e4(),WV(),P1()])});import{TextAttributes as uA0}from"@opentui/core";function cA0(Z){if(!Z)return Z;return Z.charAt(0).toUpperCase()+Z.slice(1)}function d4(Z){let X=B4(),{theme:J}=x0(),z=h0(),Q=F7(),[Y,G]=J40.useState(Z.initialActive??"confirm");return N1(()=>({bindings:[{key:"return",cmd:()=>{if(Y==="confirm")Z.onConfirm?.();if(Y==="cancel")Z.onCancel?.();X.clear()}},{key:"left",cmd:()=>G(($)=>$==="confirm"?"cancel":"confirm")},{key:"right",cmd:()=>G(($)=>$==="confirm"?"cancel":"confirm")}]})),q0("box",{paddingLeft:Q,paddingRight:Q,paddingBottom:1,gap:0,children:[q0("box",{flexDirection:"row",justifyContent:"space-between",children:[y("text",{attributes:uA0.BOLD,fg:J.text,children:Z.title}),y("text",{fg:J.textMuted,onMouseUp:()=>X.clear(),children:"esc"})]}),y("text",{fg:J.textMuted,children:Z.message}),y("box",{flexDirection:"row",justifyContent:"flex-end",paddingTop:1,children:["cancel","confirm"].map(($)=>y("box",{paddingLeft:1,paddingRight:1,backgroundColor:$===Y?J.primary:void 0,onMouseUp:()=>{if($==="confirm")Z.onConfirm?.();if($==="cancel")Z.onCancel?.();X.clear()},children:y("text",{fg:$===Y?J.selectedListItemText:J.textMuted,children:cA0($==="cancel"?Z.label??z("common.cancel"):Z.confirmLabel??z("common.confirm"))})},$))})]})}var J40;var p9=h(async()=>{x1();w0();await w1([P1(),p4(),R5()]);J40=p0(o0(),1);d4.show=(Z,X,J,z,Q,Y)=>{return S8(Z,(G)=>y(d4,{title:X,message:J,onConfirm:()=>G(!0),onCancel:()=>G(!1),label:z,confirmLabel:Q,initialActive:Y?.initialActive}),{size:"small"})}});function z40(Z){return!Z.dialogOpen&&!Z.settingsOpen&&!Z.worktreesOpen&&!Z.updateOpen}function Q40(Z){return Z.settingsOpen&&!Z.dialogOpen}function Y40(Z,X,J){let z=lA0.filter((G)=>G!=="files"||J.filesVisible),Q=z.indexOf(Z);if(Q<0)return(X>0?z[z.length-1]:z[0])??null;let Y=Math.min(Math.max(Q+X,0),z.length-1);return Y===Q?null:z[Y]??null}var lA0;var G40=h(()=>{lA0=["sidebar","workspace","files"]});function pA0(Z){let X=Z.kind==="pane"?["plugin","pane","open",Z.target]:["plugin","action","invoke",Z.target],[J,...z]=[...kG(),...X];hJ(J,z,{onError:(Q)=>console.warn(`[rove/plugins] ${Z.target}: ${String(Q)}`)})}function $40(Z){N1(()=>({enabled:Z,bindings:qd().map((X)=>({key:X.chord,cmd:()=>pA0(X)}))}))}var q40=h(async()=>{hG();gK();wK();await p4()});function U40(Z){let{focus:X,dialog:J}=Z,z=h0(),Q=l4();function Y(){try{Q?.destroy()}catch(M){console.error("Rove: renderer.destroy() failed during quit:",M)}process.exit(0)}async function G(){if(await d4.show(J,z("workspace.quit.confirmTitle"),z("workspace.quit.confirmBody"),z("common.cancel"),z("workspace.quit.confirmLabel")))Y()}function $(M){let W=Y40(X.focused,M,{filesVisible:Z.filesPaneVisible!==!1});if(W)X.setFocused(W)}let H={dialogOpen:Z.dialog.stack.length>0,settingsOpen:Z.pages.settingsOpen,worktreesOpen:Z.pages.worktreesOpen,updateOpen:Z.pages.updateOpen,kanbanOpen:Z.pages.kanbanOpen,automationsOpen:Z.pages.automationsOpen,workItemsOpen:Z.pages.workItemsOpen},K=z40(H);N1(()=>({enabled:K,bindings:[...O5({"help.open":()=>Vq.show(J,X.focused),"focus.previous":()=>$(-1),"focus.next":()=>$(1),"workspace.zenToggle":()=>Z.toggleZen(),"attention.next":()=>Z.jumpToNextAttention(),"inbox.show":()=>Z.openInbox(),"kanban.open":()=>Z.pages.openKanban(),"automations.open":()=>Z.pages.openAutomations(),"workItems.open":()=>Z.pages.openWorkItems(),"task.moveMode":()=>Z.enterMoveMode(),"settings.open":()=>Z.pages.openSettings(),"files.createPR":()=>Z.createPR(),"task.openEditor":()=>{if(Z.selectedId)Z.openTaskWorktree(Z.selectedId)}})]})),N1(()=>({enabled:K&&X.focused!=="sidebar",bindings:O5({"focus.sidebar":()=>X.setFocused("sidebar")})})),N1(()=>({enabled:K&&X.focused==="sidebar",bindings:O5({"app.quit":(M,W)=>{if(W===1){Y();return}G()},"settings.open.sidebar":()=>Z.pages.openSettings(),"worktrees.open.sidebar":()=>Z.pages.openWorktrees(),"tasks.update":()=>Z.pages.openUpdate()})})),N1(()=>({enabled:K&&X.focused==="sidebar"&&!Z.searchActive,bindings:O5({"task.new":()=>Z.createTask(),"tasks.openWorktree":()=>{if(Z.selectedId)Z.openTaskWorktree(Z.selectedId)},"tasks.renameBranch":()=>{let M=Z.selectedId;if(M)Z.renameBranch(M)},"tasks.cycleEngine":()=>{let M=Z.selectedId;if(M)Z.cycleVendor(M)},"tasks.focusEngine":()=>X.setFocused("workspace")})})),N1(()=>({enabled:Q40(H),bindings:u7(Z.pages.closeSettings)})),$40(K)}var H40=h(async()=>{g6();x1();G40();await w1([e4(),pI(),p4(),p9(),q40()])});function V40(Z){return Z==="terminal"?"sidebar":"workspace"}var K40;var rI=h(()=>{K40=[{nav:"kanban",labelKey:"tasks.nav.kanban"},{nav:"automations",labelKey:"tasks.nav.automations"}]});function pj(Z){let X=Math.round(Z/60000),J=Math.round(X/60);return{minutes:X,hours:J,days:Math.round(J/24)}}function OV(Z,X=1){let J=dj.indexOf(Z);if(J<0)return"name";let z=(J+X+dj.length)%dj.length;return dj[z]}function M40(Z){return Z.name.trim().length>0&&Z.repo.trim().length>0&&Z.prompt.trim().length>0&&m$(Z.schedule.trim())}function N40(Z){if(Z.name.trim().length===0)return"name";if(Z.repo.trim().length===0)return"repo";if(Z.prompt.trim().length===0)return"prompt";if(!m$(Z.schedule.trim()))return"schedule";return null}function D40(Z,X){let J=Z.trim();if(!m$(J))return{kind:"invalid"};let z;try{z=k$(J,X)}catch{return{kind:"never"}}return{kind:"ok",nextRunMs:z,relative:dA0(z-X),absolute:aA0(z,X)}}function dA0(Z){let{minutes:X,hours:J,days:z}=pj(Z);if(X<60)return`in ${Math.max(1,X)}m`;if(J<24)return`in ${J}h`;return`in ${z}d`}function aA0(Z,X){let J=new Date(Z),z=`${String(J.getHours()).padStart(2,"0")}:${String(J.getMinutes()).padStart(2,"0")}`,Q=new Date(X);if(J.getFullYear()===Q.getFullYear()&&J.getMonth()===Q.getMonth()&&J.getDate()===Q.getDate())return z;let G=iA0[J.getDay()]??"";if(Z-X<518400000)return`${G} ${z}`;return`${G} ${nA0[J.getMonth()]??""} ${J.getDate()}, ${z}`}var dj,B40,iA0,nA0;var W40=h(()=>{hK();dj=["name","repo","prompt","schedule","confirm"];B40={name:"",repo:"",prompt:"",schedule:"0 9 * * MON-FRI"};iA0=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],nA0=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function ij(Z){let X=Z.trim().split(/\s+/).filter(Boolean);return VX.map((J,z)=>X[z]??"*")}function O40(Z){return VX.map((X,J)=>Z[J]??"*").join(" ")}function tI(Z,X){let J=[];for(let z=Z;z<=X;z++)J.push(String(z));return J}function eI(Z,X,J){let z=XC0[Z],Q=z.indexOf(X.trim().toUpperCase());if(Q<0)return(J>0?z[0]:z[z.length-1])??X;let Y=(Q+J+z.length)%z.length;return z[Y]??X}function Zx(Z,X){return Math.min(Math.max(Z+X,0),VX.length-1)}function Xx(Z,X,J){let z=ij(Z);if(X<0||X>=VX.length)return O40(z);return z[X]=J,O40(z)}function Jx(Z){let[X,J,z,Q,Y]=ij(Z);if(Q!=="*"||z!=="*")return null;if(X===void 0||J===void 0||Y===void 0)return null;let G=JC0(X,J);if(!G)return null;if(Y==="*")return G.startsWith("every ")?G:`every day ${G}`;if(Y==="MON-FRI")return`weekdays ${G}`;if(Y==="SAT,SUN")return`weekends ${G}`;let $=ZC0[Y.toUpperCase()];if($)return`${$} ${G}`;return null}function JC0(Z,X){if(X==="*"){if(Z==="*")return"every minute";if(Z.startsWith("*/"))return`every ${Z.slice(2)}m`;if(/^\d+$/.test(Z))return`hourly at :${Z.padStart(2,"0")}`;return null}if(X.startsWith("*/")&&Z==="0")return`every ${X.slice(2)}h`;if(/^\d+$/.test(X)&&/^\d+$/.test(Z))return`at ${X.padStart(2,"0")}:${Z.padStart(2,"0")}`;return null}var VX,oA0,sA0,rA0,tA0,eA0,ZC0,XC0;var j40=h(()=>{VX=["minute","hour","dayOfMonth","month","dayOfWeek"];oA0=["*","*/5","*/10","*/15","*/30",...tI(0,59)],sA0=["*","*/2","*/3","*/4","*/6","*/12",...tI(0,23)],rA0=["*",...tI(1,31)],tA0=["*","JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"],eA0=["*","MON-FRI","SAT,SUN","MON","TUE","WED","THU","FRI","SAT","SUN"],ZC0={MON:"Mondays",TUE:"Tuesdays",WED:"Wednesdays",THU:"Thursdays",FRI:"Fridays",SAT:"Saturdays",SUN:"Sundays"};XC0={minute:oA0,hour:sA0,dayOfMonth:rA0,month:tA0,dayOfWeek:eA0}});function zx(Z,X){if(!Z)return!0;let J=Z.toLowerCase(),z=X.toLowerCase(),Q=0;for(let Y=0;Y<z.length&&Q<J.length;Y++)if(z.charCodeAt(Y)===J.charCodeAt(Q))Q++;return Q===J.length}function _40(Z,X){let J=X==="archived";return Z.filter((z)=>z.archived===J)}function L40(Z,X){let J=F40(X)-F40(Z);if(J!==0)return J;return String(X.id).localeCompare(String(Z.id))}function F40(Z){let X=Date.parse(Z.updatedAt||Z.createdAt);return Number.isFinite(X)?X:0}function d3(Z){let X=Z.split("/").filter(Boolean);return X[X.length-1]??Z}function tQ(Z){return Z.trim().replace(/[\\/]+$/,"")||Z}function m6(Z,X){let J=d3(Z);if(!X.some((Q)=>Q!==Z&&d3(Q)===J))return J;return Z.replace(/[\\/]+$/,"").split(/[\\/]+/).slice(-2).join("/")}var y2=()=>{};import{TextAttributes as nj}from"@opentui/core";function k6(Z){let{theme:X}=x0(),J=h0(),z=Z.window.total-Z.window.start-Z.window.items.length;return q0("box",{gap:0,paddingLeft:2,paddingBottom:Z.paddingBottom,children:[Z.window.start>0?y("text",{fg:X.textMuted,wrapMode:"none",children:J("newTask.picker.moreAbove",{count:Z.window.start})}):null,Z.rows.map((Q,Y)=>{let G=Z.window.start+Y,$=G===Z.cursor;return q0("text",{fg:$?X.primary:Q.accent?X.accent:X.textMuted,attributes:$?nj.BOLD:void 0,wrapMode:"none",onMouseUp:()=>Z.onPick(G),children:[$?"\u25B8 ":" ",Q.body]},Q.key)}),z>0?y("text",{fg:X.textMuted,wrapMode:"none",children:J("newTask.picker.moreBelow",{count:z})}):null,Z.footer]})}function i3(Z,X,J){return X===J?{fg:Z.primary,attributes:nj.BOLD|nj.UNDERLINE}:{fg:Z.textMuted}}function Mq(Z){let{theme:X}=x0(),J=Z.arrow!==!1;return q0("box",{flexDirection:"row",flexWrap:"wrap",gap:2,children:[Z.label,Z.choices.map((z)=>{let Q=Z.selected===z,Y=J?Q?"\u25B8 ":" ":"";return y("text",{fg:Q?X.primary:X.textMuted,attributes:Q?nj.BOLD:void 0,wrapMode:"none",flexShrink:0,onMouseUp:()=>Z.onPick(z),children:Y+(Z.display?Z.display(z):z)},z)}),Z.children]})}var BX=h(async()=>{x1();w0();await P1()});import{TextAttributes as Nq}from"@opentui/core";function zC0(Z){let{theme:X}=x0(),J=B4(),z=h0(),Q=F7(),[Y,G]=Dq.useState(()=>({...B40,repo:Z.defaultRepo??Z.repos[0]??""})),[$,H]=Dq.useState("name"),[K,M]=Dq.useState(()=>{let d=Z.repos.indexOf(Z.defaultRepo??"");return d>=0?d:0}),[W,D]=Dq.useState(null),[j,C]=Dq.useState(0),_=ij(Y.schedule),A=(d)=>{H("schedule"),C(Math.min(Math.max(d,0),VX.length-1))},w=()=>{Z.onCancel(),J.clear()},T=(d)=>{G((k)=>({...k,...d})),D(null)},R=(d)=>{let k=Z.repos[Z5(d,Z.repos.length)];if(!k)return;M(Z5(d,Z.repos.length)),T({repo:k})};function E(){if(M40(Y)){Z.onSubmit({name:Y.name.trim(),repo:Y.repo.trim(),prompt:Y.prompt.trim(),schedule:Y.schedule.trim()}),J.clear();return}let d=N40(Y);if(d)H(d),D(z(`automations.missing.${d}`))}let S=D40(Y.schedule,Date.now()),x=b6(Z.repos,K),v=x.items.map((d,k)=>({key:d,body:m6(d,Z.repos),accent:x.start+k===K}));N1(()=>({bindings:[{key:"tab",cmd:()=>H((d)=>OV(d,1))},{key:"shift+tab",cmd:()=>H((d)=>OV(d,-1))},...$==="repo"?[{key:"up",cmd:()=>R(K-1)},{key:"down",cmd:()=>R(K+1)}]:[],...$==="schedule"?[{key:"left",cmd:()=>C((d)=>Zx(d,-1))},{key:"right",cmd:()=>C((d)=>Zx(d,1))},{key:"up",cmd:()=>{let d=VX[j];if(!d)return;T({schedule:Xx(Y.schedule,j,eI(d,_[j]??"*",1))})}},{key:"down",cmd:()=>{let d=VX[j];if(!d)return;T({schedule:Xx(Y.schedule,j,eI(d,_[j]??"*",-1))})}}]:[],...$==="confirm"?[{key:"return",cmd:()=>E()}]:[]]}));let m=(d,k)=>y("text",{fg:$===d?X.primary:X.textMuted,attributes:$===d?Nq.BOLD|Nq.UNDERLINE:void 0,onMouseUp:()=>H(d),children:k});return q0("box",{paddingLeft:Q,paddingRight:Q,gap:1,children:[q0("box",{flexDirection:"row",justifyContent:"space-between",children:[y("text",{attributes:Nq.BOLD,fg:X.text,children:z("automations.newTitle")}),y("text",{fg:X.textMuted,onMouseUp:()=>w(),children:"esc"})]}),q0("box",{gap:0,children:[m("name",z("automations.fieldName")),y("input",{value:Y.name,placeholder:z("automations.namePlaceholder"),focused:$==="name",onMouseUp:()=>H("name"),onInput:(d)=>T({name:d}),onSubmit:()=>H(OV("name"))})]}),q0("box",{gap:0,children:[m("repo",z("automations.fieldRepo")),Z.repos.length===0?y("text",{fg:X.textMuted,children:z("automations.needRepo")}):y(k6,{window:x,cursor:K,rows:v,onPick:R})]}),q0("box",{gap:0,children:[m("prompt",z("automations.fieldPrompt")),y("input",{value:Y.prompt,placeholder:z("automations.promptPlaceholder"),focused:$==="prompt",onMouseUp:()=>H("prompt"),onInput:(d)=>T({prompt:d}),onSubmit:()=>H(OV("prompt"))})]}),q0("box",{gap:0,children:[m("schedule",z("automations.fieldSchedule")),y("box",{flexDirection:"row",gap:2,paddingLeft:1,children:VX.map((d,k)=>{let s=$==="schedule"&&k===j;return q0("box",{flexDirection:"column",onMouseUp:()=>A(k),children:[y("text",{fg:s?X.primary:X.text,attributes:s?Nq.BOLD|Nq.UNDERLINE:void 0,wrapMode:"none",children:_[k]??"*"}),y("text",{fg:s?X.textMuted:X.borderSubtle,wrapMode:"none",children:z(`automations.cronField.${d}`)})]},d)})}),y("box",{flexDirection:"row",gap:1,paddingLeft:1,children:S.kind==="ok"?y("text",{fg:X.success,wrapMode:"none",children:`${Jx(Y.schedule)??""}${Jx(Y.schedule)?" \xB7 ":""}${S.relative} \xB7 ${S.absolute}`}):y("text",{fg:X.error,wrapMode:"none",children:S.kind==="never"?z("automations.cronNever"):z("automations.cronInvalid")})})]}),W?q0("text",{fg:X.error,wrapMode:"word",children:["\u203B ",W]}):null,y("box",{flexDirection:"row",justifyContent:"flex-end",paddingTop:1,paddingBottom:1,children:y("text",{fg:$==="confirm"?X.primary:X.text,attributes:$==="confirm"?Nq.BOLD:void 0,onMouseUp:()=>E(),children:`[ ${z("common.create")} ]`})})]})}var Dq,A40;var C40=h(async()=>{W40();j40();I2();y2();x1();w0();await w1([P1(),p4(),R5(),BX()]);Dq=p0(o0(),1);A40={show(Z,X){return S8(Z,(J)=>y(zC0,{repos:X.repos,...X.defaultRepo?{defaultRepo:X.defaultRepo}:{},onSubmit:(z)=>J(z),onCancel:()=>J(void 0)}))}}});import{TextAttributes as aj}from"@opentui/core";function E40(Z,X){if(!Z)return"\u2014";let J=Date.parse(Z);if(!Number.isFinite(J))return"\u2014";let z=J-X,{minutes:Q,hours:Y}=pj(Math.abs(z));if(Q<1)return z>=0?"now":"just now";if(Q<60)return z>=0?`in ${Q}m`:`${Q}m ago`;if(Y<24)return z>=0?`in ${Y}h`:`${Y}h ago`;return new Date(J).toLocaleDateString()}function GC0(Z){return Z.split("/").filter(Boolean).pop()??Z}function R40(Z){let{theme:X}=x0(),J=B4(),z=h0(),[Q,Y]=n3.useState(null),[G,$]=n3.useState(!1),[H,K]=n3.useState([]),[M,W]=n3.useState(0),[D,j]=n3.useState(null),[C,_]=n3.useState(null),A=()=>W((k)=>k+1);n3.useEffect(()=>{let k=!1,s=Z.orchestrator;if(!s){Y([]);return}let n=()=>{s.listAutomations().then((K0)=>{if(k)return;Y(K0.automations),$(K0.keepsDaemonAlive)}).catch(()=>{if(!k)Y((K0)=>K0??[])})};n();let Q0=setInterval(n,QC0);return()=>{k=!0,clearInterval(Q0)}},[Z.orchestrator,M]);let w=Q??[],[T,R]=n3.useState(0);n3.useEffect(()=>{R((k)=>Z5(k,w.length))},[w.length]);let E=w[T];n3.useEffect(()=>{let k=!1,s=Z.orchestrator;if(!s||!E){K([]);return}return s.automationRuns(E.id).then((n)=>{if(!k)K(n.runs)}).catch(()=>{if(!k)K([])}),()=>{k=!0}},[Z.orchestrator,E,M]);async function S(){let k=Z.orchestrator;if(!k||!E||D)return;j(E.id);try{await k.setAutomationEnabled(E.id,!E.enabled),A()}catch(s){_(s instanceof Error?s.message:String(s))}finally{j(null)}}async function x(){let k=Z.orchestrator;if(!k||!E||D)return;j(E.id),_(z("automations.running",{name:E.name}));try{let s=await k.runAutomationNow(E.id);_(z("automations.ranWith",{name:E.name,status:s.status})),A()}catch(s){_(s instanceof Error?s.message:String(s))}finally{j(null)}}async function v(){let k=Z.orchestrator;if(!k||D)return;let s=[...new Set(k.listTasks().map((Q0)=>Q0.repo))].filter(Boolean);if(s.length===0){_(z("automations.needRepo"));return}let n=await A40.show(J,{repos:s,...Z.focusRepo?{defaultRepo:Z.focusRepo}:{}});if(!n)return;j("new");try{await k.createAutomation(n),A()}catch(Q0){_(Q0 instanceof Error?Q0.message:String(Q0))}finally{j(null)}}async function m(){let k=Z.orchestrator;if(!k||!E||D)return;if(await d4.show(J,z("automations.deleteTitle"),z("automations.deleteBody",{name:E.name}),z("common.cancel"),z("automations.deleteButton"))!==!0)return;j(E.id);try{await k.deleteAutomation(E.id),A()}catch(n){_(n instanceof Error?n.message:String(n))}finally{j(null)}}N1(()=>({enabled:Z.focused!==!1,bindings:[...u7(Z.onClose),{key:"j",cmd:()=>R((k)=>Z5(k+1,w.length))},{key:"down",cmd:()=>R((k)=>Z5(k+1,w.length))},{key:"k",cmd:()=>R((k)=>Z5(k-1,w.length))},{key:"up",cmd:()=>R((k)=>Z5(k-1,w.length))},{key:"n",cmd:()=>void v()},{key:"r",cmd:()=>A()},{key:"e",cmd:()=>void S()},{key:"s",cmd:()=>void x()},{key:"d",cmd:()=>void m()},{key:"return",cmd:()=>{let k=H.find((s)=>s.taskId)?.taskId;if(k)Z.onOpenTask?.(k)}}]}));let d=Date.now();return q0("box",{flexDirection:"column",flexGrow:1,paddingTop:1,paddingLeft:2,paddingRight:2,children:[q0("box",{flexDirection:"row",gap:1,flexShrink:0,children:[y("text",{attributes:aj.BOLD,fg:X.primary,wrapMode:"none",flexShrink:0,children:z("automations.title")}),y("text",{fg:X.borderSubtle,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:"\u2500".repeat(240)}),y("text",{fg:G?X.success:X.textMuted,wrapMode:"none",flexShrink:0,children:G?z("automations.holdingDaemon"):z("automations.notHolding")})]}),Q===null?y("box",{paddingTop:1,children:y("text",{fg:X.textMuted,children:z("common.loading")})}):w.length===0?q0("box",{flexDirection:"column",paddingTop:1,gap:1,children:[y("text",{fg:X.textMuted,children:z("automations.empty")}),y("text",{fg:X.text,children:z("automations.emptyHint")})]}):y("box",{flexDirection:"column",marginTop:1,flexGrow:1,gap:0,children:w.map((k,s)=>{let n=s===T;return q0("box",{flexDirection:"row",flexShrink:0,border:!0,borderColor:n?X.borderActive:X.borderSubtle,paddingLeft:1,paddingRight:1,gap:1,...n?{backgroundColor:X.backgroundElement}:{},children:[y("text",{fg:k.enabled?X.text:X.textMuted,attributes:n?aj.BOLD:void 0,wrapMode:"none",flexShrink:1,children:k.name}),y("text",{fg:X.borderSubtle,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:"\u2500".repeat(240)}),y("text",{fg:X.textMuted,wrapMode:"none",flexShrink:1,children:`${GC0(k.repo)} \xB7 ${k.schedule}`}),k.enabled?null:y("text",{fg:X.warning,wrapMode:"none",flexShrink:0,children:`${z("automations.paused")} \xB7`}),y("text",{fg:X.textMuted,wrapMode:"none",flexShrink:0,children:E40(k.nextRunAt,d)})]},k.id)})}),y("box",{flexDirection:"column",marginTop:1,border:!0,borderColor:X.border,padding:1,flexShrink:0,children:E?q0(a5,{children:[q0("box",{flexDirection:"row",justifyContent:"space-between",gap:2,children:[y("text",{fg:X.text,wrapMode:"none",flexShrink:1,flexGrow:1,children:E.prompt}),y("text",{fg:D===E.id?X.textMuted:X.primary,attributes:aj.BOLD,wrapMode:"none",flexShrink:0,onMouseUp:()=>void x(),children:z("automations.runNow")})]}),E.precheck?y("text",{fg:X.textMuted,children:z("automations.precheck",{command:E.precheck.command})}):null,y("text",{attributes:aj.BOLD,fg:X.text,children:z("automations.recentRuns")}),H.length===0?y("text",{fg:X.textMuted,children:z("automations.noRuns")}):H.slice(0,5).map((k)=>{let s=YC0[k.status]??"muted",n=s==="success"?X.success:s==="warning"?X.warning:s==="error"?X.error:X.textMuted;return y("text",{fg:n,children:`#${k.runNumber} ${k.status}${k.error?` \u2014 ${k.error}`:""} ${E40(k.at,d)}`},k.id)})]}):y("text",{fg:X.textMuted,children:z("automations.noSelection")})}),C?y("text",{fg:X.textMuted,children:C}):null]})}var n3,QC0=5000,YC0;var T40=h(async()=>{I2();x1();w0();await w1([P1(),p4(),R5(),p9(),C40()]);n3=p0(o0(),1),YC0={dispatched:"success",skipped_precheck:"muted",skipped_missed:"warning",skipped_unavailable:"warning",dispatch_failed:"error"}});function S40(Z){return $C0[Z]??"parked"}var $C0;var P40=h(()=>{$C0={backlog:"active",in_progress:"active",in_review:"parked",error:"parked",done:"terminal",canceled:"terminal",open:"active",doing:"active",hold:"parked"}});function I40(Z,X,J){let z=Z.find(($)=>$.issues.length>0)?.issues[0]?.id??null;if(X==null)return z;let Q=-1,Y=-1;for(let[$,H]of Z.entries()){let K=H.issues.findIndex((M)=>M.id===X);if(K!==-1){Q=$,Y=K;break}}if(Q===-1)return z;if(J==="up"||J==="down"){let $=Z[Q]?.issues??[],H=J==="up"?Y-1:Y+1;return $[Math.max(0,Math.min(H,$.length-1))]?.id??X}let G=J==="left"?-1:1;for(let $=Q+G;$>=0&&$<Z.length;$+=G){let H=Z[$]?.issues??[];if(H.length===0)continue;return H[Math.min(Y,H.length-1)]?.id??X}return X}function UC0(Z){let X=S40(Z.status);if(X==="terminal")return"done";if(X==="parked")return"parked";if(Z.taskId!==void 0&&Z.taskId!=="")return"in_progress";return"backlog"}function Yx(Z){return Z!==void 0&&HC0.includes(Z)}function x40(Z,X){let J=0;return{columns:Z.map((Q)=>{if(Q.key!=="in_progress")return Q;let Y=[],G=[];for(let $ of Q.issues)if($.taskId!==void 0&&$.taskId!==""&&Yx(X($.taskId)))Y.push($);else G.push($);return J=Y.length,Y.length===0?Q:{...Q,issues:[...Y,...G]}}),attentionCount:J}}function KC0(Z,X){if(Z.created!==X.created)return Z.created<X.created?1:-1;return X.id-Z.id}function y40(Z){let X={backlog:[],in_progress:[],parked:[],done:[]};for(let J of Z)X[UC0(J)].push(J);return qC0.map((J)=>{let z=J==="done"||J==="parked",Q=X[J].sort(KC0);if(!z||Q.length<=Qx)return{key:J,issues:Q,hiddenCount:0};return{key:J,issues:Q.slice(0,Qx),hiddenCount:Q.length-Qx}})}var qC0,Qx=20,HC0;var Gx=h(()=>{P40();qC0=["backlog","in_progress","parked","done"];HC0=["permission_needed","rate_limited","error"]});import{randomBytes as f40}from"crypto";import{existsSync as $x,mkdirSync as VC0,writeFileSync as BC0}from"fs";import{isAbsolute as MC0,join as NC0}from"path";function OC0(Z){if(Z.startsWith('"')&&Z.endsWith('"')||Z.startsWith("'")&&Z.endsWith("'"))return Z.slice(1,-1);return Z}function jC0(Z){let J=`__DOUBLE_BACKSLASH_${f40(8).toString("hex")}__`;return Z.replace(/\\\\/g,J).replace(/\\(.)/g,"$1").replaceAll(J,"\\")}function b40(Z,X=$x){let J=jC0(OC0(Z.trim()));if(!DC0.test(J))return null;if(!MC0(J))return null;return X(J)?J:null}function Wq(Z,X=$x){let J=Z.split(`
703
703
  `).map((Q)=>Q.trim()).filter((Q)=>Q.length>0);if(J.length===0)return null;let z=[];for(let Q of J){let Y=b40(Q,X);if(!Y)return null;z.push(Y)}return z}function jV(Z,X){return WC0.test(Z)?`pdf[${X}]`:`images[${X}]`}function g40(Z,X){if(X.length===0)return Z;let J=X.map((z,Q)=>`${jV(z,Q)}: ${z}`).join(`
704
704
  `);return`${Z}
705
705
 
@@ -1,4 +1,4 @@
1
- import{o as e,u as t}from"./terminal-6BCvBu4_.js";import{_ as n,f as r,l as i,r as a,y as o}from"./tabs-DHBP2ShA.js";import{d as s,m as c,p as l,t as u}from"./createLucideIcon-C6nfansM.js";import{a as d,n as f,r as p}from"./toast-B7pad_QC.js";import{n as m,t as h}from"./ViewToggle-C6Kw_T1E.js";import{n as g,t as _}from"./store-BK5yanfN.js";import{n as v,t as y}from"./active-task-CCVuYWP9.js";import{t as b}from"./external-store-CNyRxjsC.js";import{c as x,d as S,i as C,l as w,p as T,r as E,t as D,u as O}from"./triage-DP1bTLMs.js";import{i as k,r as A,t as j}from"./WorkspaceTabs-ZhpZ33cd.js";import{t as M}from"./SettingsPage-GfBeP2sy.js";import{t as N}from"./ChatTranscript-Bw-ROsjY.js";import{t as ee}from"./plus-Bz25iNHX.js";import{t as te}from"./search-zs6lDYfz.js";import{t as ne}from"./x-MtSojW5V.js";import{n as P,t as F}from"./activity-BjTd1D8q.js";import{t as re}from"./use-focus-trap-oPsw86zw.js";import{t as I}from"./engines-CZCmPVm2.js";import{n as ie}from"./settings-Cavhxdh3.js";import{a as L,i as ae,r as oe}from"./vendor-CdtpTJrf.js";import{r as R}from"./web-transport-BFuf9jKF.js";import{n as se,t as ce}from"./time-kviT26Tm.js";import{n as le,t as z}from"./ConfirmDialog-C9xYoPEx.js";import{t as ue}from"./text-match-DW3sD-Rt.js";import{t as de}from"./SlideOver-CI7vBtQJ.js";import{n as fe,r as pe,t as me}from"./chips-NdkDNqV7.js";var he=u(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),ge=u(`folder-input`,[[`path`,{d:`M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1`,key:`fm4g5t`}],[`path`,{d:`M2 13h10`,key:`pgb2dq`}],[`path`,{d:`m9 16 3-3-3-3`,key:`6m91ic`}]]),_e=u(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),ve=u(`panel-right`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}]]),B=t(o(),1),V=c();function ye({onClose:e}){let{tasks:t}=g(),n=d(),i=(0,B.useRef)(null);re(i);let a=(0,B.useMemo)(()=>{let e=new Set,n=[];for(let r of t)r.repo&&!e.has(r.repo)&&(e.add(r.repo),n.push(r.repo));return n.sort()},[t]),o=(0,B.useMemo)(()=>new Set(t.map(e=>e.worktreePath).filter(Boolean)),[t]),[s,c]=(0,B.useState)(a[0]??``),[u,m]=(0,B.useState)(null),[h,y]=(0,B.useState)(!1),[b,x]=(0,B.useState)(null),[S,C]=(0,B.useState)(!1),w=async e=>{if(e){y(!0),m(null);try{let{worktrees:t}=await _(`worktree.discoverAdoptable`,{repo:e});m(t)}catch(e){p(`scan worktrees`,e),m([])}finally{y(!1)}}},T=async t=>{x(t.path);try{let{task:i}=await _(`worktree.adopt`,{repo:s,worktreePath:t.path,branch:t.branch,ifExists:`return`});r(i.id),v(i.id),n({to:`/task/$taskId`,params:{taskId:i.id}}),f(`success`,`Adopted ${t.branch||t.path}`),e()}catch(e){p(`adopt worktree`,e)}finally{x(null)}};return S?(0,V.jsx)(E,{onClose:e}):a.length===0?(0,V.jsx)(`div`,{className:`fixed inset-0 z-40 flex items-center justify-center bg-black/60`,onClick:e,onKeyDown:t=>{t.key===`Escape`&&e()},role:`presentation`,children:(0,V.jsxs)(`div`,{ref:i,role:`dialog`,"aria-modal":`true`,"aria-label":`Adopt worktree`,className:`flex w-[32rem] max-w-[calc(100vw-2rem)] flex-col border border-line bg-surface shadow-xl`,onClick:e=>e.stopPropagation(),onKeyDown:()=>{},children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between border-b border-line px-3 py-2`,children:[(0,V.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] text-fg`,children:`Adopt worktree`}),(0,V.jsxs)(`span`,{className:`font-mono text-[10px] text-subtle`,children:[`pull an existing worktree into `,l()]})]}),(0,V.jsxs)(`div`,{className:`px-3 py-6 text-center`,children:[(0,V.jsxs)(`p`,{className:`text-[12px] leading-relaxed text-subtle`,children:[`No repos known to `,l(),` yet. Create a task in a repo first, then come back to adopt its worktrees.`]}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>C(!0),className:`mt-4 border border-primary bg-inset px-3 py-1.5 text-[11px] text-fg transition-colors hover:bg-primary/10`,children:`Create a task`})]}),(0,V.jsx)(`div`,{className:`flex justify-end border-t border-line px-3 py-2`,children:(0,V.jsx)(`button`,{type:`button`,onClick:e,className:`border border-line bg-bg px-3 py-1.5 text-[11px] text-muted transition-colors hover:border-primary hover:text-fg`,children:`Close`})})]})}):(0,V.jsx)(`div`,{className:`fixed inset-0 z-40 flex items-center justify-center bg-black/60`,onClick:e,onKeyDown:t=>{t.key===`Escape`&&e()},role:`presentation`,children:(0,V.jsxs)(`div`,{ref:i,role:`dialog`,"aria-modal":`true`,"aria-label":`Adopt worktree`,className:`flex max-h-[80vh] w-[32rem] max-w-[calc(100vw-2rem)] flex-col border border-line bg-surface shadow-xl`,onClick:e=>e.stopPropagation(),onKeyDown:()=>{},children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between border-b border-line px-3 py-2`,children:[(0,V.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] text-fg`,children:`Adopt worktree`}),(0,V.jsxs)(`span`,{className:`font-mono text-[10px] text-subtle`,children:[`pull an existing worktree into `,l()]})]}),(0,V.jsxs)(`div`,{className:`space-y-2 px-3 py-3`,children:[(0,V.jsx)(`div`,{className:`mb-1 text-[10px] font-bold uppercase tracking-[0.12em] text-subtle`,children:`Repo`}),(0,V.jsxs)(`div`,{className:`flex gap-2`,children:[(0,V.jsx)(`select`,{value:s,onChange:e=>c(e.target.value),className:`min-w-0 flex-1 border border-line bg-bg px-2 py-1.5 text-[12px] text-fg focus:border-line-active focus:outline-none`,children:a.map(e=>(0,V.jsx)(`option`,{value:e,children:e},e))}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>void w(s),disabled:!s||h,className:`shrink-0 border border-primary bg-inset px-3 py-1.5 text-[11px] text-fg transition-colors hover:bg-primary/10 disabled:opacity-40`,children:h?`Scanning…`:`Scan`})]})]}),(0,V.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto border-t border-line`,children:u===null?(0,V.jsx)(`p`,{className:`px-3 py-6 text-center text-[12px] text-subtle`,children:`Pick a repo and Scan to find adoptable worktrees.`}):u.length===0?(0,V.jsx)(`p`,{className:`px-3 py-6 text-center text-[12px] text-subtle`,children:`No adoptable worktrees found for this repo.`}):u.map(e=>{let t=o.has(e.path);return(0,V.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-line-subtle px-3 py-2 last:border-b-0`,children:[(0,V.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`span`,{className:`truncate font-mono text-[12px] text-fg`,children:e.branch||`(detached)`}),e.dirty&&(0,V.jsx)(`span`,{className:`shrink-0 text-[10px] text-kobe-yellow`,children:`dirty`}),e.kobeManaged&&(0,V.jsx)(`span`,{className:`shrink-0 text-[10px] text-subtle`,children:`rove`})]}),(0,V.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-2 text-[10px] text-subtle`,children:[(0,V.jsx)(`span`,{className:`truncate font-mono`,children:e.path}),e.lastActivityMs>0&&(0,V.jsx)(`span`,{className:`ml-auto shrink-0`,children:se(e.lastActivityMs)})]})]}),t?(0,V.jsx)(`span`,{className:`shrink-0 text-[10px] text-subtle`,children:`tracked`}):(0,V.jsx)(`button`,{type:`button`,onClick:()=>void T(e),disabled:b!==null,className:`shrink-0 border border-line bg-bg px-2 py-1 text-[11px] text-muted transition-colors hover:border-primary hover:text-fg disabled:opacity-40`,children:b===e.path?`Adopting…`:`Adopt`})]},e.path)})}),(0,V.jsx)(`div`,{className:`flex justify-end border-t border-line px-3 py-2`,children:(0,V.jsx)(`button`,{type:`button`,onClick:e,className:`border border-line bg-bg px-3 py-1.5 text-[11px] text-muted transition-colors hover:border-primary hover:text-fg`,children:`Close`})})]})})}var H=b({query:``,statusFilter:`all`,sortMode:`default`,showArchived:!1}),U=null;function W(e){H.update(t=>({...t,...e}))}function G(e){W({query:e})}function K(e){W({statusFilter:e})}function be(e){W({sortMode:e})}function xe(e){W({showArchived:e})}function Se(e){!e||e===U||(U=e,W({sortMode:e}))}function Ce(){return H.useSnapshot()}function q(e){let t=Date.parse(e.updatedAt||e.createdAt);return Number.isFinite(t)?t:0}function J(e,t){let n=q(t)-q(e);return n===0?t.id.localeCompare(e.id):n}function we(e,t){let n=e.filter(e=>e.kind===`main`),r=e.filter(e=>e.kind!==`main`&&e.pinned),i=e.filter(e=>e.kind!==`main`&&!e.pinned);return t===`recent`&&(r.sort(J),i.sort(J)),[...n,...r,...i]}function Te(e,t){return ue([e.title,e.branch,e.repo,e.worktreePath,e.vendor,e.status].filter(Boolean).join(` `),t)}function Ee({task:e,onClose:t}){return(0,V.jsx)(de,{open:e!==null,onClose:t,title:e?(0,V.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`span`,{className:`shrink-0 border border-line px-1 py-0.5 font-mono text-[9px] uppercase tracking-wide text-subtle`,children:`Archived`}),(0,V.jsx)(`span`,{className:`min-w-0 truncate`,children:e.title||e.branch})]}):void 0,children:e&&(0,V.jsx)(N,{worktreePath:e.worktreePath??null,vendor:L(e.vendor),title:e.title||e.branch})})}function Y({children:e,suffix:t}){return(0,V.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2`,children:[(0,V.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] text-subtle`,children:e}),t?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{className:`h-px flex-1 bg-line`}),(0,V.jsx)(`span`,{className:`font-mono text-[10px] font-bold uppercase text-primary`,children:t})]}):null]})}function De({task:e,engine:t,job:n,changes:r,engineName:i,active:a,onClick:o}){let s=n?.phase===`running`,c=s?`materializing…`:P(t?.state),l=ce(e.updatedAt||e.createdAt);return(0,V.jsxs)(`button`,{type:`button`,"data-task-id":e.id,onClick:o,className:`group w-full border-l-2 px-3 py-2 text-left transition-colors ${a?`border-primary bg-inset`:`border-transparent hover:bg-surface`}`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[s?(0,V.jsx)(_e,{size:10,strokeWidth:2.5,className:`shrink-0 animate-spin text-primary`}):(0,V.jsx)(`span`,{className:`h-1.5 w-1.5 shrink-0 rounded-full ${F(t?.state)}`}),(0,V.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[13px] ${a?`text-fg`:`text-fg/90`}`,children:e.title||e.branch}),(0,V.jsx)(pe,{pr:e.prStatus}),e.pinned&&(0,V.jsx)(`span`,{className:`shrink-0 text-[10px] text-subtle`,children:`PIN`}),(0,V.jsx)(me,{counts:r})]}),(0,V.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-2 pl-3.5 text-[11px] text-subtle`,children:[(0,V.jsx)(`span`,{className:`min-w-0 truncate`,children:e.branch||`—`}),(0,V.jsxs)(`span`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:[(0,V.jsx)(fe,{label:i}),c&&(0,V.jsx)(`span`,{className:`text-muted`,children:c}),l&&(0,V.jsx)(`span`,{className:`text-subtle`,children:l})]})]})]})}function Oe({task:e,onRestore:t,onPreview:n}){let r=e.title||e.branch;return(0,V.jsxs)(`div`,{className:`group flex items-center gap-2 border-l-2 border-transparent px-3 py-1.5`,children:[n?(0,V.jsx)(`button`,{type:`button`,onClick:n,title:`Preview history`,className:`min-w-0 flex-1 truncate text-left text-[12px] text-subtle transition-colors hover:text-fg`,children:r}):(0,V.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[12px] text-subtle`,children:r}),(0,V.jsx)(`button`,{type:`button`,onClick:t,className:`shrink-0 border border-line bg-surface px-1.5 py-0.5 text-[10px] text-muted opacity-0 transition-opacity hover:border-primary hover:text-fg group-hover:opacity-100`,children:`Restore`})]})}function ke({onOpenSettings:e,onNewTask:t,onAdopt:i}){let{tasks:a,engineStates:o,jobs:s,worktreeChanges:c,uiPrefs:l,hydrated:u,streamConnected:f}=g(),{selectedTaskId:m}=n(),h=I(),y=(0,B.useMemo)(()=>oe(a),[a]),b=e=>ae(h,e,y),{query:x,statusFilter:S,sortMode:w,showArchived:T}=Ce(),E=(0,B.useRef)(null),O=(0,B.useRef)(null);(0,B.useEffect)(()=>{m&&E.current?.querySelector(`[data-task-id="${CSS.escape(m)}"]`)?.scrollIntoView({block:`nearest`})},[m]);let k=l?.sortMode;(0,B.useEffect)(()=>{Se(k)},[k]);let A=(0,B.useMemo)(()=>a.filter(e=>!e.archived),[a]),j=(0,B.useMemo)(()=>a.filter(e=>e.archived&&e.kind!==`main`),[a]),M=(0,B.useMemo)(()=>we(A.filter(e=>Te(e,x)&&D(o[e.id],c[e.worktreePath],S)),w),[A,x,S,w,o,c]),N=M.filter(e=>e.kind===`main`),P=M.filter(e=>e.kind!==`main`),F=!u||!f&&a.length===0,re=d(),L=e=>{r(e),v(e),re({to:`/task/$taskId`,params:{taskId:e}})};(0,B.useEffect)(()=>{let e=e=>{if(e.metaKey||e.ctrlKey||e.altKey)return;let t=e.key,n=t===`ArrowDown`||t===`ArrowUp`,r=t===`j`||t===`ArrowDown`,i=t===`k`||t===`ArrowUp`,a=t===`/`;if(!r&&!i&&!a)return;let o=e.target;if(o&&(o.tagName===`INPUT`||o.tagName===`TEXTAREA`||o.tagName===`SELECT`||o.isContentEditable)||document.querySelector(`[role=dialog],[role=alertdialog]`)||document.querySelector(`[data-settings-open]`))return;if(a){e.preventDefault(),O.current?.focus();return}if(n&&o&&o!==document.body&&!E.current?.contains(o)||M.length===0)return;e.preventDefault();let s=M.findIndex(e=>e.id===m),c=s===-1?0:Math.min(Math.max(s+(r?1:-1),0),M.length-1);L(M[c].id)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[M,m]);let R=e=>{_(`task.archive`,{taskId:e.id,archived:!1}).catch(t=>p(`restore "${e.title||e.branch}"`,t))},[se,ce]=(0,B.useState)(!1),[le,z]=(0,B.useState)(null);return(0,B.useEffect)(()=>{let e=!0;return ie().then(t=>{e&&ce(t.archivedHistoryPreview===!0)}).catch(()=>{}),()=>{e=!1}},[]),(0,V.jsxs)(`aside`,{className:`flex w-64 shrink-0 flex-col border-r border-line bg-bg`,children:[(0,V.jsxs)(`div`,{className:`border-b border-line bg-surface/50 px-3 py-2`,children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,V.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] text-subtle`,children:`Tasks`}),(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`button`,{type:`button`,onClick:()=>be(w==="default"?`recent`:`default`),className:`font-mono text-[10px] uppercase ${w===`recent`?`text-primary`:`text-muted hover:text-fg`}`,title:`Toggle task sort`,children:`sort`}),(0,V.jsxs)(`span`,{className:`font-mono text-[10px] text-muted`,children:[M.length,`/`,A.length]}),(0,V.jsx)(`button`,{type:`button`,onClick:i,className:`text-muted transition-colors hover:text-primary`,title:`Adopt an existing worktree`,"aria-label":`Adopt worktree`,children:(0,V.jsx)(ge,{size:14,strokeWidth:1.9})}),(0,V.jsx)(`button`,{type:`button`,onClick:t,className:`text-muted transition-colors hover:text-primary`,title:`New task`,"aria-label":`New task`,children:(0,V.jsx)(ee,{size:14,strokeWidth:2.2})})]})]}),(0,V.jsxs)(`label`,{className:`mt-2 flex h-8 items-center gap-2 border border-line bg-bg px-2 text-[12px] text-muted focus-within:border-line-active`,children:[(0,V.jsx)(te,{size:14,strokeWidth:1.8,className:`shrink-0 text-subtle`}),(0,V.jsx)(`input`,{ref:O,value:x,onChange:e=>G(e.target.value),onKeyDown:e=>{e.key===`Enter`&&M.length>0?(e.preventDefault(),L(M[0].id),e.currentTarget.blur()):e.key===`Escape`&&x&&(e.preventDefault(),G(``))},placeholder:`Filter tasks`,className:`min-w-0 flex-1 bg-transparent text-fg placeholder:text-subtle focus:outline-none`}),x&&(0,V.jsx)(`button`,{type:`button`,onClick:()=>G(``),className:`shrink-0 text-subtle hover:text-fg`,"aria-label":`clear task filter`,title:`Clear filter`,children:(0,V.jsx)(ne,{size:13,strokeWidth:2})})]}),(0,V.jsx)(`div`,{className:`mt-2 flex items-center gap-1`,children:[{key:`all`,label:`All`,title:`All tasks`},{key:`attention`,label:`Needs`,title:`Needs input / errored / rate-limited`}].map(e=>(0,V.jsx)(`button`,{type:`button`,onClick:()=>K(e.key),title:e.title,className:`border px-1.5 py-0.5 text-[10px] transition-colors ${S===e.key?`border-primary bg-inset text-fg`:`border-line bg-bg text-subtle hover:border-primary hover:text-fg`}`,children:e.label},e.key))})]}),(0,V.jsxs)(`div`,{ref:E,className:`flex-1 overflow-y-auto`,children:[F?(0,V.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-4 text-[12px] text-subtle`,children:[(0,V.jsx)(_e,{size:13,strokeWidth:2,className:`animate-spin`}),(0,V.jsx)(`span`,{children:`connecting…`})]}):A.length===0?(0,V.jsxs)(`div`,{className:`px-3 py-4 text-[12px] leading-relaxed text-subtle`,children:[(0,V.jsx)(`p`,{children:`No tasks yet.`}),(0,V.jsx)(`button`,{type:`button`,onClick:t,className:`mt-3 border border-line bg-surface px-2 py-1 text-[11px] text-muted hover:border-primary hover:text-fg`,children:`+ New task`})]}):M.length===0?(0,V.jsxs)(`div`,{className:`px-3 py-4 text-[12px] leading-relaxed text-subtle`,children:[(0,V.jsx)(`div`,{children:x?`No matches for “${x}”.`:`No tasks in this status.`}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>{G(``),K(`all`)},className:`mt-3 border border-line bg-surface px-2 py-1 text-[11px] text-muted hover:border-primary hover:text-fg`,children:`Clear filter`})]}):(0,V.jsxs)(V.Fragment,{children:[N.length>0&&(0,V.jsx)(Y,{children:`Projects`}),N.map(e=>(0,V.jsx)(De,{task:e,engine:o[e.id],job:s[e.id],changes:c[e.worktreePath],engineName:b(e),active:e.id===m,onClick:()=>L(e.id)},e.id)),P.length>0&&(0,V.jsx)(Y,{suffix:w==="default"?void 0:w,children:`Worktrees`}),P.map(e=>(0,V.jsx)(De,{task:e,engine:o[e.id],job:s[e.id],changes:c[e.worktreePath],engineName:b(e),active:e.id===m,onClick:()=>L(e.id)},e.id))]}),!F&&j.length>0&&(0,V.jsxs)(`div`,{className:`mt-2 border-t border-line-subtle pb-2`,children:[(0,V.jsxs)(`button`,{type:`button`,onClick:()=>xe(!T),className:`flex w-full items-center gap-2 px-3 py-2 text-left`,children:[(0,V.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] text-subtle`,children:`Archived`}),(0,V.jsx)(`span`,{className:`font-mono text-[10px] text-subtle`,children:j.length}),(0,V.jsx)(`span`,{className:`ml-auto font-mono text-[10px] text-subtle`,children:T?`−`:`+`})]}),T&&j.map(e=>(0,V.jsx)(Oe,{task:e,onRestore:()=>R(e),onPreview:se?()=>z(e):void 0},e.id))]})]}),(0,V.jsx)(Ee,{task:le,onClose:()=>z(null)}),(0,V.jsx)(`div`,{className:`border-t border-line p-2`,children:(0,V.jsxs)(`button`,{type:`button`,onClick:e,className:`flex w-full items-center gap-2 border border-line bg-surface px-2 py-2 text-left text-[12px] text-muted transition-colors hover:border-primary hover:bg-inset hover:text-fg`,children:[(0,V.jsx)(C,{size:15,strokeWidth:1.8}),(0,V.jsx)(`span`,{children:`Settings`})]})})]})}async function Ae(e){try{if(navigator.clipboard?.writeText)return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}function X(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}var je=/^\/api\/issue-assets\/[a-f0-9]{16}\/[A-Za-z0-9_-]+\.[a-z0-9]+$/;function Me(e){let t=e.trim();return je.test(t)?t:null}function Ne(e){let t=e.trim();return/^https?:\/\//i.test(t)?t:t.startsWith(`//`)?null:t.startsWith(`/`)||t.startsWith(`#`)||t.startsWith(`./`)||t.startsWith(`../`)?t:null}var Pe=`(?:[^()]|\\([^()]*\\))+`,Fe=RegExp(`!\\[([^\\]]*)\\]\\((${Pe})\\)`,`g`),Ie=RegExp(`\\[([^\\]]+)\\]\\((${Pe})\\)`,`g`);function Le(e,t){let n=Ne(t.replace(/&amp;/g,`&`));return n?`<a href="${X(n)}" target="_blank" rel="noopener noreferrer" class="kobe-md-link">${e}</a>`:`${e}(${t})`}function Re(e){let t=e;return t.includes(`]`)&&t.includes(`)`)&&(t=t.replace(Fe,(e,t,n)=>{let r=Me(n.replace(/&amp;/g,`&`));return r?`<img src="${X(r)}" alt="${X(t)}" loading="lazy" class="kobe-md-img">`:t?Le(t,n):`![${t}](${n})`})),t.includes(`]`)&&t.includes(`)`)&&(t=t.replace(Ie,(e,t,n)=>Le(t,n))),t=t.replace(/\*\*(.+?)\*\*/g,`<strong>$1</strong>`),t=t.replace(/(^|[^*])\*([^*]+)\*/g,`$1<em>$2</em>`),t}function Z(e){return e.split(/(`[^`]+`)/g).map((e,t)=>t%2==1?`<code class="kobe-md-code">${e.slice(1,-1)}</code>`:Re(e)).join(``)}function ze(e){let t=e.replace(/\r\n/g,`
1
+ import{o as e,u as t}from"./terminal-6BCvBu4_.js";import{_ as n,f as r,l as i,r as a,y as o}from"./tabs-DHBP2ShA.js";import{d as s,m as c,p as l,t as u}from"./createLucideIcon-C6nfansM.js";import{a as d,n as f,r as p}from"./toast-2mA6GzBq.js";import{n as m,t as h}from"./ViewToggle-Bvvh1yLG.js";import{n as g,t as _}from"./store-BK5yanfN.js";import{n as v,t as y}from"./active-task-CCVuYWP9.js";import{t as b}from"./external-store-CNyRxjsC.js";import{c as x,d as S,i as C,l as w,p as T,r as E,t as D,u as O}from"./triage-DjBy6dI9.js";import{i as k,r as A,t as j}from"./WorkspaceTabs-ZhpZ33cd.js";import{t as M}from"./SettingsPage-DovXUI00.js";import{t as N}from"./ChatTranscript-Bw-ROsjY.js";import{t as ee}from"./plus-Bz25iNHX.js";import{t as te}from"./search-zs6lDYfz.js";import{t as ne}from"./x-MtSojW5V.js";import{n as P,t as F}from"./activity-BjTd1D8q.js";import{t as re}from"./use-focus-trap-oPsw86zw.js";import{t as I}from"./engines-CZCmPVm2.js";import{n as ie}from"./settings-Cavhxdh3.js";import{a as L,i as ae,r as oe}from"./vendor-CdtpTJrf.js";import{r as R}from"./web-transport-BFuf9jKF.js";import{n as se,t as ce}from"./time-kviT26Tm.js";import{n as le,t as z}from"./ConfirmDialog-CBqd0wMR.js";import{t as ue}from"./text-match-DW3sD-Rt.js";import{t as de}from"./SlideOver-CI7vBtQJ.js";import{n as fe,r as pe,t as me}from"./chips-NdkDNqV7.js";var he=u(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),ge=u(`folder-input`,[[`path`,{d:`M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1`,key:`fm4g5t`}],[`path`,{d:`M2 13h10`,key:`pgb2dq`}],[`path`,{d:`m9 16 3-3-3-3`,key:`6m91ic`}]]),_e=u(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),ve=u(`panel-right`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}]]),B=t(o(),1),V=c();function ye({onClose:e}){let{tasks:t}=g(),n=d(),i=(0,B.useRef)(null);re(i);let a=(0,B.useMemo)(()=>{let e=new Set,n=[];for(let r of t)r.repo&&!e.has(r.repo)&&(e.add(r.repo),n.push(r.repo));return n.sort()},[t]),o=(0,B.useMemo)(()=>new Set(t.map(e=>e.worktreePath).filter(Boolean)),[t]),[s,c]=(0,B.useState)(a[0]??``),[u,m]=(0,B.useState)(null),[h,y]=(0,B.useState)(!1),[b,x]=(0,B.useState)(null),[S,C]=(0,B.useState)(!1),w=async e=>{if(e){y(!0),m(null);try{let{worktrees:t}=await _(`worktree.discoverAdoptable`,{repo:e});m(t)}catch(e){p(`scan worktrees`,e),m([])}finally{y(!1)}}},T=async t=>{x(t.path);try{let{task:i}=await _(`worktree.adopt`,{repo:s,worktreePath:t.path,branch:t.branch,ifExists:`return`});r(i.id),v(i.id),n({to:`/task/$taskId`,params:{taskId:i.id}}),f(`success`,`Adopted ${t.branch||t.path}`),e()}catch(e){p(`adopt worktree`,e)}finally{x(null)}};return S?(0,V.jsx)(E,{onClose:e}):a.length===0?(0,V.jsx)(`div`,{className:`fixed inset-0 z-40 flex items-center justify-center bg-black/60`,onClick:e,onKeyDown:t=>{t.key===`Escape`&&e()},role:`presentation`,children:(0,V.jsxs)(`div`,{ref:i,role:`dialog`,"aria-modal":`true`,"aria-label":`Adopt worktree`,className:`flex w-[32rem] max-w-[calc(100vw-2rem)] flex-col border border-line bg-surface shadow-xl`,onClick:e=>e.stopPropagation(),onKeyDown:()=>{},children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between border-b border-line px-3 py-2`,children:[(0,V.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] text-fg`,children:`Adopt worktree`}),(0,V.jsxs)(`span`,{className:`font-mono text-[10px] text-subtle`,children:[`pull an existing worktree into `,l()]})]}),(0,V.jsxs)(`div`,{className:`px-3 py-6 text-center`,children:[(0,V.jsxs)(`p`,{className:`text-[12px] leading-relaxed text-subtle`,children:[`No repos known to `,l(),` yet. Create a task in a repo first, then come back to adopt its worktrees.`]}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>C(!0),className:`mt-4 border border-primary bg-inset px-3 py-1.5 text-[11px] text-fg transition-colors hover:bg-primary/10`,children:`Create a task`})]}),(0,V.jsx)(`div`,{className:`flex justify-end border-t border-line px-3 py-2`,children:(0,V.jsx)(`button`,{type:`button`,onClick:e,className:`border border-line bg-bg px-3 py-1.5 text-[11px] text-muted transition-colors hover:border-primary hover:text-fg`,children:`Close`})})]})}):(0,V.jsx)(`div`,{className:`fixed inset-0 z-40 flex items-center justify-center bg-black/60`,onClick:e,onKeyDown:t=>{t.key===`Escape`&&e()},role:`presentation`,children:(0,V.jsxs)(`div`,{ref:i,role:`dialog`,"aria-modal":`true`,"aria-label":`Adopt worktree`,className:`flex max-h-[80vh] w-[32rem] max-w-[calc(100vw-2rem)] flex-col border border-line bg-surface shadow-xl`,onClick:e=>e.stopPropagation(),onKeyDown:()=>{},children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between border-b border-line px-3 py-2`,children:[(0,V.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] text-fg`,children:`Adopt worktree`}),(0,V.jsxs)(`span`,{className:`font-mono text-[10px] text-subtle`,children:[`pull an existing worktree into `,l()]})]}),(0,V.jsxs)(`div`,{className:`space-y-2 px-3 py-3`,children:[(0,V.jsx)(`div`,{className:`mb-1 text-[10px] font-bold uppercase tracking-[0.12em] text-subtle`,children:`Repo`}),(0,V.jsxs)(`div`,{className:`flex gap-2`,children:[(0,V.jsx)(`select`,{value:s,onChange:e=>c(e.target.value),className:`min-w-0 flex-1 border border-line bg-bg px-2 py-1.5 text-[12px] text-fg focus:border-line-active focus:outline-none`,children:a.map(e=>(0,V.jsx)(`option`,{value:e,children:e},e))}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>void w(s),disabled:!s||h,className:`shrink-0 border border-primary bg-inset px-3 py-1.5 text-[11px] text-fg transition-colors hover:bg-primary/10 disabled:opacity-40`,children:h?`Scanning…`:`Scan`})]})]}),(0,V.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto border-t border-line`,children:u===null?(0,V.jsx)(`p`,{className:`px-3 py-6 text-center text-[12px] text-subtle`,children:`Pick a repo and Scan to find adoptable worktrees.`}):u.length===0?(0,V.jsx)(`p`,{className:`px-3 py-6 text-center text-[12px] text-subtle`,children:`No adoptable worktrees found for this repo.`}):u.map(e=>{let t=o.has(e.path);return(0,V.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-line-subtle px-3 py-2 last:border-b-0`,children:[(0,V.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`span`,{className:`truncate font-mono text-[12px] text-fg`,children:e.branch||`(detached)`}),e.dirty&&(0,V.jsx)(`span`,{className:`shrink-0 text-[10px] text-kobe-yellow`,children:`dirty`}),e.kobeManaged&&(0,V.jsx)(`span`,{className:`shrink-0 text-[10px] text-subtle`,children:`rove`})]}),(0,V.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-2 text-[10px] text-subtle`,children:[(0,V.jsx)(`span`,{className:`truncate font-mono`,children:e.path}),e.lastActivityMs>0&&(0,V.jsx)(`span`,{className:`ml-auto shrink-0`,children:se(e.lastActivityMs)})]})]}),t?(0,V.jsx)(`span`,{className:`shrink-0 text-[10px] text-subtle`,children:`tracked`}):(0,V.jsx)(`button`,{type:`button`,onClick:()=>void T(e),disabled:b!==null,className:`shrink-0 border border-line bg-bg px-2 py-1 text-[11px] text-muted transition-colors hover:border-primary hover:text-fg disabled:opacity-40`,children:b===e.path?`Adopting…`:`Adopt`})]},e.path)})}),(0,V.jsx)(`div`,{className:`flex justify-end border-t border-line px-3 py-2`,children:(0,V.jsx)(`button`,{type:`button`,onClick:e,className:`border border-line bg-bg px-3 py-1.5 text-[11px] text-muted transition-colors hover:border-primary hover:text-fg`,children:`Close`})})]})})}var H=b({query:``,statusFilter:`all`,sortMode:`default`,showArchived:!1}),U=null;function W(e){H.update(t=>({...t,...e}))}function G(e){W({query:e})}function K(e){W({statusFilter:e})}function be(e){W({sortMode:e})}function xe(e){W({showArchived:e})}function Se(e){!e||e===U||(U=e,W({sortMode:e}))}function Ce(){return H.useSnapshot()}function q(e){let t=Date.parse(e.updatedAt||e.createdAt);return Number.isFinite(t)?t:0}function J(e,t){let n=q(t)-q(e);return n===0?t.id.localeCompare(e.id):n}function we(e,t){let n=e.filter(e=>e.kind===`main`),r=e.filter(e=>e.kind!==`main`&&e.pinned),i=e.filter(e=>e.kind!==`main`&&!e.pinned);return t===`recent`&&(r.sort(J),i.sort(J)),[...n,...r,...i]}function Te(e,t){return ue([e.title,e.branch,e.repo,e.worktreePath,e.vendor,e.status].filter(Boolean).join(` `),t)}function Ee({task:e,onClose:t}){return(0,V.jsx)(de,{open:e!==null,onClose:t,title:e?(0,V.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`span`,{className:`shrink-0 border border-line px-1 py-0.5 font-mono text-[9px] uppercase tracking-wide text-subtle`,children:`Archived`}),(0,V.jsx)(`span`,{className:`min-w-0 truncate`,children:e.title||e.branch})]}):void 0,children:e&&(0,V.jsx)(N,{worktreePath:e.worktreePath??null,vendor:L(e.vendor),title:e.title||e.branch})})}function De({children:e,suffix:t}){return(0,V.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2`,children:[(0,V.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] text-subtle`,children:e}),t?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{className:`h-px flex-1 bg-line`}),(0,V.jsx)(`span`,{className:`font-mono text-[10px] font-bold uppercase text-primary`,children:t})]}):null]})}function Y({task:e,engine:t,job:n,changes:r,engineName:i,active:a,onClick:o}){let s=n?.phase===`running`,c=s?`materializing…`:P(t?.state),l=ce(e.updatedAt||e.createdAt);return(0,V.jsxs)(`button`,{type:`button`,"data-task-id":e.id,onClick:o,className:`group w-full border-l-2 px-3 py-2 text-left transition-colors ${a?`border-primary bg-inset`:`border-transparent hover:bg-surface`}`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[s?(0,V.jsx)(_e,{size:10,strokeWidth:2.5,className:`shrink-0 animate-spin text-primary`}):(0,V.jsx)(`span`,{className:`h-1.5 w-1.5 shrink-0 rounded-full ${F(t?.state)}`}),(0,V.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[13px] ${a?`text-fg`:`text-fg/90`}`,children:e.title||e.branch}),(0,V.jsx)(pe,{pr:e.prStatus}),e.pinned&&(0,V.jsx)(`span`,{className:`shrink-0 text-[10px] text-subtle`,children:`PIN`}),(0,V.jsx)(me,{counts:r})]}),(0,V.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-2 pl-3.5 text-[11px] text-subtle`,children:[(0,V.jsx)(`span`,{className:`min-w-0 truncate`,children:e.branch||`—`}),(0,V.jsxs)(`span`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:[(0,V.jsx)(fe,{label:i}),c&&(0,V.jsx)(`span`,{className:`text-muted`,children:c}),l&&(0,V.jsx)(`span`,{className:`text-subtle`,children:l})]})]})]})}function Oe({task:e,onRestore:t,onPreview:n}){let r=e.title||e.branch;return(0,V.jsxs)(`div`,{className:`group flex items-center gap-2 border-l-2 border-transparent px-3 py-1.5`,children:[n?(0,V.jsx)(`button`,{type:`button`,onClick:n,title:`Preview history`,className:`min-w-0 flex-1 truncate text-left text-[12px] text-subtle transition-colors hover:text-fg`,children:r}):(0,V.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[12px] text-subtle`,children:r}),(0,V.jsx)(`button`,{type:`button`,onClick:t,className:`shrink-0 border border-line bg-surface px-1.5 py-0.5 text-[10px] text-muted opacity-0 transition-opacity hover:border-primary hover:text-fg group-hover:opacity-100`,children:`Restore`})]})}function ke({onOpenSettings:e,onNewTask:t,onAdopt:i}){let{tasks:a,engineStates:o,jobs:s,worktreeChanges:c,uiPrefs:l,hydrated:u,streamConnected:f}=g(),{selectedTaskId:m}=n(),h=I(),y=(0,B.useMemo)(()=>oe(a),[a]),b=e=>ae(h,e,y),{query:x,statusFilter:S,sortMode:w,showArchived:T}=Ce(),E=(0,B.useRef)(null),O=(0,B.useRef)(null);(0,B.useEffect)(()=>{m&&E.current?.querySelector(`[data-task-id="${CSS.escape(m)}"]`)?.scrollIntoView({block:`nearest`})},[m]);let k=l?.sortMode;(0,B.useEffect)(()=>{Se(k)},[k]);let A=(0,B.useMemo)(()=>a.filter(e=>!e.archived),[a]),j=(0,B.useMemo)(()=>a.filter(e=>e.archived&&e.kind!==`main`),[a]),M=(0,B.useMemo)(()=>we(A.filter(e=>Te(e,x)&&D(o[e.id],c[e.worktreePath],S)),w),[A,x,S,w,o,c]),N=M.filter(e=>e.kind===`main`),P=M.filter(e=>e.kind!==`main`),F=!u||!f&&a.length===0,re=d(),L=e=>{r(e),v(e),re({to:`/task/$taskId`,params:{taskId:e}})};(0,B.useEffect)(()=>{let e=e=>{if(e.metaKey||e.ctrlKey||e.altKey)return;let t=e.key,n=t===`ArrowDown`||t===`ArrowUp`,r=t===`j`||t===`ArrowDown`,i=t===`k`||t===`ArrowUp`,a=t===`/`;if(!r&&!i&&!a)return;let o=e.target;if(o&&(o.tagName===`INPUT`||o.tagName===`TEXTAREA`||o.tagName===`SELECT`||o.isContentEditable)||document.querySelector(`[role=dialog],[role=alertdialog]`)||document.querySelector(`[data-settings-open]`))return;if(a){e.preventDefault(),O.current?.focus();return}if(n&&o&&o!==document.body&&!E.current?.contains(o)||M.length===0)return;e.preventDefault();let s=M.findIndex(e=>e.id===m),c=s===-1?0:Math.min(Math.max(s+(r?1:-1),0),M.length-1);L(M[c].id)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[M,m]);let R=e=>{_(`task.archive`,{taskId:e.id,archived:!1}).catch(t=>p(`restore "${e.title||e.branch}"`,t))},[se,ce]=(0,B.useState)(!1),[le,z]=(0,B.useState)(null);return(0,B.useEffect)(()=>{let e=!0;return ie().then(t=>{e&&ce(t.archivedHistoryPreview===!0)}).catch(()=>{}),()=>{e=!1}},[]),(0,V.jsxs)(`aside`,{className:`flex w-64 shrink-0 flex-col border-r border-line bg-bg`,children:[(0,V.jsxs)(`div`,{className:`border-b border-line bg-surface/50 px-3 py-2`,children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,V.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] text-subtle`,children:`Tasks`}),(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`button`,{type:`button`,onClick:()=>be(w==="default"?`recent`:`default`),className:`font-mono text-[10px] uppercase ${w===`recent`?`text-primary`:`text-muted hover:text-fg`}`,title:`Toggle task sort`,children:`sort`}),(0,V.jsxs)(`span`,{className:`font-mono text-[10px] text-muted`,children:[M.length,`/`,A.length]}),(0,V.jsx)(`button`,{type:`button`,onClick:i,className:`text-muted transition-colors hover:text-primary`,title:`Adopt an existing worktree`,"aria-label":`Adopt worktree`,children:(0,V.jsx)(ge,{size:14,strokeWidth:1.9})}),(0,V.jsx)(`button`,{type:`button`,onClick:t,className:`text-muted transition-colors hover:text-primary`,title:`New task`,"aria-label":`New task`,children:(0,V.jsx)(ee,{size:14,strokeWidth:2.2})})]})]}),(0,V.jsxs)(`label`,{className:`mt-2 flex h-8 items-center gap-2 border border-line bg-bg px-2 text-[12px] text-muted focus-within:border-line-active`,children:[(0,V.jsx)(te,{size:14,strokeWidth:1.8,className:`shrink-0 text-subtle`}),(0,V.jsx)(`input`,{ref:O,value:x,onChange:e=>G(e.target.value),onKeyDown:e=>{e.key===`Enter`&&M.length>0?(e.preventDefault(),L(M[0].id),e.currentTarget.blur()):e.key===`Escape`&&x&&(e.preventDefault(),G(``))},placeholder:`Filter tasks`,className:`min-w-0 flex-1 bg-transparent text-fg placeholder:text-subtle focus:outline-none`}),x&&(0,V.jsx)(`button`,{type:`button`,onClick:()=>G(``),className:`shrink-0 text-subtle hover:text-fg`,"aria-label":`clear task filter`,title:`Clear filter`,children:(0,V.jsx)(ne,{size:13,strokeWidth:2})})]}),(0,V.jsx)(`div`,{className:`mt-2 flex items-center gap-1`,children:[{key:`all`,label:`All`,title:`All tasks`},{key:`attention`,label:`Needs`,title:`Needs input / errored / rate-limited`}].map(e=>(0,V.jsx)(`button`,{type:`button`,onClick:()=>K(e.key),title:e.title,className:`border px-1.5 py-0.5 text-[10px] transition-colors ${S===e.key?`border-primary bg-inset text-fg`:`border-line bg-bg text-subtle hover:border-primary hover:text-fg`}`,children:e.label},e.key))})]}),(0,V.jsxs)(`div`,{ref:E,className:`flex-1 overflow-y-auto`,children:[F?(0,V.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-4 text-[12px] text-subtle`,children:[(0,V.jsx)(_e,{size:13,strokeWidth:2,className:`animate-spin`}),(0,V.jsx)(`span`,{children:`connecting…`})]}):A.length===0?(0,V.jsxs)(`div`,{className:`px-3 py-4 text-[12px] leading-relaxed text-subtle`,children:[(0,V.jsx)(`p`,{children:`No tasks yet.`}),(0,V.jsx)(`button`,{type:`button`,onClick:t,className:`mt-3 border border-line bg-surface px-2 py-1 text-[11px] text-muted hover:border-primary hover:text-fg`,children:`+ New task`})]}):M.length===0?(0,V.jsxs)(`div`,{className:`px-3 py-4 text-[12px] leading-relaxed text-subtle`,children:[(0,V.jsx)(`div`,{children:x?`No matches for “${x}”.`:`No tasks in this status.`}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>{G(``),K(`all`)},className:`mt-3 border border-line bg-surface px-2 py-1 text-[11px] text-muted hover:border-primary hover:text-fg`,children:`Clear filter`})]}):(0,V.jsxs)(V.Fragment,{children:[N.length>0&&(0,V.jsx)(De,{children:`Projects`}),N.map(e=>(0,V.jsx)(Y,{task:e,engine:o[e.id],job:s[e.id],changes:c[e.worktreePath],engineName:b(e),active:e.id===m,onClick:()=>L(e.id)},e.id)),P.length>0&&(0,V.jsx)(De,{suffix:w==="default"?void 0:w,children:`Worktrees`}),P.map(e=>(0,V.jsx)(Y,{task:e,engine:o[e.id],job:s[e.id],changes:c[e.worktreePath],engineName:b(e),active:e.id===m,onClick:()=>L(e.id)},e.id))]}),!F&&j.length>0&&(0,V.jsxs)(`div`,{className:`mt-2 border-t border-line-subtle pb-2`,children:[(0,V.jsxs)(`button`,{type:`button`,onClick:()=>xe(!T),className:`flex w-full items-center gap-2 px-3 py-2 text-left`,children:[(0,V.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] text-subtle`,children:`Archived`}),(0,V.jsx)(`span`,{className:`font-mono text-[10px] text-subtle`,children:j.length}),(0,V.jsx)(`span`,{className:`ml-auto font-mono text-[10px] text-subtle`,children:T?`−`:`+`})]}),T&&j.map(e=>(0,V.jsx)(Oe,{task:e,onRestore:()=>R(e),onPreview:se?()=>z(e):void 0},e.id))]})]}),(0,V.jsx)(Ee,{task:le,onClose:()=>z(null)}),(0,V.jsx)(`div`,{className:`border-t border-line p-2`,children:(0,V.jsxs)(`button`,{type:`button`,onClick:e,className:`flex w-full items-center gap-2 border border-line bg-surface px-2 py-2 text-left text-[12px] text-muted transition-colors hover:border-primary hover:bg-inset hover:text-fg`,children:[(0,V.jsx)(C,{size:15,strokeWidth:1.8}),(0,V.jsx)(`span`,{children:`Settings`})]})})]})}async function Ae(e){try{if(navigator.clipboard?.writeText)return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}function X(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}var je=/^\/api\/issue-assets\/[a-f0-9]{16}\/[A-Za-z0-9_-]+\.[a-z0-9]+$/;function Me(e){let t=e.trim();return je.test(t)?t:null}function Ne(e){let t=e.trim();return/^https?:\/\//i.test(t)?t:t.startsWith(`//`)?null:t.startsWith(`/`)||t.startsWith(`#`)||t.startsWith(`./`)||t.startsWith(`../`)?t:null}var Pe=`(?:[^()]|\\([^()]*\\))+`,Fe=RegExp(`!\\[([^\\]]*)\\]\\((${Pe})\\)`,`g`),Ie=RegExp(`\\[([^\\]]+)\\]\\((${Pe})\\)`,`g`);function Le(e,t){let n=Ne(t.replace(/&amp;/g,`&`));return n?`<a href="${X(n)}" target="_blank" rel="noopener noreferrer" class="kobe-md-link">${e}</a>`:`${e}(${t})`}function Re(e){let t=e;return t.includes(`]`)&&t.includes(`)`)&&(t=t.replace(Fe,(e,t,n)=>{let r=Me(n.replace(/&amp;/g,`&`));return r?`<img src="${X(r)}" alt="${t}" loading="lazy" class="kobe-md-img">`:t?Le(t,n):`![${t}](${n})`})),t.includes(`]`)&&t.includes(`)`)&&(t=t.replace(Ie,(e,t,n)=>Le(t,n))),t=t.replace(/\*\*(.+?)\*\*/g,`<strong>$1</strong>`),t=t.replace(/(^|[^*])\*([^*]+)\*/g,`$1<em>$2</em>`),t}function Z(e){return e.split(/(`[^`]+`)/g).map((e,t)=>t%2==1?`<code class="kobe-md-code">${e.slice(1,-1)}</code>`:Re(e)).join(``)}function ze(e){let t=e.replace(/\r\n/g,`
2
2
  `).split(`
3
3
  `),n=[],r=0,i=null,a=()=>{i&&=(n.push(`</${i}>`),null)};for(;r<t.length;){let e=t[r];if(/^```/.test(e)){a();let e=[];for(r++;r<t.length&&!/^```/.test(t[r]);)e.push(X(t[r])),r++;r++,n.push(`<pre class="kobe-md-pre"><code>${e.join(`
4
4
  `)}</code></pre>`);continue}if(/^\s*(-{3,}|\*{3,}|_{3,})\s*$/.test(e)){a(),n.push(`<hr class="kobe-md-hr" />`),r++;continue}let o=/^(#{1,6})\s+(.*)$/.exec(e);if(o){a();let e=o[1].length;n.push(`<h${e} class="kobe-md-h">${Z(X(o[2]))}</h${e}>`),r++;continue}if(/^>\s?/.test(e)){a(),n.push(`<blockquote class="kobe-md-quote">${Z(X(e.replace(/^>\s?/,``)))}</blockquote>`),r++;continue}let s=/^\s*[-*]\s+(.*)$/.exec(e);if(s){i!==`ul`&&(a(),n.push(`<ul class="kobe-md-ul">`),i=`ul`),n.push(`<li>${Z(X(s[1]))}</li>`),r++;continue}let c=/^\s*\d+\.\s+(.*)$/.exec(e);if(c){i!==`ol`&&(a(),n.push(`<ol class="kobe-md-ol">`),i=`ol`),n.push(`<li>${Z(X(c[1]))}</li>`),r++;continue}if(e.trim()===``){a(),r++;continue}a();let l=[e];for(r++;r<t.length&&t[r].trim()!==``&&!/^(#{1,6}\s|>\s?|```|\s*[-*]\s|\s*\d+\.\s|\s*(-{3,}|\*{3,}|_{3,})\s*$)/.test(t[r]);)l.push(t[r]),r++;n.push(`<p class="kobe-md-p">${Z(X(l.join(` `)))}</p>`)}return a(),n.join(`
@@ -1 +1 @@
1
- import{u as e}from"./terminal-6BCvBu4_.js";import{f as t,y as n}from"./tabs-DHBP2ShA.js";import{d as r,m as i}from"./createLucideIcon-C6nfansM.js";import{a,n as o,r as s}from"./toast-B7pad_QC.js";import{n as c,t as l}from"./ViewToggle-C6Kw_T1E.js";import{n as u}from"./store-BK5yanfN.js";import{n as ee}from"./active-task-CCVuYWP9.js";import{t as d}from"./external-store-CNyRxjsC.js";import{t as f}from"./external-link-Cj-9rta8.js";import{a as te,i as p,n as m,r as h,t as g}from"./lazy-issue-panels-GvnRdSfG.js";import{t as _}from"./plus-Bz25iNHX.js";import{t as v}from"./search-zs6lDYfz.js";import{t as y}from"./x-MtSojW5V.js";import{n as b,t as ne}from"./ConfirmDialog-C9xYoPEx.js";import{_ as x,a as S,d as re,g as C,h as w,m as T,p as ie,s as E,u as D}from"./issues-BjnSNgu-.js";var O=e(n(),1),k={query:``,repo:null};function A(e){j.update(t=>({...t,...e}))}var j=d(k);function M(){return j.useSnapshot()}function N(e){e!==j.getSnapshot().query&&A({query:e})}function P(e){e!==j.getSnapshot().repo&&A({repo:e})}function ae(e){let{issueRepos:t,issueData:n,refreshIssues:r}=e,[i,a]=(0,O.useState)(!1),[o,c]=(0,O.useState)(null),[l,u]=(0,O.useState)(new Map);return(0,O.useEffect)(()=>{u(e=>{if(e.size===0)return e;let r=new Map(e),i=!1;for(let e of t){let t=n[e];if(!(!t||!t.exists))for(let n of t.issues)n.taskId&&r.delete(`${e}:${n.id}`)&&(i=!0)}return i?r:e})},[t,n]),{issueBusy:i,quickStartingId:o,pendingLinks:l,saveIssue:async(e,t,n)=>{a(!0);try{return await w(e,t,n),r([e]),!0}catch(e){return s(`update issue`,e),!1}finally{a(!1)}},deleteIssueConfirmed:async(e,t)=>{a(!0);try{return await S(e,t.id),r([e]),!0}catch(e){return s(`delete issue`,e),!1}finally{a(!1)}},quickStart:async(e,t,n,r,i)=>{if(o===null){c(t.id);try{let{taskId:a,workspaceTaskId:o}=await T(e,t,{vendor:n,effort:r,placement:i});return i!==`project`&&u(n=>{let r=new Map(n);return r.set(`${e}:${t.id}`,{repo:e,issueId:t.id,taskId:a}),r}),o}catch(e){s(`quick start issue`,e);return}finally{c(null)}}}}}var F=i();function I({repo:e,column:t,onNewIssue:n,onPeekIssue:r,onOpenTask:i,onDeleteIssue:a}){return(0,F.jsxs)(`section`,{"data-column":`${e}:${t.key}`,className:`flex h-full shrink-0 flex-col border border-transparent ${t.key===`backlog`?`w-96`:`w-72`}`,children:[(0,F.jsxs)(`div`,{className:`mb-2 flex items-baseline gap-2`,children:[(0,F.jsx)(`h2`,{className:`text-[11px] font-bold uppercase tracking-[0.12em] ${t.accent}`,children:t.title}),(0,F.jsx)(`span`,{className:`font-mono text-[10px] text-subtle`,children:t.cards.length+t.hiddenCount}),n&&(0,F.jsxs)(`button`,{type:`button`,onClick:n,className:`ml-auto flex items-center gap-0.5 text-[10px] text-subtle transition-colors hover:text-fg`,title:`New story in this project`,children:[(0,F.jsx)(_,{size:11,strokeWidth:2}),(0,F.jsx)(`span`,{children:`New story`})]})]}),(0,F.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto pb-2`,children:[t.cards.length===0?(0,F.jsx)(`div`,{className:`border border-dashed border-line-subtle p-3 text-center text-[11px] text-subtle`,children:`none`}):t.cards.map(e=>{let{issue:t}=e,n=x(t)?t.taskId:void 0;return(0,F.jsxs)(`div`,{className:`group/wrap relative`,children:[(0,F.jsx)(p,{issue:t,onOpen:()=>r(t),onDelete:()=>a(t)}),n&&(0,F.jsxs)(`button`,{type:`button`,onClick:()=>i(n),"aria-label":`Open task for issue #${t.id}`,title:`Started — open task`,className:`absolute bottom-2 right-2 flex items-center gap-1 border border-line bg-surface px-1.5 py-0.5 text-[10px] text-subtle opacity-0 transition-opacity hover:border-primary hover:text-fg focus-visible:opacity-100 group-hover/wrap:opacity-100`,children:[(0,F.jsx)(f,{size:10,strokeWidth:1.8}),(0,F.jsx)(`span`,{children:`open task`})]})]},`issue:${t.id}`)}),t.hiddenCount>0&&(0,F.jsxs)(`div`,{className:`p-2 text-center text-[10px] text-subtle`,children:[`+`,t.hiddenCount,` more — finish stories to thin this column`]})]})]})}function L({board:e,onNewIssue:t,onPeekIssue:n,onOpenTask:r,onDeleteIssue:i}){return(0,F.jsx)(`div`,{className:`flex h-full min-w-max gap-4`,children:e.columns.map(a=>(0,F.jsx)(I,{repo:e.repo,column:a,onNewIssue:a.key===`backlog`?()=>t(e.repo):void 0,onPeekIssue:n,onOpenTask:r,onDeleteIssue:t=>i(e.repo,t)},a.key))})}function R(){let{tasks:e,hydrated:n,daemonConnected:i}=u(),{query:d,repo:f}=M(),p=a(),x=(0,O.useRef)(null),[S,w]=(0,O.useState)(null),[T,k]=(0,O.useState)(null),[A,j]=(0,O.useState)(null),[I,R]=(0,O.useState)([]);(0,O.useEffect)(()=>{let e=!1;return E().then(t=>{e||R(t)}).catch(e=>s(`load projects`,e)),()=>{e=!0}},[]);let z=(0,O.useMemo)(()=>D(e,I),[e,I]),B=(0,O.useMemo)(()=>z.map(e=>e.repo),[z]),V=(0,O.useMemo)(()=>ie(z,f),[z,f]),{data:H,pending:U,refresh:W}=te(B),{issueBusy:G,quickStartingId:K,pendingLinks:q,saveIssue:J,deleteIssueConfirmed:oe,quickStart:se}=ae({issueRepos:B,issueData:H,refreshIssues:W}),{allIssues:Y,repoChips:ce,projectBoards:X,shownCount:Z,hasAnyCard:Q}=(0,O.useMemo)(()=>C({issueData:H,issueRepos:B,pendingLinks:q,query:d,repoFilter:V}),[H,B,q,d,V]);(0,O.useEffect)(()=>{S&&(Y.some(e=>e.repo===S.repo&&e.issue.id===S.id)||w(null))},[Y,S]),(0,O.useEffect)(()=>{let e=e=>{if(S||T||A||e.metaKey||e.ctrlKey||e.altKey)return;let t=e.target,n=!!t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.tagName===`SELECT`||t.isContentEditable);e.key===`/`&&!n?(e.preventDefault(),x.current?.focus()):e.key===`Escape`&&t===x.current&&d&&(e.preventDefault(),N(``))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[d,S,T,A]),(0,O.useEffect)(()=>{f!==V&&P(V)},[V,f]);let le=!!d,$=e=>{t(e),ee(e),p({to:`/task/$taskId`,params:{taskId:e}})};return(0,F.jsxs)(`div`,{className:`flex h-screen flex-col overflow-hidden bg-bg text-fg`,children:[(0,F.jsxs)(`header`,{"data-kobe-topbar":!0,className:`flex h-10 shrink-0 items-center gap-3 border-b border-line bg-surface px-3`,children:[(0,F.jsx)(b,{}),(0,F.jsxs)(`span`,{className:`font-mono text-[13px] font-bold text-primary`,children:[`[`,r,`]`]}),(0,F.jsx)(l,{}),(0,F.jsxs)(`label`,{className:`flex h-7 items-center gap-1.5 border border-line bg-bg px-2 text-muted focus-within:border-line-active`,children:[(0,F.jsx)(v,{size:13,strokeWidth:1.8,className:`shrink-0 text-subtle`}),(0,F.jsx)(`input`,{ref:x,value:d,onChange:e=>N(e.target.value),placeholder:`Filter stories ( / )`,className:`w-44 bg-transparent text-[12px] text-fg placeholder:text-subtle focus:outline-none`}),d&&(0,F.jsx)(`button`,{type:`button`,onClick:()=>N(``),className:`shrink-0 text-subtle hover:text-fg`,"aria-label":`clear filter`,title:`Clear filter`,children:(0,F.jsx)(y,{size:13,strokeWidth:2})})]}),z.length>0&&(0,F.jsxs)(`label`,{className:`flex h-7 min-w-0 max-w-[24rem] items-center gap-1.5 border border-line bg-bg px-2 text-muted focus-within:border-line-active`,children:[(0,F.jsx)(`span`,{className:`shrink-0 text-[10px] font-bold uppercase tracking-[0.12em] text-subtle`,children:`Project`}),(0,F.jsx)(`select`,{value:V??``,onChange:e=>P(e.target.value),title:V??`Select project`,className:`min-w-0 flex-1 bg-transparent font-mono text-[11px] text-fg focus:outline-none`,children:z.map(e=>{let t=ce.find(t=>t.repo===e.repo)?.count??0;return(0,F.jsxs)(`option`,{value:e.repo,title:e.repo,className:`bg-surface text-fg`,children:[e.label,` · `,t,` · `,e.repo]},e.repo)})})]}),(0,F.jsx)(`div`,{className:`ml-auto flex items-center gap-3 font-mono text-[11px] text-subtle`,children:(0,F.jsxs)(`span`,{children:[Z,` stor`,Z===1?`y`:`ies`]})})]}),(0,F.jsx)(c,{}),(0,F.jsx)(`div`,{className:`min-h-0 flex-1 overflow-x-auto overflow-y-hidden p-4`,children:!n||U&&!Q?(0,F.jsx)(`p`,{className:`text-[12px] text-subtle`,children:`Loading…`}):Z===0&&le&&Q?(0,F.jsxs)(`div`,{className:`text-[12px] leading-relaxed text-subtle`,children:[(0,F.jsx)(`p`,{children:`No stories match.`}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>{N(``)},className:`mt-3 border border-line bg-surface px-2 py-1 text-[11px] text-muted hover:border-primary hover:text-fg`,children:`Clear filters`})]}):Z===0&&!i?(0,F.jsx)(`p`,{className:`text-[12px] text-subtle`,children:`Can't reach the daemon — issue list may be incomplete.`}):X[0]?(0,F.jsx)(L,{board:X[0],onNewIssue:k,onPeekIssue:e=>w({repo:X[0].repo,id:e.id}),onOpenTask:$,onDeleteIssue:(e,t)=>j({repo:e,issue:t})}):(0,F.jsxs)(`div`,{className:`text-[12px] leading-relaxed text-subtle`,children:[(0,F.jsx)(`p`,{children:`No projects yet. Create a task from the workspace to track stories against its repo.`}),(0,F.jsx)(`div`,{className:`mt-3 flex items-center gap-2`,children:(0,F.jsx)(`button`,{type:`button`,onClick:()=>p({to:`/`}),className:`border border-line bg-surface px-2 py-1 text-[11px] text-muted hover:border-primary hover:text-fg`,children:`Back to workspace`})})]})}),(()=>{let e=V??X[0]?.repo??B[0];return e?(0,F.jsx)(`button`,{type:`button`,onClick:()=>k(e),title:`New story`,"aria-label":`New story`,className:`fixed bottom-6 right-6 z-20 flex h-12 w-12 items-center justify-center rounded-full border border-primary bg-primary text-bg shadow-lg transition-transform hover:scale-105`,children:(0,F.jsx)(_,{size:22,strokeWidth:2.2})}):null})(),T&&(0,F.jsx)(g,{children:(0,F.jsx)(m,{repoRoot:T,open:!0,onClose:()=>k(null),onCreated:(e,t)=>{T&&W([T]),o(`success`,t?`Story #${e.id} created — starting its session`:`Story #${e.id} created`)}})}),(()=>{if(!S)return null;let e=Y.find(e=>e.repo===S.repo&&e.issue.id===S.id);return e?(0,F.jsx)(g,{children:(0,F.jsx)(h,{issue:e.issue,repoRoot:e.repo,busy:G,starting:K===e.issue.id,onClose:()=>w(null),onSave:t=>J(e.repo,e.issue.id,t),onStart:async({vendor:t,effort:n,placement:r,watch:i})=>{let a=await se(e.repo,e.issue,t,n,r);i&&a?(w(null),$(a)):w(null)},onOpenSession:e.issue.taskId?()=>{let t=e.issue.taskId;w(null),t&&$(t)}:void 0,onPromptMerge:e.issue.taskId?()=>{let t=e.issue.taskId;t&&re(t,e.issue).then(()=>o(`success`,`Prompt inserted for story #${e.issue.id}`)).catch(e=>s(`prompt issue merge`,e))}:void 0},`${e.repo}:${e.issue.id}`)}):null})(),A&&(0,F.jsx)(ne,{title:`Delete issue`,body:`Delete issue #${A.issue.id}: "${A.issue.title}"? This removes it from the daemon issue tracker only; it does not delete any task, branch, worktree, or engine session.`,confirmLabel:`Delete`,danger:!0,busy:G,onConfirm:()=>void oe(A.repo,A.issue).then(e=>{e&&(j(null),S?.repo===A.repo&&S.id===A.issue.id&&w(null))}),onCancel:()=>j(null)})]})}export{R as Board};
1
+ import{u as e}from"./terminal-6BCvBu4_.js";import{f as t,y as n}from"./tabs-DHBP2ShA.js";import{d as r,m as i}from"./createLucideIcon-C6nfansM.js";import{a,n as o,r as s}from"./toast-2mA6GzBq.js";import{n as c,t as l}from"./ViewToggle-Bvvh1yLG.js";import{n as u}from"./store-BK5yanfN.js";import{n as ee}from"./active-task-CCVuYWP9.js";import{t as d}from"./external-store-CNyRxjsC.js";import{t as f}from"./external-link-Cj-9rta8.js";import{a as te,i as p,n as m,r as h,t as g}from"./lazy-issue-panels-GvnRdSfG.js";import{t as _}from"./plus-Bz25iNHX.js";import{t as v}from"./search-zs6lDYfz.js";import{t as y}from"./x-MtSojW5V.js";import{n as b,t as ne}from"./ConfirmDialog-CBqd0wMR.js";import{_ as x,a as S,d as re,g as C,h as w,m as T,p as ie,s as E,u as D}from"./issues-BjnSNgu-.js";var O=e(n(),1),k={query:``,repo:null};function A(e){j.update(t=>({...t,...e}))}var j=d(k);function M(){return j.useSnapshot()}function N(e){e!==j.getSnapshot().query&&A({query:e})}function P(e){e!==j.getSnapshot().repo&&A({repo:e})}function ae(e){let{issueRepos:t,issueData:n,refreshIssues:r}=e,[i,a]=(0,O.useState)(!1),[o,c]=(0,O.useState)(null),[l,u]=(0,O.useState)(new Map);return(0,O.useEffect)(()=>{u(e=>{if(e.size===0)return e;let r=new Map(e),i=!1;for(let e of t){let t=n[e];if(!(!t||!t.exists))for(let n of t.issues)n.taskId&&r.delete(`${e}:${n.id}`)&&(i=!0)}return i?r:e})},[t,n]),{issueBusy:i,quickStartingId:o,pendingLinks:l,saveIssue:async(e,t,n)=>{a(!0);try{return await w(e,t,n),r([e]),!0}catch(e){return s(`update issue`,e),!1}finally{a(!1)}},deleteIssueConfirmed:async(e,t)=>{a(!0);try{return await S(e,t.id),r([e]),!0}catch(e){return s(`delete issue`,e),!1}finally{a(!1)}},quickStart:async(e,t,n,r,i)=>{if(o===null){c(t.id);try{let{taskId:a,workspaceTaskId:o}=await T(e,t,{vendor:n,effort:r,placement:i});return i!==`project`&&u(n=>{let r=new Map(n);return r.set(`${e}:${t.id}`,{repo:e,issueId:t.id,taskId:a}),r}),o}catch(e){s(`quick start issue`,e);return}finally{c(null)}}}}}var F=i();function I({repo:e,column:t,onNewIssue:n,onPeekIssue:r,onOpenTask:i,onDeleteIssue:a}){return(0,F.jsxs)(`section`,{"data-column":`${e}:${t.key}`,className:`flex h-full shrink-0 flex-col border border-transparent ${t.key===`backlog`?`w-96`:`w-72`}`,children:[(0,F.jsxs)(`div`,{className:`mb-2 flex items-baseline gap-2`,children:[(0,F.jsx)(`h2`,{className:`text-[11px] font-bold uppercase tracking-[0.12em] ${t.accent}`,children:t.title}),(0,F.jsx)(`span`,{className:`font-mono text-[10px] text-subtle`,children:t.cards.length+t.hiddenCount}),n&&(0,F.jsxs)(`button`,{type:`button`,onClick:n,className:`ml-auto flex items-center gap-0.5 text-[10px] text-subtle transition-colors hover:text-fg`,title:`New story in this project`,children:[(0,F.jsx)(_,{size:11,strokeWidth:2}),(0,F.jsx)(`span`,{children:`New story`})]})]}),(0,F.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto pb-2`,children:[t.cards.length===0?(0,F.jsx)(`div`,{className:`border border-dashed border-line-subtle p-3 text-center text-[11px] text-subtle`,children:`none`}):t.cards.map(e=>{let{issue:t}=e,n=x(t)?t.taskId:void 0;return(0,F.jsxs)(`div`,{className:`group/wrap relative`,children:[(0,F.jsx)(p,{issue:t,onOpen:()=>r(t),onDelete:()=>a(t)}),n&&(0,F.jsxs)(`button`,{type:`button`,onClick:()=>i(n),"aria-label":`Open task for issue #${t.id}`,title:`Started — open task`,className:`absolute bottom-2 right-2 flex items-center gap-1 border border-line bg-surface px-1.5 py-0.5 text-[10px] text-subtle opacity-0 transition-opacity hover:border-primary hover:text-fg focus-visible:opacity-100 group-hover/wrap:opacity-100`,children:[(0,F.jsx)(f,{size:10,strokeWidth:1.8}),(0,F.jsx)(`span`,{children:`open task`})]})]},`issue:${t.id}`)}),t.hiddenCount>0&&(0,F.jsxs)(`div`,{className:`p-2 text-center text-[10px] text-subtle`,children:[`+`,t.hiddenCount,` more — finish stories to thin this column`]})]})]})}function L({board:e,onNewIssue:t,onPeekIssue:n,onOpenTask:r,onDeleteIssue:i}){return(0,F.jsx)(`div`,{className:`flex h-full min-w-max gap-4`,children:e.columns.map(a=>(0,F.jsx)(I,{repo:e.repo,column:a,onNewIssue:a.key===`backlog`?()=>t(e.repo):void 0,onPeekIssue:n,onOpenTask:r,onDeleteIssue:t=>i(e.repo,t)},a.key))})}function R(){let{tasks:e,hydrated:n,daemonConnected:i}=u(),{query:d,repo:f}=M(),p=a(),x=(0,O.useRef)(null),[S,w]=(0,O.useState)(null),[T,k]=(0,O.useState)(null),[A,j]=(0,O.useState)(null),[I,R]=(0,O.useState)([]);(0,O.useEffect)(()=>{let e=!1;return E().then(t=>{e||R(t)}).catch(e=>s(`load projects`,e)),()=>{e=!0}},[]);let z=(0,O.useMemo)(()=>D(e,I),[e,I]),B=(0,O.useMemo)(()=>z.map(e=>e.repo),[z]),V=(0,O.useMemo)(()=>ie(z,f),[z,f]),{data:H,pending:U,refresh:W}=te(B),{issueBusy:G,quickStartingId:K,pendingLinks:q,saveIssue:J,deleteIssueConfirmed:oe,quickStart:se}=ae({issueRepos:B,issueData:H,refreshIssues:W}),{allIssues:Y,repoChips:ce,projectBoards:X,shownCount:Z,hasAnyCard:Q}=(0,O.useMemo)(()=>C({issueData:H,issueRepos:B,pendingLinks:q,query:d,repoFilter:V}),[H,B,q,d,V]);(0,O.useEffect)(()=>{S&&(Y.some(e=>e.repo===S.repo&&e.issue.id===S.id)||w(null))},[Y,S]),(0,O.useEffect)(()=>{let e=e=>{if(S||T||A||e.metaKey||e.ctrlKey||e.altKey)return;let t=e.target,n=!!t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.tagName===`SELECT`||t.isContentEditable);e.key===`/`&&!n?(e.preventDefault(),x.current?.focus()):e.key===`Escape`&&t===x.current&&d&&(e.preventDefault(),N(``))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[d,S,T,A]),(0,O.useEffect)(()=>{f!==V&&P(V)},[V,f]);let le=!!d,$=e=>{t(e),ee(e),p({to:`/task/$taskId`,params:{taskId:e}})};return(0,F.jsxs)(`div`,{className:`flex h-screen flex-col overflow-hidden bg-bg text-fg`,children:[(0,F.jsxs)(`header`,{"data-kobe-topbar":!0,className:`flex h-10 shrink-0 items-center gap-3 border-b border-line bg-surface px-3`,children:[(0,F.jsx)(b,{}),(0,F.jsxs)(`span`,{className:`font-mono text-[13px] font-bold text-primary`,children:[`[`,r,`]`]}),(0,F.jsx)(l,{}),(0,F.jsxs)(`label`,{className:`flex h-7 items-center gap-1.5 border border-line bg-bg px-2 text-muted focus-within:border-line-active`,children:[(0,F.jsx)(v,{size:13,strokeWidth:1.8,className:`shrink-0 text-subtle`}),(0,F.jsx)(`input`,{ref:x,value:d,onChange:e=>N(e.target.value),placeholder:`Filter stories ( / )`,className:`w-44 bg-transparent text-[12px] text-fg placeholder:text-subtle focus:outline-none`}),d&&(0,F.jsx)(`button`,{type:`button`,onClick:()=>N(``),className:`shrink-0 text-subtle hover:text-fg`,"aria-label":`clear filter`,title:`Clear filter`,children:(0,F.jsx)(y,{size:13,strokeWidth:2})})]}),z.length>0&&(0,F.jsxs)(`label`,{className:`flex h-7 min-w-0 max-w-[24rem] items-center gap-1.5 border border-line bg-bg px-2 text-muted focus-within:border-line-active`,children:[(0,F.jsx)(`span`,{className:`shrink-0 text-[10px] font-bold uppercase tracking-[0.12em] text-subtle`,children:`Project`}),(0,F.jsx)(`select`,{value:V??``,onChange:e=>P(e.target.value),title:V??`Select project`,className:`min-w-0 flex-1 bg-transparent font-mono text-[11px] text-fg focus:outline-none`,children:z.map(e=>{let t=ce.find(t=>t.repo===e.repo)?.count??0;return(0,F.jsxs)(`option`,{value:e.repo,title:e.repo,className:`bg-surface text-fg`,children:[e.label,` · `,t,` · `,e.repo]},e.repo)})})]}),(0,F.jsx)(`div`,{className:`ml-auto flex items-center gap-3 font-mono text-[11px] text-subtle`,children:(0,F.jsxs)(`span`,{children:[Z,` stor`,Z===1?`y`:`ies`]})})]}),(0,F.jsx)(c,{}),(0,F.jsx)(`div`,{className:`min-h-0 flex-1 overflow-x-auto overflow-y-hidden p-4`,children:!n||U&&!Q?(0,F.jsx)(`p`,{className:`text-[12px] text-subtle`,children:`Loading…`}):Z===0&&le&&Q?(0,F.jsxs)(`div`,{className:`text-[12px] leading-relaxed text-subtle`,children:[(0,F.jsx)(`p`,{children:`No stories match.`}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>{N(``)},className:`mt-3 border border-line bg-surface px-2 py-1 text-[11px] text-muted hover:border-primary hover:text-fg`,children:`Clear filters`})]}):Z===0&&!i?(0,F.jsx)(`p`,{className:`text-[12px] text-subtle`,children:`Can't reach the daemon — issue list may be incomplete.`}):X[0]?(0,F.jsx)(L,{board:X[0],onNewIssue:k,onPeekIssue:e=>w({repo:X[0].repo,id:e.id}),onOpenTask:$,onDeleteIssue:(e,t)=>j({repo:e,issue:t})}):(0,F.jsxs)(`div`,{className:`text-[12px] leading-relaxed text-subtle`,children:[(0,F.jsx)(`p`,{children:`No projects yet. Create a task from the workspace to track stories against its repo.`}),(0,F.jsx)(`div`,{className:`mt-3 flex items-center gap-2`,children:(0,F.jsx)(`button`,{type:`button`,onClick:()=>p({to:`/`}),className:`border border-line bg-surface px-2 py-1 text-[11px] text-muted hover:border-primary hover:text-fg`,children:`Back to workspace`})})]})}),(()=>{let e=V??X[0]?.repo??B[0];return e?(0,F.jsx)(`button`,{type:`button`,onClick:()=>k(e),title:`New story`,"aria-label":`New story`,className:`fixed bottom-6 right-6 z-20 flex h-12 w-12 items-center justify-center rounded-full border border-primary bg-primary text-bg shadow-lg transition-transform hover:scale-105`,children:(0,F.jsx)(_,{size:22,strokeWidth:2.2})}):null})(),T&&(0,F.jsx)(g,{children:(0,F.jsx)(m,{repoRoot:T,open:!0,onClose:()=>k(null),onCreated:(e,t)=>{T&&W([T]),o(`success`,t?`Story #${e.id} created — starting its session`:`Story #${e.id} created`)}})}),(()=>{if(!S)return null;let e=Y.find(e=>e.repo===S.repo&&e.issue.id===S.id);return e?(0,F.jsx)(g,{children:(0,F.jsx)(h,{issue:e.issue,repoRoot:e.repo,busy:G,starting:K===e.issue.id,onClose:()=>w(null),onSave:t=>J(e.repo,e.issue.id,t),onStart:async({vendor:t,effort:n,placement:r,watch:i})=>{let a=await se(e.repo,e.issue,t,n,r);i&&a?(w(null),$(a)):w(null)},onOpenSession:e.issue.taskId?()=>{let t=e.issue.taskId;w(null),t&&$(t)}:void 0,onPromptMerge:e.issue.taskId?()=>{let t=e.issue.taskId;t&&re(t,e.issue).then(()=>o(`success`,`Prompt inserted for story #${e.issue.id}`)).catch(e=>s(`prompt issue merge`,e))}:void 0},`${e.repo}:${e.issue.id}`)}):null})(),A&&(0,F.jsx)(ne,{title:`Delete issue`,body:`Delete issue #${A.issue.id}: "${A.issue.title}"? This removes it from the daemon issue tracker only; it does not delete any task, branch, worktree, or engine session.`,confirmLabel:`Delete`,danger:!0,busy:G,onConfirm:()=>void oe(A.repo,A.issue).then(e=>{e&&(j(null),S?.repo===A.repo&&S.id===A.issue.id&&w(null))}),onCancel:()=>j(null)})]})}export{R as Board};
@@ -1 +1 @@
1
- import{u as e}from"./terminal-6BCvBu4_.js";import{y as t}from"./tabs-DHBP2ShA.js";import{m as n}from"./createLucideIcon-C6nfansM.js";import{r,t as i}from"./desktop-BerzaX7n.js";import{t as a}from"./use-focus-trap-oPsw86zw.js";var o=n();function s({label:e,tone:t,onClick:n}){return(0,o.jsx)(`button`,{type:`button`,"aria-label":e,title:e,onClick:n,className:`h-3 w-3 rounded-full border border-black/20 ${t===`close`?`bg-[#ff5f57]`:t===`minimize`?`bg-[#febc2e]`:`bg-[#28c840]`}`})}function c(){if(!r())return null;let e=i();return(0,o.jsxs)(`fieldset`,{"data-kobe-window-controls":!0,className:`m-0 flex min-w-0 shrink-0 items-center gap-2 border-0 p-0`,children:[(0,o.jsx)(`legend`,{className:`sr-only`,children:`Window controls`}),(0,o.jsx)(s,{label:`Close window`,tone:`close`,onClick:()=>e?.close()}),(0,o.jsx)(s,{label:`Minimize window`,tone:`minimize`,onClick:()=>e?.minimize()}),(0,o.jsx)(s,{label:`Zoom window`,tone:`zoom`,onClick:()=>e?.toggleMaximize()})]})}var l=e(t(),1);function u({title:e,body:t,confirmLabel:n,danger:r=!1,busy:i=!1,onConfirm:s,onCancel:c}){let u=(0,l.useRef)(null),d=(0,l.useRef)(null);return a(d),(0,l.useEffect)(()=>{u.current?.focus();let e=e=>{e.key===`Escape`&&c()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[c]),(0,o.jsx)(`div`,{className:`fixed inset-0 z-40 flex items-center justify-center bg-black/60`,onClick:c,onKeyDown:()=>{},role:`presentation`,children:(0,o.jsxs)(`div`,{ref:d,role:`alertdialog`,"aria-modal":`true`,"aria-label":e,className:`w-96 border border-line bg-surface shadow-xl`,onClick:e=>e.stopPropagation(),onKeyDown:()=>{},children:[(0,o.jsx)(`div`,{className:`border-b border-line px-3 py-2 text-[10px] font-bold uppercase tracking-[0.12em] text-fg`,children:e}),(0,o.jsx)(`p`,{className:`px-3 py-3 text-[12px] leading-relaxed text-muted`,children:t}),(0,o.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-line px-3 py-2`,children:[(0,o.jsx)(`button`,{type:`button`,onClick:c,className:`border border-line bg-bg px-3 py-1 text-[11px] text-muted transition-colors hover:border-primary hover:text-fg`,children:`Cancel`}),(0,o.jsx)(`button`,{ref:u,type:`button`,onClick:s,disabled:i,className:`border px-3 py-1 text-[11px] transition-colors disabled:opacity-40 ${r?`border-kobe-red/50 bg-kobe-red/10 text-kobe-red hover:bg-kobe-red/20`:`border-primary bg-inset text-fg hover:bg-primary/10`}`,children:i?`Working…`:n})]})]})})}export{c as n,u as t};
1
+ import{u as e}from"./terminal-6BCvBu4_.js";import{y as t}from"./tabs-DHBP2ShA.js";import{m as n}from"./createLucideIcon-C6nfansM.js";import{r,t as i}from"./desktop-CB2NHSKZ.js";import{t as a}from"./use-focus-trap-oPsw86zw.js";var o=n();function s({label:e,tone:t,onClick:n}){return(0,o.jsx)(`button`,{type:`button`,"aria-label":e,title:e,onClick:n,className:`h-3 w-3 rounded-full border border-black/20 ${t===`close`?`bg-[#ff5f57]`:t===`minimize`?`bg-[#febc2e]`:`bg-[#28c840]`}`})}function c(){if(!r())return null;let e=i();return(0,o.jsxs)(`fieldset`,{"data-kobe-window-controls":!0,className:`m-0 flex min-w-0 shrink-0 items-center gap-2 border-0 p-0`,children:[(0,o.jsx)(`legend`,{className:`sr-only`,children:`Window controls`}),(0,o.jsx)(s,{label:`Close window`,tone:`close`,onClick:()=>e?.close()}),(0,o.jsx)(s,{label:`Minimize window`,tone:`minimize`,onClick:()=>e?.minimize()}),(0,o.jsx)(s,{label:`Zoom window`,tone:`zoom`,onClick:()=>e?.toggleMaximize()})]})}var l=e(t(),1);function u({title:e,body:t,confirmLabel:n,danger:r=!1,busy:i=!1,onConfirm:s,onCancel:c}){let u=(0,l.useRef)(null),d=(0,l.useRef)(null);return a(d),(0,l.useEffect)(()=>{u.current?.focus();let e=e=>{e.key===`Escape`&&c()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[c]),(0,o.jsx)(`div`,{className:`fixed inset-0 z-40 flex items-center justify-center bg-black/60`,onClick:c,onKeyDown:()=>{},role:`presentation`,children:(0,o.jsxs)(`div`,{ref:d,role:`alertdialog`,"aria-modal":`true`,"aria-label":e,className:`w-96 border border-line bg-surface shadow-xl`,onClick:e=>e.stopPropagation(),onKeyDown:()=>{},children:[(0,o.jsx)(`div`,{className:`border-b border-line px-3 py-2 text-[10px] font-bold uppercase tracking-[0.12em] text-fg`,children:e}),(0,o.jsx)(`p`,{className:`px-3 py-3 text-[12px] leading-relaxed text-muted`,children:t}),(0,o.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-line px-3 py-2`,children:[(0,o.jsx)(`button`,{type:`button`,onClick:c,className:`border border-line bg-bg px-3 py-1 text-[11px] text-muted transition-colors hover:border-primary hover:text-fg`,children:`Cancel`}),(0,o.jsx)(`button`,{ref:u,type:`button`,onClick:s,disabled:i,className:`border px-3 py-1 text-[11px] transition-colors disabled:opacity-40 ${r?`border-kobe-red/50 bg-kobe-red/10 text-kobe-red hover:bg-kobe-red/20`:`border-primary bg-inset text-fg hover:bg-primary/10`}`,children:i?`Working…`:n})]})]})})}export{c as n,u as t};