@sma1lboy/kobe 0.8.147 → 0.8.148

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli/index.js CHANGED
@@ -303,7 +303,7 @@ ${G}
303
303
  `)}let z=tY0();for(let G of wT()){if(X&&G.vendor==="claude")continue;let W=G.globalSettingsPath();if(!W)continue;await G.installActivityHooks(W,{toolEvents:z}),await G.installWorktreeWatchHook(W)}await zh()}catch{}}function tY0(){try{for(let $ of o4().plugins){if(!$.enabled)continue;try{if(Q6($.root).manifest.events.some((Z)=>Z.on.startsWith("tool.")))return!0}catch{}}}catch{}return!1}async function zh(){let $=rY0();if($.length===0)return;let Z=x5(tm),J=new Set([Qh()]),X=sY0(Z);if(X)J.add(X);for(let z of $)for(let G of J)await z.removeWorktreeSyncHook(G);if(Z!=="off")X6(tm,"off")}async function eY0(){let $=wT().find((J)=>J.vendor==="claude"),Z=$?.globalSettingsPath();if(!$||!Z){process.stdout.write(`rove hook cleanup: no Claude hook adapter \u2014 nothing to do.
304
304
  `);return}await $.removeActivityHooks(Z),await $.removeWorktreeWatchHook(Z),process.stdout.write([`rove hook cleanup: removed Rove's settings-managed hooks from ${Z}.`,"Only Rove's own entries were touched; your other hooks are intact.","The Claude Code plugin's hooks.json now carries these events (if the plugin","is not installed, the next Rove launch reinstalls the settings-managed set).",""].join(`
305
305
  `))}async function $G0($){await zh(),process.stdout.write(["rove hook setup is deprecated and now a no-op (cleanup only).","","The old external-worktree sync used a global WorktreeCreate hook, which is","a VCS provider hook \u2014 its presence broke `claude --worktree` / EnterWorktree","in every repo. Any hook Rove previously installed has been removed.","","Sync is now automatic: a `claude --worktree` (or any session) started in a","worktree under a repo Rove already tracks is adopted as a task on launch.","To adopt existing worktrees on demand, use the New Task dialog or `rove adopt`.",""].join(`
306
- `))}var lY0=500,pY0="worktree-created",tm="externalWorktreeSync";var fT=d(()=>{I2();mJ();NZ();ST();ET();C4();P7();u4()});var Pj;var Gh=d(()=>{Pj={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/rove",version:"0.8.147",description:"Rove \u2014 the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/kobe.js",rove:"dist/cli/rove.js"},files:["dist/cli","dist/web-ui","dist/skills","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/rove.git"},homepage:"https://github.com/Sma1lboy/rove#readme",bugs:{url:"https://github.com/Sma1lboy/rove/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"ROVE_DEV=1 bun --conditions=browser ./src/cli/rove.ts","dev:kobe":"KOBE_DEV=1 bun --conditions=browser ./src/cli/kobe.ts","dev:mock":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:mock-react":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:mock-react-task-dialogs":"KOBE_DEV=1 bun ./src/tui-react/component/mock-dialogs-host.tsx","dev:mock-react-filetree":"KOBE_DEV=1 bun ./src/tui-react/panes/filetree/mock-host.tsx","dev:mock-react-sidebar":"KOBE_DEV=1 bun ./src/tui-react/panes/sidebar/mock-host.tsx","dev:mock-react-terminal":"KOBE_DEV=1 bun ./src/tui-react/panes/terminal/mock-host.tsx","dev:mock-react-dialogs":"KOBE_DEV=1 bun ./src/tui-react/mock/dialogs-host.tsx","dev:mock-react-workspace":"KOBE_DEV=1 bun ./src/tui-react/workspace/mock-host.tsx","dev:sandbox":"bun run scripts/dev-sandbox.ts run","dev:sandbox:reset":"bun run scripts/dev-sandbox.ts reset",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","perf:golden":"bun scripts/perf-golden.ts","pty:soak":"bun scripts/pty-soak.ts","test:fast":"vitest run --passWithNoTests --minWorkers=1 --maxWorkers=8","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:socket:coverage":"KOBE_INCLUDE_SOCKET=1 KOBE_COVERAGE_DAEMON=1 vitest run test/daemon --coverage --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --pool forks --minWorkers=1 --maxWorkers=1 --retry=2 --passWithNoTests","test:render":"bun test test/render --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage-render",coverage:"vitest run --coverage --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.4.3","@opentui/react":"0.4.3","@xterm/addon-serialize":"^0.14.0","@xterm/addon-unicode11":"^0.9.0","@xterm/headless":"^6.0.0","node-pty":"^1.1.0",react:"^19.2.8",ws:"^8.18.0"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.14","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2","@types/react":"^19.2.0","@vitest/coverage-v8":"2.1.9",knip:"^6.14.2","kobe-web":"workspace:*","react-devtools-core":"^7.0.1",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});var Hh={};A$(Hh,{repoSlug:()=>gY,releasePageUrl:()=>mT,recommendedGlobalInstallCommand:()=>bT,isNewerSemver:()=>yT,fetchReleaseSummaries:()=>WF,fetchReleaseNotesRange:()=>kT,fetchReleaseNotes:()=>vT,compareSemver:()=>V3,checkLatestVersion:()=>bY,breakingVersionsCrossed:()=>GF,UPDATE_SCRIPT_URL:()=>Rj,UPDATE_COMMAND:()=>VZ,PACKAGE_NAME:()=>gT,CURRENT_VERSION:()=>R$,BREAKING_VERSIONS:()=>lJ});function gY(){let $=Pj.repository?.url;if(!$)return null;let Z=$.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!Z||!Z[1]||!Z[2])return null;return`${Z[1]}/${Z[2]}`}function bT(){return`npm install -g ${gT}@latest`}function GF($,Z,J=lJ){let[X,z]=V3($,Z)<=0?[$,Z]:[Z,$];return J.filter((G)=>V3(G,X)>0&&V3(G,z)<=0)}async function JG0($){let Z=new AbortController,J=setTimeout(()=>Z.abort(),Tj);try{let X=$.replace("/","%2F"),z=await fetch(`https://registry.npmjs.org/${X}/latest`,{signal:Z.signal,headers:{accept:"application/json"}});if(!z.ok)return null;let G=await z.json();if(typeof G.version!=="string")return null;return G.version}catch{return null}finally{clearTimeout(J)}}function yT($,Z){return V3($,Z)>0}function V3($,Z){let J=(G)=>G.split("-")[0]??G,X=J($).split(".").map((G)=>Number.parseInt(G,10)),z=J(Z).split(".").map((G)=>Number.parseInt(G,10));for(let G=0;G<3;G++){let W=X[G]??0,H=z[G]??0;if(Number.isNaN(W)||Number.isNaN(H))return 0;if(W>H)return 1;if(W<H)return-1}return 0}async function bY($={}){let Z=process.env.KOBE_FAKE_UPDATE;if(Z)return{current:R$,latest:Z,hasUpdate:yT(Z,R$)};if(TH()&&!$.force)return null;let J=await JG0(gT);if(!J)return null;return{current:R$,latest:J,hasUpdate:yT(J,R$)}}function Wh($){if(typeof $!=="string")return null;return $.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function vT($){let Z=gY();if(!Z)return null;let J=`v${$}`,X=new AbortController,z=setTimeout(()=>X.abort(),Tj);try{let G=await fetch(`https://api.github.com/repos/${Z}/releases/tags/${J}`,{signal:X.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return null;let W=await G.json();if(typeof W.body!=="string"||typeof W.html_url!=="string")return null;return{body:W.body,url:W.html_url,version:$}}catch{return null}finally{clearTimeout(z)}}async function kT($){let Z=gY();if(!Z)return[];let J=$.limit??100,X=new AbortController,z=setTimeout(()=>X.abort(),Tj);try{let G=await fetch(`https://api.github.com/repos/${Z}/releases?per_page=${J}`,{signal:X.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return[];let W=await G.json();if(!Array.isArray(W))return[];return W.map((H)=>{let U=Wh(H.tag_name);if(!U||typeof H.html_url!=="string"||typeof H.body!=="string")return null;if(V3(U,$.current)<=0)return null;if(V3(U,$.latest)>0)return null;return{version:U,url:H.html_url,body:H.body}}).filter((H)=>H!==null)}catch{return[]}finally{clearTimeout(z)}}async function WF($=12){let Z=gY();if(!Z)return[];let J=new AbortController,X=setTimeout(()=>J.abort(),Tj);try{let z=await fetch(`https://api.github.com/repos/${Z}/releases?per_page=${$}`,{signal:J.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!z.ok)return[];let G=await z.json();if(!Array.isArray(G))return[];return G.map((W)=>{let H=Wh(W.tag_name);if(!H||typeof W.html_url!=="string")return null;return{version:H,url:W.html_url}}).filter((W)=>W!==null)}catch{return[]}finally{clearTimeout(X)}}function mT($){let Z=gY();if(!Z)return null;return`https://github.com/${Z}/releases/tag/v${$}`}var R$,gT,Rj="https://raw.githubusercontent.com/Sma1lboy/rove/main/scripts/update.sh",VZ,lJ,Tj=3000;var d8=d(()=>{Gh();V5();R$=Pj.version,gT=Pj.name;VZ=`curl -fsSL ${Rj} | sh`;lJ=[]});var Uh={};A$(Uh,{stampResetGate:()=>Sj,resetGateBlockers:()=>qh,enforceResetGate:()=>uT,LAST_RUN_VERSION_KEY:()=>hT});function qh($,Z=R$,J=lJ){if(typeof $!=="string"||$.length===0)return[];let[X,z]=V3($,Z)<=0?[$,Z]:[Z,$];return J.filter((G)=>V3(G,X)>0&&V3(G,z)<=0)}function uT(){let $=$$(),Z=L4()[hT],J=qh(Z);if(J.length>0){let X=typeof Z==="string"?Z:"unknown";console.error([`${$} ${R$}: cannot start \u2014 version ${J.join(", ")} introduced breaking changes`,`(last run: ${X}). Your daemon/session state may be incompatible.`,"","Run:",` ${$} reset # stop daemon + PTY host + sessions (tasks kept)`,` ${$} reset --hard # additionally wipe the task index + UI state`,"","Then relaunch Rove. Worktrees are never touched."].join(`
306
+ `))}var lY0=500,pY0="worktree-created",tm="externalWorktreeSync";var fT=d(()=>{I2();mJ();NZ();ST();ET();C4();P7();u4()});var Pj;var Gh=d(()=>{Pj={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/rove",version:"0.8.148",description:"Rove \u2014 the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/kobe.js",rove:"dist/cli/rove.js"},files:["dist/cli","dist/web-ui","dist/skills","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/rove.git"},homepage:"https://github.com/Sma1lboy/rove#readme",bugs:{url:"https://github.com/Sma1lboy/rove/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"ROVE_DEV=1 bun --conditions=browser ./src/cli/rove.ts","dev:kobe":"KOBE_DEV=1 bun --conditions=browser ./src/cli/kobe.ts","dev:mock":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:mock-react":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:mock-react-task-dialogs":"KOBE_DEV=1 bun ./src/tui-react/component/mock-dialogs-host.tsx","dev:mock-react-filetree":"KOBE_DEV=1 bun ./src/tui-react/panes/filetree/mock-host.tsx","dev:mock-react-sidebar":"KOBE_DEV=1 bun ./src/tui-react/panes/sidebar/mock-host.tsx","dev:mock-react-terminal":"KOBE_DEV=1 bun ./src/tui-react/panes/terminal/mock-host.tsx","dev:mock-react-dialogs":"KOBE_DEV=1 bun ./src/tui-react/mock/dialogs-host.tsx","dev:mock-react-workspace":"KOBE_DEV=1 bun ./src/tui-react/workspace/mock-host.tsx","dev:sandbox":"bun run scripts/dev-sandbox.ts run","dev:sandbox:reset":"bun run scripts/dev-sandbox.ts reset",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","perf:golden":"bun scripts/perf-golden.ts","pty:soak":"bun scripts/pty-soak.ts","test:fast":"vitest run --passWithNoTests --minWorkers=1 --maxWorkers=8","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:socket:coverage":"KOBE_INCLUDE_SOCKET=1 KOBE_COVERAGE_DAEMON=1 vitest run test/daemon --coverage --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --pool forks --minWorkers=1 --maxWorkers=1 --retry=2 --passWithNoTests","test:render":"bun test test/render --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage-render",coverage:"vitest run --coverage --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.4.3","@opentui/react":"0.4.3","@xterm/addon-serialize":"^0.14.0","@xterm/addon-unicode11":"^0.9.0","@xterm/headless":"^6.0.0","node-pty":"^1.1.0",react:"^19.2.8",ws:"^8.18.0"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.14","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2","@types/react":"^19.2.0","@vitest/coverage-v8":"2.1.9",knip:"^6.14.2","kobe-web":"workspace:*","react-devtools-core":"^7.0.1",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});var Hh={};A$(Hh,{repoSlug:()=>gY,releasePageUrl:()=>mT,recommendedGlobalInstallCommand:()=>bT,isNewerSemver:()=>yT,fetchReleaseSummaries:()=>WF,fetchReleaseNotesRange:()=>kT,fetchReleaseNotes:()=>vT,compareSemver:()=>V3,checkLatestVersion:()=>bY,breakingVersionsCrossed:()=>GF,UPDATE_SCRIPT_URL:()=>Rj,UPDATE_COMMAND:()=>VZ,PACKAGE_NAME:()=>gT,CURRENT_VERSION:()=>R$,BREAKING_VERSIONS:()=>lJ});function gY(){let $=Pj.repository?.url;if(!$)return null;let Z=$.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!Z||!Z[1]||!Z[2])return null;return`${Z[1]}/${Z[2]}`}function bT(){return`npm install -g ${gT}@latest`}function GF($,Z,J=lJ){let[X,z]=V3($,Z)<=0?[$,Z]:[Z,$];return J.filter((G)=>V3(G,X)>0&&V3(G,z)<=0)}async function JG0($){let Z=new AbortController,J=setTimeout(()=>Z.abort(),Tj);try{let X=$.replace("/","%2F"),z=await fetch(`https://registry.npmjs.org/${X}/latest`,{signal:Z.signal,headers:{accept:"application/json"}});if(!z.ok)return null;let G=await z.json();if(typeof G.version!=="string")return null;return G.version}catch{return null}finally{clearTimeout(J)}}function yT($,Z){return V3($,Z)>0}function V3($,Z){let J=(G)=>G.split("-")[0]??G,X=J($).split(".").map((G)=>Number.parseInt(G,10)),z=J(Z).split(".").map((G)=>Number.parseInt(G,10));for(let G=0;G<3;G++){let W=X[G]??0,H=z[G]??0;if(Number.isNaN(W)||Number.isNaN(H))return 0;if(W>H)return 1;if(W<H)return-1}return 0}async function bY($={}){let Z=process.env.KOBE_FAKE_UPDATE;if(Z)return{current:R$,latest:Z,hasUpdate:yT(Z,R$)};if(TH()&&!$.force)return null;let J=await JG0(gT);if(!J)return null;return{current:R$,latest:J,hasUpdate:yT(J,R$)}}function Wh($){if(typeof $!=="string")return null;return $.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function vT($){let Z=gY();if(!Z)return null;let J=`v${$}`,X=new AbortController,z=setTimeout(()=>X.abort(),Tj);try{let G=await fetch(`https://api.github.com/repos/${Z}/releases/tags/${J}`,{signal:X.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return null;let W=await G.json();if(typeof W.body!=="string"||typeof W.html_url!=="string")return null;return{body:W.body,url:W.html_url,version:$}}catch{return null}finally{clearTimeout(z)}}async function kT($){let Z=gY();if(!Z)return[];let J=$.limit??100,X=new AbortController,z=setTimeout(()=>X.abort(),Tj);try{let G=await fetch(`https://api.github.com/repos/${Z}/releases?per_page=${J}`,{signal:X.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return[];let W=await G.json();if(!Array.isArray(W))return[];return W.map((H)=>{let U=Wh(H.tag_name);if(!U||typeof H.html_url!=="string"||typeof H.body!=="string")return null;if(V3(U,$.current)<=0)return null;if(V3(U,$.latest)>0)return null;return{version:U,url:H.html_url,body:H.body}}).filter((H)=>H!==null)}catch{return[]}finally{clearTimeout(z)}}async function WF($=12){let Z=gY();if(!Z)return[];let J=new AbortController,X=setTimeout(()=>J.abort(),Tj);try{let z=await fetch(`https://api.github.com/repos/${Z}/releases?per_page=${$}`,{signal:J.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!z.ok)return[];let G=await z.json();if(!Array.isArray(G))return[];return G.map((W)=>{let H=Wh(W.tag_name);if(!H||typeof W.html_url!=="string")return null;return{version:H,url:W.html_url}}).filter((W)=>W!==null)}catch{return[]}finally{clearTimeout(X)}}function mT($){let Z=gY();if(!Z)return null;return`https://github.com/${Z}/releases/tag/v${$}`}var R$,gT,Rj="https://raw.githubusercontent.com/Sma1lboy/rove/main/scripts/update.sh",VZ,lJ,Tj=3000;var d8=d(()=>{Gh();V5();R$=Pj.version,gT=Pj.name;VZ=`curl -fsSL ${Rj} | sh`;lJ=[]});var Uh={};A$(Uh,{stampResetGate:()=>Sj,resetGateBlockers:()=>qh,enforceResetGate:()=>uT,LAST_RUN_VERSION_KEY:()=>hT});function qh($,Z=R$,J=lJ){if(typeof $!=="string"||$.length===0)return[];let[X,z]=V3($,Z)<=0?[$,Z]:[Z,$];return J.filter((G)=>V3(G,X)>0&&V3(G,z)<=0)}function uT(){let $=$$(),Z=L4()[hT],J=qh(Z);if(J.length>0){let X=typeof Z==="string"?Z:"unknown";console.error([`${$} ${R$}: cannot start \u2014 version ${J.join(", ")} introduced breaking changes`,`(last run: ${X}). Your daemon/session state may be incompatible.`,"","Run:",` ${$} reset # stop daemon + PTY host + sessions (tasks kept)`,` ${$} reset --hard # additionally wipe the task index + UI state`,"","Then relaunch Rove. Worktrees are never touched."].join(`
307
307
  `)),process.exit(1)}if(Z!==R$)Sj()}function Sj(){try{E2({[hT]:R$})}catch{}}var hT="app.lastRunVersion";var Ij=d(()=>{w2();d8();u4()});import{existsSync as Kh,readFileSync as XG0}from"fs";import{homedir as QG0}from"os";import{join as Fh,resolve as Bh}from"path";import{fileURLToPath as zG0}from"url";function lT($=process.env){return`${$$($)} skill install`}function Ej(){let $=zG0(import.meta.url);return[Bh($,"../../../../../.agents/skills/kobe"),Bh($,"../../skills/rove")].find((J)=>Kh(Fh(J,"SKILL.md")))??null}function wj($={}){let Z=$.source!==void 0?$.source:Ej(),J=$.agent===void 0?[]:typeof $.agent==="string"?[$.agent]:$.agent;return["skills","add",Z??GG0,"--skill",e3,...$.global===!1?[]:["--global"],...J.flatMap((X)=>["--agent",X])]}function vY($={}){return`npx ${wj($).join(" ")}`}async function pT($,Z){return await Bun.spawn(["npx",...wj({...$===void 0?{}:{agent:$},global:Z})],{stdin:"inherit",stdout:"inherit",stderr:"inherit"}).exited}function xj($={}){let Z=$.home??QG0(),J=$.cwd??process.cwd();return[Z,J].flatMap((X)=>YG0.map((z)=>Fh(X,z)))}function WG0($){let Z=$.match(/(?:rove|kobe)-skill-version:\s*(\d+)/);return Z?Number.parseInt(Z[1],10):null}function HF($){let Z=xj($).find((z)=>Kh(z));if(!Z)return{installed:!1,installedVersion:null,currentVersion:cT,stale:!1};let J=null;try{J=WG0(XG0(Z,"utf8"))}catch{J=null}let X=J===null||J<cT;return{installed:!0,installedVersion:J,currentVersion:cT,stale:X}}function HG0(){return new Promise(($)=>{process.stdin.resume(),process.stdin.once("data",(Z)=>{process.stdin.pause(),$(String(Z))})})}async function Mh($={}){let{isRovePluginEnabled:Z}=await Promise.resolve().then(() => (Aj(),Dj));if(Z())return;let J=$$(),X=lT(),z=HF();if(!z.installed){if(x5(dT)==="1")return;X6(dT,"1"),process.stderr.write(`
308
308
  ${J}: the Rove agent skill isn't installed \u2014 install it so your coding agent can drive Rove via \`${J} api\`:
309
309
  ${X}
@@ -317,7 +317,7 @@ ${J}: your Rove agent skill is out of date (${W}; this Rove wants v${z.currentVe
317
317
  ${J}: a new version of the Rove agent skill is available (${W} \u2192 v${z.currentVersion}).
318
318
  Update now? [y]es / [n]o / [d]on't notify for this version: `);let U=(await($.ask??HG0)()).trim().toLowerCase();if(U==="y"||U==="yes"){let B=await($.install??pT)();if(B===0)process.stderr.write(`${J}: skill updated.
319
319
  `);else process.stderr.write(`${J}: skill update failed (exit ${B}) \u2014 run \`${X}\` manually.
320
- `)}else if(U.startsWith("d"))X6(G,"1")}var cT=30,YG0,GG0="Sma1lboy/rove",dT="skillHintSeen";var qF=d(()=>{u4();CQ();C4();YG0=[".agents/skills/rove/SKILL.md",".claude/skills/rove/SKILL.md",".agents/skills/kobe/SKILL.md",".claude/skills/kobe/SKILL.md"]});var Lh={};A$(Lh,{loadPluginEngines:()=>qG0});function qG0(){let $=[];try{for(let Z of o4().plugins){if(!Z.enabled)continue;try{let{manifest:J}=Q6(Z.root);for(let X of J.engines)if(bv(X.id,{displayName:X.name,defaultCommand:X.command,...X.processNames?{processNames:X.processNames}:{},screenManifest:{rules:X.rules}}))$.push(X.id)}catch{}}}catch{}return $}var Nh=d(()=>{mJ();NZ();iO()});var fj=()=>{};var q1=jY((UG0,yj)=>{(function(){function $(J0,S0){Object.defineProperty(X.prototype,J0,{get:function(){console.warn("%s(...) is deprecated in plain JavaScript React classes. %s",S0[0],S0[1])}})}function Z(J0){if(J0===null||typeof J0!=="object")return null;return J0=D0&&J0[D0]||J0["@@iterator"],typeof J0==="function"?J0:null}function J(J0,S0){J0=(J0=J0.constructor)&&(J0.displayName||J0.name)||"ReactClass";var Z1=J0+"."+S0;u0[Z1]||(console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",S0,J0),u0[Z1]=!0)}function X(J0,S0,Z1){this.props=J0,this.context=S0,this.refs=W1,this.updater=Z1||j0}function z(){}function G(J0,S0,Z1){this.props=J0,this.context=S0,this.refs=W1,this.updater=Z1||j0}function W(){}function H(J0){return""+J0}function U(J0){try{H(J0);var S0=!1}catch(n1){S0=!0}if(S0){S0=console;var Z1=S0.error,U1=typeof Symbol==="function"&&Symbol.toStringTag&&J0[Symbol.toStringTag]||J0.constructor.name||"Object";return Z1.call(S0,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",U1),H(J0)}}function B(J0){if(J0==null)return null;if(typeof J0==="function")return J0.$$typeof===c0?null:J0.displayName||J0.name||null;if(typeof J0==="string")return J0;switch(J0){case i:return"Fragment";case n:return"Profiler";case l:return"StrictMode";case $0:return"Suspense";case O0:return"SuspenseList";case b0:return"Activity"}if(typeof J0==="object")switch(typeof J0.tag==="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),J0.$$typeof){case k:return"Portal";case Z0:return J0.displayName||"Context";case Y0:return(J0._context.displayName||"Context")+".Consumer";case a:var S0=J0.render;return J0=J0.displayName,J0||(J0=S0.displayName||S0.name||"",J0=J0!==""?"ForwardRef("+J0+")":"ForwardRef"),J0;case Q0:return S0=J0.displayName||null,S0!==null?S0:B(J0.type)||"Memo";case w0:S0=J0._payload,J0=J0._init;try{return B(J0(S0))}catch(Z1){}}return null}function M(J0){if(J0===i)return"<>";if(typeof J0==="object"&&J0!==null&&J0.$$typeof===w0)return"<...>";try{var S0=B(J0);return S0?"<"+S0+">":"<...>"}catch(Z1){return"<...>"}}function O(){var J0=X1.A;return J0===null?null:J0.getOwner()}function L(){return Error("react-stack-top-frame")}function j(J0){if(u1.call(J0,"key")){var S0=Object.getOwnPropertyDescriptor(J0,"key").get;if(S0&&S0.isReactWarning)return!1}return J0.key!==void 0}function A(J0,S0){function Z1(){B$||(B$=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",S0))}Z1.isReactWarning=!0,Object.defineProperty(J0,"key",{get:Z1,configurable:!0})}function C(){var J0=B(this.type);return s5[J0]||(s5[J0]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),J0=this.props.ref,J0!==void 0?J0:null}function _(J0,S0,Z1,U1,n1,x$){var P$=Z1.ref;return J0={$$typeof:W0,type:J0,key:S0,props:Z1,_owner:U1},(P$!==void 0?P$:null)!==null?Object.defineProperty(J0,"ref",{enumerable:!1,get:C}):Object.defineProperty(J0,"ref",{enumerable:!1,value:null}),J0._store={},Object.defineProperty(J0._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(J0,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(J0,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:n1}),Object.defineProperty(J0,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:x$}),Object.freeze&&(Object.freeze(J0.props),Object.freeze(J0)),J0}function b(J0,S0){return S0=_(J0.type,S0,J0.props,J0._owner,J0._debugStack,J0._debugTask),J0._store&&(S0._store.validated=J0._store.validated),S0}function E(J0){I(J0)?J0._store&&(J0._store.validated=1):typeof J0==="object"&&J0!==null&&J0.$$typeof===w0&&(J0._payload.status==="fulfilled"?I(J0._payload.value)&&J0._payload.value._store&&(J0._payload.value._store.validated=1):J0._store&&(J0._store.validated=1))}function I(J0){return typeof J0==="object"&&J0!==null&&J0.$$typeof===W0}function T(J0){var S0={"=":"=0",":":"=2"};return"$"+J0.replace(/[=:]/g,function(Z1){return S0[Z1]})}function w(J0,S0){return typeof J0==="object"&&J0!==null&&J0.key!=null?(U(J0.key),T(""+J0.key)):S0.toString(36)}function y(J0){switch(J0.status){case"fulfilled":return J0.value;case"rejected":throw J0.reason;default:switch(typeof J0.status==="string"?J0.then(W,W):(J0.status="pending",J0.then(function(S0){J0.status==="pending"&&(J0.status="fulfilled",J0.value=S0)},function(S0){J0.status==="pending"&&(J0.status="rejected",J0.reason=S0)})),J0.status){case"fulfilled":return J0.value;case"rejected":throw J0.reason}}throw J0}function f(J0,S0,Z1,U1,n1){var x$=typeof J0;if(x$==="undefined"||x$==="boolean")J0=null;var P$=!1;if(J0===null)P$=!0;else switch(x$){case"bigint":case"string":case"number":P$=!0;break;case"object":switch(J0.$$typeof){case W0:case k:P$=!0;break;case w0:return P$=J0._init,f(P$(J0._payload),S0,Z1,U1,n1)}}if(P$){P$=J0,n1=n1(P$);var K4=U1===""?"."+w(P$,0):U1;return L0(n1)?(Z1="",K4!=null&&(Z1=K4.replace(PX,"$&/")+"/"),f(n1,S0,Z1,"",function(y7){return y7})):n1!=null&&(I(n1)&&(n1.key!=null&&(P$&&P$.key===n1.key||U(n1.key)),Z1=b(n1,Z1+(n1.key==null||P$&&P$.key===n1.key?"":(""+n1.key).replace(PX,"$&/")+"/")+K4),U1!==""&&P$!=null&&I(P$)&&P$.key==null&&P$._store&&!P$._store.validated&&(Z1._store.validated=2),n1=Z1),S0.push(n1)),1}if(P$=0,K4=U1===""?".":U1+":",L0(J0))for(var g$=0;g$<J0.length;g$++)U1=J0[g$],x$=K4+w(U1,g$),P$+=f(U1,S0,Z1,x$,n1);else if(g$=Z(J0),typeof g$==="function")for(g$===J0.entries&&(t8||console.warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead."),t8=!0),J0=g$.call(J0),g$=0;!(U1=J0.next()).done;)U1=U1.value,x$=K4+w(U1,g$++),P$+=f(U1,S0,Z1,x$,n1);else if(x$==="object"){if(typeof J0.then==="function")return f(y(J0),S0,Z1,U1,n1);throw S0=String(J0),Error("Objects are not valid as a React child (found: "+(S0==="[object Object]"?"object with keys {"+Object.keys(J0).join(", ")+"}":S0)+"). If you meant to render a collection of children, use an array instead.")}return P$}function h(J0,S0,Z1){if(J0==null)return J0;var U1=[],n1=0;return f(J0,U1,"","",function(x$){return S0.call(Z1,x$,n1++)}),U1}function p(J0){if(J0._status===-1){var S0=J0._ioInfo;S0!=null&&(S0.start=S0.end=performance.now()),S0=J0._result;var Z1=S0();if(Z1.then(function(n1){if(J0._status===0||J0._status===-1){J0._status=1,J0._result=n1;var x$=J0._ioInfo;x$!=null&&(x$.end=performance.now()),Z1.status===void 0&&(Z1.status="fulfilled",Z1.value=n1)}},function(n1){if(J0._status===0||J0._status===-1){J0._status=2,J0._result=n1;var x$=J0._ioInfo;x$!=null&&(x$.end=performance.now()),Z1.status===void 0&&(Z1.status="rejected",Z1.reason=n1)}}),S0=J0._ioInfo,S0!=null){S0.value=Z1;var U1=Z1.displayName;typeof U1==="string"&&(S0.name=U1)}J0._status===-1&&(J0._status=0,J0._result=Z1)}if(J0._status===1)return S0=J0._result,S0===void 0&&console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
320
+ `)}else if(U.startsWith("d"))X6(G,"1")}var cT=31,YG0,GG0="Sma1lboy/rove",dT="skillHintSeen";var qF=d(()=>{u4();CQ();C4();YG0=[".agents/skills/rove/SKILL.md",".claude/skills/rove/SKILL.md",".agents/skills/kobe/SKILL.md",".claude/skills/kobe/SKILL.md"]});var Lh={};A$(Lh,{loadPluginEngines:()=>qG0});function qG0(){let $=[];try{for(let Z of o4().plugins){if(!Z.enabled)continue;try{let{manifest:J}=Q6(Z.root);for(let X of J.engines)if(bv(X.id,{displayName:X.name,defaultCommand:X.command,...X.processNames?{processNames:X.processNames}:{},screenManifest:{rules:X.rules}}))$.push(X.id)}catch{}}}catch{}return $}var Nh=d(()=>{mJ();NZ();iO()});var fj=()=>{};var q1=jY((UG0,yj)=>{(function(){function $(J0,S0){Object.defineProperty(X.prototype,J0,{get:function(){console.warn("%s(...) is deprecated in plain JavaScript React classes. %s",S0[0],S0[1])}})}function Z(J0){if(J0===null||typeof J0!=="object")return null;return J0=D0&&J0[D0]||J0["@@iterator"],typeof J0==="function"?J0:null}function J(J0,S0){J0=(J0=J0.constructor)&&(J0.displayName||J0.name)||"ReactClass";var Z1=J0+"."+S0;u0[Z1]||(console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",S0,J0),u0[Z1]=!0)}function X(J0,S0,Z1){this.props=J0,this.context=S0,this.refs=W1,this.updater=Z1||j0}function z(){}function G(J0,S0,Z1){this.props=J0,this.context=S0,this.refs=W1,this.updater=Z1||j0}function W(){}function H(J0){return""+J0}function U(J0){try{H(J0);var S0=!1}catch(n1){S0=!0}if(S0){S0=console;var Z1=S0.error,U1=typeof Symbol==="function"&&Symbol.toStringTag&&J0[Symbol.toStringTag]||J0.constructor.name||"Object";return Z1.call(S0,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",U1),H(J0)}}function B(J0){if(J0==null)return null;if(typeof J0==="function")return J0.$$typeof===c0?null:J0.displayName||J0.name||null;if(typeof J0==="string")return J0;switch(J0){case i:return"Fragment";case n:return"Profiler";case l:return"StrictMode";case $0:return"Suspense";case O0:return"SuspenseList";case b0:return"Activity"}if(typeof J0==="object")switch(typeof J0.tag==="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),J0.$$typeof){case k:return"Portal";case Z0:return J0.displayName||"Context";case Y0:return(J0._context.displayName||"Context")+".Consumer";case a:var S0=J0.render;return J0=J0.displayName,J0||(J0=S0.displayName||S0.name||"",J0=J0!==""?"ForwardRef("+J0+")":"ForwardRef"),J0;case Q0:return S0=J0.displayName||null,S0!==null?S0:B(J0.type)||"Memo";case w0:S0=J0._payload,J0=J0._init;try{return B(J0(S0))}catch(Z1){}}return null}function M(J0){if(J0===i)return"<>";if(typeof J0==="object"&&J0!==null&&J0.$$typeof===w0)return"<...>";try{var S0=B(J0);return S0?"<"+S0+">":"<...>"}catch(Z1){return"<...>"}}function O(){var J0=X1.A;return J0===null?null:J0.getOwner()}function L(){return Error("react-stack-top-frame")}function j(J0){if(u1.call(J0,"key")){var S0=Object.getOwnPropertyDescriptor(J0,"key").get;if(S0&&S0.isReactWarning)return!1}return J0.key!==void 0}function A(J0,S0){function Z1(){B$||(B$=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",S0))}Z1.isReactWarning=!0,Object.defineProperty(J0,"key",{get:Z1,configurable:!0})}function C(){var J0=B(this.type);return s5[J0]||(s5[J0]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),J0=this.props.ref,J0!==void 0?J0:null}function _(J0,S0,Z1,U1,n1,x$){var P$=Z1.ref;return J0={$$typeof:W0,type:J0,key:S0,props:Z1,_owner:U1},(P$!==void 0?P$:null)!==null?Object.defineProperty(J0,"ref",{enumerable:!1,get:C}):Object.defineProperty(J0,"ref",{enumerable:!1,value:null}),J0._store={},Object.defineProperty(J0._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(J0,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(J0,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:n1}),Object.defineProperty(J0,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:x$}),Object.freeze&&(Object.freeze(J0.props),Object.freeze(J0)),J0}function b(J0,S0){return S0=_(J0.type,S0,J0.props,J0._owner,J0._debugStack,J0._debugTask),J0._store&&(S0._store.validated=J0._store.validated),S0}function E(J0){I(J0)?J0._store&&(J0._store.validated=1):typeof J0==="object"&&J0!==null&&J0.$$typeof===w0&&(J0._payload.status==="fulfilled"?I(J0._payload.value)&&J0._payload.value._store&&(J0._payload.value._store.validated=1):J0._store&&(J0._store.validated=1))}function I(J0){return typeof J0==="object"&&J0!==null&&J0.$$typeof===W0}function T(J0){var S0={"=":"=0",":":"=2"};return"$"+J0.replace(/[=:]/g,function(Z1){return S0[Z1]})}function w(J0,S0){return typeof J0==="object"&&J0!==null&&J0.key!=null?(U(J0.key),T(""+J0.key)):S0.toString(36)}function y(J0){switch(J0.status){case"fulfilled":return J0.value;case"rejected":throw J0.reason;default:switch(typeof J0.status==="string"?J0.then(W,W):(J0.status="pending",J0.then(function(S0){J0.status==="pending"&&(J0.status="fulfilled",J0.value=S0)},function(S0){J0.status==="pending"&&(J0.status="rejected",J0.reason=S0)})),J0.status){case"fulfilled":return J0.value;case"rejected":throw J0.reason}}throw J0}function f(J0,S0,Z1,U1,n1){var x$=typeof J0;if(x$==="undefined"||x$==="boolean")J0=null;var P$=!1;if(J0===null)P$=!0;else switch(x$){case"bigint":case"string":case"number":P$=!0;break;case"object":switch(J0.$$typeof){case W0:case k:P$=!0;break;case w0:return P$=J0._init,f(P$(J0._payload),S0,Z1,U1,n1)}}if(P$){P$=J0,n1=n1(P$);var K4=U1===""?"."+w(P$,0):U1;return L0(n1)?(Z1="",K4!=null&&(Z1=K4.replace(PX,"$&/")+"/"),f(n1,S0,Z1,"",function(y7){return y7})):n1!=null&&(I(n1)&&(n1.key!=null&&(P$&&P$.key===n1.key||U(n1.key)),Z1=b(n1,Z1+(n1.key==null||P$&&P$.key===n1.key?"":(""+n1.key).replace(PX,"$&/")+"/")+K4),U1!==""&&P$!=null&&I(P$)&&P$.key==null&&P$._store&&!P$._store.validated&&(Z1._store.validated=2),n1=Z1),S0.push(n1)),1}if(P$=0,K4=U1===""?".":U1+":",L0(J0))for(var g$=0;g$<J0.length;g$++)U1=J0[g$],x$=K4+w(U1,g$),P$+=f(U1,S0,Z1,x$,n1);else if(g$=Z(J0),typeof g$==="function")for(g$===J0.entries&&(t8||console.warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead."),t8=!0),J0=g$.call(J0),g$=0;!(U1=J0.next()).done;)U1=U1.value,x$=K4+w(U1,g$++),P$+=f(U1,S0,Z1,x$,n1);else if(x$==="object"){if(typeof J0.then==="function")return f(y(J0),S0,Z1,U1,n1);throw S0=String(J0),Error("Objects are not valid as a React child (found: "+(S0==="[object Object]"?"object with keys {"+Object.keys(J0).join(", ")+"}":S0)+"). If you meant to render a collection of children, use an array instead.")}return P$}function h(J0,S0,Z1){if(J0==null)return J0;var U1=[],n1=0;return f(J0,U1,"","",function(x$){return S0.call(Z1,x$,n1++)}),U1}function p(J0){if(J0._status===-1){var S0=J0._ioInfo;S0!=null&&(S0.start=S0.end=performance.now()),S0=J0._result;var Z1=S0();if(Z1.then(function(n1){if(J0._status===0||J0._status===-1){J0._status=1,J0._result=n1;var x$=J0._ioInfo;x$!=null&&(x$.end=performance.now()),Z1.status===void 0&&(Z1.status="fulfilled",Z1.value=n1)}},function(n1){if(J0._status===0||J0._status===-1){J0._status=2,J0._result=n1;var x$=J0._ioInfo;x$!=null&&(x$.end=performance.now()),Z1.status===void 0&&(Z1.status="rejected",Z1.reason=n1)}}),S0=J0._ioInfo,S0!=null){S0.value=Z1;var U1=Z1.displayName;typeof U1==="string"&&(S0.name=U1)}J0._status===-1&&(J0._status=0,J0._result=Z1)}if(J0._status===1)return S0=J0._result,S0===void 0&&console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
321
321
 
322
322
  Your code should look like:
323
323
  const MyComponent = lazy(() => import('./MyComponent'))
@@ -718,7 +718,7 @@ mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!)
718
718
  `:"")}function on($,Z){for(let J of o4(Z).plugins){if(!J.enabled)continue;let X;try{X=Q6(J.root).manifest}catch{continue}for(let z of X.fileHandlers)try{if(new RegExp(z.pattern,"i").test($))return{qualifiedAction:dO(J.id,z.action)}}catch{}}return null}var JE=d(()=>{mJ();MZ();NZ()});import{closeSync as yU0,openSync as gU0,readFileSync as bU0,readSync as vU0,statSync as kU0}from"fs";function mU0($){if(!$)return null;let Z=$.trimEnd().split(`
719
719
  `);for(let J=Z.length-1;J>=0;J--){let X=Z[J]?.trim();if(!X)continue;let z;try{z=JSON.parse(X)}catch{continue}if(typeof z.at!=="number")continue;let G=typeof z.exitCode==="number"?z.exitCode:null,W=typeof z.spawnError==="string"?z.spawnError:void 0;return{at:z.at,label:typeof z.label==="string"?z.label:typeof z.kind==="string"?z.kind:"run",exitCode:G,ok:W===void 0&&G===0,...W?{spawnError:W}:{}}}return null}function hU0($,Z,J,X,z={}){let G=null,W=[];if(J!==null)try{let{manifest:H}=tK(J);G={actions:H.actions.length,events:H.events.length,panes:H.panes.length},W=vn(H.settings,z)}catch{G=null}return{id:Z.id,version:Z.version,enabled:Z.enabled,linked:Z.source.kind==="link",source:Z.source.kind==="link"?Z.root:Z.source.spec,declares:G,lastRun:mU0(X),settings:W,updateAvailable:$.has(Z.id)}}function an($){let Z=Math.max(0,Math.floor($/1000));if(Z<60)return`${Z}s`;if(Z<3600)return`${Math.floor(Z/60)}m`;if(Z<86400)return`${Math.floor(Z/3600)}h`;return`${Math.floor(Z/86400)}d`}function cU0($){let Z;try{let J=kU0($).size,X=Math.min(J,uU0),z=Buffer.alloc(X);return Z=gU0($,"r"),vU0(Z,z,0,X,J-X),z.toString("utf8")}catch{return null}finally{if(Z!==void 0)yU0(Z)}}function dU0($){if(!$)return null;try{return bU0($,"utf8")}catch{return null}}function oV($){let Z=new Set(cn($));return o4($).plugins.map((J)=>hU0(Z,J,dU0(lH(J.root)),cU0(iH(J.id,$)),pn(J.id,$)))}function rn($,Z,J,X){nn($,{[Z]:J},X)}function sn($,Z,J){let X=o4(J);LZ({plugins:X.plugins.map((z)=>z.id===$?{...z,enabled:Z}:z)},J)}var uU0=65536;var XE=d(()=>{mJ();ZE();MZ();NZ();JE()});import{TextAttributes as tn}from"@opentui/core";function lU0($){let Z=[],J=0;for(let X of $)Z.push(J),J+=1+X.settings.length;return Z}function pU0($){let{theme:Z}=d0(),J=e0(),{setting:X}=$,z=X.type==="boolean"?iV(X.value)?J("settings.general.on"):J("settings.general.off"):X.value||J("settings.plugins.settingUnset");return R.jsxDEV("box",{flexDirection:"row",gap:1,paddingLeft:5,paddingRight:1,backgroundColor:$.cursor?Z.primary:void 0,onMouseUp:$.onActivate,children:[R.jsxDEV("text",{fg:$.cursor?Z.selectedListItemText:Z.text,wrapMode:"none",children:X.label},void 0,!1,void 0,this),R.jsxDEV("text",{fg:$.cursor?Z.selectedListItemText:X.defaulted?Z.textMuted:Z.accent,wrapMode:"none",children:z},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function en($){let{theme:Z}=d0(),J=e0(),X=Date.now(),z=(W)=>$.level==="body"&&$.bodyRow===W,G=lU0($.plugins);return R.jsxDEV("box",{flexDirection:"column",gap:1,children:[R.jsxDEV("text",{fg:Z.text,attributes:tn.BOLD,children:J("settings.plugins.title")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"word",children:J("settings.plugins.hint")},void 0,!1,void 0,this),$.plugins.length===0?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"word",children:J("settings.plugins.empty")},void 0,!1,void 0,this):R.jsxDEV("box",{flexDirection:"column",gap:0,children:$.plugins.map((W,H)=>{let U=G[H]??0,B=z(U);return R.jsxDEV("box",{flexDirection:"column",gap:0,children:[R.jsxDEV("box",{flexDirection:"row",gap:1,paddingLeft:1,paddingRight:1,backgroundColor:B?Z.primary:void 0,onMouseUp:()=>{$.setLevel("body"),$.setBodyRow(U),$.toggle(W.id)},children:[R.jsxDEV("text",{fg:B?Z.selectedListItemText:W.enabled?Z.accent:Z.textMuted,attributes:tn.BOLD,wrapMode:"none",children:`${W.enabled?"[x]":"[ ]"} ${W.id}`},void 0,!1,void 0,this),R.jsxDEV("text",{fg:B?Z.selectedListItemText:Z.textMuted,wrapMode:"none",children:`v${W.version} ${W.linked?J("settings.plugins.sourceLink",{path:W.source}):J("settings.plugins.sourceGithub",{spec:W.source})}`},void 0,!1,void 0,this),W.updateAvailable?R.jsxDEV("text",{fg:Z.warning,wrapMode:"none",children:J("settings.plugins.updateAvailable")},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),R.jsxDEV("box",{flexDirection:"row",gap:1,paddingLeft:5,paddingRight:1,children:[R.jsxDEV("text",{fg:W.declares?Z.textMuted:Z.warning,wrapMode:"none",children:W.declares?J("settings.plugins.declares",{actions:String(W.declares.actions),events:String(W.declares.events),panes:String(W.declares.panes)}):J("settings.plugins.manifestUnreadable")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:W.lastRun?.ok===!1?Z.error:Z.textMuted,wrapMode:"none",children:W.lastRun?J("settings.plugins.lastRun",{label:W.lastRun.label,status:W.lastRun.ok?J("settings.plugins.runOk"):W.lastRun.spawnError?J("settings.plugins.runFailed"):J("settings.plugins.runExit",{code:String(W.lastRun.exitCode)}),ago:an(X-W.lastRun.at)}):J("settings.plugins.neverRun")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W.settings.map((M,O)=>R.jsxDEV(pU0,{setting:M,cursor:z(U+1+O),onActivate:()=>{$.setLevel("body"),$.setBodyRow(U+1+O),$.editSetting(W.id,M.key)}},M.key,!1,void 0,this))]},W.id,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var $i=d(async()=>{X$();XE();a0();await Z$()});function sV($){return`engineProtocol.${$}`}function aV($){if(p5($))return $;let Z=x5(sV($))?.trim();return Z&&rV.includes(Z)?Z:void 0}function QE($){return p5($)||x2().includes($)}function nU0(){return[...Z9,...x2()]}function iU0($){let J=x5(H8($))?.trim()||oQ($).join(" ");return{id:$,name:y5($),command:J,protocol:aV($)??WG,builtin:p5($)}}function Zi(){return nU0().map(iU0)}function eQ($){let Z=$?.trim();if(!Z)return WG;if(QE(Z))return aV(Z)??WG;let J=aj(Z);if(J)return J;let X=Sq(Z)[0];if(X)for(let z of x2()){let G=x5(H8(z))?.trim();if(G&&Sq(G)[0]===X)return aV(z)??WG}return WG}function F2($){let Z=$.command?.trim();if(!Z)return Iq($.vendor,$.effort);let J=(QE(Z)?aV(Z):void 0)??eQ(Z),X=QE(Z)?oU0(Z):(()=>{let z=Sq(Z);return z.length>0?z:null})();if(!X)return Iq($.vendor,$.effort);return vI(kI(X,J,$.effort),J)}function oU0($){let Z=x5(H8($))?.trim();if(Z){let J=Sq(Z);if(J.length>0)return J}return oQ($)}var WG="generic",rV;var N9=d(()=>{C4();P7();DZ();L7();rV=Z9});import{TextAttributes as aU0}from"@opentui/core";function rU0($){let Z=o$(),{theme:J}=d0(),X=e0(),z=M7(),[G,W]=Ji.useState($.currentTitle);function H(){let U=G.trim();if(vF(U)&&!$.allowEmpty)return;$.onSubmit(U),Z.clear()}return R.jsxDEV("box",{paddingLeft:z,paddingRight:z,gap:1,children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:[R.jsxDEV("text",{attributes:aU0.BOLD,fg:J.text,children:$.dialogTitle??X("common.rename.defaultTitle")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:J.textMuted,onMouseUp:()=>$.onCancel(),children:"esc"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{gap:0,children:[R.jsxDEV("text",{fg:J.accent,children:$.fieldLabel??X("common.rename.defaultFieldLabel")},void 0,!1,void 0,this),R.jsxDEV("input",{value:G,placeholder:$.placeholder??$.currentTitle,focused:!0,onInput:(U)=>W(r5(U)),onSubmit:()=>H()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{paddingBottom:1,children:R.jsxDEV("text",{fg:J.textMuted,children:X("common.rename.footerHint",{submitLabel:$.submitLabel??X("common.rename.defaultSubmitLabel")})},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function sU0($,Z,J={}){return k2($,(X)=>R.jsxDEV(rU0,{currentTitle:Z,dialogTitle:J.dialogTitle,fieldLabel:J.fieldLabel,submitLabel:J.submitLabel,placeholder:J.placeholder,allowEmpty:J.allowEmpty,onSubmit:(z)=>X(z),onCancel:()=>X(void 0)},void 0,!1,void 0,this))}var Ji,g5;var QX=d(async()=>{p8();X$();a0();await J$([Z$(),C5()]);Ji=z1(q1(),1);g5={show:sU0}});function Qi($,Z,J){function X(){let E=$.get("customEngineIds",[]);return Array.isArray(E)?E.filter((I)=>typeof I==="string"&&I.trim().length>0):[]}function z(){return[...m8,...X()]}function G(E){let I=$.get(H8(E),"");return typeof I==="string"?I.trim():""}function W(E){return G(E)||oQ(E).join(" ")}function H(E){return p5(E)&&G(E).length===0&&!B(E)}function U(E){let I=$.get(F9(E),"");return typeof I==="string"?I.trim():""}function B(E){return U(E).length>0}function M(E){return U(E)||F$(E).displayName}let[O,L]=Xi.useState(()=>IO()??b4);function j(E){BR(E),$.set("defaultVendor",E),L(E)}async function A(E){let I=await g5.show(Z,W(E),{dialogTitle:`${M(E)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(I===void 0)return;$.set(H8(E),I.trim())}async function C(E){let I=await g5.show(Z,M(E),{dialogTitle:`${M(E)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(I===void 0)return;$.set(F9(E),I.trim())}function _(E){if($.set(H8(E),""),$.set(F9(E),""),!p5(E))$.set(sV(E),""),$.set("customEngineIds",X().filter((I)=>I!==E)),J(z().length)}async function b(){let E=await g5.show(Z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(E===void 0)return;let I=E.trim().toLowerCase();if(!I||p5(I)||X().includes(I))return;let T=await g5.show(Z,"",{dialogTitle:`Add engine \xB7 ${I}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(T===void 0)return;let w=await g5.show(Z,"",{dialogTitle:`Add engine \xB7 ${I} \u2014 protocol (blank = none)`,fieldLabel:"protocol",submitLabel:"next",allowEmpty:!0,placeholder:rV.join(" / ")}),y=await g5.show(Z,I,{dialogTitle:`Add engine \xB7 ${I}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if($.set("customEngineIds",[...X(),I]),T.trim())$.set(H8(I),T.trim());let f=w?.trim().toLowerCase()??"";if(f&&rV.includes(f))$.set(sV(I),f);let h=y?.trim()??"";$.set(F9(I),h&&h!==I?h:Pp(I))}return{engineList:z,engineName:M,engineCommandText:W,engineIsDefault:H,defaultEngine:O,setEngineDefault:j,editEngine:A,renameEngine:C,resetEngine:_,addEngineFlow:b}}var Xi;var zi=d(async()=>{N9();L7();F7();yJ();EF();U2();P7();await QX();Xi=z1(q1(),1)});function Yi($){let[Z,J]=O9.useState(null),[X,z]=O9.useState(null),[G,W]=O9.useState(null),[H,U]=O9.useState(null),B=O9.useRef(!1);return O9.useEffect(()=>{if($!=="accounts"||B.current)return;B.current=!0,aH().then(J),rH().then(z),sH().then(W),$j().then(U)},[$]),{claude:Z,codex:X,copilot:G,kimi:H}}function Gi($,Z){let[J,X]=O9.useState([]),z=e0();O9.useEffect(()=>{if($!=="plugins")return;X(oV())},[$]);function G(W,H,U){try{rn(W,H,U)}catch{}X(oV())}return{rows:J,toggle:(W)=>{let H=J.find((U)=>U.id===W);if(!H)return;try{sn(W,!H.enabled)}catch{}X(oV())},editSetting:async(W,H)=>{let U=J.find((O)=>O.id===W)?.settings.find((O)=>O.key===H);if(!U)return;if(U.type==="enum"){G(W,H,kn(U.options,U.value));return}if(U.type==="boolean"){G(W,H,mn(U));return}let B=await g5.show(Z,U.value,{dialogTitle:U.label,fieldLabel:H,submitLabel:"save",allowEmpty:!0,placeholder:U.defaultValue});if(B===void 0)return;if(U.type!=="number"){G(W,H,B.trim());return}let M=hn(B);if(M===null){await O4.show(Z,z("settings.plugins.settingInvalidTitle"),z("settings.plugins.settingInvalidBody",{label:U.label}),"cancel");return}G(W,H,M)}}}var O9;var Wi=d(async()=>{cJ();X$();XE();await J$([TZ(),QX()]);O9=z1(q1(),1)});var zE="experimental.archivedHistoryPreview";var Hi=d(()=>{w2()});function eV($,Z){if(typeof $==="string"&&hF.includes($))return $;if(Z===!0)return"multipleOnly";if(Z===!1)return"always";return"never"}function qi($,Z){if($==="never")return!1;if($==="multipleOnly")return Z>=2;return!0}var mF="chat.tabStrip.mode",hF,tV="chat.tabStrip.hideSingle";var YE=d(()=>{hF=["always","multipleOnly","never"]});var GE="zen.keepTasks",xq="zen.active";var WE=d(()=>{w2()});function fq($){return HG.includes($)?$:"auto"}var HG,Ui,zX="editor.kind",$z="editor.customCommand",$_="auto";var Z_=d(()=>{HG=["auto","vim","nvim","nano","emacs","custom"],Ui=["nvim","vim","emacs","nano"]});import{accessSync as tU0,constants as eU0,mkdirSync as $B0}from"fs";function Bi($,Z){let J=e0();function X(){return $.get("notifications.toast.enabled",!0)!==!1}function z(){return $.get("notifications.sound.enabled",!0)!==!1}function G(){$.set("notifications.toast.enabled",!X())}function W(){$.set("notifications.sound.enabled",!z())}function H(){return $.get("notifications.crossTask.enabled",!0)!==!1}function U(){$.set("notifications.crossTask.enabled",!H())}function B(){return DV($.get(SF))}function M(n){$.set(SF,n)}function O(){return $.get(xq,!1)===!0}function L(){$.set(xq,!O())}function j(){return $.get(GE,!0)!==!1}function A(){$.set(GE,!j())}function C(){return eV($.get(mF,void 0),$.get(tV,void 0))}function _(){let n=hF[(hF.indexOf(C())+1)%hF.length];$.set(mF,n)}function b(){return $.get("experimental.remoteProjects",!1)===!0}function E(){$.set("experimental.remoteProjects",!b())}function I(){return $.get(XG,!1)===!0}function T(){$.set(XG,!I())}function w(){return $.get(QG,!1)===!0}function y(){$.set(QG,!w())}function f(){return $.get(zE,!1)===!0}function h(){$.set(zE,!f())}function p(){return fq($.get(zX,$_))}function m(){let n=HG.indexOf(p()),Y0=HG[(n+1)%HG.length];if(Y0)$.set(zX,Y0)}function t(){let n=$.get($z,"");return typeof n==="string"?n:""}async function s(){let n=await g5.show(Z,t(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(n===void 0)return;let Y0=n.trim();if($.set($z,Y0),Y0)$.set(zX,"custom")}function G0(){return WV($.get(YV,GV))}async function U0(){let n=await g5.show(Z,String(G0()),{dialogTitle:J("settings.general.scrollbackTitle"),fieldLabel:J("settings.general.scrollbackField"),submitLabel:"save",placeholder:String(GV)});if(n===void 0)return;let Y0=Number.parseInt(n.trim(),10);if(!Number.isFinite(Y0)){await O4.show(Z,J("settings.general.scrollbackInvalidTitle"),J("settings.general.scrollbackInvalidBody"),"cancel");return}$.set(YV,WV(Y0))}function F0(){let n=$.get(SQ,"");return typeof n==="string"?n:""}let B0=()=>wb(F0());function W0(){let n=B0();if(n==="default")return J("settings.general.worktreeKindDefault");if(n==="nextToProject")return J("settings.general.worktreeKindNext");return J("settings.general.worktreeKindCustom")}function k(){let n=$.get(PO,"");return(typeof n==="string"?n.trim():"")||(B0()==="custom"?F0().trim():"")}function i(){let n=B0();if(n==="default")$.set(SQ,eP);else if(n==="nextToProject")$.set(SQ,k());else $.set(PO,F0().trim()),$.set(SQ,"")}async function l(){let n=await g5.show(Z,k(),{dialogTitle:J("settings.general.worktreeBaseTitle"),fieldLabel:J("settings.general.worktreeBaseField"),submitLabel:"save",placeholder:`${wJ}/../worktrees`,allowEmpty:!0});if(n===void 0)return;let Y0=n.trim();if(Y0.includes(wJ)){if(!$R(Y0)){await O4.show(Z,"Can't use that worktree location",`${wJ} only expands as the leading path segment (e.g. ${wJ}/../kobe-worktrees). Keeping the previous setting.`,"cancel");return}}else if(Y0){let Z0=ZR(Y0)??Y0;try{$B0(Z0,{recursive:!0}),tU0(Z0,eU0.W_OK)}catch(a){await O4.show(Z,"Can't use that worktree location",`${Z0} isn't usable (${M1(a)}). Keeping the previous setting \u2014 pick a writable directory.`,"cancel");return}}if($.set(PO,Y0),Y0)$.set(SQ,Y0);else if(B0()==="custom")$.set(SQ,"")}return{toastEnabled:X,toggleToast:G,soundEnabled:z,toggleSound:W,crossTaskEnabled:H,toggleCrossTask:U,splitStyle:B,selectSplitStyle:M,zenDefaultOn:O,toggleZenDefaultOn:L,zenKeepsTasks:j,toggleZenKeepsTasks:A,remoteProjectsEnabled:b,toggleRemoteProjects:E,autoStatusOn:I,toggleAutoStatus:T,dispatcherOn:w,toggleDispatcher:y,archivedHistoryOn:f,toggleArchivedHistory:h,editorKind:p,cycleEditorKind:m,editorCustomCommand:t,editEditorCustom:s,scrollbackRows:G0,editScrollbackRows:U0,tabStripMode:C,cycleTabStripMode:_,worktreeKind:B0,worktreeKindLabel:W0,worktreeCustomPath:k,cycleWorktreeBase:i,editWorktreeCustom:l}}var Ki=d(async()=>{Hi();bF();kV();mS();IF();YE();JR();WE();Z_();X$();await J$([TZ(),QX()])});import{TextAttributes as ZB0}from"@opentui/core";function J_($){let Z=o$(),J=d0(),X=N4(),{theme:z}=J,G=e0(),W=M7(),[H,U]=n8.useState("sidebar"),[B,M]=n8.useState("general"),[O,L]=n8.useState(0),[j,A]=n8.useState(0),[C,_]=n8.useState(""),[b,E]=n8.useState(""),[I,T]=n8.useState(""),w=n8.useMemo(()=>J.all().slice().sort(),[J]),y=yF($.orchestrator),f=Bi($.kv,Z),h=Qi($.kv,Z,(j0)=>A((l0)=>Math.max(0,Math.min(l0,j0)))),p=$.orchestrator instanceof iJ?$.orchestrator:null,m=J4(p?p.usageSnapshotSignal():JB0),t=Yi(B),s=Gi(B,Z);function G0(){return Ap(B,{themeNames:w,focusAccentSlots:lQ,engineList:h.engineList(),plugins:s.rows.map((j0)=>({id:j0.id,settingKeys:j0.settings.map((l0)=>l0.key)})),hasDaemon:y})}function U0(){return G0().length}function F0(j0){if(J.selected===j0)return;if(!J.set(j0))return;$.kv.set("activeTheme",j0),$.onVisualPrefsChange?.()}function B0(j0){if(_V()===j0)return;Aq(j0),$.kv.set(IV,j0),$.onVisualPrefsChange?.()}function W0(){let j0=!J.transparentBackground;J.setTransparentBackground(j0),$.kv.set("transparentBackground",j0),$.onVisualPrefsChange?.()}function k(j0){if(J.focusAccent===j0)return;J.setFocusAccent(j0),$.kv.set("focusAccent",j0),$.onVisualPrefsChange?.()}function i(){if(B!=="engines"||H!=="body")return null;let j0=TI(G0(),j);return j0?.kind==="engine"?j0.vendor:null}async function l(){T("submitting...");try{let j0=Pq({title:C,body:b});T(`sent: ${j0.url}`),_(""),E(""),A(0)}catch(j0){T(`error: ${M1(j0)}`)}}let n=B==="feedback"&&H==="body";function Y0(j0){let l0=j+j0;if(l0<0||l0>2){U("sidebar");return}A(l0)}function Z0(){if(H!=="sidebar"||U0()===0)return;U("body"),A(0)}function a(j0){if(H==="sidebar"){let W1=(O+j0+ZG.length)%ZG.length;L(W1);let R1=ZG[W1];if(R1)M(R1.id),A(0);return}let l0=U0();if(l0===0)return;A((j+j0+l0)%l0)}function $0(j0){M(j0),L(ZG.findIndex((l0)=>l0.id===j0)),A(0),U("sidebar")}let O0={theme:(j0)=>F0(j0.name),language:(j0)=>B0(j0.locale),transparent:()=>W0(),focusAccent:(j0)=>k(j0.slot),toast:()=>f.toggleToast(),sound:()=>f.toggleSound(),crossTask:()=>f.toggleCrossTask(),keyHints:()=>SV($.kv),splitStyle:(j0)=>f.selectSplitStyle(j0.style),zenDefaultOn:()=>f.toggleZenDefaultOn(),zenKeepTasks:()=>f.toggleZenKeepsTasks(),editorKind:()=>f.cycleEditorKind(),editorCustom:()=>void f.editEditorCustom(),worktreeBase:()=>f.cycleWorktreeBase(),worktreeCustom:()=>void f.editWorktreeCustom(),scrollbackRows:()=>void f.editScrollbackRows(),tabStripHideSingle:()=>f.cycleTabStripMode(),engine:(j0)=>void h.editEngine(j0.vendor),engineAdd:()=>void h.addEngineFlow(),pluginToggle:(j0)=>s.toggle(j0.pluginId),pluginSetting:(j0)=>void s.editSetting(j0.pluginId,j0.key),feedbackTitle:()=>A(0),feedbackBody:()=>A(1),feedbackSend:()=>void l(),devReset:()=>void yI(Z,$.kv,X),devRestartDaemon:()=>void gI(Z,$.orchestrator,X),devRemoteProjects:()=>f.toggleRemoteProjects(),devAutoStatus:()=>f.toggleAutoStatus(),devDispatcher:()=>f.toggleDispatcher(),devArchivedHistory:()=>f.toggleArchivedHistory()};function Q0(){let j0=TI(G0(),j);if(!j0)return;O0[j0.kind](j0)}b1(()=>({enabled:(!$.standalone||Z.stack.length===0)&&!n,bindings:[{key:"down",cmd:()=>a(1)},{key:"up",cmd:()=>a(-1)},{key:"j",cmd:()=>a(1)},{key:"k",cmd:()=>a(-1)},{key:"tab",cmd:()=>a(1)},{key:"right",cmd:Z0},{key:"l",cmd:Z0},{key:"left",cmd:()=>U("sidebar")},{key:"h",cmd:()=>U("sidebar")},{key:"return",cmd:()=>{if(H==="sidebar"){Z0();return}Q0()}},{key:"t",cmd:W0},{key:"r",cmd:()=>{let j0=i();if(j0)h.renameEngine(j0)}},{key:"x",cmd:()=>{let j0=i();if(j0)h.resetEngine(j0)}},{key:"d",cmd:()=>{let j0=i();if(j0)h.setEngineDefault(j0)}}]})),b1(()=>({enabled:n,bindings:[{key:"tab",cmd:()=>Y0(1)},{key:"shift+tab",cmd:()=>Y0(-1)}]})),b1(()=>({enabled:n&&j===2,bindings:[{key:"return",cmd:()=>void l()}]}));let w0=n8.useRef(null),b0=n8.useCallback((j0)=>{let l0=w0.current;if(!l0||!j0||l0.viewport.height<=0)return;l0.scrollChildIntoView(j0.id)},[]),D0={level:H,bodyRow:j,setLevel:U,setBodyRow:A},u0=R.jsxDEV("box",{paddingLeft:W,paddingRight:W,paddingBottom:1,gap:1,children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:[R.jsxDEV("text",{attributes:ZB0.BOLD,fg:z.text,children:G("settings.title")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:z.textMuted,onMouseUp:()=>$.onClose(),children:G("settings.esc")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{flexDirection:"row",gap:2,children:[R.jsxDEV(Wn,{level:H,cursor:O,switchSection:$0},void 0,!1,void 0,this),R.jsxDEV("box",{flexGrow:1,flexShrink:1,flexDirection:"column",gap:1,children:[B==="general"?R.jsxDEV(Hn,{...D0,prefs:f,themeNames:w,selectTheme:F0,currentLocale:_V(),selectLanguage:B0,toggleTransparent:W0,selectFocusAccent:k,usage:m},void 0,!1,void 0,this):null,B==="engines"?R.jsxDEV(np,{...D0,vendors:h.engineList(),isCustom:(j0)=>!p5(j0),displayName:h.engineName,commandText:h.engineCommandText,isDefault:h.engineIsDefault,isDefaultEngine:(j0)=>h.defaultEngine===j0,editEngine:(j0)=>void h.editEngine(j0),onAddEngine:()=>void h.addEngineFlow()},void 0,!1,void 0,this):null,B==="accounts"?R.jsxDEV(ip,{claudeStatus:t.claude,codexStatus:t.codex,copilotStatus:t.copilot,kimiStatus:t.kimi},void 0,!1,void 0,this):null,B==="plugins"?R.jsxDEV(en,{...D0,plugins:s.rows,toggle:s.toggle,editSetting:(j0,l0)=>void s.editSetting(j0,l0)},void 0,!1,void 0,this):null,B==="keys"?R.jsxDEV(gn,{},void 0,!1,void 0,this):null,B==="feedback"?R.jsxDEV(fn,{...D0,title:C,setTitle:(j0)=>{_(j0),T("")},body:b,setBody:(j0)=>{E(j0),T("")},status:I,onTitleSubmit:()=>A(1),submit:()=>void l()},void 0,!1,void 0,this):null,B==="dev"?R.jsxDEV(yn,{...D0,prefs:f,hasDaemon:y,confirmReset:()=>void yI(Z,$.kv,X),confirmRestartDaemon:()=>void gI(Z,$.orchestrator,X)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{paddingTop:0,children:R.jsxDEV("text",{fg:z.textMuted,children:n?G("settings.nav.feedback"):G("settings.nav.default")},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(!$.standalone)return R.jsxDEV(yV.Provider,{value:b0,children:u0},void 0,!1,void 0,this);return R.jsxDEV(yV.Provider,{value:b0,children:R.jsxDEV("scrollbox",{ref:(j0)=>{w0.current=j0},flexGrow:1,verticalScrollbarOptions:{trackOptions:{foregroundColor:"transparent"}},children:u0},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var n8,JB0;var Fi=d(async()=>{LF();UZ();TF();EF();fF();SI();P7();X$();U9();a0();await J$([v4(),Z$(),D4(),C5(),lp(),gV(),op(),qn(),bn(),$i(),zi(),Wi(),Ki()]);n8=z1(q1(),1),JB0=n$(null);J_.show=($,Z,J)=>{let X=!1;return new Promise((z)=>{$.replace(()=>R.jsxDEV(J_,{kv:Z,orchestrator:J,onVisualPrefsChange:()=>{X=!0},onClose:()=>z({visualPrefsChanged:X})},void 0,!1,void 0,this),()=>z({visualPrefsChanged:X}))})}});function Li($,Z){return`${$}:${Z}`}function Ni($,Z){let J=Li(Z.taskId,Z.tabId),X=$.get(J);if(X==="needs_input"||X==="error")return $;let z=new Map($);return z.set(J,Z.kind),z}function Oi($,Z,J){let X=Li(Z,J);if(!$.has(X))return $;let z=new Map($);return z.delete(X),z}function ji($,Z){return $==="error"||Z}function Vi($){if($==="permission_needed")return"needs_input";if($==="error"||$==="rate_limited")return"error";if($==="turn_complete")return"done";return null}function _i($){if($==="done")return"done";if($==="error")return"error";if($==="needs_input")return"needs_input";return null}function X_($,Z,J,X){if($===null)return[];let z=[];for(let[G,W]of Z){if(G===J)continue;if($.get(G)===W)continue;let H=X(W);if(H)z.push({key:G,kind:H})}return z}function XB0($){let Z="",J=0;for(let X=0;X<$.length;X++){let z=$.charCodeAt(X);if(z>31&&(z<127||z>159))continue;Z+=`${$.slice(J,X)} `,J=X+1}return J===0?$:Z+$.slice(J)}function Ci($){return`\x1B]9;${XB0($)}\x07`}var Mi=4500;var Q_="../pulse-n3cq1btw.wav";var Di=()=>{};import{existsSync as zB0,mkdirSync as YB0}from"fs";import{tmpdir as GB0}from"os";import{basename as WB0,delimiter as HB0,isAbsolute as qB0,join as HE,resolve as UB0}from"path";function KB0($,Z,J){if($==="ffplay")return[$,"-autoexit","-nodisp","-af",`volume=${J}`,Z];if($==="mpv")return[$,"--no-video","--audio-display=no","--volume",String(Math.round(J*100)),Z];if($==="mpg123"||$==="mpg321")return[$,"-g",String(Math.round(J*100)),Z];if($==="mplayer")return[$,"-vo","null","-volume",String(Math.round(J*100)),Z];if($==="afplay"||$==="omxplayer"||$==="aplay"||$==="cmdmp3")return[$,Z];if($==="play")return[$,"-v",String(J),Z];if($==="cvlc")return[$,`--gain=${J}`,"--play-and-exit",Z];return[$,"-c",`(New-Object Media.SoundPlayer '${Z.replace(/'/g,"''")}').PlaySync()`]}function FB0($,Z=HB0){return $.split(Z).filter(Boolean)}function MB0(){if(z_!==void 0)return z_;let $=FB0(process.env.PATH??"");return z_=BB0.find((Z)=>$.some((J)=>zB0(HE(J,Z))))??null,z_}async function LB0(){return Ri??=(async()=>{YB0(Pi,{recursive:!0});let $=HE(Pi,WB0(Ai)),Z=Bun.file($);if(await Z.exists())return $;return await Bun.write(Z,Bun.file(Ai)),$})(),Ri}function Ti($=0.4){let Z=MB0();if(!Z)return;LB0().then((J)=>{try{Bun.spawn(KB0(Z,J,$),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var Ai,Pi,BB0,z_,Ri;var Si=d(()=>{Di();Ai=qB0(Q_)?Q_:UB0(import.meta.dir,Q_),Pi=HE(GB0(),"kobe-sfx"),BB0=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function Ei($){let[Z,J]=x7.useState([]),[X,z]=x7.useState(new Map),G=x7.useMemo(()=>L4(),[]),W=x7.useRef(0),H=x7.useRef(new Set);x7.useEffect(()=>()=>{for(let L of H.current)clearTimeout(L);H.current.clear()},[]);let U=x7.useCallback((L)=>{J((j)=>j.filter((A)=>A.id!==L))},[]),B=x7.useCallback((L)=>{if(z((A)=>Ni(A,L)),G["notifications.sound.enabled"]!==!1){try{process.stdout.write(`\x07${Ci(`Rove \u2014 ${L.title}`)}`)}catch{}Ti()}let j=G["notifications.toast.enabled"]!==!1;if(ji(L.kind,j)){let A=++W.current;J((_)=>[..._,{id:A,...L}]);let C=setTimeout(()=>{H.current.delete(C),U(A)},Mi);H.current.add(C)}},[G,U]),M=x7.useCallback((L,j)=>{z((A)=>Oi(A,L,j))},[]),O=x7.useMemo(()=>({toasts:Z,unread:X,notify:B,dismiss:U,markRead:M}),[Z,X,B,U,M]);return R.jsxDEV(Ii.Provider,{value:O,children:$.children},void 0,!1,void 0,this)}function Zz(){let $=x7.useContext(Ii);if(!$)throw Error("useNotifications must be used within a NotificationsProvider");return $}var x7,Ii;var yq=d(()=>{w2();Si();a0();x7=z1(q1(),1),Ii=x7.createContext(null)});import{TextAttributes as wi}from"@opentui/core";function VB0($){return($.body?2:1)+1}function fi(){let{theme:$}=d0(),Z=f5(),J=Zz();if(J.toasts.length===0)return null;let X=J.toasts.slice(-NB0),z=X.reduce((H,U)=>H+VB0(U),0),G=Math.max(0,Z.width-xi-OB0),W=Math.max(0,Z.height-jB0-z);return R.jsxDEV("box",{position:"absolute",zIndex:2500,left:G,top:W,width:xi,flexDirection:"column",gap:1,children:X.map((H)=>{let U=H.kind==="needs_input"?$.warning:H.kind==="error"?$.error:$.success,B=H.kind==="needs_input"?"?":H.kind==="error"?"\u2715":"\u2713";return R.jsxDEV("box",{flexDirection:"row",backgroundColor:$.backgroundElement,onMouseUp:()=>J.dismiss(H.id),children:[R.jsxDEV("box",{flexDirection:"column",flexShrink:0,children:[R.jsxDEV("text",{fg:U,wrapMode:"none",children:"\u258C"},void 0,!1,void 0,this),H.body?R.jsxDEV("text",{fg:U,wrapMode:"none",children:"\u258C"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),R.jsxDEV("box",{flexDirection:"column",flexBasis:0,flexGrow:1,flexShrink:1,paddingLeft:1,paddingRight:1,children:[R.jsxDEV("box",{flexDirection:"row",children:[R.jsxDEV("text",{fg:U,attributes:wi.BOLD,wrapMode:"none",flexShrink:0,children:`${B} `},void 0,!1,void 0,this),R.jsxDEV("text",{fg:$.text,attributes:wi.BOLD,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:H.title},void 0,!1,void 0,this)]},void 0,!0,void 0,this),H.body?R.jsxDEV("box",{flexDirection:"row",paddingLeft:2,children:R.jsxDEV("text",{fg:$.textMuted,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:H.body},void 0,!1,void 0,this)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},H.id,!0,void 0,this)})},void 0,!1,void 0,this)}var NB0=3,xi=44,OB0=2,jB0=2;var yi=d(async()=>{yq();a0();await J$([v4(),Z$()])});function gi($){let[Z,J]=H6.useState($.initial??"sidebar"),X=N4(),z=V1(Z),G=H6.useCallback((U)=>{if(z.current===U)return;let B=X?.currentFocusedRenderable;if(B&&!B.isDestroyed)try{B.blur()}catch{}J(U)},[X]),W=H6.useCallback((U)=>{let M=(Y_.indexOf(z.current)+U+Y_.length)%Y_.length;G(Y_[M])},[G]),H=H6.useMemo(()=>({focused:Z,is:(U)=>Z===U,setFocused:G,cycle:W}),[Z,G,W]);return R.jsxDEV(qE.Provider,{value:H,children:$.children},void 0,!1,void 0,this)}function G_(){let $=H6.useContext(qE);if(!$)throw Error("useFocus: must be called inside <FocusProvider>. See src/tui-react/context/focus.tsx.");return $}function bi(){return H6.useContext(qE)}var H6,Y_,qE;var uF=d(async()=>{w7();a0();await v4();H6=z1(q1(),1),Y_=["sidebar","workspace","files","terminal"],qE=H6.createContext(null)});async function vi($={}){let Z=$.logTag??"orch-connect",J=$.connect??RQ,X=null;try{let z=await J();if(!z)return TJ(Z,"no daemon running \u2014 caller degrades"),null;return X=new iJ(z,{...$.orchestratorOptions,channels:$.channels}),await X.init(),X}catch(z){return M4(Z,z),X?.dispose(),null}}var ki=d(()=>{SJ();I2();LF()});function W_($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function H_($){if(!W_($))return{ok:!1,reason:"theme must be a JSON object at the top level"};let Z=$;if(!("theme"in Z))return{ok:!1,reason:"missing required key `theme`"};let J=Z.theme;if(!W_(J))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in Z&&Z.defs!==void 0){if(!W_(Z.defs))return{ok:!1,reason:"`defs` must be an object map"};for(let[X,z]of Object.entries(Z.defs))if(typeof z!=="string")return{ok:!1,reason:`defs.${X} must be a string (hex like "#abc" or a ref name)`}}for(let[X,z]of Object.entries(J)){if(typeof z==="string")continue;if(!W_(z))return{ok:!1,reason:`theme.${X} must be a string or a { dark, light } object (got ${z===null?"null":Array.isArray(z)?"array":typeof z})`};let G=z;if(typeof G.dark!=="string")return{ok:!1,reason:`theme.${X}.dark must be a string`};if(typeof G.light!=="string")return{ok:!1,reason:`theme.${X}.light must be a string`}}if("$schema"in Z&&Z.$schema!==void 0&&typeof Z.$schema!=="string")return{ok:!1,reason:"`$schema` must be a string when present"};return{ok:!0,theme:Z}}var UE=()=>{};import{readFileSync as _B0,readdirSync as CB0}from"fs";import{join as mi}from"path";function gq(){return mi(K7(),"themes")}function BE(){let $=gq(),Z;try{Z=CB0($)}catch{return[]}let J=[];for(let X of Z){if(!X.endsWith(".json"))continue;let z=mi($,X),G;try{let U=_B0(z,"utf8");G=JSON.parse(U)}catch(U){let B=M1(U);console.warn(`[rove] skipping user theme ${z}: invalid JSON \u2014 ${B}`);continue}let W=H_(G);if(!W.ok){console.warn(`[rove] skipping user theme ${z}: ${W.reason}`);continue}let H=X.slice(0,-5);J.push({name:H,theme:W.theme})}return J}var KE=d(()=>{V5();UE()});function FE($,Z){if(typeof Z.theme==="string"&&Z.theme.length>0&&Z.theme!==$.selectedTheme()){if(!$.hasTheme(Z.theme))$.reloadUserThemes();if($.hasTheme(Z.theme))$.setTheme(Z.theme)}if(typeof Z.transparentBackground==="boolean"&&Z.transparentBackground!==$.transparentBackground())$.setTransparentBackground(Z.transparentBackground);if(Z.focusAccent===null||typeof Z.focusAccent==="string"){let J=AB0(Z.focusAccent);if(J&&J!==$.focusAccent())$.setFocusAccent(J)}}function AB0($){if($===null)return"primary";return DB0.includes($)?$:null}var DB0;var hi=d(()=>{DB0=["primary","success","info"]});function RB0($,Z,J=ui,X=PB0){let z=$-J;if(z<X)return null;let G=(W)=>Math.round(W/1048576);return`event loop stalled ~${z}ms \u2014 rss=${G(Z.rss)}MB heapUsed=${G(Z.heapUsed)}MB`}function ci(){let $=Date.now(),Z=setInterval(()=>{let J=Date.now(),X=J-$;$=J;let z=RB0(X,process.memoryUsage());if(z)TJ("stall",z)},ui);return Z.unref?.(),()=>clearInterval(Z)}var ui=1000,PB0=2000;var di=d(()=>{SJ()});function li($){let Z={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return $?{...Z,onDestroy:$}:Z}function pi($,Z){let J={backgroundColor:"transparent",exitOnCtrlC:!1,screenMode:"split-footer",footerHeight:$,useKittyKeyboard:{}};return Z?{...J,onDestroy:Z}:J}function ni($){process.on("exit",()=>$.destroy())}function ii(){let $=!1,Z=()=>{if($)return;$=!0,setTimeout(()=>process.exit(0),5000)};for(let J of["SIGHUP","SIGTERM","SIGINT"])process.on(J,Z)}function oi($=5000){let Z=setInterval(()=>{if(process.ppid===1)process.exit(0)},$);return Z.unref?.(),()=>clearInterval(Z)}class ri{owner=null;anchor=null;claim($,Z){this.owner=$,this.anchor={x:Math.max(0,Math.trunc(Z.x)),y:Math.max(0,Math.trunc(Z.y))}}release($){if(this.owner!==$)return!1;return this.owner=null,this.anchor=null,!0}current(){return this.anchor}}class si{controller;pending=Buffer.alloc(0);frame=Buffer.alloc(0);constructor($){this.controller=$}push($){let Z=this.pending.length>0?Buffer.concat([this.pending,$]):$;this.pending=Buffer.alloc(0);let J=[],X=0;while(X<Z.length){if(this.frame.length===0){let B=Z.indexOf(Jz,X);if(B<0){let M=Z.subarray(X),O=ai(M,[Jz]),L=M.length-O;if(L>0)J.push(M.subarray(0,L));if(O>0)this.pending=Buffer.from(M.subarray(L));break}if(B>X)J.push(Z.subarray(X,B));this.frame=Buffer.from(Jz),X=B+Jz.length;continue}let z=Z.indexOf(q_,X),G=Z.indexOf(Jz,X);if(G>=0&&(z<0||G<z)){this.frame=Buffer.from(Jz),X=G+Jz.length;continue}if(z>=0){if(z>X)this.frame=Buffer.concat([this.frame,Z.subarray(X,z)]);J.push(this.frame);let B=this.controller.current();if(B)J.push(Buffer.from(`\x1B[${B.y+1};${B.x+1}H\x1B[?25l`));J.push(q_),this.frame=Buffer.alloc(0),X=z+q_.length;continue}let W=Z.subarray(X),H=ai(W,[Jz,q_]),U=W.length-H;if(U>0)this.frame=Buffer.concat([this.frame,W.subarray(0,U)]);if(H>0)this.pending=Buffer.from(W.subarray(U));break}return J.length>0?Buffer.concat(J):Buffer.alloc(0)}flush(){if(this.frame.length>0)return this.frame=Buffer.alloc(0),this.pending=Buffer.alloc(0),Buffer.alloc(0);let $=this.pending;return this.pending=Buffer.alloc(0),$}}function ai($,Z){let J=Math.min($.length,Math.max(...Z.map((X)=>X.length-1)));for(let X=J;X>0;X-=1){let z=$.subarray($.length-X);if(Z.some((G)=>X<G.length&&z.equals(G.subarray(0,X))))return X}return 0}function TB0($,Z){if(typeof $!=="string")return Buffer.from($);let J=typeof Z==="string"?Z:void 0;return Buffer.from($,J)}function SB0($,Z){return typeof $==="function"?$:Z}function IB0($,Z=bq){let J=new si(Z),z=(W,H,U)=>{let B=J.push(TB0(W,H)),M=SB0(H,U);if(B.length===0){if(M)queueMicrotask(()=>M(null));return!0}return M?$.write(B,M):$.write(B)};return{stdout:new Proxy($,{get(W,H){if(H==="write")return z;let U=Reflect.get(W,H,W);return typeof U==="function"?U.bind(W):U},set(W,H,U){if(H==="write")return z=U,!0;return Reflect.set(W,H,U,W)}}),flush(){let W=J.flush();if(W.length>0)$.write(W)}}}function ti($){if($.platform!=="darwin"||!$.fullscreen)return{active:!1,rendererOptions:{},attach:()=>()=>{},flush:()=>{}};let Z=IB0($.stdout,$.controller);return{active:!0,rendererOptions:{stdout:Z.stdout,remote:!1},attach:(J)=>EB0(J,$.stdout),flush:()=>Z.flush()}}function EB0($,Z,J=process){let X=()=>{let{columns:z,rows:G}=Z;if(!z||!G)return;$.resize(z,G)};return J.on("SIGWINCH",X),()=>J.removeListener("SIGWINCH",X)}var Jz,q_,bq;var ME=d(()=>{Jz=Buffer.from("\x1B[?2026h"),q_=Buffer.from("\x1B[?2026l");bq=new ri});import{createCliRenderer as wB0}from"@opentui/core";function fB0(){return cF.useEffect(()=>{let $=!1,Z=null,J=[];return(async()=>{let X=await vi({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!X)return;if($){X.dispose();return}Z=X;let z=(U)=>{if(!U)return;if(FE(ei,U),Dq(U.locale))Aq(U.locale)},G=X.uiPrefsStore();z(G.get()),J.push(G.subscribe(()=>z(G.get())));let W=X.keybindingsRevStore(),H=W.get();J.push(W.subscribe(()=>{let U=W.get();if(U==null||U===H)return;let B=H===null;if(H=U,!B)wn()}))})(),()=>{$=!0;for(let X of J)X();Z?.dispose()}},[]),null}function yB0($){let{theme:Z}=d0();return cF.useEffect(()=>{M4("pane-crash",$.error)},[$.error]),R.jsxDEV("box",{flexDirection:"column",flexGrow:1,backgroundColor:Z.background,paddingLeft:1,paddingTop:1,gap:1,children:[R.jsxDEV("text",{fg:Z.error,children:W$("common.paneCrash.title")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,children:W$("common.paneCrash.hint")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}async function qG($){if($.logContext)ug($.logContext);lg(),lV();for(let{name:C,theme:_}of BE())OI(C,_);let Z=wp(xB0,_q);FE(ei,{theme:Z.theme,transparentBackground:Z.transparent,focusAccent:Z.focusAccent}),Aq(Z.locale);let J=$.providers?.kv??!1,X=$.providers?.focus??!0,z=$.providers?.notifications??!1,G=await $.setup(Z),W=ti({platform:process.platform,fullscreen:$.inlineRows===void 0,stdout:process.stdout}),H=()=>{},U=()=>{H(),W.flush(),G.onDestroy?.()},B=await wB0({...$.inlineRows!==void 0?pi($.inlineRows,U):li(U),...W.rendererOptions});H=W.attach(B);let M=R.jsxDEV(R.Fragment,{children:[R.jsxDEV(fB0,{},void 0,!1,void 0,this),R.jsxDEV($o,{children:G.root()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),L=R.jsxDEV(mp,{children:z?R.jsxDEV(Ei,{children:M},void 0,!1,void 0,this):M},void 0,!1,void 0,this),j=X?R.jsxDEV(gi,{initial:"sidebar",children:L},void 0,!1,void 0,this):L,A=J?R.jsxDEV(Zn,{children:j},void 0,!1,void 0,this):j;GS(B).render(R.jsxDEV(Hl,{mode:"dark",theme:Z.theme,children:A},void 0,!1,void 0,this)),ni(B),ii(),oi(),ci()}var cF,xB0="claude",ei,$o;var dF=d(async()=>{SJ();I2();ki();pV();KE();hi();di();ME();SI();A3();yq();X$();a0();await J$([v4(),uF(),Z$(),Z$(),C5()]);cF=z1(q1(),1),ei={selectedTheme:Jl,hasTheme:_q,setTheme:Xl,reloadUserThemes:()=>{for(let{name:$,theme:Z}of BE())OI($,Z)},transparentBackground:Ql,setTransparentBackground:zl,focusAccent:Yl,setFocusAccent:Gl};$o=class $o extends cF.Component{state={error:null};static getDerivedStateFromError($){return{error:$}}render(){if(this.state.error!==null)return R.jsxDEV(yB0,{error:this.state.error},void 0,!1,void 0,this);return this.props.children}}});import*as Zo from"fs";import*as U_ from"os";function B_($){return $.slice($.lastIndexOf("/")+1)}function IZ($){if($==="~")return U_.homedir();if($.startsWith("~/"))return U_.homedir()+$.slice(1);return $}function Jo($){if(!$)return{base:"",filter:""};let J=IZ($==="~"?"~/":$);if(J.endsWith("/"))return{base:J,filter:""};let X=J.lastIndexOf("/");if(X===-1)return{base:"",filter:J};return{base:J.slice(0,X+1),filter:J.slice(X+1)}}function Xo($){if(!$)return[];try{let Z=Zo.readdirSync($,{withFileTypes:!0}),J=[];for(let X of Z)if(X.isDirectory())J.push(X.name);return J.sort((X,z)=>X.localeCompare(z))}catch{return[]}}function Qo($,Z){let J=Z.toLowerCase(),z=J.startsWith(".")?$:$.filter((G)=>!G.startsWith("."));if(!J)return z;return z.filter((G)=>G.toLowerCase().startsWith(J))}function vq($,Z,J){let X=Z+J;if($.startsWith("~")){let z=U_.homedir();if(X===z)return"~";if(X.startsWith(`${z}/`))return`~${X.slice(z.length)}`}return X}var UG=()=>{};function zo($){return $.kind==="leaf"?0:1+Math.max(...$.children.map(zo))}function gB0($,Z,J){let X=(z)=>{if(z.kind==="leaf")return null;if(z.orientation===J&&z.children.some((G)=>G.kind==="leaf"&&G.id===Z))return z.children.length;for(let G of z.children){let W=X(G);if(W!==null)return W}return null};return X($)??1}function bB0($,Z,J){let X=Z==="row"?J.cols:J.rows,z=Z==="row"?20:6,G=gB0($.root,$.activeLeafId,Z);return Math.floor(X*G/(G+1))-1>=z}function K_($){return{root:{kind:"leaf",id:"leaf-1",content:$},activeLeafId:"leaf-1",nextOrdinal:2}}function t7($){return $.kind==="leaf"?[$]:$.children.flatMap(t7)}function lF($,Z,J,X){if(X&&!bB0($,Z,X))return $;let z={kind:"leaf",id:`leaf-${$.nextOrdinal}`,content:J},G=(H)=>{if(H.kind==="leaf"){if(H.id!==$.activeLeafId)return H;return{kind:"group",orientation:Z,children:[H,z]}}if(H.orientation===Z){let U=H.children.findIndex((B)=>B.kind==="leaf"&&B.id===$.activeLeafId);if(U>=0){let B=[...H.children.slice(0,U+1),z,...H.children.slice(U+1)];return{...H,children:B}}}return{...H,children:H.children.map(G)}},W=G($.root);if(!X&&zo(W)>4)return $;return{root:W,activeLeafId:z.id,nextOrdinal:$.nextOrdinal+1}}function F_($,Z){let J=t7($.root);if(J.length<=1)return null;let X=(B)=>{if(B.kind==="leaf")return B.id===Z?null:B;let M=B.children.map(X).filter((O)=>O!==null);if(M.length===0)return null;if(M.length===1)return M[0];return{...B,children:M}},z=X($.root);if(z===null)return null;if(t7(z).length===J.length)return $;let G=J.map((B)=>B.id),W=G.indexOf(Z),H=G[W>0?W-1:W+1],U=$.activeLeafId===Z?H:$.activeLeafId;return{...$,root:z,activeLeafId:U}}function M_($,Z,J){let X=J.trim(),z=X.length>0?X:null,G=(W)=>W.kind==="leaf"?W.id===Z?{...W,title:z}:W:{...W,children:W.children.map(G)};if(!t7($.root).some((W)=>W.id===Z))return $;return{...$,root:G($.root)}}function Yo($,Z){let J=t7($.root).map((G)=>G.id);if(J.length<=1)return $;let X=J.indexOf($.activeLeafId),z=J[(X+Z+J.length)%J.length];return{...$,activeLeafId:z}}function LE($){return!$||t7($.root).some((Z)=>Z.id==="leaf-1")}function nF($){return $?t7($.root).length>1:!1}function kq($){let Z=t7($.root);return Z.length===1&&Z[0]?.id==="leaf-1"?null:$}function P3($,Z){return Z==="leaf-1"?$:`${$}::${Z}`}function NE($,Z,J,X){let z=(H)=>{let U=(H??Z)[0]??"",B=B_(U);return B.length>0?B:"?"},G=new Map,W=new Map;for(let H of $){if(H.title){W.set(H.id,H.title);continue}let U=H.content===null?J||X?.get(H.id)||z(H.content):X?.get(H.id)||pF,B=(G.get(U)??0)+1;G.set(U,B),W.set(H.id,B===1?U:`${U} ${B}`)}return W}function vB0($){let Z=($??"").trim();if(Z.length<3)return null;if(/^[\d\s\p{P}\p{S}]+$/u.test(Z))return null;return Z}function kB0($,Z){let J=$?.trim();if(!J)return null;let X=mQ(J,Z);if(X===J&&mB0(J,Z))return null;if(Vj(X,Z))return null;return X||null}function mB0($,Z){let J=new Set(TT(Z));return[...$].every((X)=>X.trim().length===0||J.has(X))}function BG($,Z,J,X){if(J===null&&$.kind==="engine")return j9({...$,kind:"command",lastTitle:null},Z);let z=J??$.liveVendor??($.kind==="engine"?$.vendor??Z:void 0)??void 0,G=X?.trim()||$.lastTitle,W=z?kB0(G,z):G??null;if(!z||F$(z).terminalTitle?.ownsStatus!==!0)return j9({...$,lastTitle:W},Z);return j9({...$,kind:"engine",vendor:z,lastTitle:W},Z)}function hB0($,Z){return $.liveVendor??($.kind==="engine"?$.vendor:void 0)??Z}function j9($,Z,J){if($.title)return $.title;let X=$.splitTree?t7($.splitTree.root):[];if(X.length>1)return W$("terminal.tab.groupTitle",{n:$.ordinal});let z=X.length===1?X[0]:void 0;if(z&&z.id!=="leaf-1")return z.title??`${J??pF} ${$.ordinal}`;let G=hB0($,Z);if(J&&!Vj(J,G))return`${J} ${$.ordinal}`;if($.lastTitle&&!Vj($.lastTitle,G))return`${$.lastTitle} ${$.ordinal}`;let W=vB0($.autoTitle);if(W)return W;return`${$.kind==="engine"?F$($.vendor??Z).defaultCommand[0]??pF:pF} ${$.ordinal}`}function OE($,Z,J,X){if(!J||!X)return!1;if(F$(J).terminalTitle?.ownsStatus!==!0)return!1;return j9($,Z,X)===`${X} ${$.ordinal}`}var pF="shell";var jE=d(()=>{F7();RZ();UG()});import{readFileSync as uB0,realpathSync as cB0}from"fs";import{join as dB0}from"path";function pB0(){return dB0(K7(),"notes.json")}function Go($){try{return cB0($)}catch{return $}}function Wo($,Z=pB0()){if(!$)return[];let J;try{J=JSON.parse(uB0(Z,"utf8"))}catch{return[]}let X=J?.repos;if(!X||typeof X!=="object")return[];let z=Go($);for(let G of Object.values(X)){if(!G||typeof G!=="object")continue;let W=G;if(typeof W.repoRoot!=="string"||Go(W.repoRoot)!==z)continue;if(!Array.isArray(W.notes))return[];return W.notes.filter((H)=>!!H&&typeof H==="object"&&typeof H.text==="string").slice(0,lB0)}return[]}var lB0=15;var Ho=d(()=>{V5()});import{existsSync as Uo,readFileSync as nB0}from"fs";import{join as mq}from"path";function iB0($,Z=D3(),J){let X=`PS: this task's git branch name is an auto-generated placeholder. Once you understand the work, rename it to a short descriptive name following this repo's branch-naming convention: \`${Z} set-branch --task-id ${$} --branch <descriptive-slug>\``;if(!J||J===$)return X;return`${X}
720
720
 
721
- You were spawned by Rove task ${J}. When the work is finished, send your outcome back to it \u2014 include the final branch name: \`${Z} send --task-id ${J} --prompt "<succeeded|failed>: <one-line summary> (branch <final-branch>)"\``}function aB0($){for(let[Z,J]of[[qo[0],"sh .rove/init.sh"],[qo[1],"sh .kobe/init.sh"]])if(Uo(mq($,Z)))return J;return}function rB0($){for(let Z of oB0){let J=mq($,Z);if(!Uo(J))continue;try{let X=nB0(J,"utf8");if(X.trim().length>0)return X}catch{}}return}function sB0($,Z){let J=$?uP($):{},X=aB0(Z)??J.initScript,z=rB0(Z)??J.initPrompt;return{initScript:X&&X.trim().length>0?X:void 0,initPrompt:z&&z.trim().length>0?z:void 0}}function tB0($,Z,J){if($.kind==="none")return;if($.kind==="explicit")return{source:"explicit",text:$.prompt};if($.kind==="new-task")return{source:"explicit",text:`${$.prompt}
721
+ You were spawned by Rove task ${J}. When the work is finished, send your outcome back \u2014 include the final branch name: \`${Z} send --prompt "<succeeded|failed>: <one-line summary> (branch <final-branch>)"\` (bare send, no --task-id: it routes to the exact tab that dispatched you)`}function aB0($){for(let[Z,J]of[[qo[0],"sh .rove/init.sh"],[qo[1],"sh .kobe/init.sh"]])if(Uo(mq($,Z)))return J;return}function rB0($){for(let Z of oB0){let J=mq($,Z);if(!Uo(J))continue;try{let X=nB0(J,"utf8");if(X.trim().length>0)return X}catch{}}return}function sB0($,Z){let J=$?uP($):{},X=aB0(Z)??J.initScript,z=rB0(Z)??J.initPrompt;return{initScript:X&&X.trim().length>0?X:void 0,initPrompt:z&&z.trim().length>0?z:void 0}}function tB0($,Z,J){if($.kind==="none")return;if($.kind==="explicit")return{source:"explicit",text:$.prompt};if($.kind==="new-task")return{source:"explicit",text:`${$.prompt}
722
722
 
723
723
  ${iB0(J??'"$ROVE_TASK_ID"',void 0,$.spawnerTaskId)}`};let X=Z.initPrompt?.trim();return X?{source:"repo-init",text:X}:void 0}function Bo($,Z,J={kind:"repo-init"},X){let z=sB0($,Z);return{initScript:z.initScript,firstMessage:tB0(J,z,X)}}var qo,oB0;var Ko=d(()=>{L7();C4();qo=[mq(".rove","init.sh"),mq(".kobe","init.sh")],oB0=[mq(".rove","init-prompt.md"),mq(".kobe","init-prompt.md")]});function eB0($){return`${$}; __rc=$?; [ "$__rc" -ne 0 ] && printf '${"\\n \u26A0 Engine exited (code %s). Check Settings \u2192 Engines and fix the launch command.\\n\\n"}' "$__rc"; exec "\${SHELL:-/bin/sh}"`}function XK0($){let Z=typeof $==="number"?$:$==null?Number.NaN:Number.parseInt($,10);if(!Number.isFinite(Z))return $K0;return Math.max(ZK0,Math.min(JK0,Math.round(Z)))}function QK0($,Z){let J=String(Z),X="\\n \u26A0 Repo init script timed out after %ss and was killed; continuing to the engine.\\n\\n",z="\\n \u26A0 Repo init script failed (code %s); continuing to the engine.\\n\\n";return['__kobe_init_env="${TMPDIR:-/tmp}/kobe-init-env.$$"','__kobe_init_to="${TMPDIR:-/tmp}/kobe-init-timeout.$$"','rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null',"(",$,"__kobe_init_ec=$?",'export -p > "$__kobe_init_env" 2>/dev/null',"exit $__kobe_init_ec",") </dev/null &","__kobe_init_pid=$!",`( sleep ${J}; : > "$__kobe_init_to"; kill -TERM "$__kobe_init_pid" 2>/dev/null; sleep 2; kill -KILL "$__kobe_init_pid" 2>/dev/null ) &`,"__kobe_init_wd=$!",'wait "$__kobe_init_pid" 2>/dev/null; __kobe_init_rc=$?','kill "$__kobe_init_wd" 2>/dev/null; wait "$__kobe_init_wd" 2>/dev/null',`if [ -f "$__kobe_init_to" ]; then __kobe_init_rc=124; printf '${"\\n \u26A0 Repo init script timed out after %ss and was killed; continuing to the engine.\\n\\n"}' '${J}';`,'elif [ "$__kobe_init_rc" -eq 0 ]; then [ -f "$__kobe_init_env" ] && . "$__kobe_init_env" 2>/dev/null;',`else printf '${"\\n \u26A0 Repo init script failed (code %s); continuing to the engine.\\n\\n"}' "$__kobe_init_rc"; fi`,'rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null'].join(`
724
724
  `)}function zK0($){let Z=$.lastIndexOf("/");return Z<=0?".":$.slice(0,Z)}function YK0($,Z){let J=eB0($),X=Z?.initScript?.trim();if(!X)return J;let z=QK0(X,XK0(Z?.timeoutSeconds)),G=Z?.markerPath&&Tc(Z.markerPath,Z.platform);if(!G)return Fo+[z,J].join(`
@@ -303,7 +303,7 @@ ${G}
303
303
  `)}let z=ZG0();for(let G of xT()){if(X&&G.vendor==="claude")continue;let W=G.globalSettingsPath();if(!W)continue;await G.installActivityHooks(W,{toolEvents:z}),await G.installWorktreeWatchHook(W)}await Gh()}catch{}}function ZG0(){try{for(let $ of o4().plugins){if(!$.enabled)continue;try{if(Q6($.root).manifest.events.some((Z)=>Z.on.startsWith("tool.")))return!0}catch{}}}catch{}return!1}async function Gh(){let $=eY0();if($.length===0)return;let Z=x5($h),J=new Set([Yh()]),X=$G0(Z);if(X)J.add(X);for(let z of $)for(let G of J)await z.removeWorktreeSyncHook(G);if(Z!=="off")X6($h,"off")}async function JG0(){let $=xT().find((J)=>J.vendor==="claude"),Z=$?.globalSettingsPath();if(!$||!Z){process.stdout.write(`rove hook cleanup: no Claude hook adapter \u2014 nothing to do.
304
304
  `);return}await $.removeActivityHooks(Z),await $.removeWorktreeWatchHook(Z),process.stdout.write([`rove hook cleanup: removed Rove's settings-managed hooks from ${Z}.`,"Only Rove's own entries were touched; your other hooks are intact.","The Claude Code plugin's hooks.json now carries these events (if the plugin","is not installed, the next Rove launch reinstalls the settings-managed set).",""].join(`
305
305
  `))}async function XG0($){await Gh(),process.stdout.write(["rove hook setup is deprecated and now a no-op (cleanup only).","","The old external-worktree sync used a global WorktreeCreate hook, which is","a VCS provider hook \u2014 its presence broke `claude --worktree` / EnterWorktree","in every repo. Any hook Rove previously installed has been removed.","","Sync is now automatic: a `claude --worktree` (or any session) started in a","worktree under a repo Rove already tracks is adopted as a task on launch.","To adopt existing worktrees on demand, use the New Task dialog or `rove adopt`.",""].join(`
306
- `))}var iY0=500,oY0="worktree-created",$h="externalWorktreeSync";var yT=d(()=>{I2();mJ();NZ();IT();wT();C4();P7();b4()});var Rj;var Hh=d(()=>{Rj={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/rove",version:"0.8.147",description:"Rove \u2014 the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/kobe.js",rove:"dist/cli/rove.js"},files:["dist/cli","dist/web-ui","dist/skills","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/rove.git"},homepage:"https://github.com/Sma1lboy/rove#readme",bugs:{url:"https://github.com/Sma1lboy/rove/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"ROVE_DEV=1 bun --conditions=browser ./src/cli/rove.ts","dev:kobe":"KOBE_DEV=1 bun --conditions=browser ./src/cli/kobe.ts","dev:mock":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:mock-react":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:mock-react-task-dialogs":"KOBE_DEV=1 bun ./src/tui-react/component/mock-dialogs-host.tsx","dev:mock-react-filetree":"KOBE_DEV=1 bun ./src/tui-react/panes/filetree/mock-host.tsx","dev:mock-react-sidebar":"KOBE_DEV=1 bun ./src/tui-react/panes/sidebar/mock-host.tsx","dev:mock-react-terminal":"KOBE_DEV=1 bun ./src/tui-react/panes/terminal/mock-host.tsx","dev:mock-react-dialogs":"KOBE_DEV=1 bun ./src/tui-react/mock/dialogs-host.tsx","dev:mock-react-workspace":"KOBE_DEV=1 bun ./src/tui-react/workspace/mock-host.tsx","dev:sandbox":"bun run scripts/dev-sandbox.ts run","dev:sandbox:reset":"bun run scripts/dev-sandbox.ts reset",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","perf:golden":"bun scripts/perf-golden.ts","pty:soak":"bun scripts/pty-soak.ts","test:fast":"vitest run --passWithNoTests --minWorkers=1 --maxWorkers=8","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:socket:coverage":"KOBE_INCLUDE_SOCKET=1 KOBE_COVERAGE_DAEMON=1 vitest run test/daemon --coverage --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --pool forks --minWorkers=1 --maxWorkers=1 --retry=2 --passWithNoTests","test:render":"bun test test/render --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage-render",coverage:"vitest run --coverage --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.4.3","@opentui/react":"0.4.3","@xterm/addon-serialize":"^0.14.0","@xterm/addon-unicode11":"^0.9.0","@xterm/headless":"^6.0.0","node-pty":"^1.1.0",react:"^19.2.8",ws:"^8.18.0"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.14","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2","@types/react":"^19.2.0","@vitest/coverage-v8":"2.1.9",knip:"^6.14.2","kobe-web":"workspace:*","react-devtools-core":"^7.0.1",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});var Uh={};A$(Uh,{repoSlug:()=>gY,releasePageUrl:()=>hT,recommendedGlobalInstallCommand:()=>vT,isNewerSemver:()=>gT,fetchReleaseSummaries:()=>WF,fetchReleaseNotesRange:()=>mT,fetchReleaseNotes:()=>kT,compareSemver:()=>V3,checkLatestVersion:()=>bY,breakingVersionsCrossed:()=>GF,UPDATE_SCRIPT_URL:()=>Tj,UPDATE_COMMAND:()=>VZ,PACKAGE_NAME:()=>bT,CURRENT_VERSION:()=>R$,BREAKING_VERSIONS:()=>lJ});function gY(){let $=Rj.repository?.url;if(!$)return null;let Z=$.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!Z||!Z[1]||!Z[2])return null;return`${Z[1]}/${Z[2]}`}function vT(){return`npm install -g ${bT}@latest`}function GF($,Z,J=lJ){let[X,z]=V3($,Z)<=0?[$,Z]:[Z,$];return J.filter((G)=>V3(G,X)>0&&V3(G,z)<=0)}async function zG0($){let Z=new AbortController,J=setTimeout(()=>Z.abort(),Sj);try{let X=$.replace("/","%2F"),z=await fetch(`https://registry.npmjs.org/${X}/latest`,{signal:Z.signal,headers:{accept:"application/json"}});if(!z.ok)return null;let G=await z.json();if(typeof G.version!=="string")return null;return G.version}catch{return null}finally{clearTimeout(J)}}function gT($,Z){return V3($,Z)>0}function V3($,Z){let J=(G)=>G.split("-")[0]??G,X=J($).split(".").map((G)=>Number.parseInt(G,10)),z=J(Z).split(".").map((G)=>Number.parseInt(G,10));for(let G=0;G<3;G++){let W=X[G]??0,H=z[G]??0;if(Number.isNaN(W)||Number.isNaN(H))return 0;if(W>H)return 1;if(W<H)return-1}return 0}async function bY($={}){let Z=process.env.KOBE_FAKE_UPDATE;if(Z)return{current:R$,latest:Z,hasUpdate:gT(Z,R$)};if(TH()&&!$.force)return null;let J=await zG0(bT);if(!J)return null;return{current:R$,latest:J,hasUpdate:gT(J,R$)}}function qh($){if(typeof $!=="string")return null;return $.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function kT($){let Z=gY();if(!Z)return null;let J=`v${$}`,X=new AbortController,z=setTimeout(()=>X.abort(),Sj);try{let G=await fetch(`https://api.github.com/repos/${Z}/releases/tags/${J}`,{signal:X.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return null;let W=await G.json();if(typeof W.body!=="string"||typeof W.html_url!=="string")return null;return{body:W.body,url:W.html_url,version:$}}catch{return null}finally{clearTimeout(z)}}async function mT($){let Z=gY();if(!Z)return[];let J=$.limit??100,X=new AbortController,z=setTimeout(()=>X.abort(),Sj);try{let G=await fetch(`https://api.github.com/repos/${Z}/releases?per_page=${J}`,{signal:X.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return[];let W=await G.json();if(!Array.isArray(W))return[];return W.map((H)=>{let U=qh(H.tag_name);if(!U||typeof H.html_url!=="string"||typeof H.body!=="string")return null;if(V3(U,$.current)<=0)return null;if(V3(U,$.latest)>0)return null;return{version:U,url:H.html_url,body:H.body}}).filter((H)=>H!==null)}catch{return[]}finally{clearTimeout(z)}}async function WF($=12){let Z=gY();if(!Z)return[];let J=new AbortController,X=setTimeout(()=>J.abort(),Sj);try{let z=await fetch(`https://api.github.com/repos/${Z}/releases?per_page=${$}`,{signal:J.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!z.ok)return[];let G=await z.json();if(!Array.isArray(G))return[];return G.map((W)=>{let H=qh(W.tag_name);if(!H||typeof W.html_url!=="string")return null;return{version:H,url:W.html_url}}).filter((W)=>W!==null)}catch{return[]}finally{clearTimeout(X)}}function hT($){let Z=gY();if(!Z)return null;return`https://github.com/${Z}/releases/tag/v${$}`}var R$,bT,Tj="https://raw.githubusercontent.com/Sma1lboy/rove/main/scripts/update.sh",VZ,lJ,Sj=3000;var d8=d(()=>{Hh();V5();R$=Rj.version,bT=Rj.name;VZ=`curl -fsSL ${Tj} | sh`;lJ=[]});var Kh={};A$(Kh,{stampResetGate:()=>Ij,resetGateBlockers:()=>Bh,enforceResetGate:()=>cT,LAST_RUN_VERSION_KEY:()=>uT});function Bh($,Z=R$,J=lJ){if(typeof $!=="string"||$.length===0)return[];let[X,z]=V3($,Z)<=0?[$,Z]:[Z,$];return J.filter((G)=>V3(G,X)>0&&V3(G,z)<=0)}function cT(){let $=$$(),Z=L4()[uT],J=Bh(Z);if(J.length>0){let X=typeof Z==="string"?Z:"unknown";console.error([`${$} ${R$}: cannot start \u2014 version ${J.join(", ")} introduced breaking changes`,`(last run: ${X}). Your daemon/session state may be incompatible.`,"","Run:",` ${$} reset # stop daemon + PTY host + sessions (tasks kept)`,` ${$} reset --hard # additionally wipe the task index + UI state`,"","Then relaunch Rove. Worktrees are never touched."].join(`
306
+ `))}var iY0=500,oY0="worktree-created",$h="externalWorktreeSync";var yT=d(()=>{I2();mJ();NZ();IT();wT();C4();P7();b4()});var Rj;var Hh=d(()=>{Rj={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/rove",version:"0.8.148",description:"Rove \u2014 the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/kobe.js",rove:"dist/cli/rove.js"},files:["dist/cli","dist/web-ui","dist/skills","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/rove.git"},homepage:"https://github.com/Sma1lboy/rove#readme",bugs:{url:"https://github.com/Sma1lboy/rove/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"ROVE_DEV=1 bun --conditions=browser ./src/cli/rove.ts","dev:kobe":"KOBE_DEV=1 bun --conditions=browser ./src/cli/kobe.ts","dev:mock":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:mock-react":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:mock-react-task-dialogs":"KOBE_DEV=1 bun ./src/tui-react/component/mock-dialogs-host.tsx","dev:mock-react-filetree":"KOBE_DEV=1 bun ./src/tui-react/panes/filetree/mock-host.tsx","dev:mock-react-sidebar":"KOBE_DEV=1 bun ./src/tui-react/panes/sidebar/mock-host.tsx","dev:mock-react-terminal":"KOBE_DEV=1 bun ./src/tui-react/panes/terminal/mock-host.tsx","dev:mock-react-dialogs":"KOBE_DEV=1 bun ./src/tui-react/mock/dialogs-host.tsx","dev:mock-react-workspace":"KOBE_DEV=1 bun ./src/tui-react/workspace/mock-host.tsx","dev:sandbox":"bun run scripts/dev-sandbox.ts run","dev:sandbox:reset":"bun run scripts/dev-sandbox.ts reset",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","perf:golden":"bun scripts/perf-golden.ts","pty:soak":"bun scripts/pty-soak.ts","test:fast":"vitest run --passWithNoTests --minWorkers=1 --maxWorkers=8","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:socket:coverage":"KOBE_INCLUDE_SOCKET=1 KOBE_COVERAGE_DAEMON=1 vitest run test/daemon --coverage --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --pool forks --minWorkers=1 --maxWorkers=1 --retry=2 --passWithNoTests","test:render":"bun test test/render --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage-render",coverage:"vitest run --coverage --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.4.3","@opentui/react":"0.4.3","@xterm/addon-serialize":"^0.14.0","@xterm/addon-unicode11":"^0.9.0","@xterm/headless":"^6.0.0","node-pty":"^1.1.0",react:"^19.2.8",ws:"^8.18.0"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.14","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2","@types/react":"^19.2.0","@vitest/coverage-v8":"2.1.9",knip:"^6.14.2","kobe-web":"workspace:*","react-devtools-core":"^7.0.1",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});var Uh={};A$(Uh,{repoSlug:()=>gY,releasePageUrl:()=>hT,recommendedGlobalInstallCommand:()=>vT,isNewerSemver:()=>gT,fetchReleaseSummaries:()=>WF,fetchReleaseNotesRange:()=>mT,fetchReleaseNotes:()=>kT,compareSemver:()=>V3,checkLatestVersion:()=>bY,breakingVersionsCrossed:()=>GF,UPDATE_SCRIPT_URL:()=>Tj,UPDATE_COMMAND:()=>VZ,PACKAGE_NAME:()=>bT,CURRENT_VERSION:()=>R$,BREAKING_VERSIONS:()=>lJ});function gY(){let $=Rj.repository?.url;if(!$)return null;let Z=$.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!Z||!Z[1]||!Z[2])return null;return`${Z[1]}/${Z[2]}`}function vT(){return`npm install -g ${bT}@latest`}function GF($,Z,J=lJ){let[X,z]=V3($,Z)<=0?[$,Z]:[Z,$];return J.filter((G)=>V3(G,X)>0&&V3(G,z)<=0)}async function zG0($){let Z=new AbortController,J=setTimeout(()=>Z.abort(),Sj);try{let X=$.replace("/","%2F"),z=await fetch(`https://registry.npmjs.org/${X}/latest`,{signal:Z.signal,headers:{accept:"application/json"}});if(!z.ok)return null;let G=await z.json();if(typeof G.version!=="string")return null;return G.version}catch{return null}finally{clearTimeout(J)}}function gT($,Z){return V3($,Z)>0}function V3($,Z){let J=(G)=>G.split("-")[0]??G,X=J($).split(".").map((G)=>Number.parseInt(G,10)),z=J(Z).split(".").map((G)=>Number.parseInt(G,10));for(let G=0;G<3;G++){let W=X[G]??0,H=z[G]??0;if(Number.isNaN(W)||Number.isNaN(H))return 0;if(W>H)return 1;if(W<H)return-1}return 0}async function bY($={}){let Z=process.env.KOBE_FAKE_UPDATE;if(Z)return{current:R$,latest:Z,hasUpdate:gT(Z,R$)};if(TH()&&!$.force)return null;let J=await zG0(bT);if(!J)return null;return{current:R$,latest:J,hasUpdate:gT(J,R$)}}function qh($){if(typeof $!=="string")return null;return $.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function kT($){let Z=gY();if(!Z)return null;let J=`v${$}`,X=new AbortController,z=setTimeout(()=>X.abort(),Sj);try{let G=await fetch(`https://api.github.com/repos/${Z}/releases/tags/${J}`,{signal:X.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return null;let W=await G.json();if(typeof W.body!=="string"||typeof W.html_url!=="string")return null;return{body:W.body,url:W.html_url,version:$}}catch{return null}finally{clearTimeout(z)}}async function mT($){let Z=gY();if(!Z)return[];let J=$.limit??100,X=new AbortController,z=setTimeout(()=>X.abort(),Sj);try{let G=await fetch(`https://api.github.com/repos/${Z}/releases?per_page=${J}`,{signal:X.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return[];let W=await G.json();if(!Array.isArray(W))return[];return W.map((H)=>{let U=qh(H.tag_name);if(!U||typeof H.html_url!=="string"||typeof H.body!=="string")return null;if(V3(U,$.current)<=0)return null;if(V3(U,$.latest)>0)return null;return{version:U,url:H.html_url,body:H.body}}).filter((H)=>H!==null)}catch{return[]}finally{clearTimeout(z)}}async function WF($=12){let Z=gY();if(!Z)return[];let J=new AbortController,X=setTimeout(()=>J.abort(),Sj);try{let z=await fetch(`https://api.github.com/repos/${Z}/releases?per_page=${$}`,{signal:J.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!z.ok)return[];let G=await z.json();if(!Array.isArray(G))return[];return G.map((W)=>{let H=qh(W.tag_name);if(!H||typeof W.html_url!=="string")return null;return{version:H,url:W.html_url}}).filter((W)=>W!==null)}catch{return[]}finally{clearTimeout(X)}}function hT($){let Z=gY();if(!Z)return null;return`https://github.com/${Z}/releases/tag/v${$}`}var R$,bT,Tj="https://raw.githubusercontent.com/Sma1lboy/rove/main/scripts/update.sh",VZ,lJ,Sj=3000;var d8=d(()=>{Hh();V5();R$=Rj.version,bT=Rj.name;VZ=`curl -fsSL ${Tj} | sh`;lJ=[]});var Kh={};A$(Kh,{stampResetGate:()=>Ij,resetGateBlockers:()=>Bh,enforceResetGate:()=>cT,LAST_RUN_VERSION_KEY:()=>uT});function Bh($,Z=R$,J=lJ){if(typeof $!=="string"||$.length===0)return[];let[X,z]=V3($,Z)<=0?[$,Z]:[Z,$];return J.filter((G)=>V3(G,X)>0&&V3(G,z)<=0)}function cT(){let $=$$(),Z=L4()[uT],J=Bh(Z);if(J.length>0){let X=typeof Z==="string"?Z:"unknown";console.error([`${$} ${R$}: cannot start \u2014 version ${J.join(", ")} introduced breaking changes`,`(last run: ${X}). Your daemon/session state may be incompatible.`,"","Run:",` ${$} reset # stop daemon + PTY host + sessions (tasks kept)`,` ${$} reset --hard # additionally wipe the task index + UI state`,"","Then relaunch Rove. Worktrees are never touched."].join(`
307
307
  `)),process.exit(1)}if(Z!==R$)Ij()}function Ij(){try{E2({[uT]:R$})}catch{}}var uT="app.lastRunVersion";var Ej=d(()=>{w2();d8();b4()});import{existsSync as Mh,readFileSync as YG0}from"fs";import{homedir as GG0}from"os";import{join as Lh,resolve as Fh}from"path";import{fileURLToPath as WG0}from"url";function pT($=process.env){return`${$$($)} skill install`}function wj(){let $=WG0(import.meta.url);return[Fh($,"../../../../../.agents/skills/kobe"),Fh($,"../../skills/rove")].find((J)=>Mh(Lh(J,"SKILL.md")))??null}function xj($={}){let Z=$.source!==void 0?$.source:wj(),J=$.agent===void 0?[]:typeof $.agent==="string"?[$.agent]:$.agent;return["skills","add",Z??qG0,"--skill",e3,...$.global===!1?[]:["--global"],...J.flatMap((X)=>["--agent",X])]}function vY($={}){return`npx ${xj($).join(" ")}`}async function nT($,Z){return await Bun.spawn(["npx",...xj({...$===void 0?{}:{agent:$},global:Z})],{stdin:"inherit",stdout:"inherit",stderr:"inherit"}).exited}function fj($={}){let Z=$.home??GG0(),J=$.cwd??process.cwd();return[Z,J].flatMap((X)=>HG0.map((z)=>Lh(X,z)))}function UG0($){let Z=$.match(/(?:rove|kobe)-skill-version:\s*(\d+)/);return Z?Number.parseInt(Z[1],10):null}function HF($){let Z=fj($).find((z)=>Mh(z));if(!Z)return{installed:!1,installedVersion:null,currentVersion:dT,stale:!1};let J=null;try{J=UG0(YG0(Z,"utf8"))}catch{J=null}let X=J===null||J<dT;return{installed:!0,installedVersion:J,currentVersion:dT,stale:X}}function BG0(){return new Promise(($)=>{process.stdin.resume(),process.stdin.once("data",(Z)=>{process.stdin.pause(),$(String(Z))})})}async function Nh($={}){let{isRovePluginEnabled:Z}=await Promise.resolve().then(() => (Pj(),Aj));if(Z())return;let J=$$(),X=pT(),z=HF();if(!z.installed){if(x5(lT)==="1")return;X6(lT,"1"),process.stderr.write(`
308
308
  ${J}: the Rove agent skill isn't installed \u2014 install it so your coding agent can drive Rove via \`${J} api\`:
309
309
  ${X}
@@ -317,7 +317,7 @@ ${J}: your Rove agent skill is out of date (${W}; this Rove wants v${z.currentVe
317
317
  ${J}: a new version of the Rove agent skill is available (${W} \u2192 v${z.currentVersion}).
318
318
  Update now? [y]es / [n]o / [d]on't notify for this version: `);let U=(await($.ask??BG0)()).trim().toLowerCase();if(U==="y"||U==="yes"){let B=await($.install??nT)();if(B===0)process.stderr.write(`${J}: skill updated.
319
319
  `);else process.stderr.write(`${J}: skill update failed (exit ${B}) \u2014 run \`${X}\` manually.
320
- `)}else if(U.startsWith("d"))X6(G,"1")}var dT=30,HG0,qG0="Sma1lboy/rove",lT="skillHintSeen";var qF=d(()=>{b4();CQ();C4();HG0=[".agents/skills/rove/SKILL.md",".claude/skills/rove/SKILL.md",".agents/skills/kobe/SKILL.md",".claude/skills/kobe/SKILL.md"]});var Oh={};A$(Oh,{loadPluginEngines:()=>KG0});function KG0(){let $=[];try{for(let Z of o4().plugins){if(!Z.enabled)continue;try{let{manifest:J}=Q6(Z.root);for(let X of J.engines)if(kv(X.id,{displayName:X.name,defaultCommand:X.command,...X.processNames?{processNames:X.processNames}:{},screenManifest:{rules:X.rules}}))$.push(X.id)}catch{}}}catch{}return $}var jh=d(()=>{mJ();NZ();oO()});var yj=()=>{};var q1=jY((FG0,gj)=>{(function(){function $(J0,S0){Object.defineProperty(X.prototype,J0,{get:function(){console.warn("%s(...) is deprecated in plain JavaScript React classes. %s",S0[0],S0[1])}})}function Z(J0){if(J0===null||typeof J0!=="object")return null;return J0=D0&&J0[D0]||J0["@@iterator"],typeof J0==="function"?J0:null}function J(J0,S0){J0=(J0=J0.constructor)&&(J0.displayName||J0.name)||"ReactClass";var Z1=J0+"."+S0;u0[Z1]||(console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",S0,J0),u0[Z1]=!0)}function X(J0,S0,Z1){this.props=J0,this.context=S0,this.refs=W1,this.updater=Z1||j0}function z(){}function G(J0,S0,Z1){this.props=J0,this.context=S0,this.refs=W1,this.updater=Z1||j0}function W(){}function H(J0){return""+J0}function U(J0){try{H(J0);var S0=!1}catch(n1){S0=!0}if(S0){S0=console;var Z1=S0.error,U1=typeof Symbol==="function"&&Symbol.toStringTag&&J0[Symbol.toStringTag]||J0.constructor.name||"Object";return Z1.call(S0,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",U1),H(J0)}}function B(J0){if(J0==null)return null;if(typeof J0==="function")return J0.$$typeof===c0?null:J0.displayName||J0.name||null;if(typeof J0==="string")return J0;switch(J0){case i:return"Fragment";case n:return"Profiler";case l:return"StrictMode";case $0:return"Suspense";case O0:return"SuspenseList";case b0:return"Activity"}if(typeof J0==="object")switch(typeof J0.tag==="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),J0.$$typeof){case k:return"Portal";case Z0:return J0.displayName||"Context";case Y0:return(J0._context.displayName||"Context")+".Consumer";case a:var S0=J0.render;return J0=J0.displayName,J0||(J0=S0.displayName||S0.name||"",J0=J0!==""?"ForwardRef("+J0+")":"ForwardRef"),J0;case Q0:return S0=J0.displayName||null,S0!==null?S0:B(J0.type)||"Memo";case w0:S0=J0._payload,J0=J0._init;try{return B(J0(S0))}catch(Z1){}}return null}function M(J0){if(J0===i)return"<>";if(typeof J0==="object"&&J0!==null&&J0.$$typeof===w0)return"<...>";try{var S0=B(J0);return S0?"<"+S0+">":"<...>"}catch(Z1){return"<...>"}}function O(){var J0=X1.A;return J0===null?null:J0.getOwner()}function L(){return Error("react-stack-top-frame")}function j(J0){if(u1.call(J0,"key")){var S0=Object.getOwnPropertyDescriptor(J0,"key").get;if(S0&&S0.isReactWarning)return!1}return J0.key!==void 0}function A(J0,S0){function Z1(){B$||(B$=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",S0))}Z1.isReactWarning=!0,Object.defineProperty(J0,"key",{get:Z1,configurable:!0})}function C(){var J0=B(this.type);return s5[J0]||(s5[J0]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),J0=this.props.ref,J0!==void 0?J0:null}function _(J0,S0,Z1,U1,n1,x$){var P$=Z1.ref;return J0={$$typeof:W0,type:J0,key:S0,props:Z1,_owner:U1},(P$!==void 0?P$:null)!==null?Object.defineProperty(J0,"ref",{enumerable:!1,get:C}):Object.defineProperty(J0,"ref",{enumerable:!1,value:null}),J0._store={},Object.defineProperty(J0._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(J0,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(J0,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:n1}),Object.defineProperty(J0,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:x$}),Object.freeze&&(Object.freeze(J0.props),Object.freeze(J0)),J0}function b(J0,S0){return S0=_(J0.type,S0,J0.props,J0._owner,J0._debugStack,J0._debugTask),J0._store&&(S0._store.validated=J0._store.validated),S0}function E(J0){I(J0)?J0._store&&(J0._store.validated=1):typeof J0==="object"&&J0!==null&&J0.$$typeof===w0&&(J0._payload.status==="fulfilled"?I(J0._payload.value)&&J0._payload.value._store&&(J0._payload.value._store.validated=1):J0._store&&(J0._store.validated=1))}function I(J0){return typeof J0==="object"&&J0!==null&&J0.$$typeof===W0}function T(J0){var S0={"=":"=0",":":"=2"};return"$"+J0.replace(/[=:]/g,function(Z1){return S0[Z1]})}function w(J0,S0){return typeof J0==="object"&&J0!==null&&J0.key!=null?(U(J0.key),T(""+J0.key)):S0.toString(36)}function y(J0){switch(J0.status){case"fulfilled":return J0.value;case"rejected":throw J0.reason;default:switch(typeof J0.status==="string"?J0.then(W,W):(J0.status="pending",J0.then(function(S0){J0.status==="pending"&&(J0.status="fulfilled",J0.value=S0)},function(S0){J0.status==="pending"&&(J0.status="rejected",J0.reason=S0)})),J0.status){case"fulfilled":return J0.value;case"rejected":throw J0.reason}}throw J0}function f(J0,S0,Z1,U1,n1){var x$=typeof J0;if(x$==="undefined"||x$==="boolean")J0=null;var P$=!1;if(J0===null)P$=!0;else switch(x$){case"bigint":case"string":case"number":P$=!0;break;case"object":switch(J0.$$typeof){case W0:case k:P$=!0;break;case w0:return P$=J0._init,f(P$(J0._payload),S0,Z1,U1,n1)}}if(P$){P$=J0,n1=n1(P$);var K4=U1===""?"."+w(P$,0):U1;return L0(n1)?(Z1="",K4!=null&&(Z1=K4.replace(PX,"$&/")+"/"),f(n1,S0,Z1,"",function(y7){return y7})):n1!=null&&(I(n1)&&(n1.key!=null&&(P$&&P$.key===n1.key||U(n1.key)),Z1=b(n1,Z1+(n1.key==null||P$&&P$.key===n1.key?"":(""+n1.key).replace(PX,"$&/")+"/")+K4),U1!==""&&P$!=null&&I(P$)&&P$.key==null&&P$._store&&!P$._store.validated&&(Z1._store.validated=2),n1=Z1),S0.push(n1)),1}if(P$=0,K4=U1===""?".":U1+":",L0(J0))for(var g$=0;g$<J0.length;g$++)U1=J0[g$],x$=K4+w(U1,g$),P$+=f(U1,S0,Z1,x$,n1);else if(g$=Z(J0),typeof g$==="function")for(g$===J0.entries&&(t8||console.warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead."),t8=!0),J0=g$.call(J0),g$=0;!(U1=J0.next()).done;)U1=U1.value,x$=K4+w(U1,g$++),P$+=f(U1,S0,Z1,x$,n1);else if(x$==="object"){if(typeof J0.then==="function")return f(y(J0),S0,Z1,U1,n1);throw S0=String(J0),Error("Objects are not valid as a React child (found: "+(S0==="[object Object]"?"object with keys {"+Object.keys(J0).join(", ")+"}":S0)+"). If you meant to render a collection of children, use an array instead.")}return P$}function h(J0,S0,Z1){if(J0==null)return J0;var U1=[],n1=0;return f(J0,U1,"","",function(x$){return S0.call(Z1,x$,n1++)}),U1}function p(J0){if(J0._status===-1){var S0=J0._ioInfo;S0!=null&&(S0.start=S0.end=performance.now()),S0=J0._result;var Z1=S0();if(Z1.then(function(n1){if(J0._status===0||J0._status===-1){J0._status=1,J0._result=n1;var x$=J0._ioInfo;x$!=null&&(x$.end=performance.now()),Z1.status===void 0&&(Z1.status="fulfilled",Z1.value=n1)}},function(n1){if(J0._status===0||J0._status===-1){J0._status=2,J0._result=n1;var x$=J0._ioInfo;x$!=null&&(x$.end=performance.now()),Z1.status===void 0&&(Z1.status="rejected",Z1.reason=n1)}}),S0=J0._ioInfo,S0!=null){S0.value=Z1;var U1=Z1.displayName;typeof U1==="string"&&(S0.name=U1)}J0._status===-1&&(J0._status=0,J0._result=Z1)}if(J0._status===1)return S0=J0._result,S0===void 0&&console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
320
+ `)}else if(U.startsWith("d"))X6(G,"1")}var dT=31,HG0,qG0="Sma1lboy/rove",lT="skillHintSeen";var qF=d(()=>{b4();CQ();C4();HG0=[".agents/skills/rove/SKILL.md",".claude/skills/rove/SKILL.md",".agents/skills/kobe/SKILL.md",".claude/skills/kobe/SKILL.md"]});var Oh={};A$(Oh,{loadPluginEngines:()=>KG0});function KG0(){let $=[];try{for(let Z of o4().plugins){if(!Z.enabled)continue;try{let{manifest:J}=Q6(Z.root);for(let X of J.engines)if(kv(X.id,{displayName:X.name,defaultCommand:X.command,...X.processNames?{processNames:X.processNames}:{},screenManifest:{rules:X.rules}}))$.push(X.id)}catch{}}}catch{}return $}var jh=d(()=>{mJ();NZ();oO()});var yj=()=>{};var q1=jY((FG0,gj)=>{(function(){function $(J0,S0){Object.defineProperty(X.prototype,J0,{get:function(){console.warn("%s(...) is deprecated in plain JavaScript React classes. %s",S0[0],S0[1])}})}function Z(J0){if(J0===null||typeof J0!=="object")return null;return J0=D0&&J0[D0]||J0["@@iterator"],typeof J0==="function"?J0:null}function J(J0,S0){J0=(J0=J0.constructor)&&(J0.displayName||J0.name)||"ReactClass";var Z1=J0+"."+S0;u0[Z1]||(console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",S0,J0),u0[Z1]=!0)}function X(J0,S0,Z1){this.props=J0,this.context=S0,this.refs=W1,this.updater=Z1||j0}function z(){}function G(J0,S0,Z1){this.props=J0,this.context=S0,this.refs=W1,this.updater=Z1||j0}function W(){}function H(J0){return""+J0}function U(J0){try{H(J0);var S0=!1}catch(n1){S0=!0}if(S0){S0=console;var Z1=S0.error,U1=typeof Symbol==="function"&&Symbol.toStringTag&&J0[Symbol.toStringTag]||J0.constructor.name||"Object";return Z1.call(S0,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",U1),H(J0)}}function B(J0){if(J0==null)return null;if(typeof J0==="function")return J0.$$typeof===c0?null:J0.displayName||J0.name||null;if(typeof J0==="string")return J0;switch(J0){case i:return"Fragment";case n:return"Profiler";case l:return"StrictMode";case $0:return"Suspense";case O0:return"SuspenseList";case b0:return"Activity"}if(typeof J0==="object")switch(typeof J0.tag==="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),J0.$$typeof){case k:return"Portal";case Z0:return J0.displayName||"Context";case Y0:return(J0._context.displayName||"Context")+".Consumer";case a:var S0=J0.render;return J0=J0.displayName,J0||(J0=S0.displayName||S0.name||"",J0=J0!==""?"ForwardRef("+J0+")":"ForwardRef"),J0;case Q0:return S0=J0.displayName||null,S0!==null?S0:B(J0.type)||"Memo";case w0:S0=J0._payload,J0=J0._init;try{return B(J0(S0))}catch(Z1){}}return null}function M(J0){if(J0===i)return"<>";if(typeof J0==="object"&&J0!==null&&J0.$$typeof===w0)return"<...>";try{var S0=B(J0);return S0?"<"+S0+">":"<...>"}catch(Z1){return"<...>"}}function O(){var J0=X1.A;return J0===null?null:J0.getOwner()}function L(){return Error("react-stack-top-frame")}function j(J0){if(u1.call(J0,"key")){var S0=Object.getOwnPropertyDescriptor(J0,"key").get;if(S0&&S0.isReactWarning)return!1}return J0.key!==void 0}function A(J0,S0){function Z1(){B$||(B$=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",S0))}Z1.isReactWarning=!0,Object.defineProperty(J0,"key",{get:Z1,configurable:!0})}function C(){var J0=B(this.type);return s5[J0]||(s5[J0]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),J0=this.props.ref,J0!==void 0?J0:null}function _(J0,S0,Z1,U1,n1,x$){var P$=Z1.ref;return J0={$$typeof:W0,type:J0,key:S0,props:Z1,_owner:U1},(P$!==void 0?P$:null)!==null?Object.defineProperty(J0,"ref",{enumerable:!1,get:C}):Object.defineProperty(J0,"ref",{enumerable:!1,value:null}),J0._store={},Object.defineProperty(J0._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(J0,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(J0,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:n1}),Object.defineProperty(J0,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:x$}),Object.freeze&&(Object.freeze(J0.props),Object.freeze(J0)),J0}function b(J0,S0){return S0=_(J0.type,S0,J0.props,J0._owner,J0._debugStack,J0._debugTask),J0._store&&(S0._store.validated=J0._store.validated),S0}function E(J0){I(J0)?J0._store&&(J0._store.validated=1):typeof J0==="object"&&J0!==null&&J0.$$typeof===w0&&(J0._payload.status==="fulfilled"?I(J0._payload.value)&&J0._payload.value._store&&(J0._payload.value._store.validated=1):J0._store&&(J0._store.validated=1))}function I(J0){return typeof J0==="object"&&J0!==null&&J0.$$typeof===W0}function T(J0){var S0={"=":"=0",":":"=2"};return"$"+J0.replace(/[=:]/g,function(Z1){return S0[Z1]})}function w(J0,S0){return typeof J0==="object"&&J0!==null&&J0.key!=null?(U(J0.key),T(""+J0.key)):S0.toString(36)}function y(J0){switch(J0.status){case"fulfilled":return J0.value;case"rejected":throw J0.reason;default:switch(typeof J0.status==="string"?J0.then(W,W):(J0.status="pending",J0.then(function(S0){J0.status==="pending"&&(J0.status="fulfilled",J0.value=S0)},function(S0){J0.status==="pending"&&(J0.status="rejected",J0.reason=S0)})),J0.status){case"fulfilled":return J0.value;case"rejected":throw J0.reason}}throw J0}function f(J0,S0,Z1,U1,n1){var x$=typeof J0;if(x$==="undefined"||x$==="boolean")J0=null;var P$=!1;if(J0===null)P$=!0;else switch(x$){case"bigint":case"string":case"number":P$=!0;break;case"object":switch(J0.$$typeof){case W0:case k:P$=!0;break;case w0:return P$=J0._init,f(P$(J0._payload),S0,Z1,U1,n1)}}if(P$){P$=J0,n1=n1(P$);var K4=U1===""?"."+w(P$,0):U1;return L0(n1)?(Z1="",K4!=null&&(Z1=K4.replace(PX,"$&/")+"/"),f(n1,S0,Z1,"",function(y7){return y7})):n1!=null&&(I(n1)&&(n1.key!=null&&(P$&&P$.key===n1.key||U(n1.key)),Z1=b(n1,Z1+(n1.key==null||P$&&P$.key===n1.key?"":(""+n1.key).replace(PX,"$&/")+"/")+K4),U1!==""&&P$!=null&&I(P$)&&P$.key==null&&P$._store&&!P$._store.validated&&(Z1._store.validated=2),n1=Z1),S0.push(n1)),1}if(P$=0,K4=U1===""?".":U1+":",L0(J0))for(var g$=0;g$<J0.length;g$++)U1=J0[g$],x$=K4+w(U1,g$),P$+=f(U1,S0,Z1,x$,n1);else if(g$=Z(J0),typeof g$==="function")for(g$===J0.entries&&(t8||console.warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead."),t8=!0),J0=g$.call(J0),g$=0;!(U1=J0.next()).done;)U1=U1.value,x$=K4+w(U1,g$++),P$+=f(U1,S0,Z1,x$,n1);else if(x$==="object"){if(typeof J0.then==="function")return f(y(J0),S0,Z1,U1,n1);throw S0=String(J0),Error("Objects are not valid as a React child (found: "+(S0==="[object Object]"?"object with keys {"+Object.keys(J0).join(", ")+"}":S0)+"). If you meant to render a collection of children, use an array instead.")}return P$}function h(J0,S0,Z1){if(J0==null)return J0;var U1=[],n1=0;return f(J0,U1,"","",function(x$){return S0.call(Z1,x$,n1++)}),U1}function p(J0){if(J0._status===-1){var S0=J0._ioInfo;S0!=null&&(S0.start=S0.end=performance.now()),S0=J0._result;var Z1=S0();if(Z1.then(function(n1){if(J0._status===0||J0._status===-1){J0._status=1,J0._result=n1;var x$=J0._ioInfo;x$!=null&&(x$.end=performance.now()),Z1.status===void 0&&(Z1.status="fulfilled",Z1.value=n1)}},function(n1){if(J0._status===0||J0._status===-1){J0._status=2,J0._result=n1;var x$=J0._ioInfo;x$!=null&&(x$.end=performance.now()),Z1.status===void 0&&(Z1.status="rejected",Z1.reason=n1)}}),S0=J0._ioInfo,S0!=null){S0.value=Z1;var U1=Z1.displayName;typeof U1==="string"&&(S0.name=U1)}J0._status===-1&&(J0._status=0,J0._result=Z1)}if(J0._status===1)return S0=J0._result,S0===void 0&&console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
321
321
 
322
322
  Your code should look like:
323
323
  const MyComponent = lazy(() => import('./MyComponent'))
@@ -718,7 +718,7 @@ mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!)
718
718
  `:"")}function rn($,Z){for(let J of o4(Z).plugins){if(!J.enabled)continue;let X;try{X=Q6(J.root).manifest}catch{continue}for(let z of X.fileHandlers)try{if(new RegExp(z.pattern,"i").test($))return{qualifiedAction:lO(J.id,z.action)}}catch{}}return null}var XE=d(()=>{mJ();MZ();NZ()});import{closeSync as vU0,openSync as kU0,readFileSync as mU0,readSync as hU0,statSync as uU0}from"fs";function cU0($){if(!$)return null;let Z=$.trimEnd().split(`
719
719
  `);for(let J=Z.length-1;J>=0;J--){let X=Z[J]?.trim();if(!X)continue;let z;try{z=JSON.parse(X)}catch{continue}if(typeof z.at!=="number")continue;let G=typeof z.exitCode==="number"?z.exitCode:null,W=typeof z.spawnError==="string"?z.spawnError:void 0;return{at:z.at,label:typeof z.label==="string"?z.label:typeof z.kind==="string"?z.kind:"run",exitCode:G,ok:W===void 0&&G===0,...W?{spawnError:W}:{}}}return null}function dU0($,Z,J,X,z={}){let G=null,W=[];if(J!==null)try{let{manifest:H}=tK(J);G={actions:H.actions.length,events:H.events.length,panes:H.panes.length},W=mn(H.settings,z)}catch{G=null}return{id:Z.id,version:Z.version,enabled:Z.enabled,linked:Z.source.kind==="link",source:Z.source.kind==="link"?Z.root:Z.source.spec,declares:G,lastRun:cU0(X),settings:W,updateAvailable:$.has(Z.id)}}function sn($){let Z=Math.max(0,Math.floor($/1000));if(Z<60)return`${Z}s`;if(Z<3600)return`${Math.floor(Z/60)}m`;if(Z<86400)return`${Math.floor(Z/3600)}h`;return`${Math.floor(Z/86400)}d`}function pU0($){let Z;try{let J=uU0($).size,X=Math.min(J,lU0),z=Buffer.alloc(X);return Z=kU0($,"r"),hU0(Z,z,0,X,J-X),z.toString("utf8")}catch{return null}finally{if(Z!==void 0)vU0(Z)}}function nU0($){if(!$)return null;try{return mU0($,"utf8")}catch{return null}}function aV($){let Z=new Set(ln($));return o4($).plugins.map((J)=>dU0(Z,J,nU0(lH(J.root)),pU0(iH(J.id,$)),on(J.id,$)))}function tn($,Z,J,X){an($,{[Z]:J},X)}function en($,Z,J){let X=o4(J);LZ({plugins:X.plugins.map((z)=>z.id===$?{...z,enabled:Z}:z)},J)}var lU0=65536;var QE=d(()=>{mJ();JE();MZ();NZ();XE()});import{TextAttributes as $i}from"@opentui/core";function iU0($){let Z=[],J=0;for(let X of $)Z.push(J),J+=1+X.settings.length;return Z}function oU0($){let{theme:Z}=d0(),J=e0(),{setting:X}=$,z=X.type==="boolean"?oV(X.value)?J("settings.general.on"):J("settings.general.off"):X.value||J("settings.plugins.settingUnset");return R.jsxDEV("box",{flexDirection:"row",gap:1,paddingLeft:5,paddingRight:1,backgroundColor:$.cursor?Z.primary:void 0,onMouseUp:$.onActivate,children:[R.jsxDEV("text",{fg:$.cursor?Z.selectedListItemText:Z.text,wrapMode:"none",children:X.label},void 0,!1,void 0,this),R.jsxDEV("text",{fg:$.cursor?Z.selectedListItemText:X.defaulted?Z.textMuted:Z.accent,wrapMode:"none",children:z},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Zi($){let{theme:Z}=d0(),J=e0(),X=Date.now(),z=(W)=>$.level==="body"&&$.bodyRow===W,G=iU0($.plugins);return R.jsxDEV("box",{flexDirection:"column",gap:1,children:[R.jsxDEV("text",{fg:Z.text,attributes:$i.BOLD,children:J("settings.plugins.title")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"word",children:J("settings.plugins.hint")},void 0,!1,void 0,this),$.plugins.length===0?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"word",children:J("settings.plugins.empty")},void 0,!1,void 0,this):R.jsxDEV("box",{flexDirection:"column",gap:0,children:$.plugins.map((W,H)=>{let U=G[H]??0,B=z(U);return R.jsxDEV("box",{flexDirection:"column",gap:0,children:[R.jsxDEV("box",{flexDirection:"row",gap:1,paddingLeft:1,paddingRight:1,backgroundColor:B?Z.primary:void 0,onMouseUp:()=>{$.setLevel("body"),$.setBodyRow(U),$.toggle(W.id)},children:[R.jsxDEV("text",{fg:B?Z.selectedListItemText:W.enabled?Z.accent:Z.textMuted,attributes:$i.BOLD,wrapMode:"none",children:`${W.enabled?"[x]":"[ ]"} ${W.id}`},void 0,!1,void 0,this),R.jsxDEV("text",{fg:B?Z.selectedListItemText:Z.textMuted,wrapMode:"none",children:`v${W.version} ${W.linked?J("settings.plugins.sourceLink",{path:W.source}):J("settings.plugins.sourceGithub",{spec:W.source})}`},void 0,!1,void 0,this),W.updateAvailable?R.jsxDEV("text",{fg:Z.warning,wrapMode:"none",children:J("settings.plugins.updateAvailable")},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),R.jsxDEV("box",{flexDirection:"row",gap:1,paddingLeft:5,paddingRight:1,children:[R.jsxDEV("text",{fg:W.declares?Z.textMuted:Z.warning,wrapMode:"none",children:W.declares?J("settings.plugins.declares",{actions:String(W.declares.actions),events:String(W.declares.events),panes:String(W.declares.panes)}):J("settings.plugins.manifestUnreadable")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:W.lastRun?.ok===!1?Z.error:Z.textMuted,wrapMode:"none",children:W.lastRun?J("settings.plugins.lastRun",{label:W.lastRun.label,status:W.lastRun.ok?J("settings.plugins.runOk"):W.lastRun.spawnError?J("settings.plugins.runFailed"):J("settings.plugins.runExit",{code:String(W.lastRun.exitCode)}),ago:sn(X-W.lastRun.at)}):J("settings.plugins.neverRun")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W.settings.map((M,O)=>R.jsxDEV(oU0,{setting:M,cursor:z(U+1+O),onActivate:()=>{$.setLevel("body"),$.setBodyRow(U+1+O),$.editSetting(W.id,M.key)}},M.key,!1,void 0,this))]},W.id,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Ji=d(async()=>{X$();QE();a0();await Z$()});function tV($){return`engineProtocol.${$}`}function rV($){if(p5($))return $;let Z=x5(tV($))?.trim();return Z&&sV.includes(Z)?Z:void 0}function zE($){return p5($)||x2().includes($)}function aU0(){return[...Z9,...x2()]}function rU0($){let J=x5(H8($))?.trim()||oQ($).join(" ");return{id:$,name:y5($),command:J,protocol:rV($)??WG,builtin:p5($)}}function Xi(){return aU0().map(rU0)}function eQ($){let Z=$?.trim();if(!Z)return WG;if(zE(Z))return rV(Z)??WG;let J=rj(Z);if(J)return J;let X=Sq(Z)[0];if(X)for(let z of x2()){let G=x5(H8(z))?.trim();if(G&&Sq(G)[0]===X)return rV(z)??WG}return WG}function F2($){let Z=$.command?.trim();if(!Z)return Iq($.vendor,$.effort);let J=(zE(Z)?rV(Z):void 0)??eQ(Z),X=zE(Z)?sU0(Z):(()=>{let z=Sq(Z);return z.length>0?z:null})();if(!X)return Iq($.vendor,$.effort);return kI(mI(X,J,$.effort),J)}function sU0($){let Z=x5(H8($))?.trim();if(Z){let J=Sq(Z);if(J.length>0)return J}return oQ($)}var WG="generic",sV;var N9=d(()=>{C4();P7();DZ();L7();sV=Z9});import{TextAttributes as tU0}from"@opentui/core";function eU0($){let Z=o$(),{theme:J}=d0(),X=e0(),z=M7(),[G,W]=Qi.useState($.currentTitle);function H(){let U=G.trim();if(vF(U)&&!$.allowEmpty)return;$.onSubmit(U),Z.clear()}return R.jsxDEV("box",{paddingLeft:z,paddingRight:z,gap:1,children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:[R.jsxDEV("text",{attributes:tU0.BOLD,fg:J.text,children:$.dialogTitle??X("common.rename.defaultTitle")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:J.textMuted,onMouseUp:()=>$.onCancel(),children:"esc"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{gap:0,children:[R.jsxDEV("text",{fg:J.accent,children:$.fieldLabel??X("common.rename.defaultFieldLabel")},void 0,!1,void 0,this),R.jsxDEV("input",{value:G,placeholder:$.placeholder??$.currentTitle,focused:!0,onInput:(U)=>W(r5(U)),onSubmit:()=>H()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{paddingBottom:1,children:R.jsxDEV("text",{fg:J.textMuted,children:X("common.rename.footerHint",{submitLabel:$.submitLabel??X("common.rename.defaultSubmitLabel")})},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function $B0($,Z,J={}){return k2($,(X)=>R.jsxDEV(eU0,{currentTitle:Z,dialogTitle:J.dialogTitle,fieldLabel:J.fieldLabel,submitLabel:J.submitLabel,placeholder:J.placeholder,allowEmpty:J.allowEmpty,onSubmit:(z)=>X(z),onCancel:()=>X(void 0)},void 0,!1,void 0,this))}var Qi,g5;var QX=d(async()=>{p8();X$();a0();await J$([Z$(),C5()]);Qi=z1(q1(),1);g5={show:$B0}});function Yi($,Z,J){function X(){let E=$.get("customEngineIds",[]);return Array.isArray(E)?E.filter((I)=>typeof I==="string"&&I.trim().length>0):[]}function z(){return[...m8,...X()]}function G(E){let I=$.get(H8(E),"");return typeof I==="string"?I.trim():""}function W(E){return G(E)||oQ(E).join(" ")}function H(E){return p5(E)&&G(E).length===0&&!B(E)}function U(E){let I=$.get(F9(E),"");return typeof I==="string"?I.trim():""}function B(E){return U(E).length>0}function M(E){return U(E)||F$(E).displayName}let[O,L]=zi.useState(()=>EO()??v4);function j(E){KR(E),$.set("defaultVendor",E),L(E)}async function A(E){let I=await g5.show(Z,W(E),{dialogTitle:`${M(E)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(I===void 0)return;$.set(H8(E),I.trim())}async function C(E){let I=await g5.show(Z,M(E),{dialogTitle:`${M(E)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(I===void 0)return;$.set(F9(E),I.trim())}function _(E){if($.set(H8(E),""),$.set(F9(E),""),!p5(E))$.set(tV(E),""),$.set("customEngineIds",X().filter((I)=>I!==E)),J(z().length)}async function b(){let E=await g5.show(Z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(E===void 0)return;let I=E.trim().toLowerCase();if(!I||p5(I)||X().includes(I))return;let T=await g5.show(Z,"",{dialogTitle:`Add engine \xB7 ${I}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(T===void 0)return;let w=await g5.show(Z,"",{dialogTitle:`Add engine \xB7 ${I} \u2014 protocol (blank = none)`,fieldLabel:"protocol",submitLabel:"next",allowEmpty:!0,placeholder:sV.join(" / ")}),y=await g5.show(Z,I,{dialogTitle:`Add engine \xB7 ${I}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if($.set("customEngineIds",[...X(),I]),T.trim())$.set(H8(I),T.trim());let f=w?.trim().toLowerCase()??"";if(f&&sV.includes(f))$.set(tV(I),f);let h=y?.trim()??"";$.set(F9(I),h&&h!==I?h:Tp(I))}return{engineList:z,engineName:M,engineCommandText:W,engineIsDefault:H,defaultEngine:O,setEngineDefault:j,editEngine:A,renameEngine:C,resetEngine:_,addEngineFlow:b}}var zi;var Gi=d(async()=>{N9();L7();F7();yJ();EF();U2();P7();await QX();zi=z1(q1(),1)});function Wi($){let[Z,J]=O9.useState(null),[X,z]=O9.useState(null),[G,W]=O9.useState(null),[H,U]=O9.useState(null),B=O9.useRef(!1);return O9.useEffect(()=>{if($!=="accounts"||B.current)return;B.current=!0,aH().then(J),rH().then(z),sH().then(W),Zj().then(U)},[$]),{claude:Z,codex:X,copilot:G,kimi:H}}function Hi($,Z){let[J,X]=O9.useState([]),z=e0();O9.useEffect(()=>{if($!=="plugins")return;X(aV())},[$]);function G(W,H,U){try{tn(W,H,U)}catch{}X(aV())}return{rows:J,toggle:(W)=>{let H=J.find((U)=>U.id===W);if(!H)return;try{en(W,!H.enabled)}catch{}X(aV())},editSetting:async(W,H)=>{let U=J.find((O)=>O.id===W)?.settings.find((O)=>O.key===H);if(!U)return;if(U.type==="enum"){G(W,H,hn(U.options,U.value));return}if(U.type==="boolean"){G(W,H,un(U));return}let B=await g5.show(Z,U.value,{dialogTitle:U.label,fieldLabel:H,submitLabel:"save",allowEmpty:!0,placeholder:U.defaultValue});if(B===void 0)return;if(U.type!=="number"){G(W,H,B.trim());return}let M=cn(B);if(M===null){await O4.show(Z,z("settings.plugins.settingInvalidTitle"),z("settings.plugins.settingInvalidBody",{label:U.label}),"cancel");return}G(W,H,M)}}}var O9;var qi=d(async()=>{cJ();X$();QE();await J$([TZ(),QX()]);O9=z1(q1(),1)});var YE="experimental.archivedHistoryPreview";var Ui=d(()=>{w2()});function $_($,Z){if(typeof $==="string"&&hF.includes($))return $;if(Z===!0)return"multipleOnly";if(Z===!1)return"always";return"never"}function Bi($,Z){if($==="never")return!1;if($==="multipleOnly")return Z>=2;return!0}var mF="chat.tabStrip.mode",hF,eV="chat.tabStrip.hideSingle";var GE=d(()=>{hF=["always","multipleOnly","never"]});var WE="zen.keepTasks",xq="zen.active";var HE=d(()=>{w2()});function fq($){return HG.includes($)?$:"auto"}var HG,Ki,zX="editor.kind",$z="editor.customCommand",Z_="auto";var J_=d(()=>{HG=["auto","vim","nvim","nano","emacs","custom"],Ki=["nvim","vim","emacs","nano"]});import{accessSync as ZB0,constants as JB0,mkdirSync as XB0}from"fs";function Fi($,Z){let J=e0();function X(){return $.get("notifications.toast.enabled",!0)!==!1}function z(){return $.get("notifications.sound.enabled",!0)!==!1}function G(){$.set("notifications.toast.enabled",!X())}function W(){$.set("notifications.sound.enabled",!z())}function H(){return $.get("notifications.crossTask.enabled",!0)!==!1}function U(){$.set("notifications.crossTask.enabled",!H())}function B(){return AV($.get(SF))}function M(n){$.set(SF,n)}function O(){return $.get(xq,!1)===!0}function L(){$.set(xq,!O())}function j(){return $.get(WE,!0)!==!1}function A(){$.set(WE,!j())}function C(){return $_($.get(mF,void 0),$.get(eV,void 0))}function _(){let n=hF[(hF.indexOf(C())+1)%hF.length];$.set(mF,n)}function b(){return $.get("experimental.remoteProjects",!1)===!0}function E(){$.set("experimental.remoteProjects",!b())}function I(){return $.get(XG,!1)===!0}function T(){$.set(XG,!I())}function w(){return $.get(QG,!1)===!0}function y(){$.set(QG,!w())}function f(){return $.get(YE,!1)===!0}function h(){$.set(YE,!f())}function p(){return fq($.get(zX,Z_))}function m(){let n=HG.indexOf(p()),Y0=HG[(n+1)%HG.length];if(Y0)$.set(zX,Y0)}function t(){let n=$.get($z,"");return typeof n==="string"?n:""}async function s(){let n=await g5.show(Z,t(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(n===void 0)return;let Y0=n.trim();if($.set($z,Y0),Y0)$.set(zX,"custom")}function G0(){return HV($.get(GV,WV))}async function U0(){let n=await g5.show(Z,String(G0()),{dialogTitle:J("settings.general.scrollbackTitle"),fieldLabel:J("settings.general.scrollbackField"),submitLabel:"save",placeholder:String(WV)});if(n===void 0)return;let Y0=Number.parseInt(n.trim(),10);if(!Number.isFinite(Y0)){await O4.show(Z,J("settings.general.scrollbackInvalidTitle"),J("settings.general.scrollbackInvalidBody"),"cancel");return}$.set(GV,HV(Y0))}function F0(){let n=$.get(SQ,"");return typeof n==="string"?n:""}let B0=()=>fb(F0());function W0(){let n=B0();if(n==="default")return J("settings.general.worktreeKindDefault");if(n==="nextToProject")return J("settings.general.worktreeKindNext");return J("settings.general.worktreeKindCustom")}function k(){let n=$.get(RO,"");return(typeof n==="string"?n.trim():"")||(B0()==="custom"?F0().trim():"")}function i(){let n=B0();if(n==="default")$.set(SQ,$R);else if(n==="nextToProject")$.set(SQ,k());else $.set(RO,F0().trim()),$.set(SQ,"")}async function l(){let n=await g5.show(Z,k(),{dialogTitle:J("settings.general.worktreeBaseTitle"),fieldLabel:J("settings.general.worktreeBaseField"),submitLabel:"save",placeholder:`${wJ}/../worktrees`,allowEmpty:!0});if(n===void 0)return;let Y0=n.trim();if(Y0.includes(wJ)){if(!ZR(Y0)){await O4.show(Z,"Can't use that worktree location",`${wJ} only expands as the leading path segment (e.g. ${wJ}/../kobe-worktrees). Keeping the previous setting.`,"cancel");return}}else if(Y0){let Z0=JR(Y0)??Y0;try{XB0(Z0,{recursive:!0}),ZB0(Z0,JB0.W_OK)}catch(a){await O4.show(Z,"Can't use that worktree location",`${Z0} isn't usable (${M1(a)}). Keeping the previous setting \u2014 pick a writable directory.`,"cancel");return}}if($.set(RO,Y0),Y0)$.set(SQ,Y0);else if(B0()==="custom")$.set(SQ,"")}return{toastEnabled:X,toggleToast:G,soundEnabled:z,toggleSound:W,crossTaskEnabled:H,toggleCrossTask:U,splitStyle:B,selectSplitStyle:M,zenDefaultOn:O,toggleZenDefaultOn:L,zenKeepsTasks:j,toggleZenKeepsTasks:A,remoteProjectsEnabled:b,toggleRemoteProjects:E,autoStatusOn:I,toggleAutoStatus:T,dispatcherOn:w,toggleDispatcher:y,archivedHistoryOn:f,toggleArchivedHistory:h,editorKind:p,cycleEditorKind:m,editorCustomCommand:t,editEditorCustom:s,scrollbackRows:G0,editScrollbackRows:U0,tabStripMode:C,cycleTabStripMode:_,worktreeKind:B0,worktreeKindLabel:W0,worktreeCustomPath:k,cycleWorktreeBase:i,editWorktreeCustom:l}}var Mi=d(async()=>{Ui();bF();mV();hS();IF();GE();XR();HE();J_();X$();await J$([TZ(),QX()])});import{TextAttributes as QB0}from"@opentui/core";function X_($){let Z=o$(),J=d0(),X=N4(),{theme:z}=J,G=e0(),W=M7(),[H,U]=n8.useState("sidebar"),[B,M]=n8.useState("general"),[O,L]=n8.useState(0),[j,A]=n8.useState(0),[C,_]=n8.useState(""),[b,E]=n8.useState(""),[I,T]=n8.useState(""),w=n8.useMemo(()=>J.all().slice().sort(),[J]),y=yF($.orchestrator),f=Fi($.kv,Z),h=Yi($.kv,Z,(j0)=>A((l0)=>Math.max(0,Math.min(l0,j0)))),p=$.orchestrator instanceof iJ?$.orchestrator:null,m=J4(p?p.usageSnapshotSignal():zB0),t=Wi(B),s=Hi(B,Z);function G0(){return Rp(B,{themeNames:w,focusAccentSlots:lQ,engineList:h.engineList(),plugins:s.rows.map((j0)=>({id:j0.id,settingKeys:j0.settings.map((l0)=>l0.key)})),hasDaemon:y})}function U0(){return G0().length}function F0(j0){if(J.selected===j0)return;if(!J.set(j0))return;$.kv.set("activeTheme",j0),$.onVisualPrefsChange?.()}function B0(j0){if(CV()===j0)return;Aq(j0),$.kv.set(EV,j0),$.onVisualPrefsChange?.()}function W0(){let j0=!J.transparentBackground;J.setTransparentBackground(j0),$.kv.set("transparentBackground",j0),$.onVisualPrefsChange?.()}function k(j0){if(J.focusAccent===j0)return;J.setFocusAccent(j0),$.kv.set("focusAccent",j0),$.onVisualPrefsChange?.()}function i(){if(B!=="engines"||H!=="body")return null;let j0=SI(G0(),j);return j0?.kind==="engine"?j0.vendor:null}async function l(){T("submitting...");try{let j0=Pq({title:C,body:b});T(`sent: ${j0.url}`),_(""),E(""),A(0)}catch(j0){T(`error: ${M1(j0)}`)}}let n=B==="feedback"&&H==="body";function Y0(j0){let l0=j+j0;if(l0<0||l0>2){U("sidebar");return}A(l0)}function Z0(){if(H!=="sidebar"||U0()===0)return;U("body"),A(0)}function a(j0){if(H==="sidebar"){let W1=(O+j0+ZG.length)%ZG.length;L(W1);let R1=ZG[W1];if(R1)M(R1.id),A(0);return}let l0=U0();if(l0===0)return;A((j+j0+l0)%l0)}function $0(j0){M(j0),L(ZG.findIndex((l0)=>l0.id===j0)),A(0),U("sidebar")}let O0={theme:(j0)=>F0(j0.name),language:(j0)=>B0(j0.locale),transparent:()=>W0(),focusAccent:(j0)=>k(j0.slot),toast:()=>f.toggleToast(),sound:()=>f.toggleSound(),crossTask:()=>f.toggleCrossTask(),keyHints:()=>IV($.kv),splitStyle:(j0)=>f.selectSplitStyle(j0.style),zenDefaultOn:()=>f.toggleZenDefaultOn(),zenKeepTasks:()=>f.toggleZenKeepsTasks(),editorKind:()=>f.cycleEditorKind(),editorCustom:()=>void f.editEditorCustom(),worktreeBase:()=>f.cycleWorktreeBase(),worktreeCustom:()=>void f.editWorktreeCustom(),scrollbackRows:()=>void f.editScrollbackRows(),tabStripHideSingle:()=>f.cycleTabStripMode(),engine:(j0)=>void h.editEngine(j0.vendor),engineAdd:()=>void h.addEngineFlow(),pluginToggle:(j0)=>s.toggle(j0.pluginId),pluginSetting:(j0)=>void s.editSetting(j0.pluginId,j0.key),feedbackTitle:()=>A(0),feedbackBody:()=>A(1),feedbackSend:()=>void l(),devReset:()=>void gI(Z,$.kv,X),devRestartDaemon:()=>void bI(Z,$.orchestrator,X),devRemoteProjects:()=>f.toggleRemoteProjects(),devAutoStatus:()=>f.toggleAutoStatus(),devDispatcher:()=>f.toggleDispatcher(),devArchivedHistory:()=>f.toggleArchivedHistory()};function Q0(){let j0=SI(G0(),j);if(!j0)return;O0[j0.kind](j0)}b1(()=>({enabled:(!$.standalone||Z.stack.length===0)&&!n,bindings:[{key:"down",cmd:()=>a(1)},{key:"up",cmd:()=>a(-1)},{key:"j",cmd:()=>a(1)},{key:"k",cmd:()=>a(-1)},{key:"tab",cmd:()=>a(1)},{key:"right",cmd:Z0},{key:"l",cmd:Z0},{key:"left",cmd:()=>U("sidebar")},{key:"h",cmd:()=>U("sidebar")},{key:"return",cmd:()=>{if(H==="sidebar"){Z0();return}Q0()}},{key:"t",cmd:W0},{key:"r",cmd:()=>{let j0=i();if(j0)h.renameEngine(j0)}},{key:"x",cmd:()=>{let j0=i();if(j0)h.resetEngine(j0)}},{key:"d",cmd:()=>{let j0=i();if(j0)h.setEngineDefault(j0)}}]})),b1(()=>({enabled:n,bindings:[{key:"tab",cmd:()=>Y0(1)},{key:"shift+tab",cmd:()=>Y0(-1)}]})),b1(()=>({enabled:n&&j===2,bindings:[{key:"return",cmd:()=>void l()}]}));let w0=n8.useRef(null),b0=n8.useCallback((j0)=>{let l0=w0.current;if(!l0||!j0||l0.viewport.height<=0)return;l0.scrollChildIntoView(j0.id)},[]),D0={level:H,bodyRow:j,setLevel:U,setBodyRow:A},u0=R.jsxDEV("box",{paddingLeft:W,paddingRight:W,paddingBottom:1,gap:1,children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:[R.jsxDEV("text",{attributes:QB0.BOLD,fg:z.text,children:G("settings.title")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:z.textMuted,onMouseUp:()=>$.onClose(),children:G("settings.esc")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{flexDirection:"row",gap:2,children:[R.jsxDEV(qn,{level:H,cursor:O,switchSection:$0},void 0,!1,void 0,this),R.jsxDEV("box",{flexGrow:1,flexShrink:1,flexDirection:"column",gap:1,children:[B==="general"?R.jsxDEV(Un,{...D0,prefs:f,themeNames:w,selectTheme:F0,currentLocale:CV(),selectLanguage:B0,toggleTransparent:W0,selectFocusAccent:k,usage:m},void 0,!1,void 0,this):null,B==="engines"?R.jsxDEV(op,{...D0,vendors:h.engineList(),isCustom:(j0)=>!p5(j0),displayName:h.engineName,commandText:h.engineCommandText,isDefault:h.engineIsDefault,isDefaultEngine:(j0)=>h.defaultEngine===j0,editEngine:(j0)=>void h.editEngine(j0),onAddEngine:()=>void h.addEngineFlow()},void 0,!1,void 0,this):null,B==="accounts"?R.jsxDEV(ap,{claudeStatus:t.claude,codexStatus:t.codex,copilotStatus:t.copilot,kimiStatus:t.kimi},void 0,!1,void 0,this):null,B==="plugins"?R.jsxDEV(Zi,{...D0,plugins:s.rows,toggle:s.toggle,editSetting:(j0,l0)=>void s.editSetting(j0,l0)},void 0,!1,void 0,this):null,B==="keys"?R.jsxDEV(vn,{},void 0,!1,void 0,this):null,B==="feedback"?R.jsxDEV(gn,{...D0,title:C,setTitle:(j0)=>{_(j0),T("")},body:b,setBody:(j0)=>{E(j0),T("")},status:I,onTitleSubmit:()=>A(1),submit:()=>void l()},void 0,!1,void 0,this):null,B==="dev"?R.jsxDEV(bn,{...D0,prefs:f,hasDaemon:y,confirmReset:()=>void gI(Z,$.kv,X),confirmRestartDaemon:()=>void bI(Z,$.orchestrator,X)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{paddingTop:0,children:R.jsxDEV("text",{fg:z.textMuted,children:n?G("settings.nav.feedback"):G("settings.nav.default")},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(!$.standalone)return R.jsxDEV(gV.Provider,{value:b0,children:u0},void 0,!1,void 0,this);return R.jsxDEV(gV.Provider,{value:b0,children:R.jsxDEV("scrollbox",{ref:(j0)=>{w0.current=j0},flexGrow:1,verticalScrollbarOptions:{trackOptions:{foregroundColor:"transparent"}},children:u0},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var n8,zB0;var Li=d(async()=>{LF();UZ();TF();EF();fF();II();P7();X$();U9();a0();await J$([k4(),Z$(),D4(),C5(),np(),bV(),rp(),Bn(),kn(),Ji(),Gi(),qi(),Mi()]);n8=z1(q1(),1),zB0=n$(null);X_.show=($,Z,J)=>{let X=!1;return new Promise((z)=>{$.replace(()=>R.jsxDEV(X_,{kv:Z,orchestrator:J,onVisualPrefsChange:()=>{X=!0},onClose:()=>z({visualPrefsChanged:X})},void 0,!1,void 0,this),()=>z({visualPrefsChanged:X}))})}});function Oi($,Z){return`${$}:${Z}`}function ji($,Z){let J=Oi(Z.taskId,Z.tabId),X=$.get(J);if(X==="needs_input"||X==="error")return $;let z=new Map($);return z.set(J,Z.kind),z}function Vi($,Z,J){let X=Oi(Z,J);if(!$.has(X))return $;let z=new Map($);return z.delete(X),z}function _i($,Z){return $==="error"||Z}function Ci($){if($==="permission_needed")return"needs_input";if($==="error"||$==="rate_limited")return"error";if($==="turn_complete")return"done";return null}function Di($){if($==="done")return"done";if($==="error")return"error";if($==="needs_input")return"needs_input";return null}function Q_($,Z,J,X){if($===null)return[];let z=[];for(let[G,W]of Z){if(G===J)continue;if($.get(G)===W)continue;let H=X(W);if(H)z.push({key:G,kind:H})}return z}function YB0($){let Z="",J=0;for(let X=0;X<$.length;X++){let z=$.charCodeAt(X);if(z>31&&(z<127||z>159))continue;Z+=`${$.slice(J,X)} `,J=X+1}return J===0?$:Z+$.slice(J)}function Ai($){return`\x1B]9;${YB0($)}\x07`}var Ni=4500;var z_="../pulse-n3cq1btw.wav";var Pi=()=>{};import{existsSync as WB0,mkdirSync as HB0}from"fs";import{tmpdir as qB0}from"os";import{basename as UB0,delimiter as BB0,isAbsolute as KB0,join as qE,resolve as FB0}from"path";function LB0($,Z,J){if($==="ffplay")return[$,"-autoexit","-nodisp","-af",`volume=${J}`,Z];if($==="mpv")return[$,"--no-video","--audio-display=no","--volume",String(Math.round(J*100)),Z];if($==="mpg123"||$==="mpg321")return[$,"-g",String(Math.round(J*100)),Z];if($==="mplayer")return[$,"-vo","null","-volume",String(Math.round(J*100)),Z];if($==="afplay"||$==="omxplayer"||$==="aplay"||$==="cmdmp3")return[$,Z];if($==="play")return[$,"-v",String(J),Z];if($==="cvlc")return[$,`--gain=${J}`,"--play-and-exit",Z];return[$,"-c",`(New-Object Media.SoundPlayer '${Z.replace(/'/g,"''")}').PlaySync()`]}function NB0($,Z=BB0){return $.split(Z).filter(Boolean)}function OB0(){if(Y_!==void 0)return Y_;let $=NB0(process.env.PATH??"");return Y_=MB0.find((Z)=>$.some((J)=>WB0(qE(J,Z))))??null,Y_}async function jB0(){return Si??=(async()=>{HB0(Ti,{recursive:!0});let $=qE(Ti,UB0(Ri)),Z=Bun.file($);if(await Z.exists())return $;return await Bun.write(Z,Bun.file(Ri)),$})(),Si}function Ii($=0.4){let Z=OB0();if(!Z)return;jB0().then((J)=>{try{Bun.spawn(LB0(Z,J,$),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var Ri,Ti,MB0,Y_,Si;var Ei=d(()=>{Pi();Ri=KB0(z_)?z_:FB0(import.meta.dir,z_),Ti=qE(qB0(),"kobe-sfx"),MB0=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function xi($){let[Z,J]=x7.useState([]),[X,z]=x7.useState(new Map),G=x7.useMemo(()=>L4(),[]),W=x7.useRef(0),H=x7.useRef(new Set);x7.useEffect(()=>()=>{for(let L of H.current)clearTimeout(L);H.current.clear()},[]);let U=x7.useCallback((L)=>{J((j)=>j.filter((A)=>A.id!==L))},[]),B=x7.useCallback((L)=>{if(z((A)=>ji(A,L)),G["notifications.sound.enabled"]!==!1){try{process.stdout.write(`\x07${Ai(`Rove \u2014 ${L.title}`)}`)}catch{}Ii()}let j=G["notifications.toast.enabled"]!==!1;if(_i(L.kind,j)){let A=++W.current;J((_)=>[..._,{id:A,...L}]);let C=setTimeout(()=>{H.current.delete(C),U(A)},Ni);H.current.add(C)}},[G,U]),M=x7.useCallback((L,j)=>{z((A)=>Vi(A,L,j))},[]),O=x7.useMemo(()=>({toasts:Z,unread:X,notify:B,dismiss:U,markRead:M}),[Z,X,B,U,M]);return R.jsxDEV(wi.Provider,{value:O,children:$.children},void 0,!1,void 0,this)}function Zz(){let $=x7.useContext(wi);if(!$)throw Error("useNotifications must be used within a NotificationsProvider");return $}var x7,wi;var yq=d(()=>{w2();Ei();a0();x7=z1(q1(),1),wi=x7.createContext(null)});import{TextAttributes as fi}from"@opentui/core";function DB0($){return($.body?2:1)+1}function gi(){let{theme:$}=d0(),Z=f5(),J=Zz();if(J.toasts.length===0)return null;let X=J.toasts.slice(-VB0),z=X.reduce((H,U)=>H+DB0(U),0),G=Math.max(0,Z.width-yi-_B0),W=Math.max(0,Z.height-CB0-z);return R.jsxDEV("box",{position:"absolute",zIndex:2500,left:G,top:W,width:yi,flexDirection:"column",gap:1,children:X.map((H)=>{let U=H.kind==="needs_input"?$.warning:H.kind==="error"?$.error:$.success,B=H.kind==="needs_input"?"?":H.kind==="error"?"\u2715":"\u2713";return R.jsxDEV("box",{flexDirection:"row",backgroundColor:$.backgroundElement,onMouseUp:()=>J.dismiss(H.id),children:[R.jsxDEV("box",{flexDirection:"column",flexShrink:0,children:[R.jsxDEV("text",{fg:U,wrapMode:"none",children:"\u258C"},void 0,!1,void 0,this),H.body?R.jsxDEV("text",{fg:U,wrapMode:"none",children:"\u258C"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),R.jsxDEV("box",{flexDirection:"column",flexBasis:0,flexGrow:1,flexShrink:1,paddingLeft:1,paddingRight:1,children:[R.jsxDEV("box",{flexDirection:"row",children:[R.jsxDEV("text",{fg:U,attributes:fi.BOLD,wrapMode:"none",flexShrink:0,children:`${B} `},void 0,!1,void 0,this),R.jsxDEV("text",{fg:$.text,attributes:fi.BOLD,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:H.title},void 0,!1,void 0,this)]},void 0,!0,void 0,this),H.body?R.jsxDEV("box",{flexDirection:"row",paddingLeft:2,children:R.jsxDEV("text",{fg:$.textMuted,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:H.body},void 0,!1,void 0,this)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},H.id,!0,void 0,this)})},void 0,!1,void 0,this)}var VB0=3,yi=44,_B0=2,CB0=2;var bi=d(async()=>{yq();a0();await J$([k4(),Z$()])});function vi($){let[Z,J]=H6.useState($.initial??"sidebar"),X=N4(),z=V1(Z),G=H6.useCallback((U)=>{if(z.current===U)return;let B=X?.currentFocusedRenderable;if(B&&!B.isDestroyed)try{B.blur()}catch{}J(U)},[X]),W=H6.useCallback((U)=>{let M=(G_.indexOf(z.current)+U+G_.length)%G_.length;G(G_[M])},[G]),H=H6.useMemo(()=>({focused:Z,is:(U)=>Z===U,setFocused:G,cycle:W}),[Z,G,W]);return R.jsxDEV(UE.Provider,{value:H,children:$.children},void 0,!1,void 0,this)}function W_(){let $=H6.useContext(UE);if(!$)throw Error("useFocus: must be called inside <FocusProvider>. See src/tui-react/context/focus.tsx.");return $}function ki(){return H6.useContext(UE)}var H6,G_,UE;var uF=d(async()=>{w7();a0();await k4();H6=z1(q1(),1),G_=["sidebar","workspace","files","terminal"],UE=H6.createContext(null)});async function mi($={}){let Z=$.logTag??"orch-connect",J=$.connect??RQ,X=null;try{let z=await J();if(!z)return TJ(Z,"no daemon running \u2014 caller degrades"),null;return X=new iJ(z,{...$.orchestratorOptions,channels:$.channels}),await X.init(),X}catch(z){return M4(Z,z),X?.dispose(),null}}var hi=d(()=>{SJ();I2();LF()});function H_($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function q_($){if(!H_($))return{ok:!1,reason:"theme must be a JSON object at the top level"};let Z=$;if(!("theme"in Z))return{ok:!1,reason:"missing required key `theme`"};let J=Z.theme;if(!H_(J))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in Z&&Z.defs!==void 0){if(!H_(Z.defs))return{ok:!1,reason:"`defs` must be an object map"};for(let[X,z]of Object.entries(Z.defs))if(typeof z!=="string")return{ok:!1,reason:`defs.${X} must be a string (hex like "#abc" or a ref name)`}}for(let[X,z]of Object.entries(J)){if(typeof z==="string")continue;if(!H_(z))return{ok:!1,reason:`theme.${X} must be a string or a { dark, light } object (got ${z===null?"null":Array.isArray(z)?"array":typeof z})`};let G=z;if(typeof G.dark!=="string")return{ok:!1,reason:`theme.${X}.dark must be a string`};if(typeof G.light!=="string")return{ok:!1,reason:`theme.${X}.light must be a string`}}if("$schema"in Z&&Z.$schema!==void 0&&typeof Z.$schema!=="string")return{ok:!1,reason:"`$schema` must be a string when present"};return{ok:!0,theme:Z}}var BE=()=>{};import{readFileSync as AB0,readdirSync as PB0}from"fs";import{join as ui}from"path";function gq(){return ui(K7(),"themes")}function KE(){let $=gq(),Z;try{Z=PB0($)}catch{return[]}let J=[];for(let X of Z){if(!X.endsWith(".json"))continue;let z=ui($,X),G;try{let U=AB0(z,"utf8");G=JSON.parse(U)}catch(U){let B=M1(U);console.warn(`[rove] skipping user theme ${z}: invalid JSON \u2014 ${B}`);continue}let W=q_(G);if(!W.ok){console.warn(`[rove] skipping user theme ${z}: ${W.reason}`);continue}let H=X.slice(0,-5);J.push({name:H,theme:W.theme})}return J}var FE=d(()=>{V5();BE()});function ME($,Z){if(typeof Z.theme==="string"&&Z.theme.length>0&&Z.theme!==$.selectedTheme()){if(!$.hasTheme(Z.theme))$.reloadUserThemes();if($.hasTheme(Z.theme))$.setTheme(Z.theme)}if(typeof Z.transparentBackground==="boolean"&&Z.transparentBackground!==$.transparentBackground())$.setTransparentBackground(Z.transparentBackground);if(Z.focusAccent===null||typeof Z.focusAccent==="string"){let J=TB0(Z.focusAccent);if(J&&J!==$.focusAccent())$.setFocusAccent(J)}}function TB0($){if($===null)return"primary";return RB0.includes($)?$:null}var RB0;var ci=d(()=>{RB0=["primary","success","info"]});function IB0($,Z,J=di,X=SB0){let z=$-J;if(z<X)return null;let G=(W)=>Math.round(W/1048576);return`event loop stalled ~${z}ms \u2014 rss=${G(Z.rss)}MB heapUsed=${G(Z.heapUsed)}MB`}function li(){let $=Date.now(),Z=setInterval(()=>{let J=Date.now(),X=J-$;$=J;let z=IB0(X,process.memoryUsage());if(z)TJ("stall",z)},di);return Z.unref?.(),()=>clearInterval(Z)}var di=1000,SB0=2000;var pi=d(()=>{SJ()});function ni($){let Z={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return $?{...Z,onDestroy:$}:Z}function ii($,Z){let J={backgroundColor:"transparent",exitOnCtrlC:!1,screenMode:"split-footer",footerHeight:$,useKittyKeyboard:{}};return Z?{...J,onDestroy:Z}:J}function oi($){process.on("exit",()=>$.destroy())}function ai(){let $=!1,Z=()=>{if($)return;$=!0,setTimeout(()=>process.exit(0),5000)};for(let J of["SIGHUP","SIGTERM","SIGINT"])process.on(J,Z)}function ri($=5000){let Z=setInterval(()=>{if(process.ppid===1)process.exit(0)},$);return Z.unref?.(),()=>clearInterval(Z)}class ti{owner=null;anchor=null;claim($,Z){this.owner=$,this.anchor={x:Math.max(0,Math.trunc(Z.x)),y:Math.max(0,Math.trunc(Z.y))}}release($){if(this.owner!==$)return!1;return this.owner=null,this.anchor=null,!0}current(){return this.anchor}}class ei{controller;pending=Buffer.alloc(0);frame=Buffer.alloc(0);constructor($){this.controller=$}push($){let Z=this.pending.length>0?Buffer.concat([this.pending,$]):$;this.pending=Buffer.alloc(0);let J=[],X=0;while(X<Z.length){if(this.frame.length===0){let B=Z.indexOf(Jz,X);if(B<0){let M=Z.subarray(X),O=si(M,[Jz]),L=M.length-O;if(L>0)J.push(M.subarray(0,L));if(O>0)this.pending=Buffer.from(M.subarray(L));break}if(B>X)J.push(Z.subarray(X,B));this.frame=Buffer.from(Jz),X=B+Jz.length;continue}let z=Z.indexOf(U_,X),G=Z.indexOf(Jz,X);if(G>=0&&(z<0||G<z)){this.frame=Buffer.from(Jz),X=G+Jz.length;continue}if(z>=0){if(z>X)this.frame=Buffer.concat([this.frame,Z.subarray(X,z)]);J.push(this.frame);let B=this.controller.current();if(B)J.push(Buffer.from(`\x1B[${B.y+1};${B.x+1}H\x1B[?25l`));J.push(U_),this.frame=Buffer.alloc(0),X=z+U_.length;continue}let W=Z.subarray(X),H=si(W,[Jz,U_]),U=W.length-H;if(U>0)this.frame=Buffer.concat([this.frame,W.subarray(0,U)]);if(H>0)this.pending=Buffer.from(W.subarray(U));break}return J.length>0?Buffer.concat(J):Buffer.alloc(0)}flush(){if(this.frame.length>0)return this.frame=Buffer.alloc(0),this.pending=Buffer.alloc(0),Buffer.alloc(0);let $=this.pending;return this.pending=Buffer.alloc(0),$}}function si($,Z){let J=Math.min($.length,Math.max(...Z.map((X)=>X.length-1)));for(let X=J;X>0;X-=1){let z=$.subarray($.length-X);if(Z.some((G)=>X<G.length&&z.equals(G.subarray(0,X))))return X}return 0}function EB0($,Z){if(typeof $!=="string")return Buffer.from($);let J=typeof Z==="string"?Z:void 0;return Buffer.from($,J)}function wB0($,Z){return typeof $==="function"?$:Z}function xB0($,Z=bq){let J=new ei(Z),z=(W,H,U)=>{let B=J.push(EB0(W,H)),M=wB0(H,U);if(B.length===0){if(M)queueMicrotask(()=>M(null));return!0}return M?$.write(B,M):$.write(B)};return{stdout:new Proxy($,{get(W,H){if(H==="write")return z;let U=Reflect.get(W,H,W);return typeof U==="function"?U.bind(W):U},set(W,H,U){if(H==="write")return z=U,!0;return Reflect.set(W,H,U,W)}}),flush(){let W=J.flush();if(W.length>0)$.write(W)}}}function $o($){if($.platform!=="darwin"||!$.fullscreen)return{active:!1,rendererOptions:{},attach:()=>()=>{},flush:()=>{}};let Z=xB0($.stdout,$.controller);return{active:!0,rendererOptions:{stdout:Z.stdout,remote:!1},attach:(J)=>fB0(J,$.stdout),flush:()=>Z.flush()}}function fB0($,Z,J=process){let X=()=>{let{columns:z,rows:G}=Z;if(!z||!G)return;$.resize(z,G)};return J.on("SIGWINCH",X),()=>J.removeListener("SIGWINCH",X)}var Jz,U_,bq;var LE=d(()=>{Jz=Buffer.from("\x1B[?2026h"),U_=Buffer.from("\x1B[?2026l");bq=new ti});import{createCliRenderer as yB0}from"@opentui/core";function bB0(){return cF.useEffect(()=>{let $=!1,Z=null,J=[];return(async()=>{let X=await mi({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!X)return;if($){X.dispose();return}Z=X;let z=(U)=>{if(!U)return;if(ME(Zo,U),Dq(U.locale))Aq(U.locale)},G=X.uiPrefsStore();z(G.get()),J.push(G.subscribe(()=>z(G.get())));let W=X.keybindingsRevStore(),H=W.get();J.push(W.subscribe(()=>{let U=W.get();if(U==null||U===H)return;let B=H===null;if(H=U,!B)fn()}))})(),()=>{$=!0;for(let X of J)X();Z?.dispose()}},[]),null}function vB0($){let{theme:Z}=d0();return cF.useEffect(()=>{M4("pane-crash",$.error)},[$.error]),R.jsxDEV("box",{flexDirection:"column",flexGrow:1,backgroundColor:Z.background,paddingLeft:1,paddingTop:1,gap:1,children:[R.jsxDEV("text",{fg:Z.error,children:W$("common.paneCrash.title")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,children:W$("common.paneCrash.hint")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}async function qG($){if($.logContext)dg($.logContext);ng(),pV();for(let{name:C,theme:_}of KE())jI(C,_);let Z=fp(gB0,_q);ME(Zo,{theme:Z.theme,transparentBackground:Z.transparent,focusAccent:Z.focusAccent}),Aq(Z.locale);let J=$.providers?.kv??!1,X=$.providers?.focus??!0,z=$.providers?.notifications??!1,G=await $.setup(Z),W=$o({platform:process.platform,fullscreen:$.inlineRows===void 0,stdout:process.stdout}),H=()=>{},U=()=>{H(),W.flush(),G.onDestroy?.()},B=await yB0({...$.inlineRows!==void 0?ii($.inlineRows,U):ni(U),...W.rendererOptions});H=W.attach(B);let M=R.jsxDEV(R.Fragment,{children:[R.jsxDEV(bB0,{},void 0,!1,void 0,this),R.jsxDEV(Jo,{children:G.root()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),L=R.jsxDEV(up,{children:z?R.jsxDEV(xi,{children:M},void 0,!1,void 0,this):M},void 0,!1,void 0,this),j=X?R.jsxDEV(vi,{initial:"sidebar",children:L},void 0,!1,void 0,this):L,A=J?R.jsxDEV(Xn,{children:j},void 0,!1,void 0,this):j;WS(B).render(R.jsxDEV(Ul,{mode:"dark",theme:Z.theme,children:A},void 0,!1,void 0,this)),oi(B),ai(),ri(),li()}var cF,gB0="claude",Zo,Jo;var dF=d(async()=>{SJ();I2();hi();nV();FE();ci();pi();LE();II();A3();yq();X$();a0();await J$([k4(),uF(),Z$(),Z$(),C5()]);cF=z1(q1(),1),Zo={selectedTheme:Ql,hasTheme:_q,setTheme:zl,reloadUserThemes:()=>{for(let{name:$,theme:Z}of KE())jI($,Z)},transparentBackground:Yl,setTransparentBackground:Gl,focusAccent:Wl,setFocusAccent:Hl};Jo=class Jo extends cF.Component{state={error:null};static getDerivedStateFromError($){return{error:$}}render(){if(this.state.error!==null)return R.jsxDEV(vB0,{error:this.state.error},void 0,!1,void 0,this);return this.props.children}}});import*as Xo from"fs";import*as B_ from"os";function K_($){return $.slice($.lastIndexOf("/")+1)}function IZ($){if($==="~")return B_.homedir();if($.startsWith("~/"))return B_.homedir()+$.slice(1);return $}function Qo($){if(!$)return{base:"",filter:""};let J=IZ($==="~"?"~/":$);if(J.endsWith("/"))return{base:J,filter:""};let X=J.lastIndexOf("/");if(X===-1)return{base:"",filter:J};return{base:J.slice(0,X+1),filter:J.slice(X+1)}}function zo($){if(!$)return[];try{let Z=Xo.readdirSync($,{withFileTypes:!0}),J=[];for(let X of Z)if(X.isDirectory())J.push(X.name);return J.sort((X,z)=>X.localeCompare(z))}catch{return[]}}function Yo($,Z){let J=Z.toLowerCase(),z=J.startsWith(".")?$:$.filter((G)=>!G.startsWith("."));if(!J)return z;return z.filter((G)=>G.toLowerCase().startsWith(J))}function vq($,Z,J){let X=Z+J;if($.startsWith("~")){let z=B_.homedir();if(X===z)return"~";if(X.startsWith(`${z}/`))return`~${X.slice(z.length)}`}return X}var UG=()=>{};function Go($){return $.kind==="leaf"?0:1+Math.max(...$.children.map(Go))}function kB0($,Z,J){let X=(z)=>{if(z.kind==="leaf")return null;if(z.orientation===J&&z.children.some((G)=>G.kind==="leaf"&&G.id===Z))return z.children.length;for(let G of z.children){let W=X(G);if(W!==null)return W}return null};return X($)??1}function mB0($,Z,J){let X=Z==="row"?J.cols:J.rows,z=Z==="row"?20:6,G=kB0($.root,$.activeLeafId,Z);return Math.floor(X*G/(G+1))-1>=z}function F_($){return{root:{kind:"leaf",id:"leaf-1",content:$},activeLeafId:"leaf-1",nextOrdinal:2}}function t7($){return $.kind==="leaf"?[$]:$.children.flatMap(t7)}function lF($,Z,J,X){if(X&&!mB0($,Z,X))return $;let z={kind:"leaf",id:`leaf-${$.nextOrdinal}`,content:J},G=(H)=>{if(H.kind==="leaf"){if(H.id!==$.activeLeafId)return H;return{kind:"group",orientation:Z,children:[H,z]}}if(H.orientation===Z){let U=H.children.findIndex((B)=>B.kind==="leaf"&&B.id===$.activeLeafId);if(U>=0){let B=[...H.children.slice(0,U+1),z,...H.children.slice(U+1)];return{...H,children:B}}}return{...H,children:H.children.map(G)}},W=G($.root);if(!X&&Go(W)>4)return $;return{root:W,activeLeafId:z.id,nextOrdinal:$.nextOrdinal+1}}function M_($,Z){let J=t7($.root);if(J.length<=1)return null;let X=(B)=>{if(B.kind==="leaf")return B.id===Z?null:B;let M=B.children.map(X).filter((O)=>O!==null);if(M.length===0)return null;if(M.length===1)return M[0];return{...B,children:M}},z=X($.root);if(z===null)return null;if(t7(z).length===J.length)return $;let G=J.map((B)=>B.id),W=G.indexOf(Z),H=G[W>0?W-1:W+1],U=$.activeLeafId===Z?H:$.activeLeafId;return{...$,root:z,activeLeafId:U}}function L_($,Z,J){let X=J.trim(),z=X.length>0?X:null,G=(W)=>W.kind==="leaf"?W.id===Z?{...W,title:z}:W:{...W,children:W.children.map(G)};if(!t7($.root).some((W)=>W.id===Z))return $;return{...$,root:G($.root)}}function Wo($,Z){let J=t7($.root).map((G)=>G.id);if(J.length<=1)return $;let X=J.indexOf($.activeLeafId),z=J[(X+Z+J.length)%J.length];return{...$,activeLeafId:z}}function NE($){return!$||t7($.root).some((Z)=>Z.id==="leaf-1")}function nF($){return $?t7($.root).length>1:!1}function kq($){let Z=t7($.root);return Z.length===1&&Z[0]?.id==="leaf-1"?null:$}function P3($,Z){return Z==="leaf-1"?$:`${$}::${Z}`}function OE($,Z,J,X){let z=(H)=>{let U=(H??Z)[0]??"",B=K_(U);return B.length>0?B:"?"},G=new Map,W=new Map;for(let H of $){if(H.title){W.set(H.id,H.title);continue}let U=H.content===null?J||X?.get(H.id)||z(H.content):X?.get(H.id)||pF,B=(G.get(U)??0)+1;G.set(U,B),W.set(H.id,B===1?U:`${U} ${B}`)}return W}function hB0($){let Z=($??"").trim();if(Z.length<3)return null;if(/^[\d\s\p{P}\p{S}]+$/u.test(Z))return null;return Z}function uB0($,Z){let J=$?.trim();if(!J)return null;let X=mQ(J,Z);if(X===J&&cB0(J,Z))return null;if(_j(X,Z))return null;return X||null}function cB0($,Z){let J=new Set(ST(Z));return[...$].every((X)=>X.trim().length===0||J.has(X))}function BG($,Z,J,X){if(J===null&&$.kind==="engine")return j9({...$,kind:"command",lastTitle:null},Z);let z=J??$.liveVendor??($.kind==="engine"?$.vendor??Z:void 0)??void 0,G=X?.trim()||$.lastTitle,W=z?uB0(G,z):G??null;if(!z||F$(z).terminalTitle?.ownsStatus!==!0)return j9({...$,lastTitle:W},Z);return j9({...$,kind:"engine",vendor:z,lastTitle:W},Z)}function dB0($,Z){return $.liveVendor??($.kind==="engine"?$.vendor:void 0)??Z}function j9($,Z,J){if($.title)return $.title;let X=$.splitTree?t7($.splitTree.root):[];if(X.length>1)return W$("terminal.tab.groupTitle",{n:$.ordinal});let z=X.length===1?X[0]:void 0;if(z&&z.id!=="leaf-1")return z.title??`${J??pF} ${$.ordinal}`;let G=dB0($,Z);if(J&&!_j(J,G))return`${J} ${$.ordinal}`;if($.lastTitle&&!_j($.lastTitle,G))return`${$.lastTitle} ${$.ordinal}`;let W=hB0($.autoTitle);if(W)return W;return`${$.kind==="engine"?F$($.vendor??Z).defaultCommand[0]??pF:pF} ${$.ordinal}`}function jE($,Z,J,X){if(!J||!X)return!1;if(F$(J).terminalTitle?.ownsStatus!==!0)return!1;return j9($,Z,X)===`${X} ${$.ordinal}`}var pF="shell";var VE=d(()=>{F7();RZ();UG()});import{readFileSync as lB0,realpathSync as pB0}from"fs";import{join as nB0}from"path";function oB0(){return nB0(K7(),"notes.json")}function Ho($){try{return pB0($)}catch{return $}}function qo($,Z=oB0()){if(!$)return[];let J;try{J=JSON.parse(lB0(Z,"utf8"))}catch{return[]}let X=J?.repos;if(!X||typeof X!=="object")return[];let z=Ho($);for(let G of Object.values(X)){if(!G||typeof G!=="object")continue;let W=G;if(typeof W.repoRoot!=="string"||Ho(W.repoRoot)!==z)continue;if(!Array.isArray(W.notes))return[];return W.notes.filter((H)=>!!H&&typeof H==="object"&&typeof H.text==="string").slice(0,iB0)}return[]}var iB0=15;var Uo=d(()=>{V5()});import{existsSync as Ko,readFileSync as aB0}from"fs";import{join as mq}from"path";function rB0($,Z=D3(),J){let X=`PS: this task's git branch name is an auto-generated placeholder. Once you understand the work, rename it to a short descriptive name following this repo's branch-naming convention: \`${Z} set-branch --task-id ${$} --branch <descriptive-slug>\``;if(!J||J===$)return X;return`${X}
720
720
 
721
- You were spawned by Rove task ${J}. When the work is finished, send your outcome back to it \u2014 include the final branch name: \`${Z} send --task-id ${J} --prompt "<succeeded|failed>: <one-line summary> (branch <final-branch>)"\``}function tB0($){for(let[Z,J]of[[Bo[0],"sh .rove/init.sh"],[Bo[1],"sh .kobe/init.sh"]])if(Ko(mq($,Z)))return J;return}function eB0($){for(let Z of sB0){let J=mq($,Z);if(!Ko(J))continue;try{let X=aB0(J,"utf8");if(X.trim().length>0)return X}catch{}}return}function $K0($,Z){let J=$?cP($):{},X=tB0(Z)??J.initScript,z=eB0(Z)??J.initPrompt;return{initScript:X&&X.trim().length>0?X:void 0,initPrompt:z&&z.trim().length>0?z:void 0}}function ZK0($,Z,J){if($.kind==="none")return;if($.kind==="explicit")return{source:"explicit",text:$.prompt};if($.kind==="new-task")return{source:"explicit",text:`${$.prompt}
721
+ You were spawned by Rove task ${J}. When the work is finished, send your outcome back \u2014 include the final branch name: \`${Z} send --prompt "<succeeded|failed>: <one-line summary> (branch <final-branch>)"\` (bare send, no --task-id: it routes to the exact tab that dispatched you)`}function tB0($){for(let[Z,J]of[[Bo[0],"sh .rove/init.sh"],[Bo[1],"sh .kobe/init.sh"]])if(Ko(mq($,Z)))return J;return}function eB0($){for(let Z of sB0){let J=mq($,Z);if(!Ko(J))continue;try{let X=aB0(J,"utf8");if(X.trim().length>0)return X}catch{}}return}function $K0($,Z){let J=$?cP($):{},X=tB0(Z)??J.initScript,z=eB0(Z)??J.initPrompt;return{initScript:X&&X.trim().length>0?X:void 0,initPrompt:z&&z.trim().length>0?z:void 0}}function ZK0($,Z,J){if($.kind==="none")return;if($.kind==="explicit")return{source:"explicit",text:$.prompt};if($.kind==="new-task")return{source:"explicit",text:`${$.prompt}
722
722
 
723
723
  ${rB0(J??'"$ROVE_TASK_ID"',void 0,$.spawnerTaskId)}`};let X=Z.initPrompt?.trim();return X?{source:"repo-init",text:X}:void 0}function Fo($,Z,J={kind:"repo-init"},X){let z=$K0($,Z);return{initScript:z.initScript,firstMessage:ZK0(J,z,X)}}var Bo,sB0;var Mo=d(()=>{L7();C4();Bo=[mq(".rove","init.sh"),mq(".kobe","init.sh")],sB0=[mq(".rove","init-prompt.md"),mq(".kobe","init-prompt.md")]});function JK0($){return`${$}; __rc=$?; [ "$__rc" -ne 0 ] && printf '${"\\n \u26A0 Engine exited (code %s). Check Settings \u2192 Engines and fix the launch command.\\n\\n"}' "$__rc"; exec "\${SHELL:-/bin/sh}"`}function YK0($){let Z=typeof $==="number"?$:$==null?Number.NaN:Number.parseInt($,10);if(!Number.isFinite(Z))return XK0;return Math.max(QK0,Math.min(zK0,Math.round(Z)))}function GK0($,Z){let J=String(Z),X="\\n \u26A0 Repo init script timed out after %ss and was killed; continuing to the engine.\\n\\n",z="\\n \u26A0 Repo init script failed (code %s); continuing to the engine.\\n\\n";return['__kobe_init_env="${TMPDIR:-/tmp}/kobe-init-env.$$"','__kobe_init_to="${TMPDIR:-/tmp}/kobe-init-timeout.$$"','rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null',"(",$,"__kobe_init_ec=$?",'export -p > "$__kobe_init_env" 2>/dev/null',"exit $__kobe_init_ec",") </dev/null &","__kobe_init_pid=$!",`( sleep ${J}; : > "$__kobe_init_to"; kill -TERM "$__kobe_init_pid" 2>/dev/null; sleep 2; kill -KILL "$__kobe_init_pid" 2>/dev/null ) &`,"__kobe_init_wd=$!",'wait "$__kobe_init_pid" 2>/dev/null; __kobe_init_rc=$?','kill "$__kobe_init_wd" 2>/dev/null; wait "$__kobe_init_wd" 2>/dev/null',`if [ -f "$__kobe_init_to" ]; then __kobe_init_rc=124; printf '${"\\n \u26A0 Repo init script timed out after %ss and was killed; continuing to the engine.\\n\\n"}' '${J}';`,'elif [ "$__kobe_init_rc" -eq 0 ]; then [ -f "$__kobe_init_env" ] && . "$__kobe_init_env" 2>/dev/null;',`else printf '${"\\n \u26A0 Repo init script failed (code %s); continuing to the engine.\\n\\n"}' "$__kobe_init_rc"; fi`,'rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null'].join(`
724
724
  `)}function WK0($){let Z=$.lastIndexOf("/");return Z<=0?".":$.slice(0,Z)}function HK0($,Z){let J=JK0($),X=Z?.initScript?.trim();if(!X)return J;let z=GK0(X,YK0(Z?.timeoutSeconds)),G=Z?.markerPath&&Ic(Z.markerPath,Z.platform);if(!G)return Lo+[z,J].join(`
@@ -303,7 +303,7 @@ ${G}
303
303
  `)}let z=ZG0();for(let G of xT()){if(X&&G.vendor==="claude")continue;let W=G.globalSettingsPath();if(!W)continue;await G.installActivityHooks(W,{toolEvents:z}),await G.installWorktreeWatchHook(W)}await Gh()}catch{}}function ZG0(){try{for(let $ of o4().plugins){if(!$.enabled)continue;try{if(Q6($.root).manifest.events.some((Z)=>Z.on.startsWith("tool.")))return!0}catch{}}}catch{}return!1}async function Gh(){let $=eY0();if($.length===0)return;let Z=x5($h),J=new Set([Yh()]),X=$G0(Z);if(X)J.add(X);for(let z of $)for(let G of J)await z.removeWorktreeSyncHook(G);if(Z!=="off")X6($h,"off")}async function JG0(){let $=xT().find((J)=>J.vendor==="claude"),Z=$?.globalSettingsPath();if(!$||!Z){process.stdout.write(`rove hook cleanup: no Claude hook adapter \u2014 nothing to do.
304
304
  `);return}await $.removeActivityHooks(Z),await $.removeWorktreeWatchHook(Z),process.stdout.write([`rove hook cleanup: removed Rove's settings-managed hooks from ${Z}.`,"Only Rove's own entries were touched; your other hooks are intact.","The Claude Code plugin's hooks.json now carries these events (if the plugin","is not installed, the next Rove launch reinstalls the settings-managed set).",""].join(`
305
305
  `))}async function XG0($){await Gh(),process.stdout.write(["rove hook setup is deprecated and now a no-op (cleanup only).","","The old external-worktree sync used a global WorktreeCreate hook, which is","a VCS provider hook \u2014 its presence broke `claude --worktree` / EnterWorktree","in every repo. Any hook Rove previously installed has been removed.","","Sync is now automatic: a `claude --worktree` (or any session) started in a","worktree under a repo Rove already tracks is adopted as a task on launch.","To adopt existing worktrees on demand, use the New Task dialog or `rove adopt`.",""].join(`
306
- `))}var iY0=500,oY0="worktree-created",$h="externalWorktreeSync";var yT=d(()=>{I2();mJ();NZ();IT();wT();C4();P7();b4()});var Rj;var Hh=d(()=>{Rj={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/rove",version:"0.8.147",description:"Rove \u2014 the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/kobe.js",rove:"dist/cli/rove.js"},files:["dist/cli","dist/web-ui","dist/skills","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/rove.git"},homepage:"https://github.com/Sma1lboy/rove#readme",bugs:{url:"https://github.com/Sma1lboy/rove/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"ROVE_DEV=1 bun --conditions=browser ./src/cli/rove.ts","dev:kobe":"KOBE_DEV=1 bun --conditions=browser ./src/cli/kobe.ts","dev:mock":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:mock-react":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:mock-react-task-dialogs":"KOBE_DEV=1 bun ./src/tui-react/component/mock-dialogs-host.tsx","dev:mock-react-filetree":"KOBE_DEV=1 bun ./src/tui-react/panes/filetree/mock-host.tsx","dev:mock-react-sidebar":"KOBE_DEV=1 bun ./src/tui-react/panes/sidebar/mock-host.tsx","dev:mock-react-terminal":"KOBE_DEV=1 bun ./src/tui-react/panes/terminal/mock-host.tsx","dev:mock-react-dialogs":"KOBE_DEV=1 bun ./src/tui-react/mock/dialogs-host.tsx","dev:mock-react-workspace":"KOBE_DEV=1 bun ./src/tui-react/workspace/mock-host.tsx","dev:sandbox":"bun run scripts/dev-sandbox.ts run","dev:sandbox:reset":"bun run scripts/dev-sandbox.ts reset",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","perf:golden":"bun scripts/perf-golden.ts","pty:soak":"bun scripts/pty-soak.ts","test:fast":"vitest run --passWithNoTests --minWorkers=1 --maxWorkers=8","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:socket:coverage":"KOBE_INCLUDE_SOCKET=1 KOBE_COVERAGE_DAEMON=1 vitest run test/daemon --coverage --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --pool forks --minWorkers=1 --maxWorkers=1 --retry=2 --passWithNoTests","test:render":"bun test test/render --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage-render",coverage:"vitest run --coverage --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.4.3","@opentui/react":"0.4.3","@xterm/addon-serialize":"^0.14.0","@xterm/addon-unicode11":"^0.9.0","@xterm/headless":"^6.0.0","node-pty":"^1.1.0",react:"^19.2.8",ws:"^8.18.0"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.14","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2","@types/react":"^19.2.0","@vitest/coverage-v8":"2.1.9",knip:"^6.14.2","kobe-web":"workspace:*","react-devtools-core":"^7.0.1",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});var Uh={};A$(Uh,{repoSlug:()=>gY,releasePageUrl:()=>hT,recommendedGlobalInstallCommand:()=>vT,isNewerSemver:()=>gT,fetchReleaseSummaries:()=>WF,fetchReleaseNotesRange:()=>mT,fetchReleaseNotes:()=>kT,compareSemver:()=>V3,checkLatestVersion:()=>bY,breakingVersionsCrossed:()=>GF,UPDATE_SCRIPT_URL:()=>Tj,UPDATE_COMMAND:()=>VZ,PACKAGE_NAME:()=>bT,CURRENT_VERSION:()=>R$,BREAKING_VERSIONS:()=>lJ});function gY(){let $=Rj.repository?.url;if(!$)return null;let Z=$.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!Z||!Z[1]||!Z[2])return null;return`${Z[1]}/${Z[2]}`}function vT(){return`npm install -g ${bT}@latest`}function GF($,Z,J=lJ){let[X,z]=V3($,Z)<=0?[$,Z]:[Z,$];return J.filter((G)=>V3(G,X)>0&&V3(G,z)<=0)}async function zG0($){let Z=new AbortController,J=setTimeout(()=>Z.abort(),Sj);try{let X=$.replace("/","%2F"),z=await fetch(`https://registry.npmjs.org/${X}/latest`,{signal:Z.signal,headers:{accept:"application/json"}});if(!z.ok)return null;let G=await z.json();if(typeof G.version!=="string")return null;return G.version}catch{return null}finally{clearTimeout(J)}}function gT($,Z){return V3($,Z)>0}function V3($,Z){let J=(G)=>G.split("-")[0]??G,X=J($).split(".").map((G)=>Number.parseInt(G,10)),z=J(Z).split(".").map((G)=>Number.parseInt(G,10));for(let G=0;G<3;G++){let W=X[G]??0,H=z[G]??0;if(Number.isNaN(W)||Number.isNaN(H))return 0;if(W>H)return 1;if(W<H)return-1}return 0}async function bY($={}){let Z=process.env.KOBE_FAKE_UPDATE;if(Z)return{current:R$,latest:Z,hasUpdate:gT(Z,R$)};if(TH()&&!$.force)return null;let J=await zG0(bT);if(!J)return null;return{current:R$,latest:J,hasUpdate:gT(J,R$)}}function qh($){if(typeof $!=="string")return null;return $.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function kT($){let Z=gY();if(!Z)return null;let J=`v${$}`,X=new AbortController,z=setTimeout(()=>X.abort(),Sj);try{let G=await fetch(`https://api.github.com/repos/${Z}/releases/tags/${J}`,{signal:X.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return null;let W=await G.json();if(typeof W.body!=="string"||typeof W.html_url!=="string")return null;return{body:W.body,url:W.html_url,version:$}}catch{return null}finally{clearTimeout(z)}}async function mT($){let Z=gY();if(!Z)return[];let J=$.limit??100,X=new AbortController,z=setTimeout(()=>X.abort(),Sj);try{let G=await fetch(`https://api.github.com/repos/${Z}/releases?per_page=${J}`,{signal:X.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return[];let W=await G.json();if(!Array.isArray(W))return[];return W.map((H)=>{let U=qh(H.tag_name);if(!U||typeof H.html_url!=="string"||typeof H.body!=="string")return null;if(V3(U,$.current)<=0)return null;if(V3(U,$.latest)>0)return null;return{version:U,url:H.html_url,body:H.body}}).filter((H)=>H!==null)}catch{return[]}finally{clearTimeout(z)}}async function WF($=12){let Z=gY();if(!Z)return[];let J=new AbortController,X=setTimeout(()=>J.abort(),Sj);try{let z=await fetch(`https://api.github.com/repos/${Z}/releases?per_page=${$}`,{signal:J.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!z.ok)return[];let G=await z.json();if(!Array.isArray(G))return[];return G.map((W)=>{let H=qh(W.tag_name);if(!H||typeof W.html_url!=="string")return null;return{version:H,url:W.html_url}}).filter((W)=>W!==null)}catch{return[]}finally{clearTimeout(X)}}function hT($){let Z=gY();if(!Z)return null;return`https://github.com/${Z}/releases/tag/v${$}`}var R$,bT,Tj="https://raw.githubusercontent.com/Sma1lboy/rove/main/scripts/update.sh",VZ,lJ,Sj=3000;var d8=d(()=>{Hh();V5();R$=Rj.version,bT=Rj.name;VZ=`curl -fsSL ${Tj} | sh`;lJ=[]});var Kh={};A$(Kh,{stampResetGate:()=>Ij,resetGateBlockers:()=>Bh,enforceResetGate:()=>cT,LAST_RUN_VERSION_KEY:()=>uT});function Bh($,Z=R$,J=lJ){if(typeof $!=="string"||$.length===0)return[];let[X,z]=V3($,Z)<=0?[$,Z]:[Z,$];return J.filter((G)=>V3(G,X)>0&&V3(G,z)<=0)}function cT(){let $=$$(),Z=L4()[uT],J=Bh(Z);if(J.length>0){let X=typeof Z==="string"?Z:"unknown";console.error([`${$} ${R$}: cannot start \u2014 version ${J.join(", ")} introduced breaking changes`,`(last run: ${X}). Your daemon/session state may be incompatible.`,"","Run:",` ${$} reset # stop daemon + PTY host + sessions (tasks kept)`,` ${$} reset --hard # additionally wipe the task index + UI state`,"","Then relaunch Rove. Worktrees are never touched."].join(`
306
+ `))}var iY0=500,oY0="worktree-created",$h="externalWorktreeSync";var yT=d(()=>{I2();mJ();NZ();IT();wT();C4();P7();b4()});var Rj;var Hh=d(()=>{Rj={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/rove",version:"0.8.148",description:"Rove \u2014 the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.",type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/kobe.js",rove:"dist/cli/rove.js"},files:["dist/cli","dist/web-ui","dist/skills","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/rove.git"},homepage:"https://github.com/Sma1lboy/rove#readme",bugs:{url:"https://github.com/Sma1lboy/rove/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"ROVE_DEV=1 bun --conditions=browser ./src/cli/rove.ts","dev:kobe":"KOBE_DEV=1 bun --conditions=browser ./src/cli/kobe.ts","dev:mock":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:mock-react":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:mock-react-task-dialogs":"KOBE_DEV=1 bun ./src/tui-react/component/mock-dialogs-host.tsx","dev:mock-react-filetree":"KOBE_DEV=1 bun ./src/tui-react/panes/filetree/mock-host.tsx","dev:mock-react-sidebar":"KOBE_DEV=1 bun ./src/tui-react/panes/sidebar/mock-host.tsx","dev:mock-react-terminal":"KOBE_DEV=1 bun ./src/tui-react/panes/terminal/mock-host.tsx","dev:mock-react-dialogs":"KOBE_DEV=1 bun ./src/tui-react/mock/dialogs-host.tsx","dev:mock-react-workspace":"KOBE_DEV=1 bun ./src/tui-react/workspace/mock-host.tsx","dev:sandbox":"bun run scripts/dev-sandbox.ts run","dev:sandbox:reset":"bun run scripts/dev-sandbox.ts reset",build:"bun run scripts/build.ts","build:with-web":"bun run build",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","perf:golden":"bun scripts/perf-golden.ts","pty:soak":"bun scripts/pty-soak.ts","test:fast":"vitest run --passWithNoTests --minWorkers=1 --maxWorkers=8","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:socket:coverage":"KOBE_INCLUDE_SOCKET=1 KOBE_COVERAGE_DAEMON=1 vitest run test/daemon --coverage --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --pool forks --minWorkers=1 --maxWorkers=1 --retry=2 --passWithNoTests","test:render":"bun test test/render --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage-render",coverage:"vitest run --coverage --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.4.3","@opentui/react":"0.4.3","@xterm/addon-serialize":"^0.14.0","@xterm/addon-unicode11":"^0.9.0","@xterm/headless":"^6.0.0","node-pty":"^1.1.0",react:"^19.2.8",ws:"^8.18.0"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.14","@tsconfig/bun":"1.0.10","@types/bun":"1.3.14","@types/node":"25.6.2","@types/react":"^19.2.0","@vitest/coverage-v8":"2.1.9",knip:"^6.14.2","kobe-web":"workspace:*","react-devtools-core":"^7.0.1",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]}});var Uh={};A$(Uh,{repoSlug:()=>gY,releasePageUrl:()=>hT,recommendedGlobalInstallCommand:()=>vT,isNewerSemver:()=>gT,fetchReleaseSummaries:()=>WF,fetchReleaseNotesRange:()=>mT,fetchReleaseNotes:()=>kT,compareSemver:()=>V3,checkLatestVersion:()=>bY,breakingVersionsCrossed:()=>GF,UPDATE_SCRIPT_URL:()=>Tj,UPDATE_COMMAND:()=>VZ,PACKAGE_NAME:()=>bT,CURRENT_VERSION:()=>R$,BREAKING_VERSIONS:()=>lJ});function gY(){let $=Rj.repository?.url;if(!$)return null;let Z=$.match(/github\.com[:/]([^/]+)\/([^/.]+)/);if(!Z||!Z[1]||!Z[2])return null;return`${Z[1]}/${Z[2]}`}function vT(){return`npm install -g ${bT}@latest`}function GF($,Z,J=lJ){let[X,z]=V3($,Z)<=0?[$,Z]:[Z,$];return J.filter((G)=>V3(G,X)>0&&V3(G,z)<=0)}async function zG0($){let Z=new AbortController,J=setTimeout(()=>Z.abort(),Sj);try{let X=$.replace("/","%2F"),z=await fetch(`https://registry.npmjs.org/${X}/latest`,{signal:Z.signal,headers:{accept:"application/json"}});if(!z.ok)return null;let G=await z.json();if(typeof G.version!=="string")return null;return G.version}catch{return null}finally{clearTimeout(J)}}function gT($,Z){return V3($,Z)>0}function V3($,Z){let J=(G)=>G.split("-")[0]??G,X=J($).split(".").map((G)=>Number.parseInt(G,10)),z=J(Z).split(".").map((G)=>Number.parseInt(G,10));for(let G=0;G<3;G++){let W=X[G]??0,H=z[G]??0;if(Number.isNaN(W)||Number.isNaN(H))return 0;if(W>H)return 1;if(W<H)return-1}return 0}async function bY($={}){let Z=process.env.KOBE_FAKE_UPDATE;if(Z)return{current:R$,latest:Z,hasUpdate:gT(Z,R$)};if(TH()&&!$.force)return null;let J=await zG0(bT);if(!J)return null;return{current:R$,latest:J,hasUpdate:gT(J,R$)}}function qh($){if(typeof $!=="string")return null;return $.match(/^v(\d+\.\d+\.\d+)$/)?.[1]??null}async function kT($){let Z=gY();if(!Z)return null;let J=`v${$}`,X=new AbortController,z=setTimeout(()=>X.abort(),Sj);try{let G=await fetch(`https://api.github.com/repos/${Z}/releases/tags/${J}`,{signal:X.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return null;let W=await G.json();if(typeof W.body!=="string"||typeof W.html_url!=="string")return null;return{body:W.body,url:W.html_url,version:$}}catch{return null}finally{clearTimeout(z)}}async function mT($){let Z=gY();if(!Z)return[];let J=$.limit??100,X=new AbortController,z=setTimeout(()=>X.abort(),Sj);try{let G=await fetch(`https://api.github.com/repos/${Z}/releases?per_page=${J}`,{signal:X.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!G.ok)return[];let W=await G.json();if(!Array.isArray(W))return[];return W.map((H)=>{let U=qh(H.tag_name);if(!U||typeof H.html_url!=="string"||typeof H.body!=="string")return null;if(V3(U,$.current)<=0)return null;if(V3(U,$.latest)>0)return null;return{version:U,url:H.html_url,body:H.body}}).filter((H)=>H!==null)}catch{return[]}finally{clearTimeout(z)}}async function WF($=12){let Z=gY();if(!Z)return[];let J=new AbortController,X=setTimeout(()=>J.abort(),Sj);try{let z=await fetch(`https://api.github.com/repos/${Z}/releases?per_page=${$}`,{signal:J.signal,headers:{accept:"application/vnd.github+json","x-github-api-version":"2022-11-28"}});if(!z.ok)return[];let G=await z.json();if(!Array.isArray(G))return[];return G.map((W)=>{let H=qh(W.tag_name);if(!H||typeof W.html_url!=="string")return null;return{version:H,url:W.html_url}}).filter((W)=>W!==null)}catch{return[]}finally{clearTimeout(X)}}function hT($){let Z=gY();if(!Z)return null;return`https://github.com/${Z}/releases/tag/v${$}`}var R$,bT,Tj="https://raw.githubusercontent.com/Sma1lboy/rove/main/scripts/update.sh",VZ,lJ,Sj=3000;var d8=d(()=>{Hh();V5();R$=Rj.version,bT=Rj.name;VZ=`curl -fsSL ${Tj} | sh`;lJ=[]});var Kh={};A$(Kh,{stampResetGate:()=>Ij,resetGateBlockers:()=>Bh,enforceResetGate:()=>cT,LAST_RUN_VERSION_KEY:()=>uT});function Bh($,Z=R$,J=lJ){if(typeof $!=="string"||$.length===0)return[];let[X,z]=V3($,Z)<=0?[$,Z]:[Z,$];return J.filter((G)=>V3(G,X)>0&&V3(G,z)<=0)}function cT(){let $=$$(),Z=L4()[uT],J=Bh(Z);if(J.length>0){let X=typeof Z==="string"?Z:"unknown";console.error([`${$} ${R$}: cannot start \u2014 version ${J.join(", ")} introduced breaking changes`,`(last run: ${X}). Your daemon/session state may be incompatible.`,"","Run:",` ${$} reset # stop daemon + PTY host + sessions (tasks kept)`,` ${$} reset --hard # additionally wipe the task index + UI state`,"","Then relaunch Rove. Worktrees are never touched."].join(`
307
307
  `)),process.exit(1)}if(Z!==R$)Ij()}function Ij(){try{E2({[uT]:R$})}catch{}}var uT="app.lastRunVersion";var Ej=d(()=>{w2();d8();b4()});import{existsSync as Mh,readFileSync as YG0}from"fs";import{homedir as GG0}from"os";import{join as Lh,resolve as Fh}from"path";import{fileURLToPath as WG0}from"url";function pT($=process.env){return`${$$($)} skill install`}function wj(){let $=WG0(import.meta.url);return[Fh($,"../../../../../.agents/skills/kobe"),Fh($,"../../skills/rove")].find((J)=>Mh(Lh(J,"SKILL.md")))??null}function xj($={}){let Z=$.source!==void 0?$.source:wj(),J=$.agent===void 0?[]:typeof $.agent==="string"?[$.agent]:$.agent;return["skills","add",Z??qG0,"--skill",e3,...$.global===!1?[]:["--global"],...J.flatMap((X)=>["--agent",X])]}function vY($={}){return`npx ${xj($).join(" ")}`}async function nT($,Z){return await Bun.spawn(["npx",...xj({...$===void 0?{}:{agent:$},global:Z})],{stdin:"inherit",stdout:"inherit",stderr:"inherit"}).exited}function fj($={}){let Z=$.home??GG0(),J=$.cwd??process.cwd();return[Z,J].flatMap((X)=>HG0.map((z)=>Lh(X,z)))}function UG0($){let Z=$.match(/(?:rove|kobe)-skill-version:\s*(\d+)/);return Z?Number.parseInt(Z[1],10):null}function HF($){let Z=fj($).find((z)=>Mh(z));if(!Z)return{installed:!1,installedVersion:null,currentVersion:dT,stale:!1};let J=null;try{J=UG0(YG0(Z,"utf8"))}catch{J=null}let X=J===null||J<dT;return{installed:!0,installedVersion:J,currentVersion:dT,stale:X}}function BG0(){return new Promise(($)=>{process.stdin.resume(),process.stdin.once("data",(Z)=>{process.stdin.pause(),$(String(Z))})})}async function Nh($={}){let{isRovePluginEnabled:Z}=await Promise.resolve().then(() => (Pj(),Aj));if(Z())return;let J=$$(),X=pT(),z=HF();if(!z.installed){if(x5(lT)==="1")return;X6(lT,"1"),process.stderr.write(`
308
308
  ${J}: the Rove agent skill isn't installed \u2014 install it so your coding agent can drive Rove via \`${J} api\`:
309
309
  ${X}
@@ -317,7 +317,7 @@ ${J}: your Rove agent skill is out of date (${W}; this Rove wants v${z.currentVe
317
317
  ${J}: a new version of the Rove agent skill is available (${W} \u2192 v${z.currentVersion}).
318
318
  Update now? [y]es / [n]o / [d]on't notify for this version: `);let U=(await($.ask??BG0)()).trim().toLowerCase();if(U==="y"||U==="yes"){let B=await($.install??nT)();if(B===0)process.stderr.write(`${J}: skill updated.
319
319
  `);else process.stderr.write(`${J}: skill update failed (exit ${B}) \u2014 run \`${X}\` manually.
320
- `)}else if(U.startsWith("d"))X6(G,"1")}var dT=30,HG0,qG0="Sma1lboy/rove",lT="skillHintSeen";var qF=d(()=>{b4();CQ();C4();HG0=[".agents/skills/rove/SKILL.md",".claude/skills/rove/SKILL.md",".agents/skills/kobe/SKILL.md",".claude/skills/kobe/SKILL.md"]});var Oh={};A$(Oh,{loadPluginEngines:()=>KG0});function KG0(){let $=[];try{for(let Z of o4().plugins){if(!Z.enabled)continue;try{let{manifest:J}=Q6(Z.root);for(let X of J.engines)if(kv(X.id,{displayName:X.name,defaultCommand:X.command,...X.processNames?{processNames:X.processNames}:{},screenManifest:{rules:X.rules}}))$.push(X.id)}catch{}}}catch{}return $}var jh=d(()=>{mJ();NZ();oO()});var yj=()=>{};var q1=jY((FG0,gj)=>{(function(){function $(J0,S0){Object.defineProperty(X.prototype,J0,{get:function(){console.warn("%s(...) is deprecated in plain JavaScript React classes. %s",S0[0],S0[1])}})}function Z(J0){if(J0===null||typeof J0!=="object")return null;return J0=D0&&J0[D0]||J0["@@iterator"],typeof J0==="function"?J0:null}function J(J0,S0){J0=(J0=J0.constructor)&&(J0.displayName||J0.name)||"ReactClass";var Z1=J0+"."+S0;u0[Z1]||(console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",S0,J0),u0[Z1]=!0)}function X(J0,S0,Z1){this.props=J0,this.context=S0,this.refs=W1,this.updater=Z1||j0}function z(){}function G(J0,S0,Z1){this.props=J0,this.context=S0,this.refs=W1,this.updater=Z1||j0}function W(){}function H(J0){return""+J0}function U(J0){try{H(J0);var S0=!1}catch(n1){S0=!0}if(S0){S0=console;var Z1=S0.error,U1=typeof Symbol==="function"&&Symbol.toStringTag&&J0[Symbol.toStringTag]||J0.constructor.name||"Object";return Z1.call(S0,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",U1),H(J0)}}function B(J0){if(J0==null)return null;if(typeof J0==="function")return J0.$$typeof===c0?null:J0.displayName||J0.name||null;if(typeof J0==="string")return J0;switch(J0){case i:return"Fragment";case n:return"Profiler";case l:return"StrictMode";case $0:return"Suspense";case O0:return"SuspenseList";case b0:return"Activity"}if(typeof J0==="object")switch(typeof J0.tag==="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),J0.$$typeof){case k:return"Portal";case Z0:return J0.displayName||"Context";case Y0:return(J0._context.displayName||"Context")+".Consumer";case a:var S0=J0.render;return J0=J0.displayName,J0||(J0=S0.displayName||S0.name||"",J0=J0!==""?"ForwardRef("+J0+")":"ForwardRef"),J0;case Q0:return S0=J0.displayName||null,S0!==null?S0:B(J0.type)||"Memo";case w0:S0=J0._payload,J0=J0._init;try{return B(J0(S0))}catch(Z1){}}return null}function M(J0){if(J0===i)return"<>";if(typeof J0==="object"&&J0!==null&&J0.$$typeof===w0)return"<...>";try{var S0=B(J0);return S0?"<"+S0+">":"<...>"}catch(Z1){return"<...>"}}function O(){var J0=X1.A;return J0===null?null:J0.getOwner()}function L(){return Error("react-stack-top-frame")}function j(J0){if(u1.call(J0,"key")){var S0=Object.getOwnPropertyDescriptor(J0,"key").get;if(S0&&S0.isReactWarning)return!1}return J0.key!==void 0}function A(J0,S0){function Z1(){B$||(B$=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",S0))}Z1.isReactWarning=!0,Object.defineProperty(J0,"key",{get:Z1,configurable:!0})}function C(){var J0=B(this.type);return s5[J0]||(s5[J0]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),J0=this.props.ref,J0!==void 0?J0:null}function _(J0,S0,Z1,U1,n1,x$){var P$=Z1.ref;return J0={$$typeof:W0,type:J0,key:S0,props:Z1,_owner:U1},(P$!==void 0?P$:null)!==null?Object.defineProperty(J0,"ref",{enumerable:!1,get:C}):Object.defineProperty(J0,"ref",{enumerable:!1,value:null}),J0._store={},Object.defineProperty(J0._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(J0,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(J0,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:n1}),Object.defineProperty(J0,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:x$}),Object.freeze&&(Object.freeze(J0.props),Object.freeze(J0)),J0}function b(J0,S0){return S0=_(J0.type,S0,J0.props,J0._owner,J0._debugStack,J0._debugTask),J0._store&&(S0._store.validated=J0._store.validated),S0}function E(J0){I(J0)?J0._store&&(J0._store.validated=1):typeof J0==="object"&&J0!==null&&J0.$$typeof===w0&&(J0._payload.status==="fulfilled"?I(J0._payload.value)&&J0._payload.value._store&&(J0._payload.value._store.validated=1):J0._store&&(J0._store.validated=1))}function I(J0){return typeof J0==="object"&&J0!==null&&J0.$$typeof===W0}function T(J0){var S0={"=":"=0",":":"=2"};return"$"+J0.replace(/[=:]/g,function(Z1){return S0[Z1]})}function w(J0,S0){return typeof J0==="object"&&J0!==null&&J0.key!=null?(U(J0.key),T(""+J0.key)):S0.toString(36)}function y(J0){switch(J0.status){case"fulfilled":return J0.value;case"rejected":throw J0.reason;default:switch(typeof J0.status==="string"?J0.then(W,W):(J0.status="pending",J0.then(function(S0){J0.status==="pending"&&(J0.status="fulfilled",J0.value=S0)},function(S0){J0.status==="pending"&&(J0.status="rejected",J0.reason=S0)})),J0.status){case"fulfilled":return J0.value;case"rejected":throw J0.reason}}throw J0}function f(J0,S0,Z1,U1,n1){var x$=typeof J0;if(x$==="undefined"||x$==="boolean")J0=null;var P$=!1;if(J0===null)P$=!0;else switch(x$){case"bigint":case"string":case"number":P$=!0;break;case"object":switch(J0.$$typeof){case W0:case k:P$=!0;break;case w0:return P$=J0._init,f(P$(J0._payload),S0,Z1,U1,n1)}}if(P$){P$=J0,n1=n1(P$);var K4=U1===""?"."+w(P$,0):U1;return L0(n1)?(Z1="",K4!=null&&(Z1=K4.replace(PX,"$&/")+"/"),f(n1,S0,Z1,"",function(y7){return y7})):n1!=null&&(I(n1)&&(n1.key!=null&&(P$&&P$.key===n1.key||U(n1.key)),Z1=b(n1,Z1+(n1.key==null||P$&&P$.key===n1.key?"":(""+n1.key).replace(PX,"$&/")+"/")+K4),U1!==""&&P$!=null&&I(P$)&&P$.key==null&&P$._store&&!P$._store.validated&&(Z1._store.validated=2),n1=Z1),S0.push(n1)),1}if(P$=0,K4=U1===""?".":U1+":",L0(J0))for(var g$=0;g$<J0.length;g$++)U1=J0[g$],x$=K4+w(U1,g$),P$+=f(U1,S0,Z1,x$,n1);else if(g$=Z(J0),typeof g$==="function")for(g$===J0.entries&&(t8||console.warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead."),t8=!0),J0=g$.call(J0),g$=0;!(U1=J0.next()).done;)U1=U1.value,x$=K4+w(U1,g$++),P$+=f(U1,S0,Z1,x$,n1);else if(x$==="object"){if(typeof J0.then==="function")return f(y(J0),S0,Z1,U1,n1);throw S0=String(J0),Error("Objects are not valid as a React child (found: "+(S0==="[object Object]"?"object with keys {"+Object.keys(J0).join(", ")+"}":S0)+"). If you meant to render a collection of children, use an array instead.")}return P$}function h(J0,S0,Z1){if(J0==null)return J0;var U1=[],n1=0;return f(J0,U1,"","",function(x$){return S0.call(Z1,x$,n1++)}),U1}function p(J0){if(J0._status===-1){var S0=J0._ioInfo;S0!=null&&(S0.start=S0.end=performance.now()),S0=J0._result;var Z1=S0();if(Z1.then(function(n1){if(J0._status===0||J0._status===-1){J0._status=1,J0._result=n1;var x$=J0._ioInfo;x$!=null&&(x$.end=performance.now()),Z1.status===void 0&&(Z1.status="fulfilled",Z1.value=n1)}},function(n1){if(J0._status===0||J0._status===-1){J0._status=2,J0._result=n1;var x$=J0._ioInfo;x$!=null&&(x$.end=performance.now()),Z1.status===void 0&&(Z1.status="rejected",Z1.reason=n1)}}),S0=J0._ioInfo,S0!=null){S0.value=Z1;var U1=Z1.displayName;typeof U1==="string"&&(S0.name=U1)}J0._status===-1&&(J0._status=0,J0._result=Z1)}if(J0._status===1)return S0=J0._result,S0===void 0&&console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
320
+ `)}else if(U.startsWith("d"))X6(G,"1")}var dT=31,HG0,qG0="Sma1lboy/rove",lT="skillHintSeen";var qF=d(()=>{b4();CQ();C4();HG0=[".agents/skills/rove/SKILL.md",".claude/skills/rove/SKILL.md",".agents/skills/kobe/SKILL.md",".claude/skills/kobe/SKILL.md"]});var Oh={};A$(Oh,{loadPluginEngines:()=>KG0});function KG0(){let $=[];try{for(let Z of o4().plugins){if(!Z.enabled)continue;try{let{manifest:J}=Q6(Z.root);for(let X of J.engines)if(kv(X.id,{displayName:X.name,defaultCommand:X.command,...X.processNames?{processNames:X.processNames}:{},screenManifest:{rules:X.rules}}))$.push(X.id)}catch{}}}catch{}return $}var jh=d(()=>{mJ();NZ();oO()});var yj=()=>{};var q1=jY((FG0,gj)=>{(function(){function $(J0,S0){Object.defineProperty(X.prototype,J0,{get:function(){console.warn("%s(...) is deprecated in plain JavaScript React classes. %s",S0[0],S0[1])}})}function Z(J0){if(J0===null||typeof J0!=="object")return null;return J0=D0&&J0[D0]||J0["@@iterator"],typeof J0==="function"?J0:null}function J(J0,S0){J0=(J0=J0.constructor)&&(J0.displayName||J0.name)||"ReactClass";var Z1=J0+"."+S0;u0[Z1]||(console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",S0,J0),u0[Z1]=!0)}function X(J0,S0,Z1){this.props=J0,this.context=S0,this.refs=W1,this.updater=Z1||j0}function z(){}function G(J0,S0,Z1){this.props=J0,this.context=S0,this.refs=W1,this.updater=Z1||j0}function W(){}function H(J0){return""+J0}function U(J0){try{H(J0);var S0=!1}catch(n1){S0=!0}if(S0){S0=console;var Z1=S0.error,U1=typeof Symbol==="function"&&Symbol.toStringTag&&J0[Symbol.toStringTag]||J0.constructor.name||"Object";return Z1.call(S0,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",U1),H(J0)}}function B(J0){if(J0==null)return null;if(typeof J0==="function")return J0.$$typeof===c0?null:J0.displayName||J0.name||null;if(typeof J0==="string")return J0;switch(J0){case i:return"Fragment";case n:return"Profiler";case l:return"StrictMode";case $0:return"Suspense";case O0:return"SuspenseList";case b0:return"Activity"}if(typeof J0==="object")switch(typeof J0.tag==="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),J0.$$typeof){case k:return"Portal";case Z0:return J0.displayName||"Context";case Y0:return(J0._context.displayName||"Context")+".Consumer";case a:var S0=J0.render;return J0=J0.displayName,J0||(J0=S0.displayName||S0.name||"",J0=J0!==""?"ForwardRef("+J0+")":"ForwardRef"),J0;case Q0:return S0=J0.displayName||null,S0!==null?S0:B(J0.type)||"Memo";case w0:S0=J0._payload,J0=J0._init;try{return B(J0(S0))}catch(Z1){}}return null}function M(J0){if(J0===i)return"<>";if(typeof J0==="object"&&J0!==null&&J0.$$typeof===w0)return"<...>";try{var S0=B(J0);return S0?"<"+S0+">":"<...>"}catch(Z1){return"<...>"}}function O(){var J0=X1.A;return J0===null?null:J0.getOwner()}function L(){return Error("react-stack-top-frame")}function j(J0){if(u1.call(J0,"key")){var S0=Object.getOwnPropertyDescriptor(J0,"key").get;if(S0&&S0.isReactWarning)return!1}return J0.key!==void 0}function A(J0,S0){function Z1(){B$||(B$=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",S0))}Z1.isReactWarning=!0,Object.defineProperty(J0,"key",{get:Z1,configurable:!0})}function C(){var J0=B(this.type);return s5[J0]||(s5[J0]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),J0=this.props.ref,J0!==void 0?J0:null}function _(J0,S0,Z1,U1,n1,x$){var P$=Z1.ref;return J0={$$typeof:W0,type:J0,key:S0,props:Z1,_owner:U1},(P$!==void 0?P$:null)!==null?Object.defineProperty(J0,"ref",{enumerable:!1,get:C}):Object.defineProperty(J0,"ref",{enumerable:!1,value:null}),J0._store={},Object.defineProperty(J0._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(J0,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(J0,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:n1}),Object.defineProperty(J0,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:x$}),Object.freeze&&(Object.freeze(J0.props),Object.freeze(J0)),J0}function b(J0,S0){return S0=_(J0.type,S0,J0.props,J0._owner,J0._debugStack,J0._debugTask),J0._store&&(S0._store.validated=J0._store.validated),S0}function E(J0){I(J0)?J0._store&&(J0._store.validated=1):typeof J0==="object"&&J0!==null&&J0.$$typeof===w0&&(J0._payload.status==="fulfilled"?I(J0._payload.value)&&J0._payload.value._store&&(J0._payload.value._store.validated=1):J0._store&&(J0._store.validated=1))}function I(J0){return typeof J0==="object"&&J0!==null&&J0.$$typeof===W0}function T(J0){var S0={"=":"=0",":":"=2"};return"$"+J0.replace(/[=:]/g,function(Z1){return S0[Z1]})}function w(J0,S0){return typeof J0==="object"&&J0!==null&&J0.key!=null?(U(J0.key),T(""+J0.key)):S0.toString(36)}function y(J0){switch(J0.status){case"fulfilled":return J0.value;case"rejected":throw J0.reason;default:switch(typeof J0.status==="string"?J0.then(W,W):(J0.status="pending",J0.then(function(S0){J0.status==="pending"&&(J0.status="fulfilled",J0.value=S0)},function(S0){J0.status==="pending"&&(J0.status="rejected",J0.reason=S0)})),J0.status){case"fulfilled":return J0.value;case"rejected":throw J0.reason}}throw J0}function f(J0,S0,Z1,U1,n1){var x$=typeof J0;if(x$==="undefined"||x$==="boolean")J0=null;var P$=!1;if(J0===null)P$=!0;else switch(x$){case"bigint":case"string":case"number":P$=!0;break;case"object":switch(J0.$$typeof){case W0:case k:P$=!0;break;case w0:return P$=J0._init,f(P$(J0._payload),S0,Z1,U1,n1)}}if(P$){P$=J0,n1=n1(P$);var K4=U1===""?"."+w(P$,0):U1;return L0(n1)?(Z1="",K4!=null&&(Z1=K4.replace(PX,"$&/")+"/"),f(n1,S0,Z1,"",function(y7){return y7})):n1!=null&&(I(n1)&&(n1.key!=null&&(P$&&P$.key===n1.key||U(n1.key)),Z1=b(n1,Z1+(n1.key==null||P$&&P$.key===n1.key?"":(""+n1.key).replace(PX,"$&/")+"/")+K4),U1!==""&&P$!=null&&I(P$)&&P$.key==null&&P$._store&&!P$._store.validated&&(Z1._store.validated=2),n1=Z1),S0.push(n1)),1}if(P$=0,K4=U1===""?".":U1+":",L0(J0))for(var g$=0;g$<J0.length;g$++)U1=J0[g$],x$=K4+w(U1,g$),P$+=f(U1,S0,Z1,x$,n1);else if(g$=Z(J0),typeof g$==="function")for(g$===J0.entries&&(t8||console.warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead."),t8=!0),J0=g$.call(J0),g$=0;!(U1=J0.next()).done;)U1=U1.value,x$=K4+w(U1,g$++),P$+=f(U1,S0,Z1,x$,n1);else if(x$==="object"){if(typeof J0.then==="function")return f(y(J0),S0,Z1,U1,n1);throw S0=String(J0),Error("Objects are not valid as a React child (found: "+(S0==="[object Object]"?"object with keys {"+Object.keys(J0).join(", ")+"}":S0)+"). If you meant to render a collection of children, use an array instead.")}return P$}function h(J0,S0,Z1){if(J0==null)return J0;var U1=[],n1=0;return f(J0,U1,"","",function(x$){return S0.call(Z1,x$,n1++)}),U1}function p(J0){if(J0._status===-1){var S0=J0._ioInfo;S0!=null&&(S0.start=S0.end=performance.now()),S0=J0._result;var Z1=S0();if(Z1.then(function(n1){if(J0._status===0||J0._status===-1){J0._status=1,J0._result=n1;var x$=J0._ioInfo;x$!=null&&(x$.end=performance.now()),Z1.status===void 0&&(Z1.status="fulfilled",Z1.value=n1)}},function(n1){if(J0._status===0||J0._status===-1){J0._status=2,J0._result=n1;var x$=J0._ioInfo;x$!=null&&(x$.end=performance.now()),Z1.status===void 0&&(Z1.status="rejected",Z1.reason=n1)}}),S0=J0._ioInfo,S0!=null){S0.value=Z1;var U1=Z1.displayName;typeof U1==="string"&&(S0.name=U1)}J0._status===-1&&(J0._status=0,J0._result=Z1)}if(J0._status===1)return S0=J0._result,S0===void 0&&console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
321
321
 
322
322
  Your code should look like:
323
323
  const MyComponent = lazy(() => import('./MyComponent'))
@@ -718,7 +718,7 @@ mutation($repositoryId: ID!, $categoryId: ID!, $title: String!, $body: String!)
718
718
  `:"")}function rn($,Z){for(let J of o4(Z).plugins){if(!J.enabled)continue;let X;try{X=Q6(J.root).manifest}catch{continue}for(let z of X.fileHandlers)try{if(new RegExp(z.pattern,"i").test($))return{qualifiedAction:lO(J.id,z.action)}}catch{}}return null}var XE=d(()=>{mJ();MZ();NZ()});import{closeSync as vU0,openSync as kU0,readFileSync as mU0,readSync as hU0,statSync as uU0}from"fs";function cU0($){if(!$)return null;let Z=$.trimEnd().split(`
719
719
  `);for(let J=Z.length-1;J>=0;J--){let X=Z[J]?.trim();if(!X)continue;let z;try{z=JSON.parse(X)}catch{continue}if(typeof z.at!=="number")continue;let G=typeof z.exitCode==="number"?z.exitCode:null,W=typeof z.spawnError==="string"?z.spawnError:void 0;return{at:z.at,label:typeof z.label==="string"?z.label:typeof z.kind==="string"?z.kind:"run",exitCode:G,ok:W===void 0&&G===0,...W?{spawnError:W}:{}}}return null}function dU0($,Z,J,X,z={}){let G=null,W=[];if(J!==null)try{let{manifest:H}=tK(J);G={actions:H.actions.length,events:H.events.length,panes:H.panes.length},W=mn(H.settings,z)}catch{G=null}return{id:Z.id,version:Z.version,enabled:Z.enabled,linked:Z.source.kind==="link",source:Z.source.kind==="link"?Z.root:Z.source.spec,declares:G,lastRun:cU0(X),settings:W,updateAvailable:$.has(Z.id)}}function sn($){let Z=Math.max(0,Math.floor($/1000));if(Z<60)return`${Z}s`;if(Z<3600)return`${Math.floor(Z/60)}m`;if(Z<86400)return`${Math.floor(Z/3600)}h`;return`${Math.floor(Z/86400)}d`}function pU0($){let Z;try{let J=uU0($).size,X=Math.min(J,lU0),z=Buffer.alloc(X);return Z=kU0($,"r"),hU0(Z,z,0,X,J-X),z.toString("utf8")}catch{return null}finally{if(Z!==void 0)vU0(Z)}}function nU0($){if(!$)return null;try{return mU0($,"utf8")}catch{return null}}function aV($){let Z=new Set(ln($));return o4($).plugins.map((J)=>dU0(Z,J,nU0(lH(J.root)),pU0(iH(J.id,$)),on(J.id,$)))}function tn($,Z,J,X){an($,{[Z]:J},X)}function en($,Z,J){let X=o4(J);LZ({plugins:X.plugins.map((z)=>z.id===$?{...z,enabled:Z}:z)},J)}var lU0=65536;var QE=d(()=>{mJ();JE();MZ();NZ();XE()});import{TextAttributes as $i}from"@opentui/core";function iU0($){let Z=[],J=0;for(let X of $)Z.push(J),J+=1+X.settings.length;return Z}function oU0($){let{theme:Z}=d0(),J=e0(),{setting:X}=$,z=X.type==="boolean"?oV(X.value)?J("settings.general.on"):J("settings.general.off"):X.value||J("settings.plugins.settingUnset");return R.jsxDEV("box",{flexDirection:"row",gap:1,paddingLeft:5,paddingRight:1,backgroundColor:$.cursor?Z.primary:void 0,onMouseUp:$.onActivate,children:[R.jsxDEV("text",{fg:$.cursor?Z.selectedListItemText:Z.text,wrapMode:"none",children:X.label},void 0,!1,void 0,this),R.jsxDEV("text",{fg:$.cursor?Z.selectedListItemText:X.defaulted?Z.textMuted:Z.accent,wrapMode:"none",children:z},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Zi($){let{theme:Z}=d0(),J=e0(),X=Date.now(),z=(W)=>$.level==="body"&&$.bodyRow===W,G=iU0($.plugins);return R.jsxDEV("box",{flexDirection:"column",gap:1,children:[R.jsxDEV("text",{fg:Z.text,attributes:$i.BOLD,children:J("settings.plugins.title")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"word",children:J("settings.plugins.hint")},void 0,!1,void 0,this),$.plugins.length===0?R.jsxDEV("text",{fg:Z.textMuted,wrapMode:"word",children:J("settings.plugins.empty")},void 0,!1,void 0,this):R.jsxDEV("box",{flexDirection:"column",gap:0,children:$.plugins.map((W,H)=>{let U=G[H]??0,B=z(U);return R.jsxDEV("box",{flexDirection:"column",gap:0,children:[R.jsxDEV("box",{flexDirection:"row",gap:1,paddingLeft:1,paddingRight:1,backgroundColor:B?Z.primary:void 0,onMouseUp:()=>{$.setLevel("body"),$.setBodyRow(U),$.toggle(W.id)},children:[R.jsxDEV("text",{fg:B?Z.selectedListItemText:W.enabled?Z.accent:Z.textMuted,attributes:$i.BOLD,wrapMode:"none",children:`${W.enabled?"[x]":"[ ]"} ${W.id}`},void 0,!1,void 0,this),R.jsxDEV("text",{fg:B?Z.selectedListItemText:Z.textMuted,wrapMode:"none",children:`v${W.version} ${W.linked?J("settings.plugins.sourceLink",{path:W.source}):J("settings.plugins.sourceGithub",{spec:W.source})}`},void 0,!1,void 0,this),W.updateAvailable?R.jsxDEV("text",{fg:Z.warning,wrapMode:"none",children:J("settings.plugins.updateAvailable")},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),R.jsxDEV("box",{flexDirection:"row",gap:1,paddingLeft:5,paddingRight:1,children:[R.jsxDEV("text",{fg:W.declares?Z.textMuted:Z.warning,wrapMode:"none",children:W.declares?J("settings.plugins.declares",{actions:String(W.declares.actions),events:String(W.declares.events),panes:String(W.declares.panes)}):J("settings.plugins.manifestUnreadable")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:W.lastRun?.ok===!1?Z.error:Z.textMuted,wrapMode:"none",children:W.lastRun?J("settings.plugins.lastRun",{label:W.lastRun.label,status:W.lastRun.ok?J("settings.plugins.runOk"):W.lastRun.spawnError?J("settings.plugins.runFailed"):J("settings.plugins.runExit",{code:String(W.lastRun.exitCode)}),ago:sn(X-W.lastRun.at)}):J("settings.plugins.neverRun")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W.settings.map((M,O)=>R.jsxDEV(oU0,{setting:M,cursor:z(U+1+O),onActivate:()=>{$.setLevel("body"),$.setBodyRow(U+1+O),$.editSetting(W.id,M.key)}},M.key,!1,void 0,this))]},W.id,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Ji=d(async()=>{X$();QE();a0();await Z$()});function tV($){return`engineProtocol.${$}`}function rV($){if(p5($))return $;let Z=x5(tV($))?.trim();return Z&&sV.includes(Z)?Z:void 0}function zE($){return p5($)||x2().includes($)}function aU0(){return[...Z9,...x2()]}function rU0($){let J=x5(H8($))?.trim()||oQ($).join(" ");return{id:$,name:y5($),command:J,protocol:rV($)??WG,builtin:p5($)}}function Xi(){return aU0().map(rU0)}function eQ($){let Z=$?.trim();if(!Z)return WG;if(zE(Z))return rV(Z)??WG;let J=rj(Z);if(J)return J;let X=Sq(Z)[0];if(X)for(let z of x2()){let G=x5(H8(z))?.trim();if(G&&Sq(G)[0]===X)return rV(z)??WG}return WG}function F2($){let Z=$.command?.trim();if(!Z)return Iq($.vendor,$.effort);let J=(zE(Z)?rV(Z):void 0)??eQ(Z),X=zE(Z)?sU0(Z):(()=>{let z=Sq(Z);return z.length>0?z:null})();if(!X)return Iq($.vendor,$.effort);return kI(mI(X,J,$.effort),J)}function sU0($){let Z=x5(H8($))?.trim();if(Z){let J=Sq(Z);if(J.length>0)return J}return oQ($)}var WG="generic",sV;var N9=d(()=>{C4();P7();DZ();L7();sV=Z9});import{TextAttributes as tU0}from"@opentui/core";function eU0($){let Z=o$(),{theme:J}=d0(),X=e0(),z=M7(),[G,W]=Qi.useState($.currentTitle);function H(){let U=G.trim();if(vF(U)&&!$.allowEmpty)return;$.onSubmit(U),Z.clear()}return R.jsxDEV("box",{paddingLeft:z,paddingRight:z,gap:1,children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:[R.jsxDEV("text",{attributes:tU0.BOLD,fg:J.text,children:$.dialogTitle??X("common.rename.defaultTitle")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:J.textMuted,onMouseUp:()=>$.onCancel(),children:"esc"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{gap:0,children:[R.jsxDEV("text",{fg:J.accent,children:$.fieldLabel??X("common.rename.defaultFieldLabel")},void 0,!1,void 0,this),R.jsxDEV("input",{value:G,placeholder:$.placeholder??$.currentTitle,focused:!0,onInput:(U)=>W(r5(U)),onSubmit:()=>H()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{paddingBottom:1,children:R.jsxDEV("text",{fg:J.textMuted,children:X("common.rename.footerHint",{submitLabel:$.submitLabel??X("common.rename.defaultSubmitLabel")})},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function $B0($,Z,J={}){return k2($,(X)=>R.jsxDEV(eU0,{currentTitle:Z,dialogTitle:J.dialogTitle,fieldLabel:J.fieldLabel,submitLabel:J.submitLabel,placeholder:J.placeholder,allowEmpty:J.allowEmpty,onSubmit:(z)=>X(z),onCancel:()=>X(void 0)},void 0,!1,void 0,this))}var Qi,g5;var QX=d(async()=>{p8();X$();a0();await J$([Z$(),C5()]);Qi=z1(q1(),1);g5={show:$B0}});function Yi($,Z,J){function X(){let E=$.get("customEngineIds",[]);return Array.isArray(E)?E.filter((I)=>typeof I==="string"&&I.trim().length>0):[]}function z(){return[...m8,...X()]}function G(E){let I=$.get(H8(E),"");return typeof I==="string"?I.trim():""}function W(E){return G(E)||oQ(E).join(" ")}function H(E){return p5(E)&&G(E).length===0&&!B(E)}function U(E){let I=$.get(F9(E),"");return typeof I==="string"?I.trim():""}function B(E){return U(E).length>0}function M(E){return U(E)||F$(E).displayName}let[O,L]=zi.useState(()=>EO()??v4);function j(E){KR(E),$.set("defaultVendor",E),L(E)}async function A(E){let I=await g5.show(Z,W(E),{dialogTitle:`${M(E)} launch command`,fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(I===void 0)return;$.set(H8(E),I.trim())}async function C(E){let I=await g5.show(Z,M(E),{dialogTitle:`${M(E)} display name (blank = default)`,fieldLabel:"name",submitLabel:"save",allowEmpty:!0});if(I===void 0)return;$.set(F9(E),I.trim())}function _(E){if($.set(H8(E),""),$.set(F9(E),""),!p5(E))$.set(tV(E),""),$.set("customEngineIds",X().filter((I)=>I!==E)),J(z().length)}async function b(){let E=await g5.show(Z,"",{dialogTitle:"Add engine",fieldLabel:"id",submitLabel:"next",placeholder:"lowercase slug, e.g. aider"});if(E===void 0)return;let I=E.trim().toLowerCase();if(!I||p5(I)||X().includes(I))return;let T=await g5.show(Z,"",{dialogTitle:`Add engine \xB7 ${I}`,fieldLabel:"command",submitLabel:"next",placeholder:"e.g. aider --model sonnet"});if(T===void 0)return;let w=await g5.show(Z,"",{dialogTitle:`Add engine \xB7 ${I} \u2014 protocol (blank = none)`,fieldLabel:"protocol",submitLabel:"next",allowEmpty:!0,placeholder:sV.join(" / ")}),y=await g5.show(Z,I,{dialogTitle:`Add engine \xB7 ${I}`,fieldLabel:"name",submitLabel:"add",allowEmpty:!0});if($.set("customEngineIds",[...X(),I]),T.trim())$.set(H8(I),T.trim());let f=w?.trim().toLowerCase()??"";if(f&&sV.includes(f))$.set(tV(I),f);let h=y?.trim()??"";$.set(F9(I),h&&h!==I?h:Tp(I))}return{engineList:z,engineName:M,engineCommandText:W,engineIsDefault:H,defaultEngine:O,setEngineDefault:j,editEngine:A,renameEngine:C,resetEngine:_,addEngineFlow:b}}var zi;var Gi=d(async()=>{N9();L7();F7();yJ();EF();U2();P7();await QX();zi=z1(q1(),1)});function Wi($){let[Z,J]=O9.useState(null),[X,z]=O9.useState(null),[G,W]=O9.useState(null),[H,U]=O9.useState(null),B=O9.useRef(!1);return O9.useEffect(()=>{if($!=="accounts"||B.current)return;B.current=!0,aH().then(J),rH().then(z),sH().then(W),Zj().then(U)},[$]),{claude:Z,codex:X,copilot:G,kimi:H}}function Hi($,Z){let[J,X]=O9.useState([]),z=e0();O9.useEffect(()=>{if($!=="plugins")return;X(aV())},[$]);function G(W,H,U){try{tn(W,H,U)}catch{}X(aV())}return{rows:J,toggle:(W)=>{let H=J.find((U)=>U.id===W);if(!H)return;try{en(W,!H.enabled)}catch{}X(aV())},editSetting:async(W,H)=>{let U=J.find((O)=>O.id===W)?.settings.find((O)=>O.key===H);if(!U)return;if(U.type==="enum"){G(W,H,hn(U.options,U.value));return}if(U.type==="boolean"){G(W,H,un(U));return}let B=await g5.show(Z,U.value,{dialogTitle:U.label,fieldLabel:H,submitLabel:"save",allowEmpty:!0,placeholder:U.defaultValue});if(B===void 0)return;if(U.type!=="number"){G(W,H,B.trim());return}let M=cn(B);if(M===null){await O4.show(Z,z("settings.plugins.settingInvalidTitle"),z("settings.plugins.settingInvalidBody",{label:U.label}),"cancel");return}G(W,H,M)}}}var O9;var qi=d(async()=>{cJ();X$();QE();await J$([TZ(),QX()]);O9=z1(q1(),1)});var YE="experimental.archivedHistoryPreview";var Ui=d(()=>{w2()});function $_($,Z){if(typeof $==="string"&&hF.includes($))return $;if(Z===!0)return"multipleOnly";if(Z===!1)return"always";return"never"}function Bi($,Z){if($==="never")return!1;if($==="multipleOnly")return Z>=2;return!0}var mF="chat.tabStrip.mode",hF,eV="chat.tabStrip.hideSingle";var GE=d(()=>{hF=["always","multipleOnly","never"]});var WE="zen.keepTasks",xq="zen.active";var HE=d(()=>{w2()});function fq($){return HG.includes($)?$:"auto"}var HG,Ki,zX="editor.kind",$z="editor.customCommand",Z_="auto";var J_=d(()=>{HG=["auto","vim","nvim","nano","emacs","custom"],Ki=["nvim","vim","emacs","nano"]});import{accessSync as ZB0,constants as JB0,mkdirSync as XB0}from"fs";function Fi($,Z){let J=e0();function X(){return $.get("notifications.toast.enabled",!0)!==!1}function z(){return $.get("notifications.sound.enabled",!0)!==!1}function G(){$.set("notifications.toast.enabled",!X())}function W(){$.set("notifications.sound.enabled",!z())}function H(){return $.get("notifications.crossTask.enabled",!0)!==!1}function U(){$.set("notifications.crossTask.enabled",!H())}function B(){return AV($.get(SF))}function M(n){$.set(SF,n)}function O(){return $.get(xq,!1)===!0}function L(){$.set(xq,!O())}function j(){return $.get(WE,!0)!==!1}function A(){$.set(WE,!j())}function C(){return $_($.get(mF,void 0),$.get(eV,void 0))}function _(){let n=hF[(hF.indexOf(C())+1)%hF.length];$.set(mF,n)}function b(){return $.get("experimental.remoteProjects",!1)===!0}function E(){$.set("experimental.remoteProjects",!b())}function I(){return $.get(XG,!1)===!0}function T(){$.set(XG,!I())}function w(){return $.get(QG,!1)===!0}function y(){$.set(QG,!w())}function f(){return $.get(YE,!1)===!0}function h(){$.set(YE,!f())}function p(){return fq($.get(zX,Z_))}function m(){let n=HG.indexOf(p()),Y0=HG[(n+1)%HG.length];if(Y0)$.set(zX,Y0)}function t(){let n=$.get($z,"");return typeof n==="string"?n:""}async function s(){let n=await g5.show(Z,t(),{dialogTitle:"Custom editor command (use {file} for the path)",fieldLabel:"command",submitLabel:"save",allowEmpty:!0});if(n===void 0)return;let Y0=n.trim();if($.set($z,Y0),Y0)$.set(zX,"custom")}function G0(){return HV($.get(GV,WV))}async function U0(){let n=await g5.show(Z,String(G0()),{dialogTitle:J("settings.general.scrollbackTitle"),fieldLabel:J("settings.general.scrollbackField"),submitLabel:"save",placeholder:String(WV)});if(n===void 0)return;let Y0=Number.parseInt(n.trim(),10);if(!Number.isFinite(Y0)){await O4.show(Z,J("settings.general.scrollbackInvalidTitle"),J("settings.general.scrollbackInvalidBody"),"cancel");return}$.set(GV,HV(Y0))}function F0(){let n=$.get(SQ,"");return typeof n==="string"?n:""}let B0=()=>fb(F0());function W0(){let n=B0();if(n==="default")return J("settings.general.worktreeKindDefault");if(n==="nextToProject")return J("settings.general.worktreeKindNext");return J("settings.general.worktreeKindCustom")}function k(){let n=$.get(RO,"");return(typeof n==="string"?n.trim():"")||(B0()==="custom"?F0().trim():"")}function i(){let n=B0();if(n==="default")$.set(SQ,$R);else if(n==="nextToProject")$.set(SQ,k());else $.set(RO,F0().trim()),$.set(SQ,"")}async function l(){let n=await g5.show(Z,k(),{dialogTitle:J("settings.general.worktreeBaseTitle"),fieldLabel:J("settings.general.worktreeBaseField"),submitLabel:"save",placeholder:`${wJ}/../worktrees`,allowEmpty:!0});if(n===void 0)return;let Y0=n.trim();if(Y0.includes(wJ)){if(!ZR(Y0)){await O4.show(Z,"Can't use that worktree location",`${wJ} only expands as the leading path segment (e.g. ${wJ}/../kobe-worktrees). Keeping the previous setting.`,"cancel");return}}else if(Y0){let Z0=JR(Y0)??Y0;try{XB0(Z0,{recursive:!0}),ZB0(Z0,JB0.W_OK)}catch(a){await O4.show(Z,"Can't use that worktree location",`${Z0} isn't usable (${M1(a)}). Keeping the previous setting \u2014 pick a writable directory.`,"cancel");return}}if($.set(RO,Y0),Y0)$.set(SQ,Y0);else if(B0()==="custom")$.set(SQ,"")}return{toastEnabled:X,toggleToast:G,soundEnabled:z,toggleSound:W,crossTaskEnabled:H,toggleCrossTask:U,splitStyle:B,selectSplitStyle:M,zenDefaultOn:O,toggleZenDefaultOn:L,zenKeepsTasks:j,toggleZenKeepsTasks:A,remoteProjectsEnabled:b,toggleRemoteProjects:E,autoStatusOn:I,toggleAutoStatus:T,dispatcherOn:w,toggleDispatcher:y,archivedHistoryOn:f,toggleArchivedHistory:h,editorKind:p,cycleEditorKind:m,editorCustomCommand:t,editEditorCustom:s,scrollbackRows:G0,editScrollbackRows:U0,tabStripMode:C,cycleTabStripMode:_,worktreeKind:B0,worktreeKindLabel:W0,worktreeCustomPath:k,cycleWorktreeBase:i,editWorktreeCustom:l}}var Mi=d(async()=>{Ui();bF();mV();hS();IF();GE();XR();HE();J_();X$();await J$([TZ(),QX()])});import{TextAttributes as QB0}from"@opentui/core";function X_($){let Z=o$(),J=d0(),X=N4(),{theme:z}=J,G=e0(),W=M7(),[H,U]=n8.useState("sidebar"),[B,M]=n8.useState("general"),[O,L]=n8.useState(0),[j,A]=n8.useState(0),[C,_]=n8.useState(""),[b,E]=n8.useState(""),[I,T]=n8.useState(""),w=n8.useMemo(()=>J.all().slice().sort(),[J]),y=yF($.orchestrator),f=Fi($.kv,Z),h=Yi($.kv,Z,(j0)=>A((l0)=>Math.max(0,Math.min(l0,j0)))),p=$.orchestrator instanceof iJ?$.orchestrator:null,m=J4(p?p.usageSnapshotSignal():zB0),t=Wi(B),s=Hi(B,Z);function G0(){return Rp(B,{themeNames:w,focusAccentSlots:lQ,engineList:h.engineList(),plugins:s.rows.map((j0)=>({id:j0.id,settingKeys:j0.settings.map((l0)=>l0.key)})),hasDaemon:y})}function U0(){return G0().length}function F0(j0){if(J.selected===j0)return;if(!J.set(j0))return;$.kv.set("activeTheme",j0),$.onVisualPrefsChange?.()}function B0(j0){if(CV()===j0)return;Aq(j0),$.kv.set(EV,j0),$.onVisualPrefsChange?.()}function W0(){let j0=!J.transparentBackground;J.setTransparentBackground(j0),$.kv.set("transparentBackground",j0),$.onVisualPrefsChange?.()}function k(j0){if(J.focusAccent===j0)return;J.setFocusAccent(j0),$.kv.set("focusAccent",j0),$.onVisualPrefsChange?.()}function i(){if(B!=="engines"||H!=="body")return null;let j0=SI(G0(),j);return j0?.kind==="engine"?j0.vendor:null}async function l(){T("submitting...");try{let j0=Pq({title:C,body:b});T(`sent: ${j0.url}`),_(""),E(""),A(0)}catch(j0){T(`error: ${M1(j0)}`)}}let n=B==="feedback"&&H==="body";function Y0(j0){let l0=j+j0;if(l0<0||l0>2){U("sidebar");return}A(l0)}function Z0(){if(H!=="sidebar"||U0()===0)return;U("body"),A(0)}function a(j0){if(H==="sidebar"){let W1=(O+j0+ZG.length)%ZG.length;L(W1);let R1=ZG[W1];if(R1)M(R1.id),A(0);return}let l0=U0();if(l0===0)return;A((j+j0+l0)%l0)}function $0(j0){M(j0),L(ZG.findIndex((l0)=>l0.id===j0)),A(0),U("sidebar")}let O0={theme:(j0)=>F0(j0.name),language:(j0)=>B0(j0.locale),transparent:()=>W0(),focusAccent:(j0)=>k(j0.slot),toast:()=>f.toggleToast(),sound:()=>f.toggleSound(),crossTask:()=>f.toggleCrossTask(),keyHints:()=>IV($.kv),splitStyle:(j0)=>f.selectSplitStyle(j0.style),zenDefaultOn:()=>f.toggleZenDefaultOn(),zenKeepTasks:()=>f.toggleZenKeepsTasks(),editorKind:()=>f.cycleEditorKind(),editorCustom:()=>void f.editEditorCustom(),worktreeBase:()=>f.cycleWorktreeBase(),worktreeCustom:()=>void f.editWorktreeCustom(),scrollbackRows:()=>void f.editScrollbackRows(),tabStripHideSingle:()=>f.cycleTabStripMode(),engine:(j0)=>void h.editEngine(j0.vendor),engineAdd:()=>void h.addEngineFlow(),pluginToggle:(j0)=>s.toggle(j0.pluginId),pluginSetting:(j0)=>void s.editSetting(j0.pluginId,j0.key),feedbackTitle:()=>A(0),feedbackBody:()=>A(1),feedbackSend:()=>void l(),devReset:()=>void gI(Z,$.kv,X),devRestartDaemon:()=>void bI(Z,$.orchestrator,X),devRemoteProjects:()=>f.toggleRemoteProjects(),devAutoStatus:()=>f.toggleAutoStatus(),devDispatcher:()=>f.toggleDispatcher(),devArchivedHistory:()=>f.toggleArchivedHistory()};function Q0(){let j0=SI(G0(),j);if(!j0)return;O0[j0.kind](j0)}b1(()=>({enabled:(!$.standalone||Z.stack.length===0)&&!n,bindings:[{key:"down",cmd:()=>a(1)},{key:"up",cmd:()=>a(-1)},{key:"j",cmd:()=>a(1)},{key:"k",cmd:()=>a(-1)},{key:"tab",cmd:()=>a(1)},{key:"right",cmd:Z0},{key:"l",cmd:Z0},{key:"left",cmd:()=>U("sidebar")},{key:"h",cmd:()=>U("sidebar")},{key:"return",cmd:()=>{if(H==="sidebar"){Z0();return}Q0()}},{key:"t",cmd:W0},{key:"r",cmd:()=>{let j0=i();if(j0)h.renameEngine(j0)}},{key:"x",cmd:()=>{let j0=i();if(j0)h.resetEngine(j0)}},{key:"d",cmd:()=>{let j0=i();if(j0)h.setEngineDefault(j0)}}]})),b1(()=>({enabled:n,bindings:[{key:"tab",cmd:()=>Y0(1)},{key:"shift+tab",cmd:()=>Y0(-1)}]})),b1(()=>({enabled:n&&j===2,bindings:[{key:"return",cmd:()=>void l()}]}));let w0=n8.useRef(null),b0=n8.useCallback((j0)=>{let l0=w0.current;if(!l0||!j0||l0.viewport.height<=0)return;l0.scrollChildIntoView(j0.id)},[]),D0={level:H,bodyRow:j,setLevel:U,setBodyRow:A},u0=R.jsxDEV("box",{paddingLeft:W,paddingRight:W,paddingBottom:1,gap:1,children:[R.jsxDEV("box",{flexDirection:"row",justifyContent:"space-between",children:[R.jsxDEV("text",{attributes:QB0.BOLD,fg:z.text,children:G("settings.title")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:z.textMuted,onMouseUp:()=>$.onClose(),children:G("settings.esc")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{flexDirection:"row",gap:2,children:[R.jsxDEV(qn,{level:H,cursor:O,switchSection:$0},void 0,!1,void 0,this),R.jsxDEV("box",{flexGrow:1,flexShrink:1,flexDirection:"column",gap:1,children:[B==="general"?R.jsxDEV(Un,{...D0,prefs:f,themeNames:w,selectTheme:F0,currentLocale:CV(),selectLanguage:B0,toggleTransparent:W0,selectFocusAccent:k,usage:m},void 0,!1,void 0,this):null,B==="engines"?R.jsxDEV(op,{...D0,vendors:h.engineList(),isCustom:(j0)=>!p5(j0),displayName:h.engineName,commandText:h.engineCommandText,isDefault:h.engineIsDefault,isDefaultEngine:(j0)=>h.defaultEngine===j0,editEngine:(j0)=>void h.editEngine(j0),onAddEngine:()=>void h.addEngineFlow()},void 0,!1,void 0,this):null,B==="accounts"?R.jsxDEV(ap,{claudeStatus:t.claude,codexStatus:t.codex,copilotStatus:t.copilot,kimiStatus:t.kimi},void 0,!1,void 0,this):null,B==="plugins"?R.jsxDEV(Zi,{...D0,plugins:s.rows,toggle:s.toggle,editSetting:(j0,l0)=>void s.editSetting(j0,l0)},void 0,!1,void 0,this):null,B==="keys"?R.jsxDEV(vn,{},void 0,!1,void 0,this):null,B==="feedback"?R.jsxDEV(gn,{...D0,title:C,setTitle:(j0)=>{_(j0),T("")},body:b,setBody:(j0)=>{E(j0),T("")},status:I,onTitleSubmit:()=>A(1),submit:()=>void l()},void 0,!1,void 0,this):null,B==="dev"?R.jsxDEV(bn,{...D0,prefs:f,hasDaemon:y,confirmReset:()=>void gI(Z,$.kv,X),confirmRestartDaemon:()=>void bI(Z,$.orchestrator,X)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),R.jsxDEV("box",{paddingTop:0,children:R.jsxDEV("text",{fg:z.textMuted,children:n?G("settings.nav.feedback"):G("settings.nav.default")},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(!$.standalone)return R.jsxDEV(gV.Provider,{value:b0,children:u0},void 0,!1,void 0,this);return R.jsxDEV(gV.Provider,{value:b0,children:R.jsxDEV("scrollbox",{ref:(j0)=>{w0.current=j0},flexGrow:1,verticalScrollbarOptions:{trackOptions:{foregroundColor:"transparent"}},children:u0},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var n8,zB0;var Li=d(async()=>{LF();UZ();TF();EF();fF();II();P7();X$();U9();a0();await J$([k4(),Z$(),D4(),C5(),np(),bV(),rp(),Bn(),kn(),Ji(),Gi(),qi(),Mi()]);n8=z1(q1(),1),zB0=n$(null);X_.show=($,Z,J)=>{let X=!1;return new Promise((z)=>{$.replace(()=>R.jsxDEV(X_,{kv:Z,orchestrator:J,onVisualPrefsChange:()=>{X=!0},onClose:()=>z({visualPrefsChanged:X})},void 0,!1,void 0,this),()=>z({visualPrefsChanged:X}))})}});function Oi($,Z){return`${$}:${Z}`}function ji($,Z){let J=Oi(Z.taskId,Z.tabId),X=$.get(J);if(X==="needs_input"||X==="error")return $;let z=new Map($);return z.set(J,Z.kind),z}function Vi($,Z,J){let X=Oi(Z,J);if(!$.has(X))return $;let z=new Map($);return z.delete(X),z}function _i($,Z){return $==="error"||Z}function Ci($){if($==="permission_needed")return"needs_input";if($==="error"||$==="rate_limited")return"error";if($==="turn_complete")return"done";return null}function Di($){if($==="done")return"done";if($==="error")return"error";if($==="needs_input")return"needs_input";return null}function Q_($,Z,J,X){if($===null)return[];let z=[];for(let[G,W]of Z){if(G===J)continue;if($.get(G)===W)continue;let H=X(W);if(H)z.push({key:G,kind:H})}return z}function YB0($){let Z="",J=0;for(let X=0;X<$.length;X++){let z=$.charCodeAt(X);if(z>31&&(z<127||z>159))continue;Z+=`${$.slice(J,X)} `,J=X+1}return J===0?$:Z+$.slice(J)}function Ai($){return`\x1B]9;${YB0($)}\x07`}var Ni=4500;var z_="../pulse-n3cq1btw.wav";var Pi=()=>{};import{existsSync as WB0,mkdirSync as HB0}from"fs";import{tmpdir as qB0}from"os";import{basename as UB0,delimiter as BB0,isAbsolute as KB0,join as qE,resolve as FB0}from"path";function LB0($,Z,J){if($==="ffplay")return[$,"-autoexit","-nodisp","-af",`volume=${J}`,Z];if($==="mpv")return[$,"--no-video","--audio-display=no","--volume",String(Math.round(J*100)),Z];if($==="mpg123"||$==="mpg321")return[$,"-g",String(Math.round(J*100)),Z];if($==="mplayer")return[$,"-vo","null","-volume",String(Math.round(J*100)),Z];if($==="afplay"||$==="omxplayer"||$==="aplay"||$==="cmdmp3")return[$,Z];if($==="play")return[$,"-v",String(J),Z];if($==="cvlc")return[$,`--gain=${J}`,"--play-and-exit",Z];return[$,"-c",`(New-Object Media.SoundPlayer '${Z.replace(/'/g,"''")}').PlaySync()`]}function NB0($,Z=BB0){return $.split(Z).filter(Boolean)}function OB0(){if(Y_!==void 0)return Y_;let $=NB0(process.env.PATH??"");return Y_=MB0.find((Z)=>$.some((J)=>WB0(qE(J,Z))))??null,Y_}async function jB0(){return Si??=(async()=>{HB0(Ti,{recursive:!0});let $=qE(Ti,UB0(Ri)),Z=Bun.file($);if(await Z.exists())return $;return await Bun.write(Z,Bun.file(Ri)),$})(),Si}function Ii($=0.4){let Z=OB0();if(!Z)return;jB0().then((J)=>{try{Bun.spawn(LB0(Z,J,$),{stdin:"ignore",stdout:"ignore",stderr:"ignore"}).unref?.()}catch{}}).catch(()=>{return})}var Ri,Ti,MB0,Y_,Si;var Ei=d(()=>{Pi();Ri=KB0(z_)?z_:FB0(import.meta.dir,z_),Ti=qE(qB0(),"kobe-sfx"),MB0=["ffplay","mpv","mpg123","mpg321","mplayer","afplay","play","omxplayer","aplay","cmdmp3","cvlc","powershell.exe"]});function xi($){let[Z,J]=x7.useState([]),[X,z]=x7.useState(new Map),G=x7.useMemo(()=>L4(),[]),W=x7.useRef(0),H=x7.useRef(new Set);x7.useEffect(()=>()=>{for(let L of H.current)clearTimeout(L);H.current.clear()},[]);let U=x7.useCallback((L)=>{J((j)=>j.filter((A)=>A.id!==L))},[]),B=x7.useCallback((L)=>{if(z((A)=>ji(A,L)),G["notifications.sound.enabled"]!==!1){try{process.stdout.write(`\x07${Ai(`Rove \u2014 ${L.title}`)}`)}catch{}Ii()}let j=G["notifications.toast.enabled"]!==!1;if(_i(L.kind,j)){let A=++W.current;J((_)=>[..._,{id:A,...L}]);let C=setTimeout(()=>{H.current.delete(C),U(A)},Ni);H.current.add(C)}},[G,U]),M=x7.useCallback((L,j)=>{z((A)=>Vi(A,L,j))},[]),O=x7.useMemo(()=>({toasts:Z,unread:X,notify:B,dismiss:U,markRead:M}),[Z,X,B,U,M]);return R.jsxDEV(wi.Provider,{value:O,children:$.children},void 0,!1,void 0,this)}function Zz(){let $=x7.useContext(wi);if(!$)throw Error("useNotifications must be used within a NotificationsProvider");return $}var x7,wi;var yq=d(()=>{w2();Ei();a0();x7=z1(q1(),1),wi=x7.createContext(null)});import{TextAttributes as fi}from"@opentui/core";function DB0($){return($.body?2:1)+1}function gi(){let{theme:$}=d0(),Z=f5(),J=Zz();if(J.toasts.length===0)return null;let X=J.toasts.slice(-VB0),z=X.reduce((H,U)=>H+DB0(U),0),G=Math.max(0,Z.width-yi-_B0),W=Math.max(0,Z.height-CB0-z);return R.jsxDEV("box",{position:"absolute",zIndex:2500,left:G,top:W,width:yi,flexDirection:"column",gap:1,children:X.map((H)=>{let U=H.kind==="needs_input"?$.warning:H.kind==="error"?$.error:$.success,B=H.kind==="needs_input"?"?":H.kind==="error"?"\u2715":"\u2713";return R.jsxDEV("box",{flexDirection:"row",backgroundColor:$.backgroundElement,onMouseUp:()=>J.dismiss(H.id),children:[R.jsxDEV("box",{flexDirection:"column",flexShrink:0,children:[R.jsxDEV("text",{fg:U,wrapMode:"none",children:"\u258C"},void 0,!1,void 0,this),H.body?R.jsxDEV("text",{fg:U,wrapMode:"none",children:"\u258C"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),R.jsxDEV("box",{flexDirection:"column",flexBasis:0,flexGrow:1,flexShrink:1,paddingLeft:1,paddingRight:1,children:[R.jsxDEV("box",{flexDirection:"row",children:[R.jsxDEV("text",{fg:U,attributes:fi.BOLD,wrapMode:"none",flexShrink:0,children:`${B} `},void 0,!1,void 0,this),R.jsxDEV("text",{fg:$.text,attributes:fi.BOLD,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:H.title},void 0,!1,void 0,this)]},void 0,!0,void 0,this),H.body?R.jsxDEV("box",{flexDirection:"row",paddingLeft:2,children:R.jsxDEV("text",{fg:$.textMuted,wrapMode:"none",flexBasis:0,flexGrow:1,flexShrink:1,children:H.body},void 0,!1,void 0,this)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},H.id,!0,void 0,this)})},void 0,!1,void 0,this)}var VB0=3,yi=44,_B0=2,CB0=2;var bi=d(async()=>{yq();a0();await J$([k4(),Z$()])});function vi($){let[Z,J]=H6.useState($.initial??"sidebar"),X=N4(),z=V1(Z),G=H6.useCallback((U)=>{if(z.current===U)return;let B=X?.currentFocusedRenderable;if(B&&!B.isDestroyed)try{B.blur()}catch{}J(U)},[X]),W=H6.useCallback((U)=>{let M=(G_.indexOf(z.current)+U+G_.length)%G_.length;G(G_[M])},[G]),H=H6.useMemo(()=>({focused:Z,is:(U)=>Z===U,setFocused:G,cycle:W}),[Z,G,W]);return R.jsxDEV(UE.Provider,{value:H,children:$.children},void 0,!1,void 0,this)}function W_(){let $=H6.useContext(UE);if(!$)throw Error("useFocus: must be called inside <FocusProvider>. See src/tui-react/context/focus.tsx.");return $}function ki(){return H6.useContext(UE)}var H6,G_,UE;var uF=d(async()=>{w7();a0();await k4();H6=z1(q1(),1),G_=["sidebar","workspace","files","terminal"],UE=H6.createContext(null)});async function mi($={}){let Z=$.logTag??"orch-connect",J=$.connect??RQ,X=null;try{let z=await J();if(!z)return TJ(Z,"no daemon running \u2014 caller degrades"),null;return X=new iJ(z,{...$.orchestratorOptions,channels:$.channels}),await X.init(),X}catch(z){return M4(Z,z),X?.dispose(),null}}var hi=d(()=>{SJ();I2();LF()});function H_($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function q_($){if(!H_($))return{ok:!1,reason:"theme must be a JSON object at the top level"};let Z=$;if(!("theme"in Z))return{ok:!1,reason:"missing required key `theme`"};let J=Z.theme;if(!H_(J))return{ok:!1,reason:"`theme` must be an object map"};if("defs"in Z&&Z.defs!==void 0){if(!H_(Z.defs))return{ok:!1,reason:"`defs` must be an object map"};for(let[X,z]of Object.entries(Z.defs))if(typeof z!=="string")return{ok:!1,reason:`defs.${X} must be a string (hex like "#abc" or a ref name)`}}for(let[X,z]of Object.entries(J)){if(typeof z==="string")continue;if(!H_(z))return{ok:!1,reason:`theme.${X} must be a string or a { dark, light } object (got ${z===null?"null":Array.isArray(z)?"array":typeof z})`};let G=z;if(typeof G.dark!=="string")return{ok:!1,reason:`theme.${X}.dark must be a string`};if(typeof G.light!=="string")return{ok:!1,reason:`theme.${X}.light must be a string`}}if("$schema"in Z&&Z.$schema!==void 0&&typeof Z.$schema!=="string")return{ok:!1,reason:"`$schema` must be a string when present"};return{ok:!0,theme:Z}}var BE=()=>{};import{readFileSync as AB0,readdirSync as PB0}from"fs";import{join as ui}from"path";function gq(){return ui(K7(),"themes")}function KE(){let $=gq(),Z;try{Z=PB0($)}catch{return[]}let J=[];for(let X of Z){if(!X.endsWith(".json"))continue;let z=ui($,X),G;try{let U=AB0(z,"utf8");G=JSON.parse(U)}catch(U){let B=M1(U);console.warn(`[rove] skipping user theme ${z}: invalid JSON \u2014 ${B}`);continue}let W=q_(G);if(!W.ok){console.warn(`[rove] skipping user theme ${z}: ${W.reason}`);continue}let H=X.slice(0,-5);J.push({name:H,theme:W.theme})}return J}var FE=d(()=>{V5();BE()});function ME($,Z){if(typeof Z.theme==="string"&&Z.theme.length>0&&Z.theme!==$.selectedTheme()){if(!$.hasTheme(Z.theme))$.reloadUserThemes();if($.hasTheme(Z.theme))$.setTheme(Z.theme)}if(typeof Z.transparentBackground==="boolean"&&Z.transparentBackground!==$.transparentBackground())$.setTransparentBackground(Z.transparentBackground);if(Z.focusAccent===null||typeof Z.focusAccent==="string"){let J=TB0(Z.focusAccent);if(J&&J!==$.focusAccent())$.setFocusAccent(J)}}function TB0($){if($===null)return"primary";return RB0.includes($)?$:null}var RB0;var ci=d(()=>{RB0=["primary","success","info"]});function IB0($,Z,J=di,X=SB0){let z=$-J;if(z<X)return null;let G=(W)=>Math.round(W/1048576);return`event loop stalled ~${z}ms \u2014 rss=${G(Z.rss)}MB heapUsed=${G(Z.heapUsed)}MB`}function li(){let $=Date.now(),Z=setInterval(()=>{let J=Date.now(),X=J-$;$=J;let z=IB0(X,process.memoryUsage());if(z)TJ("stall",z)},di);return Z.unref?.(),()=>clearInterval(Z)}var di=1000,SB0=2000;var pi=d(()=>{SJ()});function ni($){let Z={backgroundColor:"transparent",externalOutputMode:"passthrough",exitOnCtrlC:!1,screenMode:"alternate-screen",useKittyKeyboard:{}};return $?{...Z,onDestroy:$}:Z}function ii($,Z){let J={backgroundColor:"transparent",exitOnCtrlC:!1,screenMode:"split-footer",footerHeight:$,useKittyKeyboard:{}};return Z?{...J,onDestroy:Z}:J}function oi($){process.on("exit",()=>$.destroy())}function ai(){let $=!1,Z=()=>{if($)return;$=!0,setTimeout(()=>process.exit(0),5000)};for(let J of["SIGHUP","SIGTERM","SIGINT"])process.on(J,Z)}function ri($=5000){let Z=setInterval(()=>{if(process.ppid===1)process.exit(0)},$);return Z.unref?.(),()=>clearInterval(Z)}class ti{owner=null;anchor=null;claim($,Z){this.owner=$,this.anchor={x:Math.max(0,Math.trunc(Z.x)),y:Math.max(0,Math.trunc(Z.y))}}release($){if(this.owner!==$)return!1;return this.owner=null,this.anchor=null,!0}current(){return this.anchor}}class ei{controller;pending=Buffer.alloc(0);frame=Buffer.alloc(0);constructor($){this.controller=$}push($){let Z=this.pending.length>0?Buffer.concat([this.pending,$]):$;this.pending=Buffer.alloc(0);let J=[],X=0;while(X<Z.length){if(this.frame.length===0){let B=Z.indexOf(Jz,X);if(B<0){let M=Z.subarray(X),O=si(M,[Jz]),L=M.length-O;if(L>0)J.push(M.subarray(0,L));if(O>0)this.pending=Buffer.from(M.subarray(L));break}if(B>X)J.push(Z.subarray(X,B));this.frame=Buffer.from(Jz),X=B+Jz.length;continue}let z=Z.indexOf(U_,X),G=Z.indexOf(Jz,X);if(G>=0&&(z<0||G<z)){this.frame=Buffer.from(Jz),X=G+Jz.length;continue}if(z>=0){if(z>X)this.frame=Buffer.concat([this.frame,Z.subarray(X,z)]);J.push(this.frame);let B=this.controller.current();if(B)J.push(Buffer.from(`\x1B[${B.y+1};${B.x+1}H\x1B[?25l`));J.push(U_),this.frame=Buffer.alloc(0),X=z+U_.length;continue}let W=Z.subarray(X),H=si(W,[Jz,U_]),U=W.length-H;if(U>0)this.frame=Buffer.concat([this.frame,W.subarray(0,U)]);if(H>0)this.pending=Buffer.from(W.subarray(U));break}return J.length>0?Buffer.concat(J):Buffer.alloc(0)}flush(){if(this.frame.length>0)return this.frame=Buffer.alloc(0),this.pending=Buffer.alloc(0),Buffer.alloc(0);let $=this.pending;return this.pending=Buffer.alloc(0),$}}function si($,Z){let J=Math.min($.length,Math.max(...Z.map((X)=>X.length-1)));for(let X=J;X>0;X-=1){let z=$.subarray($.length-X);if(Z.some((G)=>X<G.length&&z.equals(G.subarray(0,X))))return X}return 0}function EB0($,Z){if(typeof $!=="string")return Buffer.from($);let J=typeof Z==="string"?Z:void 0;return Buffer.from($,J)}function wB0($,Z){return typeof $==="function"?$:Z}function xB0($,Z=bq){let J=new ei(Z),z=(W,H,U)=>{let B=J.push(EB0(W,H)),M=wB0(H,U);if(B.length===0){if(M)queueMicrotask(()=>M(null));return!0}return M?$.write(B,M):$.write(B)};return{stdout:new Proxy($,{get(W,H){if(H==="write")return z;let U=Reflect.get(W,H,W);return typeof U==="function"?U.bind(W):U},set(W,H,U){if(H==="write")return z=U,!0;return Reflect.set(W,H,U,W)}}),flush(){let W=J.flush();if(W.length>0)$.write(W)}}}function $o($){if($.platform!=="darwin"||!$.fullscreen)return{active:!1,rendererOptions:{},attach:()=>()=>{},flush:()=>{}};let Z=xB0($.stdout,$.controller);return{active:!0,rendererOptions:{stdout:Z.stdout,remote:!1},attach:(J)=>fB0(J,$.stdout),flush:()=>Z.flush()}}function fB0($,Z,J=process){let X=()=>{let{columns:z,rows:G}=Z;if(!z||!G)return;$.resize(z,G)};return J.on("SIGWINCH",X),()=>J.removeListener("SIGWINCH",X)}var Jz,U_,bq;var LE=d(()=>{Jz=Buffer.from("\x1B[?2026h"),U_=Buffer.from("\x1B[?2026l");bq=new ti});import{createCliRenderer as yB0}from"@opentui/core";function bB0(){return cF.useEffect(()=>{let $=!1,Z=null,J=[];return(async()=>{let X=await mi({logTag:"ui-prefs",channels:["ui-prefs","keybindings"]});if(!X)return;if($){X.dispose();return}Z=X;let z=(U)=>{if(!U)return;if(ME(Zo,U),Dq(U.locale))Aq(U.locale)},G=X.uiPrefsStore();z(G.get()),J.push(G.subscribe(()=>z(G.get())));let W=X.keybindingsRevStore(),H=W.get();J.push(W.subscribe(()=>{let U=W.get();if(U==null||U===H)return;let B=H===null;if(H=U,!B)fn()}))})(),()=>{$=!0;for(let X of J)X();Z?.dispose()}},[]),null}function vB0($){let{theme:Z}=d0();return cF.useEffect(()=>{M4("pane-crash",$.error)},[$.error]),R.jsxDEV("box",{flexDirection:"column",flexGrow:1,backgroundColor:Z.background,paddingLeft:1,paddingTop:1,gap:1,children:[R.jsxDEV("text",{fg:Z.error,children:W$("common.paneCrash.title")},void 0,!1,void 0,this),R.jsxDEV("text",{fg:Z.textMuted,children:W$("common.paneCrash.hint")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}async function qG($){if($.logContext)dg($.logContext);ng(),pV();for(let{name:C,theme:_}of KE())jI(C,_);let Z=fp(gB0,_q);ME(Zo,{theme:Z.theme,transparentBackground:Z.transparent,focusAccent:Z.focusAccent}),Aq(Z.locale);let J=$.providers?.kv??!1,X=$.providers?.focus??!0,z=$.providers?.notifications??!1,G=await $.setup(Z),W=$o({platform:process.platform,fullscreen:$.inlineRows===void 0,stdout:process.stdout}),H=()=>{},U=()=>{H(),W.flush(),G.onDestroy?.()},B=await yB0({...$.inlineRows!==void 0?ii($.inlineRows,U):ni(U),...W.rendererOptions});H=W.attach(B);let M=R.jsxDEV(R.Fragment,{children:[R.jsxDEV(bB0,{},void 0,!1,void 0,this),R.jsxDEV(Jo,{children:G.root()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),L=R.jsxDEV(up,{children:z?R.jsxDEV(xi,{children:M},void 0,!1,void 0,this):M},void 0,!1,void 0,this),j=X?R.jsxDEV(vi,{initial:"sidebar",children:L},void 0,!1,void 0,this):L,A=J?R.jsxDEV(Xn,{children:j},void 0,!1,void 0,this):j;WS(B).render(R.jsxDEV(Ul,{mode:"dark",theme:Z.theme,children:A},void 0,!1,void 0,this)),oi(B),ai(),ri(),li()}var cF,gB0="claude",Zo,Jo;var dF=d(async()=>{SJ();I2();hi();nV();FE();ci();pi();LE();II();A3();yq();X$();a0();await J$([k4(),uF(),Z$(),Z$(),C5()]);cF=z1(q1(),1),Zo={selectedTheme:Ql,hasTheme:_q,setTheme:zl,reloadUserThemes:()=>{for(let{name:$,theme:Z}of KE())jI($,Z)},transparentBackground:Yl,setTransparentBackground:Gl,focusAccent:Wl,setFocusAccent:Hl};Jo=class Jo extends cF.Component{state={error:null};static getDerivedStateFromError($){return{error:$}}render(){if(this.state.error!==null)return R.jsxDEV(vB0,{error:this.state.error},void 0,!1,void 0,this);return this.props.children}}});import*as Xo from"fs";import*as B_ from"os";function K_($){return $.slice($.lastIndexOf("/")+1)}function IZ($){if($==="~")return B_.homedir();if($.startsWith("~/"))return B_.homedir()+$.slice(1);return $}function Qo($){if(!$)return{base:"",filter:""};let J=IZ($==="~"?"~/":$);if(J.endsWith("/"))return{base:J,filter:""};let X=J.lastIndexOf("/");if(X===-1)return{base:"",filter:J};return{base:J.slice(0,X+1),filter:J.slice(X+1)}}function zo($){if(!$)return[];try{let Z=Xo.readdirSync($,{withFileTypes:!0}),J=[];for(let X of Z)if(X.isDirectory())J.push(X.name);return J.sort((X,z)=>X.localeCompare(z))}catch{return[]}}function Yo($,Z){let J=Z.toLowerCase(),z=J.startsWith(".")?$:$.filter((G)=>!G.startsWith("."));if(!J)return z;return z.filter((G)=>G.toLowerCase().startsWith(J))}function vq($,Z,J){let X=Z+J;if($.startsWith("~")){let z=B_.homedir();if(X===z)return"~";if(X.startsWith(`${z}/`))return`~${X.slice(z.length)}`}return X}var UG=()=>{};function Go($){return $.kind==="leaf"?0:1+Math.max(...$.children.map(Go))}function kB0($,Z,J){let X=(z)=>{if(z.kind==="leaf")return null;if(z.orientation===J&&z.children.some((G)=>G.kind==="leaf"&&G.id===Z))return z.children.length;for(let G of z.children){let W=X(G);if(W!==null)return W}return null};return X($)??1}function mB0($,Z,J){let X=Z==="row"?J.cols:J.rows,z=Z==="row"?20:6,G=kB0($.root,$.activeLeafId,Z);return Math.floor(X*G/(G+1))-1>=z}function F_($){return{root:{kind:"leaf",id:"leaf-1",content:$},activeLeafId:"leaf-1",nextOrdinal:2}}function t7($){return $.kind==="leaf"?[$]:$.children.flatMap(t7)}function lF($,Z,J,X){if(X&&!mB0($,Z,X))return $;let z={kind:"leaf",id:`leaf-${$.nextOrdinal}`,content:J},G=(H)=>{if(H.kind==="leaf"){if(H.id!==$.activeLeafId)return H;return{kind:"group",orientation:Z,children:[H,z]}}if(H.orientation===Z){let U=H.children.findIndex((B)=>B.kind==="leaf"&&B.id===$.activeLeafId);if(U>=0){let B=[...H.children.slice(0,U+1),z,...H.children.slice(U+1)];return{...H,children:B}}}return{...H,children:H.children.map(G)}},W=G($.root);if(!X&&Go(W)>4)return $;return{root:W,activeLeafId:z.id,nextOrdinal:$.nextOrdinal+1}}function M_($,Z){let J=t7($.root);if(J.length<=1)return null;let X=(B)=>{if(B.kind==="leaf")return B.id===Z?null:B;let M=B.children.map(X).filter((O)=>O!==null);if(M.length===0)return null;if(M.length===1)return M[0];return{...B,children:M}},z=X($.root);if(z===null)return null;if(t7(z).length===J.length)return $;let G=J.map((B)=>B.id),W=G.indexOf(Z),H=G[W>0?W-1:W+1],U=$.activeLeafId===Z?H:$.activeLeafId;return{...$,root:z,activeLeafId:U}}function L_($,Z,J){let X=J.trim(),z=X.length>0?X:null,G=(W)=>W.kind==="leaf"?W.id===Z?{...W,title:z}:W:{...W,children:W.children.map(G)};if(!t7($.root).some((W)=>W.id===Z))return $;return{...$,root:G($.root)}}function Wo($,Z){let J=t7($.root).map((G)=>G.id);if(J.length<=1)return $;let X=J.indexOf($.activeLeafId),z=J[(X+Z+J.length)%J.length];return{...$,activeLeafId:z}}function NE($){return!$||t7($.root).some((Z)=>Z.id==="leaf-1")}function nF($){return $?t7($.root).length>1:!1}function kq($){let Z=t7($.root);return Z.length===1&&Z[0]?.id==="leaf-1"?null:$}function P3($,Z){return Z==="leaf-1"?$:`${$}::${Z}`}function OE($,Z,J,X){let z=(H)=>{let U=(H??Z)[0]??"",B=K_(U);return B.length>0?B:"?"},G=new Map,W=new Map;for(let H of $){if(H.title){W.set(H.id,H.title);continue}let U=H.content===null?J||X?.get(H.id)||z(H.content):X?.get(H.id)||pF,B=(G.get(U)??0)+1;G.set(U,B),W.set(H.id,B===1?U:`${U} ${B}`)}return W}function hB0($){let Z=($??"").trim();if(Z.length<3)return null;if(/^[\d\s\p{P}\p{S}]+$/u.test(Z))return null;return Z}function uB0($,Z){let J=$?.trim();if(!J)return null;let X=mQ(J,Z);if(X===J&&cB0(J,Z))return null;if(_j(X,Z))return null;return X||null}function cB0($,Z){let J=new Set(ST(Z));return[...$].every((X)=>X.trim().length===0||J.has(X))}function BG($,Z,J,X){if(J===null&&$.kind==="engine")return j9({...$,kind:"command",lastTitle:null},Z);let z=J??$.liveVendor??($.kind==="engine"?$.vendor??Z:void 0)??void 0,G=X?.trim()||$.lastTitle,W=z?uB0(G,z):G??null;if(!z||F$(z).terminalTitle?.ownsStatus!==!0)return j9({...$,lastTitle:W},Z);return j9({...$,kind:"engine",vendor:z,lastTitle:W},Z)}function dB0($,Z){return $.liveVendor??($.kind==="engine"?$.vendor:void 0)??Z}function j9($,Z,J){if($.title)return $.title;let X=$.splitTree?t7($.splitTree.root):[];if(X.length>1)return W$("terminal.tab.groupTitle",{n:$.ordinal});let z=X.length===1?X[0]:void 0;if(z&&z.id!=="leaf-1")return z.title??`${J??pF} ${$.ordinal}`;let G=dB0($,Z);if(J&&!_j(J,G))return`${J} ${$.ordinal}`;if($.lastTitle&&!_j($.lastTitle,G))return`${$.lastTitle} ${$.ordinal}`;let W=hB0($.autoTitle);if(W)return W;return`${$.kind==="engine"?F$($.vendor??Z).defaultCommand[0]??pF:pF} ${$.ordinal}`}function jE($,Z,J,X){if(!J||!X)return!1;if(F$(J).terminalTitle?.ownsStatus!==!0)return!1;return j9($,Z,X)===`${X} ${$.ordinal}`}var pF="shell";var VE=d(()=>{F7();RZ();UG()});import{readFileSync as lB0,realpathSync as pB0}from"fs";import{join as nB0}from"path";function oB0(){return nB0(K7(),"notes.json")}function Ho($){try{return pB0($)}catch{return $}}function qo($,Z=oB0()){if(!$)return[];let J;try{J=JSON.parse(lB0(Z,"utf8"))}catch{return[]}let X=J?.repos;if(!X||typeof X!=="object")return[];let z=Ho($);for(let G of Object.values(X)){if(!G||typeof G!=="object")continue;let W=G;if(typeof W.repoRoot!=="string"||Ho(W.repoRoot)!==z)continue;if(!Array.isArray(W.notes))return[];return W.notes.filter((H)=>!!H&&typeof H==="object"&&typeof H.text==="string").slice(0,iB0)}return[]}var iB0=15;var Uo=d(()=>{V5()});import{existsSync as Ko,readFileSync as aB0}from"fs";import{join as mq}from"path";function rB0($,Z=D3(),J){let X=`PS: this task's git branch name is an auto-generated placeholder. Once you understand the work, rename it to a short descriptive name following this repo's branch-naming convention: \`${Z} set-branch --task-id ${$} --branch <descriptive-slug>\``;if(!J||J===$)return X;return`${X}
720
720
 
721
- You were spawned by Rove task ${J}. When the work is finished, send your outcome back to it \u2014 include the final branch name: \`${Z} send --task-id ${J} --prompt "<succeeded|failed>: <one-line summary> (branch <final-branch>)"\``}function tB0($){for(let[Z,J]of[[Bo[0],"sh .rove/init.sh"],[Bo[1],"sh .kobe/init.sh"]])if(Ko(mq($,Z)))return J;return}function eB0($){for(let Z of sB0){let J=mq($,Z);if(!Ko(J))continue;try{let X=aB0(J,"utf8");if(X.trim().length>0)return X}catch{}}return}function $K0($,Z){let J=$?cP($):{},X=tB0(Z)??J.initScript,z=eB0(Z)??J.initPrompt;return{initScript:X&&X.trim().length>0?X:void 0,initPrompt:z&&z.trim().length>0?z:void 0}}function ZK0($,Z,J){if($.kind==="none")return;if($.kind==="explicit")return{source:"explicit",text:$.prompt};if($.kind==="new-task")return{source:"explicit",text:`${$.prompt}
721
+ You were spawned by Rove task ${J}. When the work is finished, send your outcome back \u2014 include the final branch name: \`${Z} send --prompt "<succeeded|failed>: <one-line summary> (branch <final-branch>)"\` (bare send, no --task-id: it routes to the exact tab that dispatched you)`}function tB0($){for(let[Z,J]of[[Bo[0],"sh .rove/init.sh"],[Bo[1],"sh .kobe/init.sh"]])if(Ko(mq($,Z)))return J;return}function eB0($){for(let Z of sB0){let J=mq($,Z);if(!Ko(J))continue;try{let X=aB0(J,"utf8");if(X.trim().length>0)return X}catch{}}return}function $K0($,Z){let J=$?cP($):{},X=tB0(Z)??J.initScript,z=eB0(Z)??J.initPrompt;return{initScript:X&&X.trim().length>0?X:void 0,initPrompt:z&&z.trim().length>0?z:void 0}}function ZK0($,Z,J){if($.kind==="none")return;if($.kind==="explicit")return{source:"explicit",text:$.prompt};if($.kind==="new-task")return{source:"explicit",text:`${$.prompt}
722
722
 
723
723
  ${rB0(J??'"$ROVE_TASK_ID"',void 0,$.spawnerTaskId)}`};let X=Z.initPrompt?.trim();return X?{source:"repo-init",text:X}:void 0}function Fo($,Z,J={kind:"repo-init"},X){let z=$K0($,Z);return{initScript:z.initScript,firstMessage:ZK0(J,z,X)}}var Bo,sB0;var Mo=d(()=>{L7();C4();Bo=[mq(".rove","init.sh"),mq(".kobe","init.sh")],sB0=[mq(".rove","init-prompt.md"),mq(".kobe","init-prompt.md")]});function JK0($){return`${$}; __rc=$?; [ "$__rc" -ne 0 ] && printf '${"\\n \u26A0 Engine exited (code %s). Check Settings \u2192 Engines and fix the launch command.\\n\\n"}' "$__rc"; exec "\${SHELL:-/bin/sh}"`}function YK0($){let Z=typeof $==="number"?$:$==null?Number.NaN:Number.parseInt($,10);if(!Number.isFinite(Z))return XK0;return Math.max(QK0,Math.min(zK0,Math.round(Z)))}function GK0($,Z){let J=String(Z),X="\\n \u26A0 Repo init script timed out after %ss and was killed; continuing to the engine.\\n\\n",z="\\n \u26A0 Repo init script failed (code %s); continuing to the engine.\\n\\n";return['__kobe_init_env="${TMPDIR:-/tmp}/kobe-init-env.$$"','__kobe_init_to="${TMPDIR:-/tmp}/kobe-init-timeout.$$"','rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null',"(",$,"__kobe_init_ec=$?",'export -p > "$__kobe_init_env" 2>/dev/null',"exit $__kobe_init_ec",") </dev/null &","__kobe_init_pid=$!",`( sleep ${J}; : > "$__kobe_init_to"; kill -TERM "$__kobe_init_pid" 2>/dev/null; sleep 2; kill -KILL "$__kobe_init_pid" 2>/dev/null ) &`,"__kobe_init_wd=$!",'wait "$__kobe_init_pid" 2>/dev/null; __kobe_init_rc=$?','kill "$__kobe_init_wd" 2>/dev/null; wait "$__kobe_init_wd" 2>/dev/null',`if [ -f "$__kobe_init_to" ]; then __kobe_init_rc=124; printf '${"\\n \u26A0 Repo init script timed out after %ss and was killed; continuing to the engine.\\n\\n"}' '${J}';`,'elif [ "$__kobe_init_rc" -eq 0 ]; then [ -f "$__kobe_init_env" ] && . "$__kobe_init_env" 2>/dev/null;',`else printf '${"\\n \u26A0 Repo init script failed (code %s); continuing to the engine.\\n\\n"}' "$__kobe_init_rc"; fi`,'rm -f "$__kobe_init_env" "$__kobe_init_to" 2>/dev/null'].join(`
724
724
  `)}function WK0($){let Z=$.lastIndexOf("/");return Z<=0?".":$.slice(0,Z)}function HK0($,Z){let J=JK0($),X=Z?.initScript?.trim();if(!X)return J;let z=GK0(X,YK0(Z?.timeoutSeconds)),G=Z?.markerPath&&Ic(Z.markerPath,Z.platform);if(!G)return Lo+[z,J].join(`
@@ -3,7 +3,7 @@ name: rove
3
3
  description: Use when controlling Rove tasks, parallel coding attempts, hosted agent sessions, task lifecycle, or the daemon-owned issue tracker from a shell. Also the ONLY channel for messaging another agent session on this machine — `rove api send`, never a peer/MCP side channel.
4
4
  ---
5
5
 
6
- <!-- rove-skill-version: 30 — bump in lockstep with KOBE_SKILL_VERSION (src/lib/skill-install.ts). -->
6
+ <!-- rove-skill-version: 31 — bump in lockstep with KOBE_SKILL_VERSION (src/lib/skill-install.ts). -->
7
7
 
8
8
  # Rove shell control
9
9
 
@@ -399,8 +399,9 @@ spawning agent's engine tab, not as stored state nobody reads.
399
399
  dispatcher (the creating task + tab); when the work is finished, a bare
400
400
  `rove api send --prompt "<succeeded|failed>: <one line> (branch <final
401
401
  branch>)"` routes the outcome back to that exact tab. Include the final
402
- branch name — the spawner needs it to `land`. The first-prompt coda still
403
- names the spawner for an explicit `--task-id` send.
402
+ branch name — the spawner needs it to `land`. Use the BARE form: an explicit
403
+ `--task-id <spawner>` skips dispatcher routing and lands on that task's
404
+ canonical engine tab, which can be a different agent's session.
404
405
 
405
406
  **"Succeeded" means COMMITTED.** Green tests in your working tree are not a
406
407
  deliverable — the only thing `land` can merge is commits on your branch.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@sma1lboy/kobe",
4
- "version": "0.8.147",
4
+ "version": "0.8.148",
5
5
  "description": "Rove — the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.",
6
6
  "type": "module",
7
7
  "packageManager": "bun@1.3.13",